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.

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.