diff options
Diffstat (limited to 'draft-schanzen-r5n.xml')
-rw-r--r-- | draft-schanzen-r5n.xml | 420 |
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[ | ||
1164 | 0 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> |
1164 | 0 8 16 24 32 40 48 56 | 1225 | <artwork name="" type="" align="left" alt=""><![CDATA[ |
1165 | +-----+-----+-----+-----+-----+-----+-----+-----+ | 1226 | ipcp://1.2.3.4:6789 \ |
1166 | | TYPE | SIZE | NODEID / | 1227 | gnet+tcp://12.3.4.5/ \ |
1167 | +-----+-----+-----+-----+ (variable length) / | 1228 | i2udp://1.2.4.5:424/ \ |
1168 | / / | 1229 | toonionv3://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[ | ||
1226 | ip+tcp://1.2.3.4:6789 \ | ||
1227 | gnunet+tcp://12.3.4.5/ \ | ||
1228 | i2p+udp://1.2.4.5:424/ \ | ||
1229 | tor+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"> |
1266 | Number | Name | Contact | References | Description | 1265 | <artwork name="" type="" align="left" alt=""><![CDATA[ |
1267 | -------+--------+---------+------------+------------------------- | 1266 | Nuer | Name | Contact | References | Description |
1268 | 0 ANY N/A [This.I-D] Reserved | 1267 | -----+--------+---------+------------+------------------------- |
1269 | 7 HELLO N/A [This.I-D] Type of a block that contains | 1268 | 0 ANY N/A [This.I-D] Reserved |
1270 | a HELLO for a node | 1269 | 7 HELLO N/A [This.I-D] Type of a block that contains |
1271 | 11 GNS N/A GNS Block for storing record data | 1270 | a LLO for a node |
1272 | ]]></artwork> | 1271 | 11 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"> |
1280 | Purpose | Name | References | Description | 1279 | <artwork name="" type="" align="left" alt=""><![CDATA[ |
1281 | --------+-----------------+------------+-------------------------- | 1280 | Puose | 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> |