Building Networks with Reticulum
Table of Contents
1. What is Reticulum?
Reticulum is a complete network stack.
2. Why a new stack?
You can't fully escape a central authority that has control over some key aspect of the current internet:
- TLS Certificate Authorities who decides what's in your certificate store? Your grandma's?
- DNS records are rented and entirely subject to rules of the registrar and the country of origin.
- Internet Assigned Numbers Authority / Regional Internet Registry for Europa have control over the IP address space.
- ISPs connection is rented and subject to the terms and conditions of the ISP. "Don't use too much bandwidth, citizen!"
- Most communication happens via some third party.
3. What Retiulum Brings
A full list can be found here, but some highlights are:
- Mandatory end-to-end encryption with forward secrecy
- No Authorities
- Self-sovereign, globally unique addresses (no IANA/RIPE)
- No DNS
- Anonymity: no source addresses included in any packets
- Connection initiators can decide to identify themselves
- Interfaces for virtually any medium (Ethernet, LoRa, Radio [ISM for example],
UNIX pipes, user created and more)
- All interface types support virtual network segmentation and authentication
- Ease of use anyone can host a server, or not
- Low cost existing commodity hardware can be used to make new networks
4. Reticulum Components
- rnsd
- system-wide daemon that manages the interfaces and transport
- Interfaces
- things like Ethernet, WiFi, LoRa
- nomadnet
- terminal based client with messaging and basic browser functionality
- Sideband
- Android and desktop app with peer to peer calling capabilities
- MeshChat
- Desktop reticulum client
- LXMF
- Lightweight Extensible Message Format - a foundational messaging protocol
- LXST
Lightweight Extensible Signal Transport - protocol for real-time streaming of data (foundation for voice calls in Sideband)
Each component can be used individually, or in concert with others. For example, there is no need to run
rnsdandnomadnetasnomadnetwill start its own instance ofrnsdif one isn't found.
5. How Does Routing Work?
- No global routing tables. Local only.
- Destinations announce their presence which includes: address and public
key. This hits all interfaces
rnsdhas configured. - Interfaces process the announce and passes it along as needed.
- Router receives an announce, checks if the path is better than known paths and
stores it along with the next hop.
- In practice, this means that the router only ever knows the next hop of a packet. Never the full route.
- It also means that paths regenerate as topology changes.
This is similar to how a local name server will have local-names for on-network devices, but must query upstream for things it doesn't have.
6. Can I flood With Announces?
(Hi Zach!)
At first glance, it would seem that one could completely overwhelm the network with announces. This isn't the case.
- Announces have their own bandwidth allocation (2%) separate from message transmission.
- Known good destination announces are prioritized over unknown.
- Announce rates can be limited per server.
7. Announces in Detail
In reticulum Transport Nodes (TN) handle announces and thus routing.
- Duplicate announces are ignored.
- Upon receiving an announce, record which TN it was received from and the
number of re-transmissions (RT).
- Stop RT if number of RT is
m+1(m= 128 by default). - RT on all interfaces after randomised delay.
- Queue RT if bandwidth is limited.
- Priority goes to closer (by hops) TNs
- Stop RT if number of RT is
- After RT, listen for the same RT with hop count incremented.
- If not heard, retry RT
rtimes (r= 1 by default).
- If not heard, retry RT
If newer announce from the same destination is seen while RT of older announce, drop newest.
Once a TN receives the announce, devices connected to said TN can talk to the destination that announced.
More info on Reticulum Transport mechanisms can be found here.
8. How Far Does That Get Us?
- Still early stages, but things are extremely far along (shout out to the
incredible work Mark has done!)
- Messaging (DMs via Sideband, NomadNet and MeshChat - group messaging supported via 3rd party apps)
- "Web" server functionality via NomadNet and a few 3rd party tools
- Browser via NomadNet, MeshChat and a few other tools
- Voice calls via Sideband, LXST (rnphone) or MeshChat
9. Lets Make a Network!
Join the PMesh WiFi Scan:
Or enter the info manually
SSID Password PMesh PuebloSrirracha - Then go to: http://10.42.0.1
- Download a client like Sideband or NomadNet.
10. TestNet Info
[[RNS Testnet BetweenTheBorders]] type = TCPClientInterface enabled = yes target_host = reticulum.betweentheborders.com target_port = 4242
11. Some Interesting Nodes
- Colorado BSD Users Group
- 25b61e133dee99fd8c0ffee23ed68f3b:/page/index.mu
- OpenBSD.app
- 0cc65124b72a5fdec6dcc14241bb8108:/page/index.mu
12. More Info
- Reticulum Network Stack Manual
- 38C3 - Reticulum: Unstoppable Networks for The People by the creator of Reticulum.