gnunet-handbook

The GNUnet Handbook
Log | Files | Refs

commit 01f5773ea7bede7adcf8a055cd9baec3aaa52897
parent 0d3e488f04bed7685b759621f2c17fe8a51ad637
Author: Julius Bünger <buenger@mytum.de>
Date:   Thu,  7 Mar 2024 16:11:00 +0100

cong: be more verbose over different sections

Diffstat:
Mdevelopers/apis/cong.rst | 151++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 95 insertions(+), 56 deletions(-)

diff --git a/developers/apis/cong.rst b/developers/apis/cong.rst @@ -10,11 +10,13 @@ CONG (COre Next Generation) is the name of the project redesigns the CORE service. Here we document the design decisions and parts that are about to change. +.. + TODO write a short overview -Design goals ------------- +.. + Design goals + ------------ -TODO Key exchange ------------ @@ -58,10 +60,10 @@ Reasoning - why this decision (and not others?) - (scenarios to understand whether it makes sense) -This change was introduced in order to stop tracking of more mobile peers. -For example a more mobile peer (laptop) that logs into the network at different -places can be easily tracked by everyone just by recording the different -addresses that are tied to that peer id over time. +This change was introduced in order to stop tracking of more mobile peers +across the network. For example a more mobile peer (laptop) that logs into the +network at different places can be easily tracked by everyone just by recording +the different addresses that are tied to that peer id over time. .. TODO @@ -115,7 +117,7 @@ addresses can be fully tracked. Implications ^^^^^^^^^^^^ -Here we spell out the implications for different parts of the framework. This +Here we present the implications for different parts of the framework. This should help get a grasp of the implications of the change. .. TODO poor phrasing? @@ -126,7 +128,9 @@ DHT The DHT uses the peer id such that it determines which buckets a peer is responsible for. So each time the peer id changes, the peer becomes responsible -for different data. +for different data. This means that each time a peer changes address, it leaves +and re-enters the DHT, changes its and other peer's neighbors and changes the +stored data. .. _Scope-of-Peer-ID-for-higher-Layers: @@ -157,8 +161,6 @@ When addresses (and with those the peer id) of a peer change, all core connections need to be torn down and with them all higher-layer connections. This affects the layers above CADET as follows: -TODO lookup rst lists! - - Revocation: Is not really affected as it is only connected to direct CADET neighbors and makes no use of CADET's routing, only of its flow and congestion control. @@ -219,6 +221,35 @@ Details on how Open questions ^^^^^^^^^^^^^^ +.. + TODO (open questions) + +.. + overall for this "peer id" section + Notes from the meeting: + - higher-layer roll-over + - problem in practice 'phone call not interrupted by change of + location' + - solved by gns entries? and re-connect? + - cadet search for peer id - search in dht and via gns + - caching-problem for gns + - no signaling for roll-over + - estimated reconnect within 15 minutes + - change of address/peerid results in unclear state (down? lost + connection, ....?) + - cadet needs to regularily check gns entries + - how signal the change of addresses? + - do we signal trear-down? + - scenario address change in internet cafe? + - choice between privacy and connectivity + - sense of changing ids for cadet? + - -> rendez-vous peer (more stable) + - tracking via gns? + - only for people who are connected/known (tracking might be + ok for this) + - requires pir for gns + - tracking impossible/hard for others + .. _Core's-Ownership-of-Peer-IDs: @@ -227,10 +258,12 @@ Core's Ownership of Peer IDs When the peer id was static, all parts of gnunet had a simple way to interface with it. Once it becomes dynamic, it makes a lot of sense that a single part -takes control/responsibility for it. Core is the most suitable layer for this. +takes control/responsibility/ownership for it. Core is the most suitable layer +for this. .. TODO why is it? + - encryption layer above transport .. _Implications-onwnership_PeerIDs: @@ -251,59 +284,53 @@ applicable rather hashes of data or such. Transport """"""""" -.. - - transport creates and signs hello (w peer id) - - all other parts of gnunet that simply read the peer id from a file and - assume its continuity +Up until now transport still creates, signs and puts the peer ids into the +peerstore. When core takes ownership of peer ids, transport will need to ask +core for signing the hellos before putting it into the peerstore. With libp2p +as alternative/additional underlay in mind, everything related to hellos needs +to move to core eventually as libp2p is oblivious about that part of gnunet. -.. _Details-on-how_ownership_PeerIDs: +.. _Other: -Details on how -^^^^^^^^^^^^^^ +Other +""""" -.. - signing functionality as api call (only sign hashes? - load on ipc) +Generally, all parts that so far read the peer id from a file into local +memory, will need to ask core for it. All services that sign/encrypt something +with the peer id now will need to ask core to do it. -.. - Notes from the meeting: - - higher-layer roll-over - - problem in practice 'phone call not interrupted by change of - location' - - solved by gns entries? and re-connect? - - cadet search for peer id - search in dht and via gns - - caching-problem for gns - - no signaling for roll-over - - estimated reconnect within 15 minutes - - change of address/peerid results in unclear state (down? lost - connection, ....?) - - cadet needs to regularily check gns entries - - how signal the change of addresses? - - do we signal trear-down? - - scenario address change in internet cafe? - - choice between privacy and connectivity - - sense of changing ids for cadet? - - -> rendez-vous peer (more stable) - - tracking via gns? - - only for people who are connected/known (tracking might be - ok for this) - - requires pir for gns - - tracking impossible/hard for others +.. _Details-on-how_ownership_PeerIDs: -.. _Protocol_002dVersioning: +Details on how +^^^^^^^^^^^^^^ -Protocol-Versioning -------------------- +In order to provide the needed functionality, core needs to expose it via its +api: + + - a call to receive the current peer id + - registering a handler that informs about new peer ids + - signing data with the peer id -TODO .. _libp2p-Underlay: libp2p Underlay --------------- -TODO +Get gnunet to work on libp2p. This includes the FFI with rust, converting +address formats, signaling metadata (traffic class and priority, as far as +libp2p supports it) and signalling connectivity changes. +This is a first attempt to technically link the two projects. Therefore the +feasibility is quite uncertain and the milestones might have to be re-evaluated +after the report on the needs and feasibility. Should it turn out that the +needed resources are beyond the capabilities of this project, a detailed report +on the requirements and roadmap of and for the realisation shall be written and +published. + +.. + TODO this generally needs more love .. - addresses from underlay in string representation go into core @@ -312,6 +339,19 @@ TODO - hellos should be handled by core +.. _Protocol_002dVersioning: + +Protocol-Versioning +------------------- + +Currently applications signal to core which message types they support. For +this milestone we will implement proper protocol versioning where higher-level +applications can signal a range of protocol versions which they support (min, +max) and exchange messages at the CONG layer between peers to determine common +protocols. + + + .. _Open_Design_Questions: Open Design Questions @@ -395,14 +435,13 @@ Peer ID ^^^^^^^ The peer id has been used throughout gnunet as a very convenient means for many -purposes. Here we collect the intended purposes and use cases and also point -out some uses for which it was not intended and point to other means to achieve -it. +purposes. It was used as globally unique and stable identifier of a peer. From +now on it should rather be treated as something more volatile and fitting for +its layer: an ip address. Below we collect the intended purposes and use cases +and also point out some uses for which it was not intended and point to other +means to achieve it. .. - TODO - - e2e connectivity? - - analogy: ip address - address change: shutdown vs. standby vs. ...