Transport
The transport layer sits between the underlying network (UDP/TCP/QUIC/…) and the network message layer. Its responsibilities are:
-
Session establishment on unicast links via the INIT/OPEN handshake.
-
Multicast session advertisement via periodic JOIN messages.
-
Managing transport links over a variety of underlying protocols.
-
Batching multiple network messages into a single FRAME to reduce per-message overhead.
-
Fragmenting large messages that exceed the link MTU across multiple FRAGMENT messages.
-
Sending KEEP_ALIVE messages to detect link and session failures.
-
Carrying transport- and link-scoped OAM payloads via
OAM.
Transport Message IDs
| ID (hex) | Message | Scope | Purpose |
|---|---|---|---|
0x00 |
OAM |
Both |
Operations, administration, and management payload |
0x01 |
INIT |
Unicast only |
Session parameter negotiation (SYN/ACK) |
0x02 |
OPEN |
Unicast only |
Session activation (SYN/ACK with cookie) |
0x03 |
CLOSE |
Both |
Session or link termination |
0x04 |
KEEP_ALIVE |
Both |
Lease renewal heartbeat |
0x05 |
FRAME |
Both |
Container for one or more network messages |
0x06 |
FRAGMENT |
Both |
One fragment of a large network message |
0x07 |
JOIN |
Multicast only |
Multicast session advertisement |
Transport vs. Network Layer
The transport layer is concerned with how bytes move between two directly connected nodes.
On the default "universal" transport, network messages are carried as payloads inside FRAME or FRAGMENT messages.
In negotiated low-latency unicast mode, zenoh-rust uses a reduced transport codec in which network messages, KEEP_ALIVE, and CLOSE are serialized directly without FRAME/FRAGMENT batching.
Unicast vs. Multicast
On unicast links (TCP, TLS, QUIC, UDP unicast), sessions are established with the INIT/OPEN handshake. On multicast links (UDP multicast, UDP broadcast), no handshake is needed; each node announces its parameters via periodic JOIN messages and all other nodes can immediately send to it.
Multilink
Zenoh supports multilink sessions: a single logical session may be carried over multiple simultaneous transport links. Multilink support is negotiated during INIT via the MultiLink extension. See INIT Extensions.
Low-Latency Unicast
Low-latency mode is negotiated with the LowLatency transport extension during INIT and OPEN.
It trades batching and fragmentation support for lower per-message overhead.
The validated zenoh-rust baseline treats low-latency mode and QoS transport lanes as mutually exclusive session modes.