gnunet-handbook

The GNUnet Handbook
Log | Files | Refs

commit d7ab94c8d16f2024c4f85357a855252b4b393e10
parent 11ce6be242f95a61018d1dd224401accde6ca9ad
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Wed, 22 Nov 2023 16:48:39 +0100

minor update

Diffstat:
Musers/start.rst | 4++--
Musers/subsystems.rst | 150++++++++++++++++++++++++++++++++++++++++---------------------------------------
2 files changed, 78 insertions(+), 76 deletions(-)

diff --git a/users/start.rst b/users/start.rst @@ -1,5 +1,5 @@ -Starting and stopping ---------------------- +Getting started +--------------- Prior to using any GNUnet-based application, one has to start a node: diff --git a/users/subsystems.rst b/users/subsystems.rst @@ -1,5 +1,5 @@ Subsystems -========== +********** This section consists brief description of the subsystems that make up GNUnet. @@ -8,7 +8,7 @@ This image is giving an overview over system dependencies and interactions. .. image:: /images/gnunet-arch-full.svg CADET - Decentralized End-to-end Transport ------------------------------------------- +========================================== The Confidential Ad-hoc Decentralized End-to-end Transport (CADET) subsystem in GNUnet is responsible for secure end-to-end @@ -278,14 +278,15 @@ the original scheme and thus did not warrant space in the research report. .. todo:: Find missing link to file system paper. + .. index:: double: GNU Name System; subsystem see: GNS; GNU Name System .. _GNU-Name-System-_0028GNS_0029: -GNS - the GNU Name System -========================= +GNS - the GNU Name system +------------------------- The GNU Name System (GNS) is a decentralized database that enables users to securely resolve names to values. Names can be used to identify other @@ -327,6 +328,77 @@ users, and the DHT to exchange data between users. A plugin API is used to enable applications to define new GNS record types. .. index:: + single: GNS; name cache + double: subsystem; NAMECACHE + +.. _GNS-Namecache: + +NAMECACHE — DHT caching of GNS results +====================================== + +The NAMECACHE subsystem is responsible for caching (encrypted) +resolution results of the GNU Name System (GNS). GNS makes zone +information available to other users via the DHT. However, as accessing +the DHT for every lookup is expensive (and as the DHT's local cache is +lost whenever the peer is restarted), GNS uses the NAMECACHE as a more +persistent cache for DHT lookups. Thus, instead of always looking up +every name in the DHT, GNS first checks if the result is already +available locally in the NAMECACHE. Only if there is no result in the +NAMECACHE, GNS queries the DHT. The NAMECACHE stores data in the same +(encrypted) format as the DHT. It thus makes no sense to iterate over +all items in the NAMECACHE – the NAMECACHE does not have a way to +provide the keys required to decrypt the entries. + +Blocks in the NAMECACHE share the same expiration mechanism as blocks in +the DHT – the block expires wheneever any of the records in the +(encrypted) block expires. The expiration time of the block is the only +information stored in plaintext. The NAMECACHE service internally +performs all of the required work to expire blocks, clients do not have +to worry about this. Also, given that NAMECACHE stores only GNS blocks +that local users requested, there is no configuration option to limit +the size of the NAMECACHE. It is assumed to be always small enough (a +few MB) to fit on the drive. + +The NAMECACHE supports the use of different database backends via a +plugin API. + +.. index:: + double: subsystem; NAMESTORE + +.. _NAMESTORE-Subsystem: + +NAMESTORE — Storage of local GNS zones +====================================== + +The NAMESTORE subsystem provides persistent storage for local GNS zone +information. All local GNS zone information are managed by NAMESTORE. It +provides both the functionality to administer local GNS information +(e.g. delete and add records) as well as to retrieve GNS information +(e.g to list name information in a client). NAMESTORE does only manage +the persistent storage of zone information belonging to the user running +the service: GNS information from other users obtained from the DHT are +stored by the NAMECACHE subsystem. + +NAMESTORE uses a plugin-based database backend to store GNS information +with good performance. Here sqlite and PostgreSQL are supported +database backends. NAMESTORE clients interact with the IDENTITY +subsystem to obtain cryptographic information about zones based on egos +as described with the IDENTITY subsystem, but internally NAMESTORE +refers to zones using the respective private key. + +NAMESTORE is queried and monitored by the ZONEMASTER service which periodically +publishes public records of GNS zones. ZONEMASTER also +collaborates with the NAMECACHE subsystem and stores zone information +when local information are modified in the NAMECACHE cache to increase look-up +performance for local information and to enable local access to private records +in zones through GNS. + +NAMESTORE provides functionality to look-up and store records, to +iterate over a specific or all zones and to monitor zones for changes. +NAMESTORE functionality can be accessed using the NAMESTORE C API, the NAMESTORE +REST API, or the NAMESTORE command line tool. + +.. index:: double: HOSTLIST; subsystem .. _HOSTLIST-Subsystem: @@ -751,76 +823,6 @@ Also MESSENGER provides multiple features with privacy in mind: other members to draw conclusions from communication partners -.. index:: - single: GNS; name cache - double: subsystem; NAMECACHE - -.. _GNS-Namecache: - -NAMECACHE — DHT caching of GNS results -====================================== - -The NAMECACHE subsystem is responsible for caching (encrypted) -resolution results of the GNU Name System (GNS). GNS makes zone -information available to other users via the DHT. However, as accessing -the DHT for every lookup is expensive (and as the DHT's local cache is -lost whenever the peer is restarted), GNS uses the NAMECACHE as a more -persistent cache for DHT lookups. Thus, instead of always looking up -every name in the DHT, GNS first checks if the result is already -available locally in the NAMECACHE. Only if there is no result in the -NAMECACHE, GNS queries the DHT. The NAMECACHE stores data in the same -(encrypted) format as the DHT. It thus makes no sense to iterate over -all items in the NAMECACHE – the NAMECACHE does not have a way to -provide the keys required to decrypt the entries. - -Blocks in the NAMECACHE share the same expiration mechanism as blocks in -the DHT – the block expires wheneever any of the records in the -(encrypted) block expires. The expiration time of the block is the only -information stored in plaintext. The NAMECACHE service internally -performs all of the required work to expire blocks, clients do not have -to worry about this. Also, given that NAMECACHE stores only GNS blocks -that local users requested, there is no configuration option to limit -the size of the NAMECACHE. It is assumed to be always small enough (a -few MB) to fit on the drive. - -The NAMECACHE supports the use of different database backends via a -plugin API. - -.. index:: - double: subsystem; NAMESTORE - -.. _NAMESTORE-Subsystem: - -NAMESTORE — Storage of local GNS zones -====================================== - -The NAMESTORE subsystem provides persistent storage for local GNS zone -information. All local GNS zone information are managed by NAMESTORE. It -provides both the functionality to administer local GNS information -(e.g. delete and add records) as well as to retrieve GNS information -(e.g to list name information in a client). NAMESTORE does only manage -the persistent storage of zone information belonging to the user running -the service: GNS information from other users obtained from the DHT are -stored by the NAMECACHE subsystem. - -NAMESTORE uses a plugin-based database backend to store GNS information -with good performance. Here sqlite and PostgreSQL are supported -database backends. NAMESTORE clients interact with the IDENTITY -subsystem to obtain cryptographic information about zones based on egos -as described with the IDENTITY subsystem, but internally NAMESTORE -refers to zones using the respective private key. - -NAMESTORE is queried and monitored by the ZONEMASTER service which periodically -publishes public records of GNS zones. ZONEMASTER also -collaborates with the NAMECACHE subsystem and stores zone information -when local information are modified in the NAMECACHE cache to increase look-up -performance for local information and to enable local access to private records -in zones through GNS. - -NAMESTORE provides functionality to look-up and store records, to -iterate over a specific or all zones and to monitor zones for changes. -NAMESTORE functionality can be accessed using the NAMESTORE C API, the NAMESTORE -REST API, or the NAMESTORE command line tool. .. index:: single: subsystem; Network size estimation