summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schanzenbach <schanzen@gnunet.org>2022-01-03 17:00:36 +0100
committerMartin Schanzenbach <schanzen@gnunet.org>2022-01-03 17:00:36 +0100
commitb31bcaade0c2276e076a9e3bb112e9d0bcb42048 (patch)
tree3bf9f6e22fc5f95741396549818a7583176cee4e
parent2bde8964191faa51f4a5efc4e34d540b120ea6c7 (diff)
downloadlsd0004-b31bcaade0c2276e076a9e3bb112e9d0bcb42048.tar.gz
lsd0004-b31bcaade0c2276e076a9e3bb112e9d0bcb42048.zip
node address
-rw-r--r--draft-schanzen-r5n.xml110
1 files changed, 59 insertions, 51 deletions
diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml
index d1039c3..6bd13ed 100644
--- a/draft-schanzen-r5n.xml
+++ b/draft-schanzen-r5n.xml
@@ -5,8 +5,8 @@
5<!ENTITY RFC3629 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3629.xml"> 5<!ENTITY RFC3629 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3629.xml">
6<!ENTITY RFC3686 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3686.xml"> 6<!ENTITY RFC3686 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3686.xml">
7<!ENTITY RFC3826 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3826.xml"> 7<!ENTITY RFC3826 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3826.xml">
8<!-- <!ENTITY RFC3912 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3912.xml"> -->
9<!ENTITY RFC3986 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3986.xml"> 8<!ENTITY RFC3986 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3986.xml">
9<!ENTITY RFC4634 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4634.xml">
10<!ENTITY RFC4648 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4648.xml"> 10<!ENTITY RFC4648 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4648.xml">
11<!ENTITY RFC5869 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5869.xml"> 11<!ENTITY RFC5869 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5869.xml">
12<!ENTITY RFC5890 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5890.xml"> 12<!ENTITY RFC5890 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5890.xml">
@@ -240,7 +240,8 @@ Connectivity | |Underlay| |Underlay|
240 <t> 240 <t>
241 In the DHT overlay, a node is addressable by its 241 In the DHT overlay, a node is addressable by its
242 <tt>Node Address</tt>. 242 <tt>Node Address</tt>.
243 The <tt>Node Address</tt> is a 512-bit hash of the <tt>Node ID</tt>. 243 The <tt>Node Address</tt> is a SHA-512 hash <xref target="RFC4634"/>
244 of the <tt>Node ID</tt>.
244 <!-- FIXME should the node ID be agile? Should the signature then 245 <!-- FIXME should the node ID be agile? Should the signature then
245 also be agile?--> 246 also be agile?-->
246 <!--The node public key is the public key of the corresponding 247 <!--The node public key is the public key of the corresponding
@@ -393,66 +394,72 @@ see how we can offer even the most minimal protections against node
393 procedures and events: 394 procedures and events:
394 </t> 395 </t>
395 <dl> 396 <dl>
396 <dt>NODE_CONNECTED(NodeID, Address)</dt> 397 <dt><tt>PEER_CONNECTED(P)</tt></dt>
397 <dd> 398 <dd>
398 is a signal that allows the DHT to react to nodes which connect. 399 is a signal that allows the DHT to react to a newly connected peer
400 <tt>N</tt>.
399 Such an event triggers, for example, updates in the 401 Such an event triggers, for example, updates in the
400 routing table. 402 routing table.
401 </dd> 403 </dd>
402 <dt>NODE_DISCONNECTED(NodeID, Address)</dt> 404 <dt><tt>PEER_DISCONNECTED(P)</tt></dt>
403 <dd> 405 <dd>
404 is a signal that allows the DHT to react to nodes which disconnect. 406 is a signal that allows the DHT to react to a recently disconnected
407 peer.
405 Such an event triggers, for example, updates in the 408 Such an event triggers, for example, updates in the
406 routing table. 409 routing table.
407 </dd> 410 </dd>
408 <dt>TRY_CONNECT(NodeID, Address)</dt> 411 <dt><tt>TRY_CONNECT(N, A)</tt></dt>
409 <dd> 412 <dd>
410 A function which allows a node to attempt the establishment of 413 A function which allows the local node to attempt the establishment of
411 a connection to another node using an address. 414 a connection to another node <tt>N</tt> using an address <tt>A</tt>.
412 When the connection attempt is successful, information on the new 415 When the connection attempt is successful, information on the new
413 peer is offered through the <tt>NODE_CONNECTED</tt> signal. 416 peer is offered through the <tt>PEER_CONNECTED</tt> signal.
414 </dd> 417 </dd>
415 <dt>HOLD(NodeID)</dt> 418 <dt><tt>HOLD(P)</tt></dt>
416 <dd> 419 <dd>
417 A function which tells the underlay to keep a hold on the connection 420 A function which tells the underlay to keep a hold on the connection
418 to another node. 421 to a peer <tt>P</tt>. FIXME what is this needed for?
419 </dd> 422 </dd>
420 <dt>DROP(NodeID)</dt> 423 <dt><tt>DROP(P)</tt></dt>
421 <dd> 424 <dd>
422 A function which tells the underlay to drop the connection to another 425 A function which tells the underlay to drop the connection to a
423 node. 426 peer <tt>P</tt>. FIXME what is this needed for?
424 </dd> 427 </dd>
425 <dt>RECEIVE(NodeID, Message)</dt> 428 <dt><tt>RECEIVE(P, M)</tt></dt>
426 <dd> 429 <dd>
427 A function or event that allows the node to receive protocol 430 A function or event that allows the local node to receive a protocol
428 messages as defined in this document from a connected node. 431 message <tt>M</tt> as defined in this document from a peer <tt>P</tt>.
429 </dd> 432 </dd>
430 <dt>SEND(NodeID, Message)</dt> 433 <dt><tt>SEND(P, M)</tt></dt>
431 <dd> 434 <dd>
432 A function that allows a node to send protocol messages as defined 435 A function that allows the local node to send a protocol message
433 in this document to a connected node. If call to SEND fails, 436 <tt>M</tt> as defined in this document to a peer <tt>P</tt>.
434 the message has not been sent. 437 If call to SEND fails, the message has not been sent.
435 </dd> 438 </dd>
436 <dt>NETWORK_SIZE_ESTIMATE(N)</dt> 439 <dt><tt>NETWORK_SIZE_ESTIMATE(S)</tt></dt>
437 <dd> 440 <dd>
438 A function or event that provides estimates on the network size 441 A function or event that provides estimates on the network size
439 for use in the DHT routing algorithms. 442 <tt>S</tt> for use in the DHT routing algorithms.
443 FIXME: What is S and give an example.
440 </dd> 444 </dd>
441 <dt>ADDRESS_ADD(NodeID, address)</dt> 445 <dt><tt>ADDRESS_ADDED(A)</tt></dt>
442 <dd> 446 <dd>
443 The underlay signals us that an address was added. 447 The underlay signals us that an address <tt>A</tt> was added for our
444 This information is used, for example, to publish 448 local node.
445 connectivity as part of the bootstrapping and overlay creation. 449 This information is used to advertise
450 connectivity information to the local node.
451 <tt>A</tt> is a string suitable for inclusion in a HELLO payload
452 <xref target="hello_block"/>.
446 </dd> 453 </dd>
447 <dt>ADDRESS_DELETE(NodeID, address)</dt> 454 <dt><tt>ADDRESS_DELETED(A)</tt></dt>
448 <dd> 455 <dd>
449 The underlay signals us that an address was removed. 456 The underlay signals us that an address <tt>A</tt> was removed.
450 This information is used, for example, to publish 457 This information is used, for example, to no longer advertise
451 connectivity as part of the bootstrapping and overlay creation. 458 this address.
452 </dd> 459 </dd>
453 <dt>VERIFY(blob)</dt> 460 <dt><tt>VERIFY(blob)</tt></dt>
454 <dd> 461 <dd>
455 Signature verification by underlay. 462 Signature verification by underlay. FIXME unclear. Required?
456 </dd> 463 </dd>
457 </dl> 464 </dl>
458 </section> 465 </section>
@@ -543,14 +550,14 @@ see how we can offer even the most minimal protections against node
543 the peer <tt>P</tt>. 550 the peer <tt>P</tt>.
544 In the following, the wire formats of the messages and the required 551 In the following, the wire formats of the messages and the required
545 processing are detailed. 552 processing are detailed.
546 The local node ID is referred to as <tt>N</tt>. 553 The local node address is referred to as <tt>N</tt>.
547 </t> 554 </t>
548 <section anchor="p2p_bf" numbered="true" toc="default"> 555 <section anchor="p2p_bf" numbered="true" toc="default">
549 <name>Bloomfilter</name> 556 <name>Bloomfilter</name>
550 <t> 557 <t>
551 In order to prevent circular routes, GET and PUT messages contain 558 In order to prevent circular routes, GET and PUT messages contain
552 a 128-bit Bloom filter (m=128). The Bloom filter is used to detect duplicate 559 a 128-bit Bloom filter (m=128). The Bloom filter is used to detect duplicate
553 node IDs along the route. 560 node addresses along the route.
554 A Bloom filter "bf" is initially empty, consisting only of zeroes. 561 A Bloom filter "bf" is initially empty, consisting only of zeroes.
555 There are two functions which can be invoked on the Bloom filter: 562 There are two functions which can be invoked on the Bloom filter:
556 BF-SET(bf, e) and BF-TEST(bf, e) where "e" is an element which is to 563 BF-SET(bf, e) and BF-TEST(bf, e) where "e" is an element which is to
@@ -659,7 +666,7 @@ END
659 </dd> 666 </dd>
660 <dt>BLOOMFILTER</dt> 667 <dt>BLOOMFILTER</dt>
661 <dd> 668 <dd>
662 A bloomfilter (for node IDs) to stop circular routes. 669 A bloomfilter (for node addresses) to stop circular routes.
663 </dd> 670 </dd>
664 <dt>KEY</dt> 671 <dt>KEY</dt>
665 <dd> 672 <dd>
@@ -669,7 +676,7 @@ END
669 <dt>PUTPATH</dt> 676 <dt>PUTPATH</dt>
670 <dd> 677 <dd>
671 the variable-length PUT path. 678 the variable-length PUT path.
672 The path consists of a list of PATH_LEN node IDs. 679 The path consists of a list of PATH_LEN node addresses.
673 </dd> 680 </dd>
674 <dt>BLOCK</dt> 681 <dt>BLOCK</dt>
675 <dd> 682 <dd>
@@ -703,12 +710,12 @@ END
703 it MUST be discarded. 710 it MUST be discarded.
704 </li> 711 </li>
705 <li> 712 <li>
706 The node ID of the sender peer <tt>P</tt> SHOULD be in <tt>BLOOMFILTER</tt>. 713 The node address of the sender peer <tt>P</tt> SHOULD be in <tt>BLOOMFILTER</tt>.
707 If not, the implementation MAY log an error, but MUST continue. 714 If not, the implementation MAY log an error, but MUST continue.
708 </li> 715 </li>
709 <li> 716 <li>
710 If the <tt>RecordRoute</tt> flag is set in OPTIONS, 717 If the <tt>RecordRoute</tt> flag is set in OPTIONS,
711 the local node ID MUST be appended to the <tt>PUTPATH</tt> 718 the local node address MUST be appended to the <tt>PUTPATH</tt>
712 of the message. 719 of the message.
713 </li> 720 </li>
714 <li> 721 <li>
@@ -724,9 +731,9 @@ END
724 number of peers to forward the message to. The implementation MAY 731 number of peers to forward the message to. The implementation MAY
725 forward to fewer or no peers in order to handle resource constraints 732 forward to fewer or no peers in order to handle resource constraints
726 such as bandwidth. 733 such as bandwidth.
727 Finally, the local node ID MUST be added to the 734 Finally, the local node address MUST be added to the
728 <tt>BLOOMFILTER</tt> of the forwarded message. 735 <tt>BLOOMFILTER</tt> of the forwarded message.
729 For all peers with node ID <tt>P</tt> chosen to forward the message 736 For all peers with node address <tt>P</tt> chosen to forward the message
730 to, <tt>SEND(P, PutMessage)</tt> is called. 737 to, <tt>SEND(P, PutMessage)</tt> is called.
731 </li> 738 </li>
732 </ol> 739 </ol>
@@ -832,7 +839,7 @@ END
832 the message MUST be discarded. 839 the message MUST be discarded.
833 </li> 840 </li>
834 <li> 841 <li>
835 The node ID of the sender peer <tt>P</tt> SHOULD be in the 842 The node address of the sender peer <tt>P</tt> SHOULD be in the
836 BLOOMFILTER. If not, the 843 BLOOMFILTER. If not, the
837 implementation MAY log an error, but MUST continue. 844 implementation MAY log an error, but MUST continue.
838 </li> 845 </li>
@@ -871,8 +878,9 @@ END
871 number of nodes to forward the message to. The implementation MAY 878 number of nodes to forward the message to. The implementation MAY
872 forward to fewer or no nodes in order to handle resource constraints 879 forward to fewer or no nodes in order to handle resource constraints
873 such as bandwidth. 880 such as bandwidth.
874 The message BLOOMFILTER MUST be updated with the local node ID <tt>N</tt>. 881 The message BLOOMFILTER MUST be updated with the local node
875 For all peers with node ID <tt>P'</tt> chosen to forward the message 882 address <tt>N</tt>.
883 For all peers with node address <tt>P'</tt> chosen to forward the message
876 to, <tt>SEND(P', PutMessage)</tt> is called. 884 to, <tt>SEND(P', PutMessage)</tt> is called.
877 </li> 885 </li>
878 </ol> 886 </ol>
@@ -953,12 +961,12 @@ END
953 <dt>PUTPATH</dt> 961 <dt>PUTPATH</dt>
954 <dd> 962 <dd>
955 the variable-length PUT path. 963 the variable-length PUT path.
956 The path consists of a list of PATH_LEN node IDs. 964 The path consists of a list of PATH_LEN node addresses.
957 </dd> 965 </dd>
958 <dt>GETPATH</dt> 966 <dt>GETPATH</dt>
959 <dd> 967 <dd>
960 the variable-length PUT path. 968 the variable-length PUT path.
961 The path consists of a list of PATH_LEN node IDs. 969 The path consists of a list of PATH_LEN node addresses.
962 </dd> 970 </dd>
963 <dt>BLOCK</dt> 971 <dt>BLOCK</dt>
964 <dd> 972 <dd>
@@ -1210,16 +1218,16 @@ tor+onionv3://rasdflkjasdfliasduf.onion/
1210 <t> 1218 <t>
1211 In order to find the closest nodes in the network to itself, an 1219 In order to find the closest nodes in the network to itself, an
1212 implementation MUST now periodically send HELLO GET queries for its own 1220 implementation MUST now periodically send HELLO GET queries for its own
1213 node ID. 1221 node address.
1214 Both the "record route" and "find node" message options are set in the 1222 Both the "record route" and "find node" message options are set in the
1215 GET queries in order to learn nodes and network topology from the 1223 GET queries in order to learn nodes and network topology from the
1216 message route and in order to receive approximate replies to the 1224 message route and in order to receive approximate replies to the
1217 query key (the node ID). 1225 query key (the node address).
1218 </t> 1226 </t>
1219 <t>FIXME: Periodically -> more specific? No. Frequency may be adapted depending on network conditions, known nodes, busy/idle etc.</t> 1227 <t>FIXME: Periodically -> more specific? No. Frequency may be adapted depending on network conditions, known nodes, busy/idle etc.</t>
1220 <t> 1228 <t>
1221 Any implementation encountering a HELLO GET request initially 1229 Any implementation encountering a HELLO GET request initially
1222 sends its own node ID if it. 1230 sends its own node address if it.
1223 </t> 1231 </t>
1224 </section> 1232 </section>
1225 <section anchor="security" numbered="true" toc="default"> 1233 <section anchor="security" numbered="true" toc="default">
@@ -1285,7 +1293,7 @@ Purpose | Name | References | Description
1285 1293
1286 &RFC2119; 1294 &RFC2119;
1287 &RFC3629; 1295 &RFC3629;
1288 <!--&RFC3986; URI--> 1296 &RFC4634;
1289 &RFC4648; 1297 &RFC4648;
1290 &RFC6940; 1298 &RFC6940;
1291 &RFC8126; 1299 &RFC8126;