diff options
authorJulius Bünger <>2019-06-21 23:22:04 +0200
committerJulius Bünger <>2019-06-21 23:23:02 +0200
commit67b161e86e95152906c80c4fa8cf067614e8653e (patch)
parent96f72f827b3bdc01f9a75ec1913a9e15dcb608ea (diff)
Doc RPS: Add first high-level intro to rps
1 files changed, 44 insertions, 0 deletions
diff --git a/doc/handbook/chapters/keyconcepts.texi b/doc/handbook/chapters/keyconcepts.texi
index 4900ed328..42718b245 100644
--- a/doc/handbook/chapters/keyconcepts.texi
+++ b/doc/handbook/chapters/keyconcepts.texi
@@ -19,6 +19,7 @@ The second part describes concepts specific to anonymous file-sharing.
* Peer Identities::
* Zones in the GNU Name System (GNS Zones)::
* Egos::
+* Random Peer Sampling::
@end menu
@cindex Authentication
@@ -319,3 +320,46 @@ Egos are your "identities" in GNUnet. Any user can assume multiple
identities, for example to separate their activities online. Egos can
correspond to "pseudonyms" or "real-world identities". Technically an
ego is first of all a key pair of a public- and private-key.
+@cindex Random Peer Sampling
+@node Random Peer Sampling
+@section Random Peer Sampling
+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{\#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.