lsd0004

LSD0004: R5N Distributed Hash Table
Log | Files | Refs

commit 381092687c61438e1654dd5950f9102451e94712
parent 33b669e084d8800e80246c54a3a98505e82876db
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Sat, 17 Feb 2024 10:03:47 +0100

Add RFC9498; Remove URI requirement from underlay address

Diffstat:
Mdraft-schanzen-r5n.xml | 93+++++++++++++++++++++++++++++++++++++------------------------------------------
1 file changed, 44 insertions(+), 49 deletions(-)

diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml @@ -20,7 +20,7 @@ <!ENTITY RFC8126 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8126.xml"> <!ENTITY RFC8174 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml"> <!ENTITY RFC8324 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8324.xml"> -<!ENTITY I-D.schanzen-gns PUBLIC '' "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.schanzen-gns.xml"> +<!ENTITY RFC9498 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9498.xml"> ]> <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> <?rfc strict="yes" ?> @@ -82,7 +82,7 @@ and data structure for decentralized applications. It features an open peer-to-peer overlay routing mechanism which supports ad-hoc permissionless participation and support for topologies in restricted-route - environments. If desired, the paths data takes through the overlay can be + environments. Optionally, the paths data takes through the overlay can be recorded, allowing decentralized applications to use the DHT to discover routes. </t> <t> @@ -148,35 +148,25 @@ <dt>Address</dt> <dd> <t> - is a UTF-8 <xref target="RFC3629"/> URI - <xref target="RFC3986"/> which can be - used to contact a <em>peer</em>. - In this document we use the example scheme for URIs. - It is expected that schemes refer suitable transport protocols - are used. - The "hier"-part of the URI must provide a suitable - address for the given addressing scheme. - The following are non-normative examples of <em>address</em> strings: + An <em>Address</em> is a UTF-8 <xref target="RFC3629"/> string which can be + used to address a <em>peer</em> through the Underlay (<xref target="underlay"/>). + The format of an address is not enforced by this specification, + but it is expected that in most cases the address is a URI <xref target="RFC3986"/>. </t> - <figure title="Example Address URIs."> - <artwork name="" type="" align="left" alt=""><![CDATA[ -example://1.2.3.4:6789/ -example://12.3.4.5/ -]]></artwork> - </figure> </dd> <dt>Applications</dt> <dd> - <em>Applications</em> are higher-layer components which directly use the DHT overlay - interfaces. Possible <em>applications</em> include the GNU Name System - <xref target="I-D.schanzen-gns"/> and the GNUnet + <em>Applications</em> are higher-layer components which directly use the + <em>Core Operations</em>. + Possible <em>applications</em> include the GNU Name System + <xref target="RFC9498"/> and the GNUnet Confidential Ad-hoc Decentralized End-to-End Transport (CADET) <xref target="cadet"/>. </dd> - <dt>Application API</dt> + <dt>Core Operations</dt> <dd> - The <em>application API</em> exposes the core operations of the DHT overlay - to <em>applications</em>. + The <em>Core Operations</em> provide an interface to the + core operations of the DHT overlay to <em>applications</em>. This includes storing <em>blocks</em> in the DHT and retrieving <em>blocks</em> from the DHT. </dd> @@ -202,10 +192,9 @@ example://12.3.4.5/ </dd> <dt>Bootstrapping</dt> <dd> - <em>Bootstrapping</em> is the initial process of establishing a connection - to the peer-to-peer - network. - This initially requires an initial, non-empty set of reachable <em>peers</em> and corresponding + <em>Bootstrapping</em> is the process of establishing a connection + to the peer-to-peer network. + It requires an initial, non-empty set of reachable <em>peers</em> and corresponding <em>addresses</em> supported by the implementation to connect to. </dd> <dt>Initiator</dt> @@ -217,15 +206,14 @@ example://12.3.4.5/ <dd> A <tt>HELLO block</tt> is a <em>block</em> with a <em>block-type</em> <tt>DHT_HELLO</tt> (13). A <tt>HELLO block</tt> is used to store and retrieve <em>addresses</em> of a <em>peer</em>. - In this document, <tt>HELLO</tt> blocks are used by the peer discovery mechanism. + <tt>HELLO</tt> blocks are used by the peer discovery mechanism in <xref target="find_peer"/>. </dd> <dt>HELLO URL</dt> <dd> <tt>HELLO</tt> URLs are <tt>HELLO</tt> blocks represented as URLs. - They can used for out-of-band exchanges of <em>peer</em> <em>address</em> - information and are used for - address update signalling messages to <em>neighbours</em>. Example HELLO URLs and their - format can be found in <xref target="hello_url"/>. + They are used for out-of-band exchanges of <em>peer</em> <em>addresses</em> + and for signalling address updates to <em>neighbours</em>. + Implementation details of HELLO URLs and examples are found in <xref target="hello_url"/>. </dd> <dt>Key</dt> <dd> @@ -272,7 +260,7 @@ example://12.3.4.5/ </dd> <dt>Underlay Interface</dt> <dd> - The <em>inderlay interface</em> is an abstraction layer on top of the + The <em>underlay interface</em> is an abstraction layer on top of the supported links of a <em>peer</em>. Peers may be linked by a variety of different transports, including "classical" protocols such as TCP, UDP and TLS or higher-layer protocols such as GNUnet, I2P or Tor. @@ -294,8 +282,9 @@ example://12.3.4.5/ and is ineffective for some physical networks. </t> <t> - For example, some nodes which in terms of a classical distance metric such as XOR - are considered close, may not be reachable due to a firewall. + Nodes which in terms of a classical distance metric such as XOR + would be considered close may not be reachable, for example due to a firewall + or NAT. This leads to multiple (local) minima with respect to where data may be stored or where data can be retrieved. From a particular fixed location in the network, a node may only be able to @@ -321,9 +310,15 @@ example://12.3.4.5/ <xref target="RFC6940"/> specifies the RELOAD DHT. The R<sup>5</sup>N DHT described in this document differs from RELOAD in its objectives and thus in its design. - In particular, <xref target="RFC6940"/> explicitly states that node identifier - are either assigned by a central authority, or self-issued in the case of closed - networks. + The authors of RELOAD make the case that P2P networks are often established + among a set of peers that do not trust each other. + It addresses this issue by requiring that node identifiers + are either assigned by a central authority, or self-issued in the case of closed networks. + In other words, by enforcing the P2P network to be established among a set + of <em>trusted</em> peers. + This misses the point that this openness is a core requirement of efficient and + useful DHTs as they serve a fundamental part in a decentralized network + infrastructure. R<sup>5</sup>N, by contrast, is intended for open overlay networks, and thus does not include a central enrollment server to certify participants and does not limit participation in another way. @@ -368,8 +363,8 @@ example://12.3.4.5/ <section> <name>Overview</name> <t> - In R<sup>5</sup>N peers communicate with each other to provide - the two fundamental operations of any distributed hash table: + In R<sup>5</sup>N peers provide + the two fundamental core operations of any DHT to their applications: </t> <ul> <li> @@ -459,7 +454,7 @@ example://12.3.4.5/ | +-----------------+ +-------+ Applications | | GNU Name System | | CADET | ... | +-----------------+ +-------+ --------------+------------------------------------ Application API +-------------+------------------------------------ Core Operations | ^ | | +---------------+ | | | Block Storage | @@ -487,15 +482,15 @@ Connectivity | |Underlay| |Underlay| | Underlay | ... <t> How peers are addressed in the underlay is out of scope of this document. For example, a peer may have a TCP/IP address, or expose a QUIC endpoint. - While the specific addressing options and mechanisms are out of scope - for this document, it is necessary to define a universal addressing + While the specific addressing options and mechanisms are out of scope, + it is necessary to define a universal addressing format in order to facilitate the distribution of <em>address</em> information to other <em>peers</em> in the DHT overlay. This standardized format is the <em>HELLO Block</em> (described in <xref target="hello_block"/>), - which contains sets of URIs. - The scheme of each URI indicates which underlay understands the - respective <em>address</em> details which are encoded in the rest of the URI. + which contains sets of addresses. + If the address is a URI, it may indicate which underlay understands the + respective <em>address</em> details. </t> <!-- 1) The current API is always fire+forget, it doesn't allow for flow @@ -2701,7 +2696,7 @@ BEGIN control such as <xref target="RFC6940"/> which, like R<sup>5</sup>N, provides a peer-to-peer (P2P) signaling protocol with extensible routing and topology mechanisms. - Some decentralized applications, such as the GNU Name System (<xref target="I-D.schanzen-gns"/>), + Some decentralized applications, such as the GNU Name System (<xref target="RFC9498"/>), require an open system that enables ad-hoc participation. </t> </section> @@ -2845,7 +2840,7 @@ Type | Name | References | Description &RFC8126; &RFC8174; &RFC8324; - &I-D.schanzen-gns; + &RFC9498; <reference anchor="ed25519" target="http://link.springer.com/chapter/10.1007/978-3-642-23951-9_9"><front><title>High-Speed High-Security Signatures</title><author initials="D." surname="Bernstein" fullname="Daniel Bernstein"><organization>University of Illinois at Chicago</organization></author><author initials="N." surname="Duif" fullname="Niels Duif"><organization>Technische Universiteit Eindhoven</organization></author><author initials="T." surname="Lange" fullname="Tanja Lange"><organization>Technische Universiteit Eindhoven</organization></author><author initials="P." surname="Schwabe" fullname="Peter Schwabe"><organization>National Taiwan University</organization></author><author initials="B." surname="Yang" fullname="Bo-Yin Yang"><organization>Academia Sinica</organization></author><date year="2011"/></front></reference> @@ -3113,7 +3108,7 @@ Type | Name | References | Description 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 + with the GNS Base32 encoding (<xref target="RFC9498"/>) of the peer public key, a Base32-encoded EdDSA signature, and an expiration time in seconds since the UNIX Epoch in decimal format. After this a "?" begins a list of key-value pairs where the key