// over het protocol

Wat is Reticulum?

Reticulum is een netwerkstack voor berichten en data over meerdere transporten tegelijk. Je kunt dezelfde identity gebruiken via internet, LoRa, WiFi, Bluetooth of packet radio, en het netwerk kiest zelf hoe verkeer het best verder komt.

Reticulum is geen app, maar de laag eronder. Apps zoals Ratspeak en Sideband gebruiken die laag om elkaar te vinden, berichten af te leveren en later ook over radio te werken als je daar hardware aan toevoegt.

Zo werkt het

In IP-netwerken stuur je data naar een adres en poort. In Reticulum maken applicaties destinations. Een destination is een cryptografisch eindpunt met een 16-byte hash. Dat is waar het netwerk naartoe routeert.

Wanneer een destination bereikbaar wil zijn, stuurt het een announce. Transport nodes die die announce horen, leren de volgende hop terug naar die destination en kunnen de announce doorsturen. Geen enkele node hoeft het hele netwerk te kennen, alleen de volgende stap.

Wanneer twee eindpunten een privesessie nodig hebben, bouwt Reticulum een link op: een versleuteld, tijdelijk kanaal dat een of meerdere hops kan overspannen. Messaging-applicaties voegen daar LXMF aan toe: berichtstructuur, signatures, directe bezorging en store-and-forward propagation.

Reticulum vs traditioneel

  Traditioneel (IP)
  App → IP-adres:poort → DNS → routing tables → server

  Reticulum
  App → destination hash → announce-based routing → encrypted link

Wat het anders maakt

Destinations vervangen IP-adressen. Een Reticulum adres is geen plek in een subnet. Het is een hash afgeleid van een identity en een applicatienaam. Maak er zoveel aan als je wilt, wanneer je wilt.

Het medium maakt niet uit. Reticulum pakketten gaan over langzaam LoRa, lokaal WiFi, TCP over internet, I2P, serial en andere carriers, in hetzelfde netwerk. Interfaces zijn adapters; het packet- en routingmodel blijft hetzelfde.

Routing wordt geleerd uit announces. Er is geen DNS, DHCP, certificate authority, centraal register of verplichte accountprovider.

Encryptie staat altijd aan. Berichten en links zijn end-to-end versleuteld, en uitzetten kan niet. Alleen announces gaan onversleuteld over het netwerk, wel ondertekend. Pakketten bevatten geen bronadres, dus uit een packet zelf valt niet af te lezen wie het verstuurde. Het bestemmingsadres gaat wel onversleuteld mee.

Cryptografie

Functie Primitief
Key exchangeX25519 (ECDH op Curve25519)
EncryptieAES-256-CBC met PKCS7
SignaturesEd25519
AuthenticatieHMAC-SHA256
Key derivationHKDF
Identity keys512-bit Elliptic Curve (X25519 + Ed25519)

Encryptie zit ingebouwd, je hoeft niets aan te zetten. Meer details en de precieze primitives staan op de encryptie pagina.

Identity en adressen

Een Reticulum identity is een 64-byte private keyset: 32 bytes voor X25519 key agreement en 32 bytes voor een Ed25519 signing seed. Bij de eerste keer opstarten wordt er automatisch een aangemaakt. Behandel het als een SSH key. Wie de private key heeft, kan als die identity handelen.

Uit de public key wordt een destination hash afgeleid. 16 bytes, weergegeven als 32 hex karakters. Dat is je adres op het netwerk. Veilig om te delen, want het is afgeleid van je public key.

# Voorbeeld destination hash

4faf1b2e0a077e6a9d92fa051f256038

Je kunt op elk moment een nieuwe identity aanmaken. Meerdere identities tegelijk gebruiken kan ook: een voor vrienden, een voor werk, een voor een project.

Node types

Niet elke Reticulum node doet hetzelfde. Standaard ben je een gewone node. De andere rollen zet je bewust aan.

Type Wat het doet Config
Gewone node Stuurt en ontvangt alleen eigen berichten. Standaard na installatie. standaard
Transport node Stuurt ook verkeer van anderen door. Maakt multi-hop bereikbaarheid mogelijk. enable_transport = yes
Propagation node Slaat LXMF berichten op voor offline gebruikers. Levert af zodra ze terugkomen. lxmd -p

Je hoeft geen transport node te zijn om te communiceren. Die rol zetten vrijwilligers aan die het netwerk willen uitbreiden.

Netwerkstructuur

In de praktijk zie je vaak twee lagen: een backbone van transport nodes via internet, plus lokale mesh segmenten via LoRa. Gateway nodes verbinden die lagen met elkaar. Zo kun je klein beginnen en toch later uitbreiden naar radio of lokale dekking.

  Lokale LoRa mesh              Globale backbone              Lokale LoRa mesh
  (geen internet)               (via internet)                (geen internet)

  [Node A] --radio--+                                        +--radio-- [Node E]
                    |                                        |
  [Node B] --radio--+-- [Gateway] ==internet== [Gateway] --+--radio-- [Node F]
                    |                                        |
  [Node C] --radio--+                                        +--radio-- [Node G]

Netwerken kunnen open of besloten zijn. Met een gedeelde passphrase (IFAC) kun je een privaat netwerk opzetten dat onzichtbaar is voor buitenstaanders. Alle announces en packets worden dan gefilterd.

Packet formaat

Reticulum packets zijn compact. Maximaal 500 bytes, passend voor LoRa en andere media met beperkte bandbreedte.

[HEADER 2B] [ADDRESSES 16/32B] [CONTEXT 1B] [DATA 0-465B]

Packet type Grootte
Path Request51 bytes
Announce167 bytes
Link Request83 bytes
Link Keepalive20 bytes

Wat Reticulum niet is

Geen vervanging voor fysieke connectiviteit. Als er geen radio, kabel, LAN, internettunnel of propagation path twee regio's verbindt, kunnen pakketten de kloof niet overbruggen.

Geen anonimiteitssoftware. Reticulum laat bronadressen weg uit pakketten en ondersteunt initiator anonymity, maar dat beschermt de afzender, niet de ontvanger. Het bestemmingsadres staat onversleuteld in de header, op elk medium. Over LoRa ziet iedereen binnen radiobereik naar welk adres jij zendt. Over internet zien je provider en de operator van de node waarmee je verbindt hetzelfde, plus je IP-adres, want TCP-interfaces gebruiken geen TLS. Adressen zijn aan namen te koppelen zodra er announces met een naam voorbij zijn gekomen. Op een besloten interface met passphrase (IFAC) wordt het hele packet gemaskeerd, inclusief het adres. Ook timing, physical-layer observatie en operationele fouten lekken informatie.

Niet automatisch store-and-forward. Reticulum levert de netwerklaag. LXMF propagation nodes voorzien in offline berichtopslag. Zonder propagation node worden berichten niet bewaard voor offline ontvangers.

Niet beperkt tot off-grid radio. Reticulum werkt net zo goed over Ethernet, WiFi, TCP, UDP, I2P of een mix daarvan. LoRa en RNodes heb je nodig als je ook zonder internet wilt werken.

Implementaties

Taal Project Status
PythonReferentie-implementatie (Mark Qvist)Origineel, community-maintained
RustrsReticulum (Ratspeak)Actief, basis van Ratspeak apps
RustLeviculumCommunity implementatie
C++Embedded implementatieMicrocontrollers
GoCommunity implementatieIn ontwikkeling