lsd0004

LSD0004: R5N Distributed Hash Table
Log | Files | Refs

commit fc0c5ac3cff85c48c85d2fc2102d4f059e594eac
parent a7c2f5e62fa036ac6f842e4703f2c8a14511bc26
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Mon, 21 Aug 2023 16:44:47 +0200

Add versioning to HELLO and messages

Diffstat:
Mdraft-schanzen-r5n.xml | 43+++++++++++++++++++++++++++----------------
1 file changed, 27 insertions(+), 16 deletions(-)

diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml @@ -314,12 +314,6 @@ example://12.3.4.5/ routing and <em>peer</em> selection logic. It facilitates the R<sup>5</sup>N routing algorithm with required data structures and algorithms. </dd> - <dt>Responsible Peer</dt> - <dd> - The <em>peer</em> <tt>N</tt> that is responsible for a specific key <tt>K</tt>, as - defined by the <tt>SelectClosestPeer(K, P)</tt> algorithm (see - <xref target="routing"/>. - </dd> <dt>Underlay Interface</dt> <dd> The <em>inderlay interface</em> is an abstraction layer on top of the @@ -1291,7 +1285,7 @@ BEGIN <artwork name="" type="" align="left" alt=""><![CDATA[ 0 8 16 24 32 40 48 56 +-----+-----+-----+-----+-----+-----+-----+-----+ -| MSIZE | MTYPE | RESERVED | NUM_ADDRS | +| MSIZE | MTYPE | VERSION | NUM_ADDRS | +-----+-----+-----+-----+-----+-----+-----+-----+ | SIGNATURE / / (64 bytes) | @@ -1314,9 +1308,10 @@ BEGIN It must be set to the value 157 in network byte order as defined in the GANA "GNUnet Message Type" registry <xref target="gana_message_type"/>. </dd> - <dt>RESERVED</dt> + <dt>VERSION</dt> <dd> - is a 16-bit field that must be zero. + is a 16-bit field that indicates the version of the HelloMessage. Must be zero. + In the future, this may be used to extend or update the HelloMessage format. </dd> <dt>NUM_ADDRS</dt> <dd> @@ -1404,7 +1399,7 @@ BEGIN +-----+-----+-----+-----+-----+-----+-----+-----+ | MSIZE | MTYPE | BTYPE | +-----+-----+-----+-----+-----+-----+-----+-----+ -| FLAGS | HOPCOUNT | REPL_LVL | PATH_LEN | +| VER |FLAGS| HOPCOUNT | REPL_LVL | PATH_LEN | +-----+-----+-----+-----+-----+-----+-----+-----+ | EXPIRATION | +-----+-----+-----+-----+-----+-----+-----+-----+ @@ -1444,9 +1439,14 @@ BEGIN Set by the initiator. Read-only. In network byte order. </dd> + <dt>VER</dt> + <dd> + is a 8-bit protocol version in network byte order. + Set to zero. May be used in future protocol versions. + </dd> <dt>FLAGS</dt> <dd> - is a 16-bit vector with binary options (see <xref target="route_flags"/>). + is a 8-bit vector with binary options (see <xref target="route_flags"/>). Set by the initiator. Read-only. </dd> <dt>HOPCOUNT</dt> @@ -1651,7 +1651,7 @@ BEGIN +-----+-----+-----+-----+-----+-----+-----+-----+ | MSIZE | MTYPE | BTYPE | +-----+-----+-----+-----+-----+-----+-----+-----+ -| FLAGS | HOPCOUNT | REPL_LVL | RF_SIZE | +| VER |FLAGS| HOPCOUNT | REPL_LVL | RF_SIZE | +-----+-----+-----+-----+-----+-----+-----+-----+ | PEER_BF / / (128 byte) | @@ -1683,9 +1683,14 @@ BEGIN is a 32-bit block type field. The block type indicates the content type of the payload. Set by the initiator. Read-only. In network byte order. </dd> + <dt>VER</dt> + <dd> + is a 8-bit protocol version in network byte order. + Set to zero. May be used in future protocol versions. + </dd> <dt>FLAGS</dt> <dd> - is a 16-bit vector with binary options (see <xref target="route_flags"/>). + is a 8-bit vector with binary options (see <xref target="route_flags"/>). Set by the initiator. Read-only. </dd> <dt>HOPCOUNT</dt> @@ -1883,7 +1888,7 @@ BEGIN +-----+-----+-----+-----+-----+-----+-----+-----+ | MSIZE | MTYPE | BTYPE | +-----+-----+-----+-----+-----+-----+-----+-----+ -| RESERVED | FLAGS | PUTPATH_L | GETPATH_L | +| RESERVED | VER |FLAGS| PUTPATH_L | GETPATH_L | +-----+-----+-----+-----+-----+-----+-----+-----+ | EXPIRATION | +-----+-----+-----+-----+-----+-----+-----+-----+ @@ -1931,9 +1936,14 @@ BEGIN Implementations <bcp14>MUST</bcp14> forward this value unchanged even if it is non-zero. </dd> + <dt>VER</dt> + <dd> + is a 8-bit protocol version in network byte order. + Set to zero. May be used in future protocol versions. + </dd> <dt>FLAGS</dt> <dd> - is a 16-bit vector with binary options (see <xref target="route_flags"/>). + is a 8-bit vector with binary options (see <xref target="route_flags"/>). Set by the initiator. <!-- FIXME to what? => Copied from GET? The code currently just sets the recorded PUT flags / overrides GET What should happen? @@ -3119,7 +3129,8 @@ maybe generate proper test vector. </t> <figure> <artwork type="abnf"><![CDATA[ -hello-URL = "gnunet://hello/" meta [ "?" addrs ] +hello-URL = "gnunet://hello[:version]/" meta [ "?" addrs ] +version = *(DIGIT) meta = pid "/" sig "/" exp pid = *bchar sig = *bchar