-
Notifications
You must be signed in to change notification settings - Fork 232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Splitting Routing into (Peer Routing, Content Routing) #1
Comments
@jbenet How is Peer Routing going to work for multiple Protocols? Lets say I create a new |
ghost
mentioned this issue
Oct 22, 2015
@wanderer a policy like that could exist, but in most cases you'd check all your avail protocols till you get an answer. |
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Full p2p connectivity requires NAT traversal (including the possibility of relaying messages between peers, e.g. STUN, TURN), so no p2p networking layer can be complete without incorporating a notion of p2p message routing.
In IPFS, p2p routing is solely the responsibility of the "Routing" layer (e.g. a Kademlia DHT).
Distinction
The line between
Network
andRouting
layers is blurred significantly, and thus we must clearly distinguish the two responsibilities of Routing:To make this distinction more concrete, this essentially means splitting the
Routing
interface:into:
And allowing the
Network
layer to usePeerRouting
. This cleanlyseparates the layers and avoids confusion.
Important Routing Implementation Details
It should be noted that p2p content routing systems (beyond the context of ipfs) usually combine both Peer Routing and Content Routing. Consider, "Kademlia" which is the combination of "Kademlia Peer Routing" (address ring, buckets, xor distance, etc), and the "Kademlia DHT", which uses "Kademlia Peer Routing". From an implementation standpoint, it is much cleaner to think of the whole system.
Forcing implementors to completely separate these two components is difficult, and perhaps counter-productive. Thus IPFS implementations should be careful to make it possible for Routing layer implementations to solve both problems, and export two components,
PeerRouting
andContentRouting
. TheNetwork
layer can then be a client of thePeerRouting
part.The text was updated successfully, but these errors were encountered: