Media Over QUIC Transport

A proposed solution for Low Latency Media Dissemination
Quick rundown of existing Media Streaming Protocols

Common HTTP Latency

  • One-way streams
  • Live events
  • Large audiences

Reduced Latency

  • OTT (over the top) providers
  • Live streaming
  • News & sports

Low Latency

  • UGC (user generated content)
  • Live streams
  • Video game streaming

Near Real-Time

  • Two-way web conferencing
  • Real-time device control
https://www.cardinalpeak.com/blog/understanding-and-choosing-the-right-streaming-protocol
Quick rundown of existing Media Streaming Protocols

Common HTTP Latency

  • One-way streams
  • Live events
  • Large audiences
  • Linear programming

Reduced Latency

  • OTT (over the top) providers
  • Live streaming
  • News & sports

Low Latency

  • UGC (user generated content)
  • Live streams
  • Video game streaming

Near Real-Time

  • Two-way web conferencing
  • Real-time device control
10-30 seconds
HLS DASH
5 seconds
RTMP
1-5 seconds
RTSP LL-HLS LL-DASH
Let us try something better
https://www.cardinalpeak.com/blog/understanding-and-choosing-the-right-streaming-protocol

Cons of existing protocols

A tug of war between Latency and Scalability

Cons of existing protocols

A tug of war between Latency and Scalability
https://www.phenixrts.com/resource/super-bowl-2024
superbowl_latencies

Cons of existing protocols

A tug of war between Latency and Scalability

Approx. participant count
Meeting Webinar
Zoom 1k 1M
Teams 1k 20k
GMeet 500 1k
Webex 1k 100k

https://www.phenixrts.com/resource/super-bowl-2024
superbowl_latencies
Single protocol which can be setup for latency or scalability
This talk focuses on MOQT as a solution for low latency transport

Latency of the order of 100ms


Network Adaptability


Trading latency for scalability

Media Stream
Track 3 (Publisher Priority 3)
Enhancement Layer 3
Track 2 (Publisher Priority 2)
Enhancement Layer 2
Track 1 (Publisher Priority 1)
Enhancement Layer 1
Track 0 (Publisher Priority 0)
Base Layer
100ms
Track 3
E-Layer 3 Object
Track 2
E-Layer 2 Object
Track 1
E-Layer 1 Object
Track 0
Base Layer Object
100ms
100ms
Track 3
E-Layer 3 Object
E-Layer 3 Object
Track 2
E-Layer 2 Object
E-Layer 2 Object
Track 1
E-Layer 1 Object
E-Layer 1 Object
Track 0
Base Layer Object
Base Layer Object
100ms
100ms
100ms
Track 3
E-Layer 3 Object
E-Layer 3 Object
E-Layer 3 Object
Track 2
E-Layer 2 Object
E-Layer 2 Object
E-Layer 2 Object
Track 1
E-Layer 1 Object
E-Layer 1 Object
E-Layer 1 Object
Track 0
Base Layer Object
Base Layer Object
Base Layer Object
100ms
100ms
100ms
Track 3
E-Layer 3 Object
E-Layer 3 Object
E-Layer 3 Object
Track 2
E-Layer 2 Object
E-Layer 2 Object
E-Layer 2 Object
Track 1
E-Layer 1 Object
E-Layer 1 Object
E-Layer 1 Object
Track 0
Base Layer Object
Base Layer Object
Base Layer Object
loss=0.5%
bitrate=16mbps
delay=20ms ± 2ms
1mpbs
2mpbs
4mpbs
8mpbs
16mbps
snapshot_090
loss=0.5%
bitrate=16mbps
delay=20ms ± 2ms
1mpbs
2mpbs
4mpbs
8mpbs
16mbps
101 (201)
101 (160)
96 (150)
0 (15)
0 (0)
snapshot_100
loss=0.5%
bitrate=8mbps
delay=20ms ± 2ms
1mpbs
2mpbs
4mpbs
8mpbs
16mbps
snapshot_190
loss=0.5%
bitrate=8mbps
delay=20ms ± 2ms
1mpbs
2mpbs
4mpbs
8mpbs
16mbps
200
134
2
0
0
snapshot_207
loss=3%
bitrate=4mbps
delay=20ms ± 2ms
1mpbs
2mpbs
4mpbs
8mpbs
16mbps
200
2
0
0
0
snapshot_290
loss=0.5%
bitrate=64mbps
delay=20ms ± 2ms
1mpbs
2mpbs
4mpbs
8mpbs
16mbps
snapshot_320
loss=0.5%
bitrate=64mbps
delay=20ms ± 2ms
1mpbs
2mpbs
4mpbs
8mpbs
16mbps
198
198
196
195
191
snapshot_401

This protocol is very bad

bad5
brach
https://en.wikipedia.org/wiki/Brachiosaurus
bad0

This protocol is very bad


We have stream priorities only at the transport layer

Time = 0

Transport Layer
t = 4
id = 0
t = 3
id = 0
t = 2
id = 0
t = 1
id = 0
t = 0
id = 0





Underlying layer

Time = 0

Transport Layer
t = 4
id = 0





Underlying layer
t = 3
id = 0
t = 2
id = 0
t = 1
id = 0
t = 0
id = 0

TIME = 250 ms

Transport Layer
t = 4
id = 0





Underlying layer
t = 3
id = 0
t = 2
id = 0
t = 1
id = 0
t = 0
id = 0

TIME = 250 ms

Transport Layer
t = 4
id = 0





Underlying layer
t = 3
id = 0
t = 2
id = 0
t = 1
id = 0
t = 0
id = 0

TIME = 250 ms

Transport Layer
t = 4
id = 1
t = 3
id = 1
t = 2
id = 1
t = 1
id = 1
t = 0
id = 1





Underlying layer
t = 3
id = 0
t = 2
id = 0
t = 1
id = 0
t = 0
id = 0

TIME = 250 ms

Transport Layer
t = 4
id = 1
t = 3
id = 1
t = 2
id = 1
t = 1
id = 1





Underlying layer
t = 0
id = 1
t = 3
id = 0
t = 2
id = 0
t = 1
id = 0

TIME = 500 ms

Transport Layer
t = 4
id = 2





Underlying layer
t = 3
id = 2
t = 2
id = 2
t = 1
id = 2
t = 0
id = 2
t = 3
id = 1
t = 2
id = 1
t = 1
id = 1
t = 0
id = 1
t = 3
id = 0
t = 2
id = 0
t = 1
id = 0

TIME = 750 ms

Transport Layer
t = 4
id = 3





Underlying layer
t = 3
id = 3
t = 2
id = 3
t = 1
id = 3
t = 0
id = 3
t = 3
id = 2
t = 2
id = 2
t = 1
id = 2
t = 0
id = 2
t = 3
id = 1
t = 2
id = 1
t = 1
id = 1
t = 0
id = 1
t = 3
id = 0
t = 2
id = 0
t = 1
id = 0
The application is aware of the deadline

Not the transport layer

Add Deadline awareness at the transport layer

We make a couple of changes

DELIVERY_TIMEOUT


BBR


Estimate Delivery Time Point

Every time a Data Frame is written: ExpectedDelay = (BytesInFlight + PendingDataInStream) / ExpectedBandwidth if (CurrentTime + ExpectedDelay > Deadline) Stop the send Abort the stream
We have made necessary changes to MsQuic to query BytesInFlight and BBRBandwidth


We do some correction on BBRBandwidth to get the ExpectedBandwidth
revised_1.png
revised_2.png
revised_3.png
revised_4.png

Linear Latency Cost - Exponential Scalability

                        graph LR
                            classDef circle stroke:#ffffff,stroke-width:2px,color:#ffffff;

                            B((#nbsp;#nbsp; #nbsp; Relay1)):::circle
                            C((#nbsp;#nbsp; #nbsp; Relay2)):::circle
                            D((#nbsp;#nbsp; #nbsp; Relay3)):::circle

                            S4[Subscribers]

                            Publisher --> B
                            B --> C
                            C --> D
                            D --> S4

                          


Relays forward data as they receive
loss=0%
delay=20ms ± 2ms
relay
ACK

  • Dr. Madhan
    • Introducing me to this project and mentoring me

  • Prof S. Krishnamoorthy + DAWN Lab, IITM
    • Guidance and Peer Group
    • Server Infrastructure for testing