mirror of
https://github.com/ipfs/kubo.git
synced 2026-03-09 18:28:08 +08:00
reuseport is a hack. It is necessary for us to do certain kinds of tcp nat traversal. Ideally, reuseport would be available in go: https://github.com/golang/go/issues/9661 But until that issue is fixed, we're stuck with this. In some cases, reuseport is strictly a detriment: nodes are not NATed. This commit introduces an ENV var IPFS_REUSEPORT that can be set to false to avoid using reuseport entirely: IPFS_REUSEPORT=false ipfs daemon This approach addresses our current need. It could become a config var if necessary. If reuseport continues to give problems, we should look into improving it. |
||
|---|---|---|
| .. | ||
| conn | ||
| mock | ||
| swarm | ||
| interface.go | ||
| README.md | ||
Network
The IPFS Network package handles all of the peer-to-peer networking. It connects to other hosts, it encrypts communications, it muxes messages between the network's client services and target hosts. It has multiple subcomponents:
Conn- a connection to a single PeerMultiConn- a set of connections to a single PeerSecureConn- an encrypted (tls-like) connection
Swarm- holds connections to Peers, multiplexes from/to eachMultiConnMuxer- multiplexes betweenServicesandSwarm. HandlesRequet/Reply.Service- connects between an outside client service and Network.Handler- the client service part that handles requests
It looks a bit like this:
