summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schanzenbach <schanzen@gnunet.org>2022-12-27 00:26:58 +0900
committerMartin Schanzenbach <schanzen@gnunet.org>2022-12-27 00:26:58 +0900
commit2762d173f881a079264fd35c5f533973ec294adc (patch)
tree9a4ca78413d786dc6d6495595a3bff738bb4ed9e
parentbb023bdbb21eed4a1002c26fd7b9b15d30fa63e3 (diff)
downloadlsd0004-2762d173f881a079264fd35c5f533973ec294adc.tar.gz
lsd0004-2762d173f881a079264fd35c5f533973ec294adc.zip
First set of changes after 1-on-1 review with CG
-rw-r--r--draft-schanzen-r5n.xml160
1 files changed, 77 insertions, 83 deletions
diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml
index 14487b2..9e7dd1a 100644
--- a/draft-schanzen-r5n.xml
+++ b/draft-schanzen-r5n.xml
@@ -445,7 +445,7 @@ Connectivity | |Underlay| |Underlay|
445 When the connection attempt is successful, information on the new 445 When the connection attempt is successful, information on the new
446 peer is offered through the <tt>PEER_CONNECTED</tt> signal. 446 peer is offered through the <tt>PEER_CONNECTED</tt> signal.
447 </dd> 447 </dd>
448 <!-- FIXME: Not used anywhere in draft --> 448 If PEER_CONNECT and put in routing table, then HOLD -->
449 <dt> 449 <dt>
450 <tt>HOLD(P)</tt> 450 <tt>HOLD(P)</tt>
451 </dt> 451 </dt>
@@ -455,7 +455,6 @@ Connectivity | |Underlay| |Underlay|
455 of active connections. With this function the DHT can indicate to the 455 of active connections. With this function the DHT can indicate to the
456 underlay which connections should preferably be preserved. 456 underlay which connections should preferably be preserved.
457 </dd> 457 </dd>
458 <!-- FIXME: Not used anywhere in draft -->
459 <dt> 458 <dt>
460 <tt>DROP(P)</tt> 459 <tt>DROP(P)</tt>
461 </dt> 460 </dt>
@@ -564,6 +563,8 @@ Connectivity | |Underlay| |Underlay|
564 Upon receiving a connection notification from the Underlay through 563 Upon receiving a connection notification from the Underlay through
565 <tt>PEER_CONNECTED</tt>, information on the new neighbor 564 <tt>PEER_CONNECTED</tt>, information on the new neighbor
566 <bcp14>MUST</bcp14> be added to the routing table. 565 <bcp14>MUST</bcp14> be added to the routing table.
566 Peers added to the routing table <tt>SHOULD</tt> be signalled to the
567 Underlay as important connections using <tt>HOLD</tt>.
567 Similarly when a disconnect is indicated by the Underlay through 568 Similarly when a disconnect is indicated by the Underlay through
568 <tt>PEER_DISCONNECTED</tt> messages for all addresses of the peer it 569 <tt>PEER_DISCONNECTED</tt> messages for all addresses of the peer it
569 <bcp14>MUST</bcp14> be removed from the routing table. 570 <bcp14>MUST</bcp14> be removed from the routing table.
@@ -633,44 +634,43 @@ Connectivity | |Underlay| |Underlay|
633 While details on how the first connection is established <bcp14>MAY</bcp14> 634 While details on how the first connection is established <bcp14>MAY</bcp14>
634 depend on the specific implementation, this <bcp14>SHOULD</bcp14> usually be done 635 depend on the specific implementation, this <bcp14>SHOULD</bcp14> usually be done
635 by an out-of-band exchange of the information from a <tt>HELLO</tt> block. 636 by an out-of-band exchange of the information from a <tt>HELLO</tt> block.
636 <!-- FIXME It is unclear why this is needed and why it is here. THis is a serialization format 637 Section <xref target="hello_url"/> specifies a URL format for encoding HELLO
637 of the HELLO block that is not used anywhere in the draft. I already moved the formati itself 638 blocks as text strings which allow portable, human-readable, text-based serialization
638 into the appendix. --> 639 format that can, for example, be encoded into a QR for dissemination.
639 For this, section <xref target="hello_url"/> specifies a URL format for encoding HELLO 640 HELLO URLs <bcp14>SHOULD</bcp14> be supported by implementations for both import and export
640 blocks as text strings which <bcp14>SHOULD</bcp14> be supported by implementations. 641 of <tt>HELLO</tt>s.
641 </t> 642 </t>
642 <t> 643 <t>
643 <!-- FIXME REPL_LVL unclear, RF_SIZE unclear. Sections like this make me wonder how 644 <!-- FIXME REPL_LVL unclear, RF_SIZE unclear. Sections like this make me wonder how
644 we can avoid using prose to specify message creation --> 645 we can avoid using prose to specify message creation.
646 REPL_LVL: For hello it is 4 => RECOMMENDED to 4
647 RF_SIZE: Specified in HELLO block as connected peers = |E|.
648 RF: All peers I am already connected to should be included in the RF BF
649 XQUERY: => nil
650 Flags? FindApproximate
651 -->
645 To discover peers for its routing table, a peer will initiate <tt>GetMessage</tt> requests 652 To discover peers for its routing table, a peer will initiate <tt>GetMessage</tt> requests
646 <xref target="p2p_get"/> asking for blocks of type <tt>HELLO</tt> using its own peer address as 653 <xref target="p2p_get"/> asking for blocks of type <tt>HELLO</tt> using its own peer address as
647 <tt>QUERY_HASH</tt>, filtering all of its neighbors via the Bloom filter described 654 <tt>QUERY_HASH</tt>.
648 in <xref target="result_filter"/> and <xref target="hello_block"/>. 655 The <tt>PEER_BF</tt> is initialized and set using the peers own peer address as well as the addresses
656 of all currently connected peers.
649 These requests <bcp14>MUST</bcp14> use the <tt>FindApproximate</tt> and <tt>DemultiplexEverywhere</tt> 657 These requests <bcp14>MUST</bcp14> use the <tt>FindApproximate</tt> and <tt>DemultiplexEverywhere</tt>
650 flags. <tt>FindApproximate</tt> will ensure that other peers will reply 658 flags. <tt>FindApproximate</tt> will ensure that other peers will reply
651 with keys they merely consider close-enough, while <tt>DemultiplexEverywhere</tt> 659 with keys they merely consider close-enough, while <tt>DemultiplexEverywhere</tt>
652 will cause each peer on the path to respond, which is likely to yield 660 will cause each peer on the path to respond, which is likely to yield
653 <tt>HELLO</tt> s of peers that are useful somewhere in the routing table. 661 <tt>HELLO</tt> s of peers that are useful somewhere in the routing table.
662 The <tt>RECOMMENDED</tt> replication level set in the <tt>REPL_LVL</tt> field is 4.
663 The size and format of the result filter is specified in <xref target="hello_block"/>.
664 The <tt>XQUERY</tt> is empty.
654 </t> 665 </t>
655 <t> 666 <t>
656 In order to facilitate the above, 667 In order to facilitate the above,
657 the Underlay is expected to provide the implementation with one or more 668 the Underlay is expected to provide the implementation with one or more
658 addresses signalled through <tt>ADDRESS_ADDED</tt>. Zero addresses <bcp14>MAY</bcp14> be 669 addresses signalled through <tt>ADDRESS_ADDED</tt>. Zero addresses <bcp14>MAY</bcp14> be
659 provided if a peer can only establish outgoing connections and is otherwise unreachable. 670 provided if a peer can only establish outgoing connections and is otherwise unreachable.
660 <!-- Periodically? sometimes? on change? --> 671 An implementation <bcp14>MUST</bcp14> advertise its addresses periodically to its neighbors through <tt>HelloMessage</tt>s.
661 An implementation <bcp14>MUST</bcp14> advertise its addresses by: 672 The advertisement interval and expiration should be configurable or chosen at the discretion of the implementation based
662 </t> 673 on external factors such as DHCP leases.
663 <!-- FIXME both things here are grossly underdefined for a MUST:
664 Message flags, BF, REPL_LVL etc
665 -->
666 <ul>
667 <li>Initiating <tt>HelloMessage</tt>s to the peers in its routing table (<xref target="p2p_hello_wire"/>).</li>
668 <li>Initiating <tt>PutMessage</tt>s containing <tt>HELLO</tt> blocks (<xref target="hello_block"/>).</li>
669 </ul>
670 <t>
671 <!-- FIXME This here sais that this is a mandatory functionality. in HelloMessage it
672 sais RECOMMENDED
673 FIXME: Expiration time of messages unclear -->
674 The specific frequency of advertisements <bcp14>MAY</bcp14> depend on available bandwidth, 674 The specific frequency of advertisements <bcp14>MAY</bcp14> depend on available bandwidth,
675 the set of already connected neighbors, the workload of the system and other factors which are at the discretion of 675 the set of already connected neighbors, the workload of the system and other factors which are at the discretion of
676 the developer, but <bcp14>SHOULD</bcp14> be a fraction of the expiration period. 676 the developer, but <bcp14>SHOULD</bcp14> be a fraction of the expiration period.
@@ -683,11 +683,13 @@ Connectivity | |Underlay| |Underlay|
683 <section anchor="routing_bloomfilter"> 683 <section anchor="routing_bloomfilter">
684 <name>Peer Bloom Filter</name> 684 <name>Peer Bloom Filter</name>
685 <t> 685 <t>
686 <!-- FIXME HArdcoded to 128 bytes = L/8 -->
686 As DHT <tt>GetMessage</tt>s and <tt>PutMessage</tt>s traverse a random path through the network for the 687 As DHT <tt>GetMessage</tt>s and <tt>PutMessage</tt>s traverse a random path through the network for the
687 first N hops, it is essential that routing loops are avoided. 688 first N hops, it is essential that routing loops are avoided.
688 In R<sup>5</sup>N, a Bloom filter is part of the routing metadata in 689 This peer Bloom filter is constant in size at <tt>L=1024</tt> buckets (128 bytes) and
689 messages in order to prevent circular routes. 690 <tt>k=16</tt> buckets per element.
690 The Bloom filter is updates at each hop with the hops 691 The peer Bloom filter is part of the routing metadata in
692 messages in order to prevent circular routes and is updated at each hop with the hops
691 peer identity. 693 peer identity.
692 For the next hop selection in both the random and the deterministic 694 For the next hop selection in both the random and the deterministic
693 case, any peer which is in the Bloom filter for the respective message 695 case, any peer which is in the Bloom filter for the respective message
@@ -701,10 +703,8 @@ Connectivity | |Underlay| |Underlay|
701 traversed peers when searching for the next hops in the routing table. 703 traversed peers when searching for the next hops in the routing table.
702 </t> 704 </t>
703 <t> 705 <t>
704 The peer Bloom filter follows the definition in <xref target="bloom_filters"/> 706 The peer Bloom filter follows the definition in <xref target="bloom_filters"/>.
705 and consists of L=1024 buckets.
706 The set of elements <tt>E</tt> consists of of all possible 256-bit peer IDs. 707 The set of elements <tt>E</tt> consists of of all possible 256-bit peer IDs.
707 The number of buckets per element <tt>e</tt> is <tt>k=16</tt>.
708 The mapping function <tt>M</tt> is defined as follows: 708 The mapping function <tt>M</tt> is defined as follows:
709 </t> 709 </t>
710 <t> 710 <t>
@@ -808,18 +808,15 @@ BEGIN
808 return 1 + (RM1 / (L2NSE + RM1 * HOPCOUNT)) 808 return 1 + (RM1 / (L2NSE + RM1 * HOPCOUNT))
809]]></artwork> 809]]></artwork>
810 </figure> 810 </figure>
811 <!-- FIXME: WTF? So much wrong here.
812 1. Why is this not part of code if necessary?
813 2. Why is this necessary?
814 3. Why probabillistic?
815
816 Implementations are bound to get this wrong. -->
817 <t> 811 <t>
818 The above calculation may yield values that are 812 The above calculation may yield values that are
819 not discrete. Hence, the result <bcp14>MUST</bcp14> be 813 not discrete. Hence, the result <bcp14>MUST</bcp14> be
820 rounded probabilistically to the nearest 814 rounded probabilistically to the nearest
821 discrete value, using the fraction 815 discrete value, using the fraction
822 as the probability for rounding up. 816 as the probability for rounding up.
817 This probabillistic rounding is necessary to achieve
818 the statistically expected value of the replication
819 level and average number of peers a message is forwarded to.
823 </t> 820 </t>
824 </dd> 821 </dd>
825 </dl> 822 </dl>
@@ -931,8 +928,6 @@ BEGIN
931 Flags is a 16-bit vector representing binary options. 928 Flags is a 16-bit vector representing binary options.
932 Each flag is represented by a bit in the field starting from 0 as 929 Each flag is represented by a bit in the field starting from 0 as
933 the rightmost bit to 15 as the leftmost bit. 930 the rightmost bit to 15 as the leftmost bit.
934 <!--FIXME: Actually, we set those bits and then store the resulting
935 value in NBO...-->
936 </t> 931 </t>
937 <dl> 932 <dl>
938 <dt>0: DemultiplexEverywhere</dt> 933 <dt>0: DemultiplexEverywhere</dt>
@@ -1218,9 +1213,6 @@ BEGIN
1218 addresses through <tt>ADDRESS_ADDED</tt> and <tt>ADDRESS_DELETED</tt> 1213 addresses through <tt>ADDRESS_ADDED</tt> and <tt>ADDRESS_DELETED</tt>
1219 it <bcp14>MAY</bcp14> disseminate those changes to neighbors using 1214 it <bcp14>MAY</bcp14> disseminate those changes to neighbors using
1220 <tt>HelloMessage</tt>s. 1215 <tt>HelloMessage</tt>s.
1221 <!-- FIXME: Are hello messages should or must?
1222 Only recommended not, if so, what if that is not done?
1223 -->
1224 Initiation of <tt>HelloMessages</tt> by the implementation itself is <bcp14>RECOMMENDED</bcp14>. 1216 Initiation of <tt>HelloMessages</tt> by the implementation itself is <bcp14>RECOMMENDED</bcp14>.
1225 <tt>HelloMessage</tt>s are used to inform neighbors of 1217 <tt>HelloMessage</tt>s are used to inform neighbors of
1226 a peer about the sender's available addresses. The 1218 a peer about the sender's available addresses. The
@@ -1312,14 +1304,11 @@ BEGIN
1312 <li> 1304 <li>
1313 The <tt>HELLO</tt> information is cached in the routing table until it expires, 1305 The <tt>HELLO</tt> information is cached in the routing table until it expires,
1314 the peer is removed from the routing table, or the information is replaced by another message from the peer. 1306 the peer is removed from the routing table, or the information is replaced by another message from the peer.
1315 <!-- FIXME same problem as for <tt>HELLO</tt> blocks: We do not need to TRY_CONNECT here because we already have
1316 a connection, obviously. But we may want to TRY_CONNECT on the new addresses? Adding for now -->
1317 The implementation <bcp14>SHOULD</bcp14> instruct the Underlay to connect to all now available addresses 1307 The implementation <bcp14>SHOULD</bcp14> instruct the Underlay to connect to all now available addresses
1318 using <tt>TRY_CONNECT</tt> in order to make the underlay aware of alternative addresses for this connection and 1308 using <tt>TRY_CONNECT</tt> in order to make the underlay aware of alternative addresses for this connection and
1319 to maintain optimal connectivity. 1309 to maintain optimal connectivity.
1320 </li> 1310 </li>
1321 <li> 1311 <li>
1322 <!-- FIXME: We need a statement like this here. Should they? Can they? What if they are (not)? -->
1323 Received <tt>HelloMessages</tt> <bcp14>MUST NOT</bcp14> be forwarded. 1312 Received <tt>HelloMessages</tt> <bcp14>MUST NOT</bcp14> be forwarded.
1324 </li> 1313 </li>
1325 </ol> 1314 </ol>
@@ -1418,8 +1407,8 @@ BEGIN
1418 <dt>PEER_BF</dt> 1407 <dt>PEER_BF</dt>
1419 <dd> 1408 <dd>
1420 A peer Bloom filter to stop circular routes (see <xref target="routing_bloomfilter"/>). 1409 A peer Bloom filter to stop circular routes (see <xref target="routing_bloomfilter"/>).
1421 Set by the initiator to include itself. <!-- FIXME: Is that so? --> 1410 Set by the initiator to contain the local peer and all neighbors it is forwarded to.
1422 Modified by processing peers to include their own peer ID. 1411 Modified by processing peers to include their own peer ID using <tt>BF-SET</tt>.
1423 </dd> 1412 </dd>
1424 <dt>BLOCK_KEY</dt> 1413 <dt>BLOCK_KEY</dt>
1425 <dd> 1414 <dd>
@@ -1505,15 +1494,6 @@ BEGIN
1505 The peer address of the sender peer <tt>P</tt> <bcp14>SHOULD</bcp14> be in <tt>PEER_BF</tt>. 1494 The peer address of the sender peer <tt>P</tt> <bcp14>SHOULD</bcp14> be in <tt>PEER_BF</tt>.
1506 If not, the implementation <bcp14>MAY</bcp14> log an error, but <bcp14>MUST</bcp14> continue. 1495 If not, the implementation <bcp14>MAY</bcp14> log an error, but <bcp14>MUST</bcp14> continue.
1507 </li> 1496 </li>
1508 <!--<li>
1509 FIXME: I do not know what is going on here. "local peer address"
1510 is certainly wrong.
1511 But then, looking at the PathElement description, so wold be local peer ID.
1512 Also, no signatures are ever created in this processing
1513 If the <tt>RecordRoute</tt> flag is set in FLAGS,
1514 the local peer address <bcp14>MUST</bcp14> be appended to the <tt>PUTPATH</tt>
1515 of the message.
1516 </li>-->
1517 <li> 1497 <li>
1518 If the <tt>RecordRoute</tt> flag is not set, the <tt>PATH_LEN</tt> 1498 If the <tt>RecordRoute</tt> flag is not set, the <tt>PATH_LEN</tt>
1519 <bcp14>MUST</bcp14> be set to zero. 1499 <bcp14>MUST</bcp14> be set to zero.
@@ -1531,17 +1511,16 @@ BEGIN
1531 If the local peer is the closest peer 1511 If the local peer is the closest peer
1532 (cf. <tt>IsClosestPeer(SELF, BLOCK_KEY, PeerFilter)</tt>) or the <tt>DemultiplexEverywhere</tt> 1512 (cf. <tt>IsClosestPeer(SELF, BLOCK_KEY, PeerFilter)</tt>) or the <tt>DemultiplexEverywhere</tt>
1533 flag ist set, the message <bcp14>MUST</bcp14> 1513 flag ist set, the message <bcp14>MUST</bcp14>
1534 be stored locally in the block storage. 1514 be stored locally in the block storage if possible.
1535 </li> 1515 </li>
1536 <li> 1516 <li>
1537 <!-- FIXME: Discuss: Changed from MUST to SHOULD - MSC -->
1538 If the <tt>BTYPE</tt> of the message indicates a <tt>HELLO</tt> block, the 1517 If the <tt>BTYPE</tt> of the message indicates a <tt>HELLO</tt> block, the
1539 peer <bcp14>SHOULD</bcp14> be considered for the local routing 1518 peer <bcp14>MUST</bcp14> be considered for the local routing
1540 table by using the peer address in <tt>BLOCK_KEY</tt>. 1519 table by using the peer address in <tt>BLOCK_KEY</tt>.
1541 An implementation <bcp14>MAY</bcp14> choose to ignore the <tt>HELLO</tt>, for example 1520 If the peer is not either already connected or the respective k-bucket is
1542 because the routing table or the respective k-bucket is already full. 1521 not already full the peer <bcp14>MUST</bcp14> try to establish a
1543 If the peer is a suitable candidate for insertion, the local peer <bcp14>MUST</bcp14> try to establish a connection 1522 connection to the peer indicated in the <tt>HELLO</tt> block using
1544 to the peer indicated in the <tt>HELLO</tt> block using the address information 1523 the address information
1545 from the <tt>HELLO</tt> block and the Underlay function <tt>TRY_CONNECT</tt>. 1524 from the <tt>HELLO</tt> block and the Underlay function <tt>TRY_CONNECT</tt>.
1546 The implementation <bcp14>MUST</bcp14> instruct the Underlay to connect to all provided addresses 1525 The implementation <bcp14>MUST</bcp14> instruct the Underlay to connect to all provided addresses
1547 using <tt>TRY_CONNECT</tt> in order to make the underlay aware of multiple addresses for this connection. 1526 using <tt>TRY_CONNECT</tt> in order to make the underlay aware of multiple addresses for this connection.
@@ -1560,12 +1539,13 @@ BEGIN
1560 For each selected peer with peer address <tt>P</tt> a dedicated <tt>PutMessage_P</tt> 1539 For each selected peer with peer address <tt>P</tt> a dedicated <tt>PutMessage_P</tt>
1561 is created containing the original (and where applicable already updated) fields 1540 is created containing the original (and where applicable already updated) fields
1562 of the received <tt>PutMessage</tt>. 1541 of the received <tt>PutMessage</tt>.
1563 In each message the local peer address <bcp14>MUST</bcp14> be added to the 1542 In each message the all selected addresses and the local peer <bcp14>MUST</bcp14> be added to the
1564 <tt>PEER_BF</tt> and the <tt>HOPCOUNT</tt> is incremented by 1. 1543 <tt>PEER_BF</tt> and the <tt>HOPCOUNT</tt> is incremented by 1.
1565 If the <tt>RecordRoute</tt> flag is set, a new Path Element is created and added 1544 If the <tt>RecordRoute</tt> flag is set, a new Path Element is created using the
1566 to the <tt>PUTPATH</tt> fields and the <tt>PATH_LEN</tt> field is incremented by 1. 1545 predecessor peer ID and the signature of the current peer.
1567 The successor in the new Path Element is the recipient peer <tt>P</tt> of the <tt>PutMessageP</tt>. 1546 The Path Element is added to the <tt>PUTPATH</tt> fields and the <tt>PATH_LEN</tt> field is incremented by 1.
1568 Finally, the messages are sent using <tt>SEND(P, PutMessageP)</tt> each recipient. 1547 When creating the Path Element signature, the successor must be set to the recipient peer <tt>P</tt> of the <tt>PutMessageP</tt>.
1548 The successor in the new Path Element is the recipient peer <tt>P</tt> of Finally, the messages are sent using <tt>SEND(P, PutMessageP)</tt> each recipient.
1569 </li> 1549 </li>
1570 </ol> 1550 </ol>
1571 </section> 1551 </section>
@@ -1638,13 +1618,13 @@ BEGIN
1638 <dd> 1618 <dd>
1639 is a 16-bit number indicating the length of the 1619 is a 16-bit number indicating the length of the
1640 result filter RESULT_FILTER. 1620 result filter RESULT_FILTER.
1641 Set by the initiator. Read-only. <!--FIXME is that so? --> 1621 Set by the initiator. Read-only.
1642 In network byte order. 1622 In network byte order.
1643 </dd> 1623 </dd>
1644 <dt>PEER_BF</dt> 1624 <dt>PEER_BF</dt>
1645 <dd> 1625 <dd>
1646 A peer Bloom filter to stop circular routes (see <xref target="routing_bloomfilter"/>). 1626 A peer Bloom filter to stop circular routes (see <xref target="routing_bloomfilter"/>).
1647 Set by the initiator to include itself. <!-- FIXME Is that so? --> 1627 Set by the initiator to include itself and all connected neighbors in the routing table.
1648 Modified by processing peers to include their own peer address. 1628 Modified by processing peers to include their own peer address.
1649 </dd> 1629 </dd>
1650 <dt>QUERY_HASH</dt> 1630 <dt>QUERY_HASH</dt>
@@ -1664,7 +1644,7 @@ BEGIN
1664 <dt>XQUERY</dt> 1644 <dt>XQUERY</dt>
1665 <dd> 1645 <dd>
1666 the variable-length extended query. Optional. 1646 the variable-length extended query. Optional.
1667 Set by the initiator. <!-- FIXME: Modified by processing peers? --> 1647 Set by the initiator. Read-only.
1668 </dd> 1648 </dd>
1669 </dl> 1649 </dl>
1670 </section> 1650 </section>
@@ -1843,7 +1823,12 @@ BEGIN
1843 <dt>FLAGS</dt> 1823 <dt>FLAGS</dt>
1844 <dd> 1824 <dd>
1845 is a 16-bit vector with binary options (see <xref target="route_flags"/>). 1825 is a 16-bit vector with binary options (see <xref target="route_flags"/>).
1846 Set by the initiator. <!-- FIXME to what? --> 1826 Set by the initiator. <!-- FIXME to what? => Copied from GET?
1827 The code currently just sets the recorded PUT flags / overrides GET
1828 What should happen?
1829 Currently in case of HELLO => flags cleared.
1830 HELLO only FindApprox
1831 Application preserve flags from PUT-->
1847 </dd> 1832 </dd>
1848 <dt>PUTPATH_L</dt> 1833 <dt>PUTPATH_L</dt>
1849 <dd> 1834 <dd>
@@ -1966,7 +1951,8 @@ BEGIN
1966 does not have to match the <tt>QUERY_HASH</tt>. 1951 does not have to match the <tt>QUERY_HASH</tt>.
1967 </li> 1952 </li>
1968 <li> 1953 <li>
1969 <!-- FIXME: Discuss: Changed from MUST to SHOULD - MSC --> 1954 <!-- FIXME: Discuss: Changed from MUST to SHOULD --
1955 same change as above - MSC -->
1970 If the <tt>BTYPE</tt> of the message indicates a <tt>HELLO</tt> block, the 1956 If the <tt>BTYPE</tt> of the message indicates a <tt>HELLO</tt> block, the
1971 peer <bcp14>SHOULD</bcp14> be considered for the local routing 1957 peer <bcp14>SHOULD</bcp14> be considered for the local routing
1972 table by using the peer address computed from the block using<tt>DeriveBlockKey</tt>. 1958 table by using the peer address computed from the block using<tt>DeriveBlockKey</tt>.
@@ -2031,7 +2017,9 @@ BEGIN
2031 <li> 2017 <li>
2032 <!-- FIXME: If that is the case, then this also needs to be in the 2018 <!-- FIXME: If that is the case, then this also needs to be in the
2033 processing of GetMessage: I think we shoul dmove this to some 2019 processing of GetMessage: I think we shoul dmove this to some
2034 performance considerations instead. --> 2020 performance considerations instead.
2021 => same formulation as for PUT to store if possible (MUST)
2022 usr 1-to-1-->
2035 Finally, the implementation <bcp14>MAY</bcp14> choose to 2023 Finally, the implementation <bcp14>MAY</bcp14> choose to
2036 cache data from <tt>ResultMessage</tt>s. 2024 cache data from <tt>ResultMessage</tt>s.
2037 </li> 2025 </li>
@@ -2304,7 +2292,10 @@ BEGIN
2304 <dd> 2292 <dd>
2305 <t> 2293 <t>
2306 <!-- FIXME: I do not understand this. Isn't the element set E known 2294 <!-- FIXME: I do not understand this. Isn't the element set E known
2307 for <tt>HELLO</tt> blocks? Isn't it H_ADDRS XOR MUTATOR? --> 2295 for <tt>HELLO</tt> blocks? Isn't it H_ADDRS XOR MUTATOR?
2296 E => conected peers in routing table
2297 K => is 16
2298 -->
2308 The RESULT_FILTER for <tt>HELLO</tt> blocks is implemented using a 2299 The RESULT_FILTER for <tt>HELLO</tt> blocks is implemented using a
2309 Bloom filter following the definition from <xref target="bloom_filters"/> 2300 Bloom filter following the definition from <xref target="bloom_filters"/>
2310 and consists of a variable number of buckets <tt>L</tt>. 2301 and consists of a variable number of buckets <tt>L</tt>.
@@ -2312,7 +2303,10 @@ BEGIN
2312 initiator. 2303 initiator.
2313 <!-- FIXME: Minimum space for used for what? There is no example given anywhere in the 2304 <!-- FIXME: Minimum space for used for what? There is no example given anywhere in the
2314 spec how this becomes relevant. Again, this is not some abstract block, 2305 spec how this becomes relevant. Again, this is not some abstract block,
2315 but specifically a <tt>HELLO</tt> (see above). --> 2306 but specifically a <tt>HELLO</tt> (see above).
2307 E is the number of currently connected peers (neighbors)!
2308 E is no really ever 0 so the following sentence should be amended.
2309 -->
2316 If <tt>|E|</tt> is zero, the size <tt>L</tt> is set to 32 bits to provide some minimum 2310 If <tt>|E|</tt> is zero, the size <tt>L</tt> is set to 32 bits to provide some minimum
2317 space (to be used by peers when forwarding the request after 2311 space (to be used by peers when forwarding the request after
2318 returning local results). 2312 returning local results).
@@ -2544,7 +2538,9 @@ BEGIN
2544 control such as <xref target="RFC6940"/> which, like R<sup>5</sup>N, provides 2538 control such as <xref target="RFC6940"/> which, like R<sup>5</sup>N, provides
2545 a peer-to-peer (P2P) signaling protocol with extensible routing and topology 2539 a peer-to-peer (P2P) signaling protocol with extensible routing and topology
2546 mechanisms. 2540 mechanisms.
2547 <!-- FIXME: Can we give examples here? --> 2541 <!-- FIXME: Can we give examples here?
2542 Centralization DNS roots fixed through GNS.
2543 -->
2548 Some decentralized applications require a more open system that 2544 Some decentralized applications require a more open system that
2549 enables ad-hoc participation and other means to prevent common attacks 2545 enables ad-hoc participation and other means to prevent common attacks
2550 on P2P overlays. 2546 on P2P overlays.
@@ -2605,7 +2601,9 @@ BEGIN
2605 GANA created the registry as follows: 2601 GANA created the registry as follows:
2606 </t> 2602 </t>
2607 <!-- FIXME changed GNS Reference to This.I-D because we either need to define it here 2603 <!-- FIXME changed GNS Reference to This.I-D because we either need to define it here
2608 or in the GNS RFC. And I think here is better or in a separate document -MSC --> 2604 or in the GNS RFC. And I think here is better or in a separate document
2605 => not in here. Use separate document for NAMERECORD draft.
2606 -MSC -->
2609 <figure anchor="figure_btypenums" title="The Block Type Registry."> 2607 <figure anchor="figure_btypenums" title="The Block Type Registry.">
2610 <artwork name="" type="" align="left" alt=""><![CDATA[ 2608 <artwork name="" type="" align="left" alt=""><![CDATA[
2611Number| Name | References | Description 2609Number| Name | References | Description
@@ -3001,12 +2999,8 @@ maybe generate proper test vector.
3001 is reachable via "udp" at 127.0.0.1 on port 2086 until 2999 is reachable via "udp" at 127.0.0.1 on port 2086 until
3002 1647134480 seconds after the Epoch. Note that "udp" 3000 1647134480 seconds after the Epoch. Note that "udp"
3003 here is underspecified and just used as a simple example. 3001 here is underspecified and just used as a simple example.
3004 <!-- FIXME: Must be supported by which underlay?
3005 This does not make sense. I may be able to generate
3006 addr-names that my underlay supports, but there is not
3007 way to guarantee that all underlays support it. -->
3008 In practice, the key (addr-name) 3002 In practice, the key (addr-name)
3009 <bcp14>MUST</bcp14> refer to a scheme supported by a 3003 refers to a scheme supported by a
3010 DHT Underlay. 3004 DHT Underlay.
3011 </t> 3005 </t>
3012 <t> 3006 <t>