tiny.reticulum.node.transport.link
Defined in node.transport.
A node needs records and steps to move the packets of encrypted sessions that run between other pairs of nodes through itself.
API (2)
Namespaces
Public namespaces.
entriesrelay: A node running this code passes encrypted sessions that belong to other pairs of nodes through itself.
Source
Source: lib/reticulum/src/node/transport/link/root.zig
zig
//! A node needs records and steps to move the packets of encrypted sessions//! that run between other pairs of nodes through itself. Two programs that want//! an encrypted session between them may sit many hops apart, so each node//! along the way has to pass the request outward, the answer back, and the//! traffic both ways.//!//! A node in the middle holds none of the session keys, so it tells the two//! directions apart by the hop count a packet carries (the byte in the packet//! header that rises by one at every node the packet passes through) and the//! network interface it arrived on. A request that is never answered would hold//! its record for good, so each record carries a deadline. The record store//! holds a fixed number of sessions in storage its caller supplies, so a//! request arriving with the store full is dropped whole, leaving no//! half-written record.//!//! Reticulum 1.5.0, the reference implementation this package is a port of,//! pinned to one upstream commit, answers these with a record per carried//! session at every node that carries traffic for others, keyed by the 16-byte//! id both ends derive from the request. Each record carries a deadline per//! remaining hop for the signed answer to come back, and a sweep drops records//! past their deadline, at Reticulum@1.5.0 RNS/Transport.py:1998-2010,843-856.//! The lineage is checkable in this tree: the package README pins the upstream//! commit the port follows, and the conformance corpus under src/conformance is//! generated from that release and drives the differential tests.//!//! This port asks its caller to wake the node at the earliest deadline any//! record holds (a *node timer*), so a record ends at its own deadline. The//! reference sweeps every second. `relay.zig` lists every departure from the//! reference.//!//! The subtree holds two modules: `entries` keeps one record per carried//! session with its deadline, and `relay` holds the steps that forward the//! request, carry the signed answer back, pass the traffic, and drop a record//! at its deadline.//!//! - *link*: an encrypted session between two endpoints, named by a 16-byte//! link id that both ends derive from the request packet.//! - *link id*: the 16-byte name of one link, the same at every node the link//! crosses.//! - *proof*: a signed packet returned to confirm an earlier packet, which for//! a link request is the responder accepting the link.//! - *carrier*: one network interface the node sends and receives over, named//! by a small integer index.//! - *transport node*: a node that carries traffic on behalf of other nodes, as//! well as sending and receiving its own.pub const entries = @import("entries.zig");pub const relay = @import("relay.zig");Source: lib/reticulum/src/node/transport/root.zig:105
zig
pub const link = @import("link/root.zig");Audit
| Definitions | 1 |
|---|---|
| Public names | 1 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |