diff options
Diffstat (limited to 'draft-schanzen-r5n.xml')
-rw-r--r-- | draft-schanzen-r5n.xml | 160 |
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[ |
2611 | Number| Name | References | Description | 2609 | Number| 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> |