From f031f34d3f523985cbecc13f276c879d35707683 Mon Sep 17 00:00:00 2001 From: Julius Bünger Date: Sat, 22 Jun 2019 00:58:54 +0200 Subject: Doc RPS: Move from keyconcepts to developer --- doc/handbook/chapters/developer.texi | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'doc/handbook/chapters/developer.texi') diff --git a/doc/handbook/chapters/developer.texi b/doc/handbook/chapters/developer.texi index 64ebec46e..e101b06bd 100644 --- a/doc/handbook/chapters/developer.texi +++ b/doc/handbook/chapters/developer.texi @@ -79,6 +79,7 @@ new chapters, sections or insightful comments. * File-sharing (FS) Subsystem:: * REGEX Subsystem:: * REST Subsystem:: +* RPS Subsystem:: @end menu @node Developer Introduction @@ -8863,3 +8864,46 @@ so please make sure that endpoints are unambiguous. This is WIP. Endpoints should be documented appropriately. Preferably using annotations. + + +@cindex RPS Subsystem +@node RPS Subsystem +@section RPS Subsystem + +In literature, Random Peer Sampling (RPS) refers to the problem of +reliably drawing random samples from an unstructured p2p network. + +Doing so in a reliable manner is not only hard because of inherent +problems but also because of possible malicious peers that could try to +bias the selection. + +It is useful for all kind of gossip protocols that require the selection +of random peers in the whole network like gathering statistics, +spreading and aggregating information in the network, load balancing and +overlay topology management. + +The approach chosen in the rps implementation in GNUnet follows the +Brahms@uref{https://bib.gnunet.org/full/date.html\#2009_5f0} design. + +The current state is "work in progress". There are a lot of things that +need to be done, primarily finishing the experimental evaluation and a +re-design of the API. + +The abstract idea is to subscribe to connect to/start the rps service +and request random peers that will be returned when they represent a +random selection from the whole network with high probability. + +An additional feature to the original Brahms-design is the selection of +sub-groups: The GNUnet implementation of rps enables clients to ask for +random peers from a group that is defined by a common shared secret. +(The secret could of course also be public, depending on the use-case.) + +Another addition to the original protocol was made: The sampler +mechanism that was introduced in Brahms was slightly adapted and used to +actually sample the peers and returned to the client. +This is necessary as the original design only keeps peers connected to +random other peers in the network. In order to return random peers to +client requests independently random, they cannot be drawn from the +connected peers. +The adapted sampler makes sure that each request for random peers is +independent from the others. -- cgit v1.2.3