diff options
Diffstat (limited to 'draft-schanzen-r5n.xml')
-rw-r--r-- | draft-schanzen-r5n.xml | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml index e7630f5..4b8e04c 100644 --- a/draft-schanzen-r5n.xml +++ b/draft-schanzen-r5n.xml | |||
@@ -1261,6 +1261,75 @@ ComputeOutDegree(REPL_LVL, HOPCOUNT, L2NSE): | |||
1261 | </dd> | 1261 | </dd> |
1262 | </dl> | 1262 | </dl> |
1263 | </section> | 1263 | </section> |
1264 | |||
1265 | <section anchor="p2p_path"> | ||
1266 | <name>Path</name> | ||
1267 | <t> | ||
1268 | If the <tt>RecordRoute</tt> flag is set, the travel of a <tt>PutMessage</tt> | ||
1269 | or a <tt>ResultMessage</tt> through the overlay network is recorded in the | ||
1270 | <tt>PATH</tt> field of the message. <tt>PATH</tt> is a list of path elements. | ||
1271 | A new path element is appended to the existing <tt>PATH</tt> before | ||
1272 | a peer sends the message to the next peer. | ||
1273 | </t> | ||
1274 | <t> | ||
1275 | A path element contains a signature and the public key of the peer that | ||
1276 | created the element. The signature is computed over the public keys of the | ||
1277 | previous peer (from which the message was received) and next peer (the | ||
1278 | peer the message is send to). A new message has no previous peer and | ||
1279 | uses the <tt>NULL</tt> public key for the signature. | ||
1280 | </t> | ||
1281 | <t> | ||
1282 | Assuming peer A sends a new <tt>PUT</tt> message to peer B, which forwards | ||
1283 | the message to peer C, which forwards to peer D which finally stores the data. | ||
1284 | The <tt>PATH</tt> field of the message received at peer D contains three | ||
1285 | path elements (build from top to bottom): | ||
1286 | </t> | ||
1287 | <figure anchor="figure_path" title="Example PATH"> | ||
1288 | <artwork name="" type="" align="left" alt=""><![CDATA[ | ||
1289 | +--------------------+-------+ | ||
1290 | | Sig A( 0,Pub B) | Pub A | | ||
1291 | +--------------------+-------+ | ||
1292 | +--------------------+-------+ | ||
1293 | | Sig B(Pub A,Pub C) | Pub B | | ||
1294 | +--------------------+-------+ | ||
1295 | +--------------------+-------+ | ||
1296 | | Sig C(Pub B,Pub D) | Pub C | | ||
1297 | +--------------------+-------+ | ||
1298 | ]]></artwork> | ||
1299 | </figure> | ||
1300 | <t> | ||
1301 | When appending a new path element, a peer <bcp14>MUST</bcp14> verify the | ||
1302 | path integrity. It first checks that the peer sending the message has the | ||
1303 | public key recorded in the last path element. It then checks all contained | ||
1304 | signatures. | ||
1305 | </t> | ||
1306 | <t> | ||
1307 | If an invalid signature is detected, the path is truncated keeping only | ||
1308 | element fields following the faulty signature and setting the TRUCATED | ||
1309 | flag. Assume that peer C detects a faulty signature in path element #2, | ||
1310 | the trunacted path has two entries: | ||
1311 | </t> | ||
1312 | <figure anchor="figure_path_truncated" title="Example truncated PATH"> | ||
1313 | <artwork name="" type="" align="left" alt=""><![CDATA[ | ||
1314 | +-------+ +----------------------+-------+ | ||
1315 | | Pub B | | Sig C (Pub B, Pub D) | Pub C | | ||
1316 | +-------+ +----------------------+-------+ | ||
1317 | ]]></artwork> | ||
1318 | </figure> | ||
1319 | <t> | ||
1320 | The TRUNCATED flag indicates that the first path element does not contain | ||
1321 | a signature but only the public key of the peer where the signature fails. | ||
1322 | </t> | ||
1323 | <t> | ||
1324 | The <tt>PATH</tt> is stored along with the payload data from the <tt>PUT</tt> | ||
1325 | message at the final peer. When the peer delivers the data based on a | ||
1326 | <tt>GET</tt> request, it initializes the <tt>PATH</tt> field with the stored | ||
1327 | path value and appends a new path element. The first part of <tt>PATH</tt> | ||
1328 | in a <tt>GET</tt> response mesage is called the <tt>PutPath</tt>, followed | ||
1329 | by the <tt>GetPath</tt>. | ||
1330 | </t> | ||
1331 | </section> | ||
1332 | |||
1264 | <section anchor="p2p_pathelement"> | 1333 | <section anchor="p2p_pathelement"> |
1265 | <!-- TODO-GROTHOFF: Discuss this change again. The text is currently not correct | 1334 | <!-- TODO-GROTHOFF: Discuss this change again. The text is currently not correct |
1266 | it is very difficult to understand. Is it worth 32 byte; | 1335 | it is very difficult to understand. Is it worth 32 byte; |