mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-01-18 02:39:44 +00:00
Minor improvements to README
This commit is contained in:
parent
e51189a1c8
commit
bc1203c87c
69
README.md
69
README.md
@ -45,6 +45,12 @@ Documentation
|
|||||||
* [CONTRIBUTORS.md](./CONTRIBUTORS.md) lists all individuals who have
|
* [CONTRIBUTORS.md](./CONTRIBUTORS.md) lists all individuals who have
|
||||||
contributed to the software
|
contributed to the software
|
||||||
|
|
||||||
|
Bugs and issues
|
||||||
|
---------------
|
||||||
|
|
||||||
|
* Bugs can be reported and inspected using the [GitHub issue tracker][Serval
|
||||||
|
DNA issues].
|
||||||
|
|
||||||
What is in this repository?
|
What is in this repository?
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
@ -66,48 +72,50 @@ The following protocols and services are implemented in **servald**:
|
|||||||
* The **[Distributed Numbering Architecture (DNA)][DNA]** is the key
|
* The **[Distributed Numbering Architecture (DNA)][DNA]** is the key
|
||||||
innovation that makes mesh telephony viable in the absence of any
|
innovation that makes mesh telephony viable in the absence of any
|
||||||
infrastructure, eg, in the aftermath of a natural disaster or in remote
|
infrastructure, eg, in the aftermath of a natural disaster or in remote
|
||||||
locations. It is a protocol carried over MDP (see below) that allows any
|
locations. DNA is a protocol carried over MDP (see below) that asks many
|
||||||
device to ask its neighboring devices for a phone number (DID). Such a
|
devices at once if they will answer a phone number (DID). A device will
|
||||||
request will propagate through the mesh, and any device may respond with the
|
respond with its own subscriber identity (SID) if its user has “claimed”
|
||||||
identity (SID) of a subscriber who has “claimed” that DID.
|
that DID. This allows phone calls to be established over the mesh using
|
||||||
|
conventional phone numbers.
|
||||||
|
|
||||||
* The **[Serval Keyring][]** is a flat file containing all the user identities on
|
* The **[Serval Keyring][]** is a flat file containing all the user identities
|
||||||
a single device. Each identity is a set of elliptic curve secret
|
on a single device. Each identity is a set of elliptic curve secret
|
||||||
cryptographic keys that belong to a single “mesh subscriber”, indexed by the
|
cryptographic keys that belong to a single “mesh subscriber”, indexed by the
|
||||||
subscriber's 256-bit public key, called a SID. Each identity in the keyring is
|
subscriber's 256-bit public key, called a SID. Each identity in the keyring
|
||||||
locked by its own user-chosen password (called a PIN in the code and
|
is locked by its own user-chosen password (called a PIN in the code and
|
||||||
documentation), using elliptic curve cryptography to protect locked entries
|
documentation), using elliptic curve cryptography to protect locked entries
|
||||||
from theft or tampering, and steganography to allow the user to plausibly
|
from theft or tampering, and steganography to allow the user to plausibly
|
||||||
deny the existence of any locked identity.
|
deny the existence of locked identities.
|
||||||
|
|
||||||
* The **[Mesh Datagram Protocol (MDP)][MDP]** is Serval's own layer 3 protocol
|
* The **[Mesh Datagram Protocol (MDP)][MDP]** is Serval's own layer 3 protocol
|
||||||
designed for secure mesh networking. It is completely independent of
|
designed for secure mesh networking. It is completely independent of
|
||||||
Internet protocols such as IP and UDP, but for the time being is implemented
|
Internet protocols such as IP and UDP, although for the time being it is
|
||||||
as an “overlay” network based on UDP/IP because that is the interface that
|
implemented as an “overlay” network based on UDP/IP because that is the
|
||||||
Linux and other operating systems provide for sending data over WiFi.
|
interface that Linux and other operating systems provide for sending data
|
||||||
However, MDP could easily be implemented directly over a layer 2 data link
|
over Wi-Fi. However, MDP could easily be implemented directly over a layer
|
||||||
such as WiFi or Ethernet MAC. MDP uses subscribers' public keys (SID) as
|
2 data link such as Wi-Fi or Ethernet MAC. MDP uses subscribers' public
|
||||||
source and destination addresses, and has a 32-bit port number analogous to
|
keys (SID) as source and destination addresses, has a 32-bit port number
|
||||||
the 16-bit port number used in TCP/IP.
|
analogous to the 16-bit port number used in TCP/IP, and encrypts all packet
|
||||||
|
contents by default, using the public key (SID) of the destination.
|
||||||
|
|
||||||
* The **[Voice over Mesh Protocol (VoMP)][VoMP]** is Serval's own call negotiation
|
* The **[Voice over Mesh Protocol (VoMP)][VoMP]** is Serval's own call
|
||||||
and two-way audio streaming protocol used to implement mesh voice calls. It
|
negotiation and two-way audio streaming protocol used to implement mesh
|
||||||
is analogous to SIP/RTS, which is the dominant protocol used to implement
|
voice calls. It fills the same role as SIP/RTS, the dominant protocol used
|
||||||
Voice over Internet Protocol, but VoMP is designed for the variable and
|
for Voice over Internet Protocol, but VoMP is designed for the variable and
|
||||||
unstable conditions of wireless mesh networks. VoMP's session state model
|
unstable conditions of wireless mesh networks. VoMP's session state model
|
||||||
and signalling can handle packet loss, mid-call re-routing and re-connection
|
and signalling can handle packet loss, mid-call re-routing and re-connection
|
||||||
where SIP would fail. VoMP's audio streaming can encapsulate many codecs
|
where SIP would fail. VoMP's audio streaming can encapsulate many codecs
|
||||||
and even DTMF (dialpad button) signalling.
|
and even DTMF (dialpad button) signalling.
|
||||||
|
|
||||||
* The **[Rhizome][]** content distribution service is a storage engine implemented
|
* **[Rhizome][]** is a content storage and distribution service implemented
|
||||||
using SQLite and a content-exchange protocol based on MDP and HTTP for the
|
using SQLite and a content-exchange protocol based on MDP. It can be used
|
||||||
pervasive dissemination of content like images, videos, documents, software
|
to disseminate content like images, videos, documents, software upgrades,
|
||||||
upgrades, etc. Each piece of content in Rhizome is called a “bundle”, which
|
etc. Each piece of content in Rhizome is called a “bundle”, which has two
|
||||||
has two parts: a *manifest* that describes the content, and the *payload*,
|
parts: a *manifest* that describes the content, and the *payload*, which is
|
||||||
which is the content itself. Each bundle has its own unique cryptographic
|
the content itself. Each bundle has its own unique cryptographic identifier
|
||||||
identifier that allows any recipient to verify that it has not been tampered
|
that allows any recipient to verify that it has not been tampered with. A
|
||||||
with. A bundle's payload may be encrypted by the author so that only the
|
bundle's payload may be encrypted by the author so that only the designated
|
||||||
designated recipient can read it.
|
recipient can read it.
|
||||||
|
|
||||||
* The **[MeshMS][]** messaging service sends short text messages using Rhizome
|
* The **[MeshMS][]** messaging service sends short text messages using Rhizome
|
||||||
as its transport. Each message thread is stored and carried in a pair of
|
as its transport. Each message thread is stored and carried in a pair of
|
||||||
@ -118,7 +126,7 @@ The following protocols and services are implemented in **servald**:
|
|||||||
(eg, VoIP gateways, SMS satellite links, packetised web), and to overcome
|
(eg, VoIP gateways, SMS satellite links, packetised web), and to overcome
|
||||||
scalability limitations of a perfectly decentralised mesh (eg, central
|
scalability limitations of a perfectly decentralised mesh (eg, central
|
||||||
telephone directory). Serval Infrastructure is implemented as a daemon with
|
telephone directory). Serval Infrastructure is implemented as a daemon with
|
||||||
its own executable called **directory_service**.
|
its own executable called `directory_service`.
|
||||||
|
|
||||||
Copyright and licensing
|
Copyright and licensing
|
||||||
-----------------------
|
-----------------------
|
||||||
@ -165,6 +173,7 @@ This document is available under the [Creative Commons Attribution 4.0 Internati
|
|||||||
[SPI]: http://developer.servalproject.org/dokuwiki/doku.php?id=content:spi
|
[SPI]: http://developer.servalproject.org/dokuwiki/doku.php?id=content:spi
|
||||||
[serval-dna]: https://github.com/servalproject/serval-dna
|
[serval-dna]: https://github.com/servalproject/serval-dna
|
||||||
[batphone]: https://github.com/servalproject/batphone
|
[batphone]: https://github.com/servalproject/batphone
|
||||||
|
[Serval DNA issues]: https://github.com/servalproject/serval-dna/issues
|
||||||
[issue #28]: https://github.com/servalproject/serval-dna/issues/28
|
[issue #28]: https://github.com/servalproject/serval-dna/issues/28
|
||||||
[GNU C]: http://gcc.gnu.org/
|
[GNU C]: http://gcc.gnu.org/
|
||||||
[daemon]: http://en.wikipedia.org/wiki/Daemon_(computing)
|
[daemon]: http://en.wikipedia.org/wiki/Daemon_(computing)
|
||||||
|
@ -61,6 +61,9 @@ Blank lines are ignored, as are lines beginning with the comment character `#`.
|
|||||||
VALUE is parsed very strictly: all spaces are significant. A leading or
|
VALUE is parsed very strictly: all spaces are significant. A leading or
|
||||||
trailing space in VALUE can cause a numerical option to be invalid.
|
trailing space in VALUE can cause a numerical option to be invalid.
|
||||||
|
|
||||||
|
The order of the lines in the file has no significance. Changing the order of
|
||||||
|
lines will produce exactly the same result.
|
||||||
|
|
||||||
Invalid configuration
|
Invalid configuration
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user