diff options
author | Martin Schanzenbach <schanzen@gnunet.org> | 2022-12-25 23:45:40 +0900 |
---|---|---|
committer | Martin Schanzenbach <schanzen@gnunet.org> | 2022-12-25 23:45:40 +0900 |
commit | 811fe601faf9753db1dede2b8cf0d66bd0beafba (patch) | |
tree | 4ac135e4a4920c30cbdd8679d11cca18004e195f | |
parent | 4b01724fec786415ce232a0a8b18dc27b06c1902 (diff) |
More connectivity description
-rw-r--r-- | draft-schanzen-r5n.xml | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml index 9495cbf..33eb456 100644 --- a/draft-schanzen-r5n.xml +++ b/draft-schanzen-r5n.xml @@ -586,28 +586,15 @@ Connectivity | |Underlay| |Underlay| <section anchor="routing_table"> <name>Routing Table</name> <t> + Whenever a <tt>PEER_CONNECTED</tt> signal is received from the Underlay, + the respective peer is considered for insertion into the routing table. The routing table consists of an array of k-buckets. Each k-bucket contains a list of neighbors. The i-th k-bucket stores neighbors whose peer IDs are between distance 2^i and 2^(i+1) from the local peer. System constraints will typically force an implementation to impose some upper limit on the number of neighbors kept per k-bucket. - </t> - <t> - Initially, the implementation depends upon either the Underlay providing at - least one initial connection to a peer (signalled through - <tt>PEER_CONNECTED</tt>), or the application/end-user providing at - least one working HELLO which is then in turn used to call <tt>TRY_CONNECT</tt> - on the Underlay. - This is commonly achieved through the configuration of hardcoded bootstrap peers - or bootstrap servers either for the Underlay or the R<sup>5</sup>N implementation. - While details on how the first connection is established <bcp14>MAY</bcp14> - depend on the specific implementation, this <bcp14>SHOULD</bcp14> usually be done - by an out-of-band exchange of the information from a HELLO block. - <!-- FIXME: Is this really an encoding of a block? It seems to me that "HELLO" - is not properly defined. - FIXME: Should? Isn't this part of the HelloMessage? --> - For this, section <xref target="hello_url"/> specifies a URL format for encoding HELLO - blocks as text strings which <bcp14>SHOULD</bcp14> be supported by implementations. + Upon insertion, the implementation <bcp14>MUST</bcp14> call + <tt>HOLD</tt> on the respective connection. </t> <t> Implementations <bcp14>SHOULD</bcp14> try to keep at least @@ -635,32 +622,51 @@ Connectivity | |Underlay| |Underlay| <section anchor="find_peer"> <name>Peer Discovery</name> <t> - To build its routing table, a peer will send out requests - asking for blocks of type HELLO using its own location as the key, - but filtering all of its neighbors via the Bloom filter described - in <xref target="result_filter"/>. - These requests <bcp14>MUST</bcp14> use the FindApproximate and DemultiplexEverywhere - flags. FindApproximate will ensure that other peers will reply - with keys they merely consider close-enough, while DemultiplexEverywhere + Initially, the implementation depends upon either the Underlay providing at + least one initial connection to a peer (signalled through + <tt>PEER_CONNECTED</tt>), or the application/end-user providing at + least one working <tt>HELLO</tt> which is then in turn used to call <tt>TRY_CONNECT</tt> + on the Underlay in order to trigger a subsequent <tt>PEER_CONNECTED</tt> signal + from the Underlay. + This is commonly achieved through the configuration of hardcoded bootstrap peers + or bootstrap servers either for the Underlay or the R<sup>5</sup>N implementation. + While details on how the first connection is established <bcp14>MAY</bcp14> + depend on the specific implementation, this <bcp14>SHOULD</bcp14> usually be done + by an out-of-band exchange of the information from a <tt>HELLO</tt> block. + <!-- FIXME: Is this really an encoding of a block? It seems to me that "HELLO" + is not properly defined. + FIXME: Should? Isn't this part of the HelloMessage? --> + For this, section <xref target="hello_url"/> specifies a URL format for encoding HELLO + blocks as text strings which <bcp14>SHOULD</bcp14> be supported by implementations. + </t> + <t> + <!-- FIXME REPL_LVL unclear, RF_SIZE unclear --> + To discover peers for its routing table, a peer will initiate <tt>GetMessage</tt> requests + <xref target="p2p_get"/> asking for blocks of type <tt>HELLO</tt> using its own peer address as + <tt>QUERY_HASH</tt>, filtering all of its neighbors via the Bloom filter described + in <xref target="result_filter"/> and <xref target="hello_block"/>. + These requests <bcp14>MUST</bcp14> use the <tt>FindApproximate</tt> and <tt>DemultiplexEverywhere</tt> + flags. <tt>FindApproximate</tt> will ensure that other peers will reply + with keys they merely consider close-enough, while <tt>DemultiplexEverywhere</tt> will cause each peer on the path to respond, which is likely to yield - HELLOs of peers that are useful somewhere in the routing table. + <tt>HELLO</tt> s of peers that are useful somewhere in the routing table. </t> <t> <!-- This here sais that this is a mandatory functionality. in HelloMessage it sais RECOMMENDED --> To facilitate peer discovery, each peer <bcp14>MUST</bcp14> broadcast its own - HELLO message to all peers in the routing table periodically. + <tt>HELLO</tt> message to all peers in the routing table periodically. The specific frequency <bcp14>MAY</bcp14> depend on available bandwidth but <bcp14>SHOULD</bcp14> be a fraction of the expiration period. - Whenever a peer receives such a HELLO message from another peer that is + Whenever a peer receives such a <tt>HELLO</tt> message from another peer that is already in the routing table, it must cache it as long as that peer is in its routing table - (or until the HELLO expires) and serve it in response to + (or until the <tt>HELLO</tt> expires) and serve it in response to <!-- FIXME wat is a Peer Discovery request?? - maybe a HELLO GET request? + maybe a <tt>HELLO</tt> GET request? --> Peer Discovery requests. Details about the format of the - HELLO message are given in <xref target="p2p_hello_wire"/>. + <tt>HELLO</tt> message are given in <xref target="p2p_hello_wire"/>. </t> <t> The frequency of advertisement and peer discovery messages |