Minor improvements to README

This commit is contained in:
Andrew Bettison 2016-01-11 16:45:08 +10:30
parent e51189a1c8
commit bc1203c87c
2 changed files with 42 additions and 30 deletions

View File

@ -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)

View File

@ -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
--------------------- ---------------------