// architecture

Protocol architecture

How Reticulum finds destinations, learns paths and forwards traffic. This is the technical deep dive of What is Reticulum? for readers who want to understand what happens beneath the apps.

Destination-based addressing

Reticulum does not route to hosts, subnets, ports or DNS names. It routes to destination hashes. A destination is created from an application name, optional aspects and, for Single destinations, an identity. That material is hashed into a 16-byte address, shown as 32 hex characters.

Destination types

Type Encryption Multi-hop Use
SingleAsymmetric, per-packet ECDHYesPrivate application endpoints, LXMF inboxes
LinkEphemeral ECDH sessionYesReliable channels, requests, resources
GroupSymmetric, pre-shared keyNoLocal group traffic with a shared key
PlainNoneNoLocal public broadcast or discovery

Only Single and Link destinations are transported across multiple hops. Plain and Group are deliberately local/direct.

Announces

An announce makes a destination discoverable on the network. Transport nodes that hear an announce store where it came from, increase the hop count and may re-broadcast it. This is how paths form without a central registry or fixed routing table.

What an announce contains

Field Purpose
Destination hashThe 16-byte address being announced
Public key materialX25519 and Ed25519 public keys for the identity
Name hashCompact hash of the application destination name
Random hashFreshness material for announce validation
Ratchet keyOptional: current ratchet public key
SignatureEd25519 signature that proves the announce belongs to the identity
Application dataOptional: metadata such as display hints or capabilities

Announce propagation rules

Rule Effect
Duplicate filteringAlready-seen announces are ignored
Hop limitAnnounces stop after the configured maximum (default 128)
Bandwidth capAnnounces use at most 2% of the interface bandwidth
Random delayRe-broadcasts are delayed to avoid synchronized floods
Locality priorityAnnounces with fewer hops are sent first when bandwidth is scarce

Routing

Reticulum routing is next-hop routing built from announces:

1 Node A sends an announce out on its interfaces.
2 A transport node hears the announce and stores: "A is reachable via this neighbor on this interface."
3 The transport node re-broadcasts the announce with an increased hop count.
4 Other transport nodes repeat this process until the announce has reached the reachable mesh.
5 When Node B sends to A, it looks up the destination hash and sends the packet to the next hop. Each transport node repeats this locally until the packet arrives.

If no path exists, the sender can send a path request or wait until the destination announces again.

Transport and metadata

Transport nodes forward packets without plaintext access. They do see transport metadata that is needed for forwarding: interface activity, timing, packet size, hop counts and destination hashes.

Reticulum packets contain no source addresses, so a packet does not say who sent it. Traffic analysis on the metadata above is still possible.