summaryrefslogtreecommitdiff
path: root/draft-schanzen-r5n.xml
diff options
context:
space:
mode:
Diffstat (limited to 'draft-schanzen-r5n.xml')
-rw-r--r--draft-schanzen-r5n.xml420
1 files changed, 210 insertions, 210 deletions
diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml
index 7b88e35..5dd9bd2 100644
--- a/draft-schanzen-r5n.xml
+++ b/draft-schanzen-r5n.xml
@@ -1143,225 +1143,225 @@ Connectivity | |Underlay| |Underlay|
1143 Applications can and should define their own block types. 1143 Applications can and should define their own block types.
1144 The block type determines the format and handling of the block 1144 The block type determines the format and handling of the block
1145 payload by nodes in PUT and RESULT messages. 1145 payload by nodes in PUT and RESULT messages.
1146 Block types MUST be registered with GANA <xref target="gana"/>. 1146 Block types MUST be registered with GANA <xref target="gana"/>.
1147 </t>
1148 <t>
1149 For bootstrapping and node discovery, the DHT implementation uses
1150 its own block type called "HELLO". A block with this block type
1151 contains the NodeID of the node initiating the GET request.
1152 </t>
1153 <section anchor="hello_block">
1154 <name>HELLO</name>
1155 <t>
1156 The HELLO block type wire format is illustrated in
1157 <xref target="figure_hello"/>. A query for block of type HELLO MUST
1158 NOT include extended query data (XQuery). Any implementation
1159 encountering a HELLO block with XQuery data MUST consider the
1160 block invalid and ignore it.
1161 </t>
1162 <figure anchor="figure_hello">
1163 <artwork name="" type="" align="left" alt=""><![CDATA[
11640 8 16 24 32 40 48 56
1165+---+-----+-----+-----+-----+-----+-----+-----+
1166| TYPE | SIZE | NODEID /
1167+---+-----+-----+-----+ (variable length) /
1168/ /
1169+---+-----+-----+-----+-----+-----+-----+-----+
1170| ADDRESSES /
1171/ (variable length) |
1172+---+-----+-----+-----+-----+-----+-----+-----+
1173]]/artwork>
1174 </figure>
1175 <dl>
1176 <dt>TYPE</dt>
1177 <dd>
1178 is the type of HELLO. A 16-bit number in network byte order.
1179 This value determines the type of the NODEID field.
1180 </dd>
1181 <dt>SIZE</dt>
1182 <dd>
1183 is the SIZE of the following fields NODEID and ADDRESSES in bytes.
1184 In network byte order.
1185 </dd>
1186 <dt>NODEID</dt>
1187 <dd>
1188 is the Node ID of the node which has generated this HELLO.
1189 The length content of this field is determined by the TYPE.
1190 Usually, this is a cryptographic public key which allows the
1191 Underlay to uniquely identify and authenticate the node.
1192 </dd>
1193 <dt>ADDRESSES</dt>
1194 <dd>
1195 is a list of UTF-8 strings <xref target="RFC3629"/> which can be
1196 used as addresses to contact the node.
1197 The strings MUST be 0-terminated.
1198 FIXME: Examples? Format determined?
1199 </dd>
1200 </dl>
1201 <t>
1202 A HELLO reply block MAY be empty. Otherwise, it contains the
1203 HELLO of a node.
1147 </t> 1204 </t>
1148 <t> 1205 <t>
1149 For bootstrapping and node discovery, the DHT implementation uses 1206 For the string representation of the node public key,
1150 its own block type called "HELLO". A block with this block type 1207 the base-32 encoding "StringEncode" is used.
1151 contains the NodeID of the node initiating the GET request. 1208 However, instead of following <xref target="RFC4648"/> the
1209 character map is based on the optical character recognition friendly
1210 proposal of Crockford <xref target="CrockfordB32"/>.
1211 The only difference to Crockford is that the letter
1212 "U" decodes to the same base-32 value as the letter "V" (27).
1152 </t> 1213 </t>
1153 <section anchor="hello_block"> 1214 <t>
1154 <name>HELLO</name> 1215 The <tt>ADDRESSES</tt> part of the <tt>HELLO</tt> indicate endpoints
1155 <t> 1216 which can be used by the Underlay in order to establish a connection
1156 The HELLO block type wire format is illustrated in 1217 with the node identified by <tt>NODEKEY</tt>.
1157 <xref target="figure_hello"/>. A query for block of type HELLO MUST 1218 An example of an addressing scheme used throughout
1158 NOT include extended query data (XQuery). Any implementation 1219 this document is "ip+tcp", which refers to a standard TCP/IP socket
1159 encountering a HELLO block with XQuery data MUST consider the 1220 connection. The "hier"-part of the URI must provide a suitable
1160 block invalid and ignore it. 1221 address for the given addressing scheme.
1161 </t> 1222 The following is a non-normative example of address strings:
1162 <figure anchor="figure_hello"> 1223 </t>
1163 <artwork name="" type="" align="left" alt=""><![CDATA[ 1224 <figure>
11640 8 16 24 32 40 48 56 1225 <artwork name="" type="" align="left" alt=""><![CDATA[
1165+-----+-----+-----+-----+-----+-----+-----+-----+ 1226ipcp://1.2.3.4:6789 \
1166| TYPE | SIZE | NODEID / 1227gnet+tcp://12.3.4.5/ \
1167+-----+-----+-----+-----+ (variable length) / 1228i2udp://1.2.4.5:424/ \
1168/ / 1229toonionv3://rasdflkjasdfliasduf.onion/
1169+-----+-----+-----+-----+-----+-----+-----+-----+ 1230]]/artwork>
1170| ADDRESSES / 1231 </figure>
1171/ (variable length) |
1172+-----+-----+-----+-----+-----+-----+-----+-----+
1173]]></artwork>
1174 </figure>
1175 <dl>
1176 <dt>TYPE</dt>
1177 <dd>
1178 is the type of HELLO. A 16-bit number in network byte order.
1179 This value determines the type of the NODEID field.
1180 </dd>
1181 <dt>SIZE</dt>
1182 <dd>
1183 is the SIZE of the following fields NODEID and ADDRESSES in bytes.
1184 In network byte order.
1185 </dd>
1186 <dt>NODEID</dt>
1187 <dd>
1188 is the Node ID of the node which has generated this HELLO.
1189 The length content of this field is determined by the TYPE.
1190 Usually, this is a cryptographic public key which allows the
1191 Underlay to uniquely identify and authenticate the node.
1192 </dd>
1193 <dt>ADDRESSES</dt>
1194 <dd>
1195 is a list of UTF-8 strings <xref target="RFC3629"/> which can be
1196 used as addresses to contact the node.
1197 The strings MUST be 0-terminated.
1198 FIXME: Examples? Format determined?
1199 </dd>
1200 </dl>
1201 <t>
1202 A HELLO reply block MAY be empty. Otherwise, it contains the
1203 HELLO of a node.
1204 </t>
1205 <t>
1206 For the string representation of the node public key,
1207 the base-32 encoding "StringEncode" is used.
1208 However, instead of following <xref target="RFC4648"/> the
1209 character map is based on the optical character recognition friendly
1210 proposal of Crockford <xref target="CrockfordB32"/>.
1211 The only difference to Crockford is that the letter
1212 "U" decodes to the same base-32 value as the letter "V" (27).
1213 </t>
1214 <t>
1215 The <tt>ADDRESSES</tt> part of the <tt>HELLO</tt> indicate endpoints
1216 which can be used by the Underlay in order to establish a connection
1217 with the node identified by <tt>NODEKEY</tt>.
1218 An example of an addressing scheme used throughout
1219 this document is "ip+tcp", which refers to a standard TCP/IP socket
1220 connection. The "hier"-part of the URI must provide a suitable
1221 address for the given addressing scheme.
1222 The following is a non-normative example of address strings:
1223 </t>
1224 <figure>
1225 <artwork name="" type="" align="left" alt=""><![CDATA[
1226ip+tcp://1.2.3.4:6789 \
1227gnunet+tcp://12.3.4.5/ \
1228i2p+udp://1.2.4.5:424/ \
1229tor+onionv3://rasdflkjasdfliasduf.onion/
1230]]></artwork>
1231 </figure>
1232 </section>
1233 </section> 1232 </section>
1234 </section> 1233 </section>
1235 <section anchor="security" numbered="true" toc="default"> 1234 </section>
1236 <name>Security Considerations</name> 1235 <section anchor="security" numbered="true" toc="default">
1237 <!-- FIXME: Here we should (again) discuss how the system is open and 1236 <name>Security Considerations</name>
1238 does not have/require a trust anchor a priori. This is (again) in contrast 1237 <!-- FIXME: Here we should (again) discuss how the system is open and
1239 to RELOAD --> 1238 does not have/require a trust anchor a priori. This is (again) in contrast
1240 </section> 1239 to RELOAD -->
1241 <section anchor="gana" numbered="true" toc="default"> 1240 </section>
1242 <name>GANA Considerations</name> 1241 <section anchor="gana" numbered="true" toc="default">
1243 <t> 1242 <name>GANA Considerations</name>
1244 GANA <xref target="GANA"/> 1243 <t>
1245 is requested to create a "DHT Block Types" registry. 1244 GANA <xref target="GANA"/>
1246 The registry shall record for each entry: 1245 is requested to create a "DHT Block Types" registry.
1247 </t> 1246 The registry shall record for each entry:
1248 <ul> 1247 </t>
1249 <li>Name: The name of the block type (case-insensitive ASCII 1248 <ul>
1250 string, restricted to alphanumeric characters</li> 1249 <li>Name: The name of the block type (case-insensitive ASCII
1251 <li>Number: 32-bit</li> 1250 string, restricted to alphanumeric characters</li>
1252 <li>Comment: Optionally, a brief English text describing the purpose of 1251 <li>Number: 32-bit</li>
1253 the block type (in UTF-8)</li> 1252 <li>Comment: Optionally, a brief English text describing the purpose of
1254 <li>Contact: Optionally, the contact information of a person to contact for 1253 the block type (in UTF-8)</li>
1255 further information</li> 1254 <li>Contact: Optionally, the contact information of a person to contact for
1256 <li>References: Optionally, references describing the record type 1255 further information</li>
1257 (such as an RFC)</li> 1256 <li>References: Optionally, references describing the record type
1258 </ul> 1257 (such as an RFC)</li>
1259 <t> 1258 </ul>
1260 The registration policy for this sub-registry is "First Come First 1259 <t>
1261 Served", as described in <xref target="RFC8126"/>. 1260 The registration policy for this sub-registry is "First Come First
1262 GANA is requested to populate this registry as follows: 1261 Served", as described in <xref target="RFC8126"/>.
1263 </t> 1262 GANA is requested to populate this registry as follows:
1264 <figure anchor="figure_btypenums"> 1263 </t>
1265 <artwork name="" type="" align="left" alt=""><![CDATA[ 1264 <figure anchor="figure_btypenums">
1266Number | Name | Contact | References | Description 1265 <artwork name="" type="" align="left" alt=""><![CDATA[
1267-------+--------+---------+------------+------------------------- 1266Nuer | Name | Contact | References | Description
12680 ANY N/A [This.I-D] Reserved 1267-----+--------+---------+------------+-------------------------
12697 HELLO N/A [This.I-D] Type of a block that contains 12680 ANY N/A [This.I-D] Reserved
1270a HELLO for a node 12697 HELLO N/A [This.I-D] Type of a block that contains
127111 GNS N/A GNS Block for storing record data 1270a LLO for a node
1272]]></artwork> 127111 GNS N/A GNS Block for storing record data
1273 </figure> 1272]]/artwork>
1274 <t> 1273 </figure>
1275 GANA is requested to amend the "GNUnet Signature Purpose" registry 1274 <t>
1276 as follows: 1275 GANA is requested to amend the "GNUnet Signature Purpose" registry
1277 </t> 1276 as follows:
1278 <figure anchor="figure_purposenums"> 1277 </t>
1279 <artwork name="" type="" align="left" alt=""><![CDATA[ 1278 <figure anchor="figure_purposenums">
1280Purpose | Name | References | Description 1279 <artwork name="" type="" align="left" alt=""><![CDATA[
1281--------+-----------------+------------+-------------------------- 1280Puose | Name | References | Description
1282]]></artwork> 1281------+-----------------+------------+--------------------------
1283 </figure> 1282]]/artwork>
1284 </section> 1283 </figure>
1285 <!-- gana --> 1284 </section>
1286 <section> 1285 <!-- gana -->
1287 <name>Test Vectors</name> 1286 <section>
1288 </section> 1287 <name>Test Vectors</name>
1289 </middle> 1288 </section>
1290 <back> 1289 </middle>
1291 <references><name>Normative References</name> 1290 <back>
1291 <references><name>Normative References</name>
1292 1292
1293 &RFC2119; 1293 &RFC2119;
1294 &RFC3629; 1294 &RFC3629;
1295 &RFC4634; 1295 &RFC4634;
1296 &RFC4648; 1296 &RFC4648;
1297 &RFC6940; 1297 &RFC6940;
1298 &RFC8126; 1298 &RFC8126;
1299 &RFC8174; 1299 &RFC8174;
1300 1300
1301 <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> 1301 <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>
1302 1302
1303 <reference anchor="CrockfordB32" target="https://www.crockford.com/base32.html"><front><title>Base32</title><author initials="D." surname="Douglas" fullname="Crockford"> 1303 <reference anchor="CrockfordB32" target="https://www.crockford.com/base32.html"><front><title>Base32</title><author initials="D." surname="Douglas" fullname="Crockford">
1304 </author><date year="2019" month="March"/></front></reference> 1304 </author><date year="2019" month="March"/></front></reference>
1305 1305
1306 <reference anchor="GANA" target="https://gana.gnunet.org/"><front><title>GNUnet Assigned Numbers Authority (GANA)</title><author><organization>GNUnet e.V.</organization></author><date month="April" year="2020"/></front></reference> 1306 <reference anchor="GANA" target="https://gana.gnunet.org/"><front><title>GNUnet Assigned Numbers Authority (GANA)</title><author><organization>GNUnet e.V.</organization></author><date month="April" year="2020"/></front></reference>
1307 1307
1308 1308
1309 1309
1310 </references> 1310 </references>
1311 <references> 1311 <references>
1312 <name>Informative References</name> 1312 <name>Informative References</name>
1313 <reference anchor="R5N" target="https://doi.org/10.1109/ICNSS.2011.6060022"> 1313 <reference anchor="R5N" target="https://doi.org/10.1109/ICNSS.2011.6060022">
1314 <front> 1314 <front>
1315 <title>R5N: Randomized recursive routing for restricted-route networks</title> 1315 <title>R5N: Randomized recursive routing for restricted-route networks</title>
1316 <author initials="N. S." surname="Evans" fullname="Nathan S. Evans"> 1316 <author initials="N. S." surname="Evans" fullname="Nathan S. Evans">
1317 <organization>Technische Universität München</organization> 1317 <organization>Technische Universität München</organization>
1318 </author> 1318 </author>
1319 <author initials="C." surname="Grothoff" fullname="Christian Grothoff"> 1319 <author initials="C." surname="Grothoff" fullname="Christian Grothoff">
1320 <organization>Technische Universität München</organization> 1320 <organization>Technische Universität München</organization>
1321 </author> 1321 </author>
1322 <date year="2011"/> 1322 <date year="2011"/>
1323 </front> 1323 </front>
1324 </reference> 1324 </reference>
1325 <reference anchor="Kademlia" target="http://css.csail.mit.edu/6.824/2014/papers/kademlia.pdf"> 1325 <reference anchor="Kademlia" target="http://css.csail.mit.edu/6.824/2014/papers/kademlia.pdf">
1326 <front> 1326 <front>
1327 <title>Kademlia: A peer-to-peer information system based on the xor metric.</title> 1327 <title>Kademlia: A peer-to-peer information system based on the xor metric.</title>
1328 <author initials="P." surname="Maymounkov" fullname="Petar Maymounkov"> 1328 <author initials="P." surname="Maymounkov" fullname="Petar Maymounkov">
1329 </author> 1329 </author>
1330 <author initials="D." surname="Mazieres" fullname="David Mazieres"> 1330 <author initials="D." surname="Mazieres" fullname="David Mazieres">
1331 </author> 1331 </author>
1332 <date year="2002"/> 1332 <date year="2002"/>
1333 </front> 1333 </front>
1334 </reference> 1334 </reference>
1335 <reference anchor="cadet" target="https://doi.org/10.1109/MedHocNet.2014.6849107"> 1335 <reference anchor="cadet" target="https://doi.org/10.1109/MedHocNet.2014.6849107">
1336 <front> 1336 <front>
1337 <title>CADET: Confidential ad-hoc decentralized end-to-end transport</title> 1337 <title>CADET: Confidential ad-hoc decentralized end-to-end transport</title>
1338 <author initials="B." surname="Polot" fullname="Bartlomiej Polot"> 1338 <author initials="B." surname="Polot" fullname="Bartlomiej Polot">
1339 <organization>Technische Universität München</organization> 1339 <organization>Technische Universität München</organization>
1340 </author> 1340 </author>
1341 <author initials="C." surname="Grothoff" fullname="Christian Grothoff"> 1341 <author initials="C." surname="Grothoff" fullname="Christian Grothoff">
1342 <organization>Technische Universität München</organization> 1342 <organization>Technische Universität München</organization>
1343 </author> 1343 </author>
1344 <date year="2014"/> 1344 <date year="2014"/>
1345 </front> 1345 </front>
1346 </reference> 1346 </reference>
1347 <reference anchor="I-D.draft-schanzen-gns" target="https://datatracker.ietf.org/doc/draft-schanzen-gns/"> 1347 <reference anchor="I-D.draft-schanzen-gns" target="https://datatracker.ietf.org/doc/draft-schanzen-gns/">
1348 <front> 1348 <front>
1349 <title>The GNU Name System</title> 1349 <title>The GNU Name System</title>
1350 <author initials="M." surname="Schanzenbach" fullname="Martin Schanzenbach"> 1350 <author initials="M." surname="Schanzenbach" fullname="Martin Schanzenbach">
1351 <organization>GNUnet e.V.</organization> 1351 <organization>GNUnet e.V.</organization>
1352 </author> 1352 </author>
1353 <author initials="C." surname="Grothoff" fullname="Christian Grothoff"> 1353 <author initials="C." surname="Grothoff" fullname="Christian Grothoff">
1354 <organization>GNUnet e.V.</organization> 1354 <organization>GNUnet e.V.</organization>
1355 </author> 1355 </author>
1356 <author initials="B." surname="Fix" fullname="Bernd Fix"> 1356 <author initials="B." surname="Fix" fullname="Bernd Fix">
1357 <organization>GNUnet e.V.</organization> 1357 <organization>GNUnet e.V.</organization>
1358 </author> 1358 </author>
1359 <date year="2021"/> 1359 <date year="2021"/>
1360 </front> 1360 </front>
1361 </reference> 1361 </reference>
1362 </references> 1362 </references>
1363 <!-- Change Log 1363 <!-- Change Log
1364 v00 2017-07-23 MS Initial version 1364 v00 2017-07-23 MS Initial version
1365 --> 1365 -->
1366 </back> 1366 </back>
1367 </rfc> 1367 </rfc>