lsd0004

LSD0004: R5N Distributed Hash Table
Log | Files | Refs

commit 898087a43b3ddb5de9bc3d26aabdb3714563b185
parent 9346b9b61174f9b61e86cc5db2cad1e18bf86ffc
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Sat, 25 Dec 2021 12:44:29 +0100

minor update

Diffstat:
Mdraft-schanzen-r5n.xml | 42++++++++++++++++++++++++++++++++++--------
1 file changed, 34 insertions(+), 8 deletions(-)

diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml @@ -458,10 +458,17 @@ see how we can offer even the most minimal protections against peer </t> <!-- Fixme: We may want to propose our modified, optimized XOR metric here or reference Kademlia --> <t> - The procedure to select a peer for a given message key and bloomfilter - is defined as follows: + R5N stores the information of all connected peers in a a set of lists + similar to the k-buckets data structure of <xref target="Kademlia"/>. + The index which determines in which of the k lists to add a given peer + is calculated using the FIND-BUCKET procedure (see <xref target="find-bucket"/>. </t> - <figure> + <t> + The buckets serve implicitly as a routing table for messages: + In order to select a peer for a given message key and bloomfilter, + the <tt>PEER-SELECT</tt> is used (see <xref target="peer-select"/>. + </t> + <figure anchor="peer-select"> <artwork name="" type="" align="left" alt=""><![CDATA[ PEER-SELECT(key, bloomfilter) peers := <Select all known peers NOT in message bloomfilter> @@ -484,18 +491,23 @@ END The procedure to determine if we are the closest know peer for a given message key and bloomfilter is defined as follows: </t> - <figure> + <figure anchor="find-bucket"> <artwork name="" type="" align="left" alt=""><![CDATA[ -FIND-BUCKET(peerID, key, buckets) +FIND-BUCKET(peerID, key, kbuckets) N := MATCHING-BITS (peerID, key) - return Nth bucket FROM buckets + return Nth bucket FROM kbuckets END -AM-CLOSEST-PEER(key, myPeerID, bloomfilter, buckets) + ]]></artwork> + </figure> + <t>The FIND-BUCKET Procedure.</t> + <figure> + <artwork name="" type="" align="left" alt=""><![CDATA[ +AM-CLOSEST-PEER(key, peerID, bloomfilter, buckets) closestPeersBucket := FIND-BUCKET (myPeerID, key, buckets) IF key == myPeerID return TRUE END - myDistance := XOR(myPeerID, key) + myDistance := XOR(peerID, key) FOR EACH p IN closestPeersBucket IF XOR(p, key) < myDistance return FALSE @@ -508,6 +520,7 @@ AM-CLOSEST-PEER(key, myPeerID, bloomfilter, buckets) END ]]></artwork> </figure> + <t>The AM-CLOSEST-PEER Procedure.</t> </section> @@ -1158,6 +1171,19 @@ Purpose | Name | References | Description <date year="2011"/> </front> </reference> + <reference anchor="Kademlia" target="http://css.csail.mit.edu/6.824/2014/papers/kademlia.pdf"> + <front> + <title>Kademlia: A peer-to-peer information system based on the xor metric.</title> + <author initials="P." surname="Maymounkov" fullname="Petar Maymounkov"> + </author> + + <author initials="D." surname="Mazieres" + fullname="David Mazieres"> + </author> + <date year="2002"/> + </front> + </reference> + <reference anchor="cadet" target="https://doi.org/10.1109/MedHocNet.2014.6849107"> <front> <title>CADET: Confidential ad-hoc decentralized end-to-end transport</title>