aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/handbook/chapters/developer.texi44
-rw-r--r--doc/handbook/chapters/keyconcepts.texi43
2 files changed, 44 insertions, 43 deletions
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.
79* File-sharing (FS) Subsystem:: 79* File-sharing (FS) Subsystem::
80* REGEX Subsystem:: 80* REGEX Subsystem::
81* REST Subsystem:: 81* REST Subsystem::
82* RPS Subsystem::
82@end menu 83@end menu
83 84
84@node Developer Introduction 85@node Developer Introduction
@@ -8863,3 +8864,46 @@ so please make sure that endpoints are unambiguous.
8863 8864
8864This is WIP. Endpoints should be documented appropriately. 8865This is WIP. Endpoints should be documented appropriately.
8865Preferably using annotations. 8866Preferably using annotations.
8867
8868
8869@cindex RPS Subsystem
8870@node RPS Subsystem
8871@section RPS Subsystem
8872
8873In literature, Random Peer Sampling (RPS) refers to the problem of
8874reliably drawing random samples from an unstructured p2p network.
8875
8876Doing so in a reliable manner is not only hard because of inherent
8877problems but also because of possible malicious peers that could try to
8878bias the selection.
8879
8880It is useful for all kind of gossip protocols that require the selection
8881of random peers in the whole network like gathering statistics,
8882spreading and aggregating information in the network, load balancing and
8883overlay topology management.
8884
8885The approach chosen in the rps implementation in GNUnet follows the
8886Brahms@uref{https://bib.gnunet.org/full/date.html\#2009_5f0} design.
8887
8888The current state is "work in progress". There are a lot of things that
8889need to be done, primarily finishing the experimental evaluation and a
8890re-design of the API.
8891
8892The abstract idea is to subscribe to connect to/start the rps service
8893and request random peers that will be returned when they represent a
8894random selection from the whole network with high probability.
8895
8896An additional feature to the original Brahms-design is the selection of
8897sub-groups: The GNUnet implementation of rps enables clients to ask for
8898random peers from a group that is defined by a common shared secret.
8899(The secret could of course also be public, depending on the use-case.)
8900
8901Another addition to the original protocol was made: The sampler
8902mechanism that was introduced in Brahms was slightly adapted and used to
8903actually sample the peers and returned to the client.
8904This is necessary as the original design only keeps peers connected to
8905random other peers in the network. In order to return random peers to
8906client requests independently random, they cannot be drawn from the
8907connected peers.
8908The adapted sampler makes sure that each request for random peers is
8909independent from the others.
diff --git a/doc/handbook/chapters/keyconcepts.texi b/doc/handbook/chapters/keyconcepts.texi
index c5cc395c8..bdfa5b631 100644
--- a/doc/handbook/chapters/keyconcepts.texi
+++ b/doc/handbook/chapters/keyconcepts.texi
@@ -19,7 +19,6 @@ The second part describes concepts specific to anonymous file-sharing.
19* Peer Identities:: 19* Peer Identities::
20* Zones in the GNU Name System (GNS Zones):: 20* Zones in the GNU Name System (GNS Zones)::
21* Egos:: 21* Egos::
22* Random Peer Sampling::
23@end menu 22@end menu
24 23
25@cindex Authentication 24@cindex Authentication
@@ -321,45 +320,3 @@ identities, for example to separate their activities online. Egos can
321correspond to "pseudonyms" or "real-world identities". Technically an 320correspond to "pseudonyms" or "real-world identities". Technically an
322ego is first of all a key pair of a public- and private-key. 321ego is first of all a key pair of a public- and private-key.
323 322
324
325@cindex Random Peer Sampling
326@node Random Peer Sampling
327@section Random Peer Sampling
328
329In literature, Random Peer Sampling (RPS) refers to the problem of
330reliably drawing random samples from an unstructured p2p network.
331
332Doing so in a reliable manner is not only hard because of inherent
333problems but also because of possible malicious peers that could try to
334bias the selection.
335
336It is useful for all kind of gossip protocols that require the selection
337of random peers in the whole network like gathering statistics,
338spreading and aggregating information in the network, load balancing and
339overlay topology management.
340
341The approach chosen in the rps implementation in GNUnet follows the
342Brahms@uref{https://bib.gnunet.org/full/date.html\#2009_5f0} design.
343
344The current state is "work in progress". There are a lot of things that
345need to be done, primarily finishing the experimental evaluation and a
346re-design of the API.
347
348The abstract idea is to subscribe to connect to/start the rps service
349and request random peers that will be returned when they represent a
350random selection from the whole network with high probability.
351
352An additional feature to the original Brahms-design is the selection of
353sub-groups: The GNUnet implementation of rps enables clients to ask for
354random peers from a group that is defined by a common shared secret.
355(The secret could of course also be public, depending on the use-case.)
356
357Another addition to the original protocol was made: The sampler
358mechanism that was introduced in Brahms was slightly adapted and used to
359actually sample the peers and returned to the client.
360This is necessary as the original design only keeps peers connected to
361random other peers in the network. In order to return random peers to
362client requests independently random, they cannot be drawn from the
363connected peers.
364The adapted sampler makes sure that each request for random peers is
365independent from the others.