gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lsd0004] branch master updated (4b01724 -> e0b7c4a)


From: gnunet
Subject: [lsd0004] branch master updated (4b01724 -> e0b7c4a)
Date: Sun, 25 Dec 2022 15:46:12 +0100

This is an automated email from the git hooks/post-receive script.

martin-schanzenbach pushed a change to branch master
in repository lsd0004.

    from 4b01724  More on connectivity management
     new 811fe60  More connectivity description
     new e0b7c4a  tt for HELLO

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 draft-schanzen-r5n.xml | 156 +++++++++++++++++++++++++------------------------
 1 file changed, 81 insertions(+), 75 deletions(-)

diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml
index 9495cbf..e5b8218 100644
--- a/draft-schanzen-r5n.xml
+++ b/draft-schanzen-r5n.xml
@@ -223,13 +223,13 @@ gnunet+tcp://12.3.4.5/
       </dd>
       <dt>HELLO block</dt>
       <dd>
-        A HELLO block is a block with a dedicated block type and is specified 
in this document.
-        The HELLO block is used to store and retrieve Peer addresses.
-        In this document, HELLO blocks are used by the peer discovery 
mechanism.
+        A <tt>HELLO</tt> block is a block with a dedicated block type and is 
specified in this document.
+        The <tt>HELLO</tt> block is used to store and retrieve Peer addresses.
+        In this document, <tt>HELLO</tt> blocks are used by the peer discovery 
mechanism.
       </dd>
       <dt>HELLO URL</dt>
       <dd>
-        HELLO URLs are URL-formatted HELLO blocks.
+        <tt>HELLO</tt> URLs are URL-formatted <tt>HELLO</tt> blocks.
         They can used for out-of-band exchanges of peer information and are 
used for
         address update signalling messages to neighbours.
       </dd>
@@ -523,7 +523,7 @@ Connectivity | |Underlay|  |Underlay|
           local peer and that henceforth the peer may be reachable under this 
address.
           This information is used to advertise
           connectivity information about the local peer to other peers.
-          <tt>A</tt> must be a URI suitable for inclusion in a HELLO payload
+          <tt>A</tt> must be a URI suitable for inclusion in a <tt>HELLO</tt> 
payload
           <xref target="hello_block"/>.
         </dd>
         <dt>
@@ -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
@@ -673,10 +679,10 @@ Connectivity | |Underlay|  |Underlay|
           Furthermore, the Underlay <bcp14>SHOULD</bcp14> provide the 
implementation with one or more
           addresses signalled through <tt>ADDRESS_ADDED</tt>. Zero addresses 
<bcp14>MAY</bcp14> be
           provided if a peer can only establish outgoing connections and is 
otherwise unreachable.
-          <!-- FIXME: What about HelloMessages? What is the distinction 
between HELLO blocks
-               and HELLO messages? -->
+          <!-- FIXME: What about HelloMessages? What is the distinction 
between <tt>HELLO</tt> blocks
+               and <tt>HELLO</tt> messages? -->
           The implementation periodically advertises all
-          active addresses in a HELLO block <xref target="hello_block"/>.
+          active addresses in a <tt>HELLO</tt> block <xref 
target="hello_block"/>.
         </t>
       </section>
       <section anchor="routing_bloomfilter">
@@ -1221,7 +1227,7 @@ BEGIN
           it <bcp14>MAY</bcp14> disseminate those changes to neighbors using
           <tt>HelloMessage</tt>s.
          <!-- FIXME yesyes this is blabla and obvious when reading the 
processing section.
-              In contrast to a HELLO block, a
+              In contrast to a <tt>HELLO</tt> block, a
          <tt>HelloMessage</tt> does not contain the ID of
          the peer the address information is about: in a
          <tt>HelloMessage</tt>, the address information is always
@@ -1238,7 +1244,7 @@ BEGIN
          a peer about the sender's available addresses. The
          recipients use these messages to inform their respective
          Underlays about ways to sustain the connections and to
-         generate HELLO blocks (see <xref target="hello_block"/>)
+         generate <tt>HELLO</tt> blocks (see <xref target="hello_block"/>)
           to answer peer discovery queries
          from other peers.
         </t>
@@ -1281,14 +1287,14 @@ BEGIN
               is a 64 byte EdDSA signature using the sender's private
               key affirming the information contained in the message.
               The signature is signing exactly the same data that is being
-              signed in a HELLO block as described in <xref 
target="hello_block"/>.
+              signed in a <tt>HELLO</tt> block as described in <xref 
target="hello_block"/>.
             </dd>
             <dt>EXPIRATION</dt>
             <dd>
               denotes the absolute 64-bit expiration date of the content.
               The value specified is microseconds since midnight (0 hour),
               January 1, 1970, but must be a multiple of one million
-              (so that it can be represented in seconds in a HELLO URL).
+              (so that it can be represented in seconds in a <tt>HELLO</tt> 
URL).
               Stored in network byte order.
             </dd>
             <dt>ADDRESSES</dt>
@@ -1317,9 +1323,9 @@ BEGIN
               is in the future. If the signature is invalid, the message is 
discarded.
             </li>
             <li>
-              The HELLO information is cached in the routing table until it 
expires,
+              The <tt>HELLO</tt> information is cached in the routing table 
until it expires,
               the peer is removed from the routing table, or the information 
is replaced by another message from the peer.
-              <!-- FIXME same problem as for HELLO blocks: We do not need to 
TRY_CONNECT here because we already have
+              <!-- FIXME same problem as for <tt>HELLO</tt> blocks: We do not 
need to TRY_CONNECT here because we already have
                    a connection, obviously. But we may want to TRY_CONNECT on 
the new addresses? Adding for now -->
               The implementation <bcp14>MAY</bcp14> instruct the Underlay to 
connect to all now available addresses
               using <tt>TRY_CONNECT</tt> in order to make the underlay aware 
of alternative addresses for this connection.
@@ -1547,12 +1553,12 @@ BEGIN
               be stored locally in the block storage.
             </li>
             <li>
-              If the <tt>BTYPE</tt> of the message indicates a HELLO block, the
+              If the <tt>BTYPE</tt> of the message indicates a <tt>HELLO</tt> 
block, the
               peer <bcp14>MUST</bcp14> be considered for the local routing
              table if the respective k-bucket is not yet full. In this case,
              the local peer <bcp14>MUST</bcp14> try to establish a connection
-             to the peer indicated in the HELLO block using the address 
information
-              from the HELLO block and the Underlay function 
<tt>TRY_CONNECT</tt>.
+             to the peer indicated in the <tt>HELLO</tt> block using the 
address information
+              from the <tt>HELLO</tt> block and the Underlay function 
<tt>TRY_CONNECT</tt>.
               <!-- FIXME: The above behaviour has a catch: If the 
implementation only connects to one
                    address from the hello using TRY_CONNECT, the Underlay also 
knows only about that connection
                    If that failes and PEER_DISCONNECT is called, this neighbor 
is dead.
@@ -1749,11 +1755,11 @@ BEGIN
               </t>
               <ol type="%c)">
                 <!-- FIXME: It is not clear that this is a fallthrough 
statement -->
-                <!-- FIXME: Are HELLO blocks according to the spec stored in 
block storage but never looked for? -->
+                <!-- FIXME: Are <tt>HELLO</tt> blocks according to the spec 
stored in block storage but never looked for? -->
                 <li>
-                  If <tt>BTYPE</tt> indicates a request for a HELLO block or
+                  If <tt>BTYPE</tt> indicates a request for a <tt>HELLO</tt> 
block or
                   <tt>ANY</tt>,
-                  the peer <bcp14>MUST</bcp14> consult its own HELLO as well as
+                  the peer <bcp14>MUST</bcp14> consult its own <tt>HELLO</tt> 
as well as
                   the HELLOs it has cached for the
                   peers in its routing table instead of the local block
                   storage (while continuing to respect flags like
@@ -1992,12 +1998,12 @@ BEGIN
              does not have to match the <tt>QUERY_HASH</tt>.
            </li>
             <li>
-              If the <tt>BTYPE</tt> of the message indicates a HELLO block, the
+              If the <tt>BTYPE</tt> of the message indicates a <tt>HELLO</tt> 
block, the
               peer <bcp14>MUST</bcp14> be considered for the local routing
              table if the respective k-bucket is not yet full. In this case,
              the local peer <bcp14>MUST</bcp14> try to establish a connection
-             to the peer indicated in the HELLO block using the address 
information
-              from the HELLO block. If a connection is established,
+             to the peer indicated in the <tt>HELLO</tt> block using the 
address information
+              from the <tt>HELLO</tt> block. If a connection is established,
               the peer is added to the respective k-bucket of the routing 
table.
              Note that the k-bucket <bcp14>MUST</bcp14> be determined by the
              key computed using <tt>DeriveBlockKey</tt> and not by the 
<tt>QUERY_HASH</tt>.
@@ -2180,18 +2186,18 @@ BEGIN
           <name>HELLO Blocks</name>
           <t>
             For bootstrapping and peer discovery, the DHT implementation uses
-            its own block type called "HELLO".  HELLO blocks are the only type
+            its own block type called "HELLO".  <tt>HELLO</tt> blocks are the 
only type
            of block that <bcp14>MUST</bcp14> be supported by every
            R<sup>5</sup>N implementation. A block with this block type
-            contains the peer ID of the peer that published the HELLO together
-           with a set of addresses of this peer.  The key of a HELLO block
+            contains the peer ID of the peer that published the <tt>HELLO</tt> 
together
+           with a set of addresses of this peer.  The key of a <tt>HELLO</tt> 
block
             is the SHA-512 of the peer ID and thus the peer's address in the 
DHT.
           </t>
           <t>
-            The HELLO block type wire format is illustrated in
-            <xref target="figure_hello"/>. A query for block of type HELLO 
<bcp14>MUST NOT</bcp14>
+            The <tt>HELLO</tt> block type wire format is illustrated in
+            <xref target="figure_hello"/>. A query for block of type 
<tt>HELLO</tt> <bcp14>MUST NOT</bcp14>
             include extended query data (XQuery). Any implementation
-            encountering a request for a HELLO with non-empty XQuery
+            encountering a request for a <tt>HELLO</tt> with non-empty XQuery
            data <bcp14>MUST</bcp14> consider the request invalid and ignore it.
           </t>
           <figure anchor="figure_hello" title="The HELLO Block Format.">
@@ -2229,7 +2235,7 @@ BEGIN
               denotes the absolute 64-bit expiration date of the content.
               The value specified is microseconds since midnight (0 hour),
               January 1, 1970, but must be a multiple of one million (so that 
it
-              can be represented in seconds in a HELLO URL).
+              can be represented in seconds in a <tt>HELLO</tt> URL).
               Stored in network byte order.
             </dd>
             <dt>ADDRESSES</dt>
@@ -2244,7 +2250,7 @@ BEGIN
            <t>
             is the signature of the HELLO.
             It covers a 64-bit pseudo header
-            derived from the information in the HELLO block.
+            derived from the information in the <tt>HELLO</tt> block.
            The pseudo header includes
             the expiration time, a constant that uniquely
            identifies the purpose of the signature,
@@ -2293,24 +2299,24 @@ BEGIN
             <dd>
               a SHA-512 hash over the addresses in the HELLO.
               H_ADDRS is generated over the ADDRESSES field
-              as provided in the HELLO block using SHA-512 <xref 
target="RFC4634"/>.
+              as provided in the <tt>HELLO</tt> block using SHA-512 <xref 
target="RFC4634"/>.
             </dd>
           </dl>
             </dd>
           </dl>
           <t>
-            The HELLO block functions <bcp14>MUST</bcp14> be implemented
+            The <tt>HELLO</tt> block functions <bcp14>MUST</bcp14> be 
implemented
             as follows:
           </t>
           <dl>
           <dt>ValidateBlockQuery(Key, XQuery)
                -&gt; RequestEvaluationResult</dt>
           <dd>
-              To validate a block query for a HELLO is to simply check that 
the XQuery is empty. If it is empty, REQUEST_VALID ist returned. Otherwise, 
REQUEST_INVALID.
+              To validate a block query for a <tt>HELLO</tt> is to simply 
check that the XQuery is empty. If it is empty, REQUEST_VALID ist returned. 
Otherwise, REQUEST_INVALID.
           </dd>
           <dt>DeriveBlockKey(Block) -&gt; Key | NONE</dt>
           <dd>
-            To derive a block key for a HELLO is to simply
+            To derive a block key for a <tt>HELLO</tt> is to simply
             hash the peer ID from the HELLO. The result of this function
             is always the SHA-512 hash over the PEER-ID.
           </dd>
@@ -2327,15 +2333,15 @@ BEGIN
           <dd>
          <t>
             <!-- FIXME: I do not understand this. Isn't the element set E known
-                 for HELLO blocks? Isn't it H_ADDRS XOR MUTATOR? -->
-           The RESULT_FILTER for HELLO blocks is implemented using a
+                 for <tt>HELLO</tt> blocks? Isn't it H_ADDRS XOR MUTATOR? -->
+           The RESULT_FILTER for <tt>HELLO</tt> blocks is implemented using a
             Bloom filter following the definition from <xref 
target="bloom_filters"/>
             and consists of a variable number of buckets <tt>L</tt>.
             <tt>L</tt> depends on the number of elements <tt>|E|</tt> known to 
be filtered at the
            initiator.
             <!-- FIXME: Minimum space for used for what? There is no example 
given anywhere in the
                  spec how this becomes relevant. Again, this is not some 
abstract block,
-                 but specifically a HELLO (see above). -->
+                 but specifically a <tt>HELLO</tt> (see above). -->
             If <tt>|E|</tt> is zero, the size <tt>L</tt> is set to 32 bits to 
provide some minimum
            space (to be used by peers when forwarding the request after
            returning local results).
@@ -2348,7 +2354,7 @@ BEGIN
             The elements used in the Bloom filter
             consist of an XOR between the <tt>H_ADDRS</tt> field (as computed 
using
             SHA-512 over the <tt>ADDRESSES</tt>) and the SHA-512
-            hash of the <tt>MUTATOR</tt> field from a given HELLO block.
+            hash of the <tt>MUTATOR</tt> field from a given <tt>HELLO</tt> 
block.
             The mapping function M(<tt>H_ADDRS XOR MUTATOR</tt>) is defined as 
follows:
           </t>
           <t>
@@ -2359,8 +2365,8 @@ BEGIN
             This resulting byte string is interpreted as k=16 32-bit
             integers in network byte order which are used to set and check the 
bucket bits in
             <tt>B</tt> using <tt>BF-SET</tt> and <tt>BF-TEST</tt>.
-            The 32-bit Mutator is prepended to the L-bit Bloom filter bucket 
field <tt>HELLO_BF</tt> containing <tt>B</tt>
-            to create the result filter for a HELLO block:
+            The 32-bit Mutator is prepended to the L-bit Bloom filter bucket 
field  <tt>HELLO_BF</tt> containing <tt>B</tt>
+            to create the result filter for a <tt>HELLO</tt> block:
           </t>
           <figure anchor="hello_rf" title="The HELLO Block Result Filter.">
             <artwork name="" type="" align="left" alt=""><![CDATA[
@@ -2403,7 +2409,7 @@ BEGIN
            false-positives.
           </t>
          <t>
-           HELLO result filters can be merged if the
+           <tt>HELLO</tt> result filters can be merged if the
            Bloom filters have the same size and
            <tt>MUTATOR</tt> by setting all bits to 1 that are
            set in either Bloom filter.  This is done whenever
@@ -2414,7 +2420,7 @@ BEGIN
             <dt>FilterResult(Block, Key, RF, XQuery) -&gt; 
(FilterEvaluationResult, RF')</dt>
             <dd>
              The <tt>H_ADDRS</tt> field is XORed with the SHA-512
-             hash of the <tt>MUTATOR</tt> field from the HELLO block and the 
resulting
+             hash of the <tt>MUTATOR</tt> field from the <tt>HELLO</tt> block 
and the resulting
              value is checked against the Bloom filter in RF.
              Consequently, HELLOs with completely identical sets of
              addresses will be filtered and FILTER_DUPLICATE is returned.
@@ -2991,7 +2997,7 @@ Type    | Name            | References | Description
   <section anchor="hello_url">
         <name>HELLO URLs</name>
         <t>
-         The general format of a HELLO URL uses "gnunet://"
+         The general format of a <tt>HELLO</tt> URL uses "gnunet://"
           as the scheme, followed by "hello/" for the name
           of the GNUnet subsystem, followed by "/"-separated values
           with the GNS Base32 encoding (<xref target="I-D.schanzen-gns"/>) of
@@ -3032,7 +3038,7 @@ maybe generate proper test vector.
          DHT Underlay.
         </t>
         <t>
-          The general syntax of HELLO URLs specified using
+          The general syntax of <tt>HELLO</tt> URLs specified using
           Augmented Backus-Naur Form (ABNF) of <xref target="RFC5234"/> is:
         </t>
        <figure>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]