1.4 KiB
1.4 KiB
Packet Flow & Allocation Handling
This page describes the high-level data flow through niom-turn (control plane and data plane).
Components
- UDP listener: receives STUN/TURN as well as ChannelData on UDP/3478.
- TCP listener: STUN/TURN over TCP/3478.
- TLS listener: STUN/TURN over TLS/5349 ("turns").
- AuthManager: REALM/NONCE challenges, long-term auth (MI), optional TURN REST.
- AllocationManager: manages allocations including relay sockets, permissions, and channel bindings.
Flow (control plane)
- The request is parsed as STUN/TURN (or recognized as ChannelData).
- Auth is checked:
- without valid credentials →
401(challenge) or438(stale nonce) - with valid credentials → the request is processed; responses include
MESSAGE-INTEGRITY+FINGERPRINT
- without valid credentials →
- Allocate/Refresh/Permission/ChannelBind update the allocation state.
Flow (relay/data plane)
- On
ALLOCATE, a UDP relay socket is bound and a relay loop is started. - Packets from the peer are received by the relay and sent back to the client as Data Indication or ChannelData.
- For interop, a
CHANNEL-BINDmay implicitly create the permission for the peer.
Lifecycle / Housekeeping
- Allocations are periodically checked for expiry (housekeeping) so relay tasks can end even while idle.
- The server periodically logs a compact metrics snapshot.
See also: docs/turn_end_to_end_flow.md and docs/tcp_tls_data_plane.md.