Architecture Diagrams Are Answering the Wrong Question
Engineering Note #01
Engineering Note #02
Last updated · June 4, 2026
SRT is best understood as:
SPTS (Single Program Transport Stream behavior) carried over a connection-oriented UDP session layer with MTPS-like multiplexing semantics via sessions.
That sounds dense, but it reduces to something very simple:
One stream per session (SPTS-like)
+
Many sessions per socket/port (MTPS-like)
=
SRT
Classic MPEG world:
1 encoder → 1 stream → 1 destination
Characteristics:
Mental model:
[Encoder] ─────► [Receiver]
Broadcast mindset:
1 transport → many programs/services
Characteristics:
Mental model:
┌─ Program A
[Transport]├─ Program B
└─ Program C
SRT splits the difference in a very pragmatic way:
So:
(single port)
│
┌─────────┼─────────┐
▼ ▼ ▼
Session 1 Session 2 Session 3
(SPTS) (SPTS) (SPTS)
That’s the key observation to make:
SRT is SPTS per session, MTPS per listener socket.
Traditional streaming stacks:
RTMP: one port, many streams, messy multiplexing semantics
RTP: many ports, session management complexity
SRT: one port, many sessions, clean abstraction
SRT’s listener behaves like:
bind(udp://0.0.0.0:9000)
→ accepts infinite logical streams
→ each identified by handshake/session
So a control plane doesn’t need port gymnastics.
In SRT, the session is everything.
A session contains:
So instead of:
IP:port = stream identity
you get:
session = stream identity
That’s a major architectural shift.
SRT is not just “send UDP packets and hope”.
Every session is inherently bi-directional control-plane + uni-directional media-plane:
A → B (MPEG-TS)
B → A:
- ACKs
- NAKs
- bandwidth signals
- RTT updates
So every stream is constantly self-correcting.
This is why it feels stable even on messy networks.
A log:
result: waveahand
This is SRT’s handshake phase.
Think of it as:
1. UDP packets start flowing
2. peers negotiate session parameters
3. encryption keys exchanged (if enabled)
4. sequence spaces aligned
5. latency buffers agreed
6. session becomes “live”
After Wavehand:
“this UDP flow is now a managed media session”
RTP:
SRT:
So SRT collapses a lot of infra into the protocol itself.
This is the key abstraction:
latency = repair window
Not “delay”.
More precisely:
Latency buffer =
time allowed for:
- packet loss detection
- NAK propagation
- retransmission arrival
- reordering
You get:
RTT: 0.2–2 ms
loss: ~0
jitter: tiny
So:
Typical internet SRT:
120–300 ms
Local fabric SRT:
5–20 ms
Same reliability, way less buffering.
If you go too aggressive:
latency = 2ms
Then:
So the tradeoff becomes:
lower latency
→ smaller repair window
→ higher risk of visible loss
A system has:
Ingest nodes
→ control plane
→ MPEG-TS routing
→ workers
→ outputs
SRT gives you:
So the fabric becomes:
SRT session = atomic media pipe
If everything else is forgotten, this is the core abstraction:
SRT = a stateful UDP session that carries exactly one live media stream,
with built-in recovery and timing control.
And:
A listener port = a multiplexing hub for many such sessions.
If you internalize just one thing for media system architecture design, it’s this:
You are not routing packets — you are managing sessions with timing budgets.