20
SRT Protocol Overview IETF 107 [dispatch] Maxim Sharabayko, PhD Senior Software Developer | Haivision [email protected]

SRT Protocol Overview

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SRT Protocol Overview

SRT Protocol OverviewIETF 107 [dispatch]

Maxim Sharabayko, PhDSenior Software Developer | [email protected]

Page 2: SRT Protocol Overview

What is SRT?

• A protocol on top of UDP (unicast)• Content agnostic• Bidirectional data transfer• ARQ (ACK + NAK)• FEC (Packet Filter API v1.4.0+)• Connection bonding (v1.5.0)• Stream multiplexing• Secure (AES 128/192/256 Encryption)

Enabling low-latency videocontribution & distribution and

fast file transfer over unpredictable networks.

Page 3: SRT Protocol Overview

Why SRT?

2016

2015

2014

2013

2012

2017

2018

Demo HEVC over SRTat IBC 2013

First Shipment SRT v1.0First Product Integration

SRT v1.2

SRT v1.3

350+

Open SourceEndorsements

2019

300+

2020

0

50

100

150

200

250

300

350

400

NAB2017

IBC2017

NAB2018

IBC2018

NAB2019

IBC2019

APRIL2020

SRT Alliance Member Companies

Page 4: SRT Protocol Overview

Why IETF?

1. Implementation à official specification.2. SRT + IETF à improve SRT.3. Knowledge exchange.

Page 5: SRT Protocol Overview

SRT Operation Modes

Message Mode• Non-real-time• File/message transfer• Content agnostic• Message interchange

Live Mode• Real-time• Live Streaming• Content agnostic• Latency management

Buffer Mode• Non-real-time• A single file transfer• Content agnostic

Page 6: SRT Protocol Overview

SRT Live Streaming

• Data Transmission Mode: “Live”• A fixed end-to-end latency:• Network delay• Configurable receiver buffer delay

• Recovers source timing TSOURCE :TDELIVERY >= TSOURCE + TLATENCY• TDELIVERY – packet delivery time• TSOURCE – packet source time• TLATENCY – end-to-end latency

Pristine Quality

Protect against jitter, packet loss and

bandwidth fluctuation, so your viewers get the best viewing experience.

Low Latency

Configurable control to deliver low

latency video while overcoming network

challenges.

Page 7: SRT Protocol Overview

Live Stream Integrity & Timing

Page 8: SRT Protocol Overview

Thank you!

For more info:- SRT RFC Draft Proposal

https://datatracker.ietf.org/doc/draft-sharabayko-mops-srt/

- SRT Technical Overview https://github.com/Haivision/srt/files/2489142/SRT_Protocol_TechnicalOverview_DRAFT_2018-10-17.pdf

- SRT Open-source Libraryhttps://github.com/Haivision/srt

- SRT Alliancehttps://www.srtalliance.org/

- SRT Slack Channelhttps://srtalliance.slack.com/

Page 9: SRT Protocol Overview

SRT Packets

Types of SRT Packets

0: Data Packet• Data (content to transmit)• Filtering packet (FEC)

1: Control Packet• HANDSHAKE• KEEPALIVE• ACK• NAK (Loss Report)• SHUTDOWN• ACKACK

UDP Header

IP Header

SRT Header

SRTPacket

Content

F=0

F=1

Page 10: SRT Protocol Overview

SRT Data Packet

UDP Header

IP Header

SRT Header

SRTData

Payload

16 Bytes

8 Bytes

20 Bytes

up to1456 Bytes(1500 MTU)

Page 11: SRT Protocol Overview

Timestamp Based Packet Delivery (TSBPD)

1 2 3 4

1 2 4 5 6 7 8 9 3

Sender

Receiver

PacketDelivery

t

t

t

X

7 8 9 3 11 12 13 145 610

10

1 2 3 4 75 6

NetworkDelay (~RTT/2)

Receiver Buffer Latency

11 12 13 14

Packet lossARQ Retransmission

Page 12: SRT Protocol Overview

Too-Late Packet Drop (TL Packet Drop)

1 2 3 4

1 2 4 5 6 7 8 9

Sender

Receiver

PacketDelivery

t

t

t

X

7 8 9 3 11 12 13 145 610

10

1 2 X 4 75 6

NetworkDelay (~RTT/2)

Receiver Buffer Latency

11 12 13 14

Packet lossARQ Retransmission

X

Too late to waitfor packet 3DROPPING

Page 13: SRT Protocol Overview

Negative Acknowledgement

Two types of loss reports:• Loss-triggered NAK reports• Periodic NAK reports

NAK packet can transmit:• A single lost packet

sequence number;• A range of sequence

numbers of lost packets.

Page 14: SRT Protocol Overview

Packet Recovery Options

Bonded connections• Broadcast• Main-backup• Load balancing

FEC• Error correction

packet• Packet Filter API

allows custom implementation

ARQ• Loss-triggered NAK

reports• Periodic NAK reports

Page 15: SRT Protocol Overview

Positive Acknowledgement• Acknowledge received packet by its sequence

number

• Lost packets block further ACK

• ACK is sent every 10 ms

• Additional info: RTT, Link Capacity, …

• Full ACK is sent every 10ms

• Light ACK is sent on every 64 pkts

Light ACK

Page 16: SRT Protocol Overview

Congestion Control

Sender gets from the receiver:• NAK packet to determine losses• ACK packets (every 10 ms) to get updates on:• RTT• RTT variance• Estimated link capacity• Available receiver buffer• Receiving rate

• Congestion control can use this feedback to make decisions!

Page 17: SRT Protocol Overview

Stream Multiplexing and Bidirectional Transmission

Both peers know each other’s IP and SRT Socket ID to communicate with data and control packets in both directions.

Data Packet

Handshake Packet

Page 18: SRT Protocol Overview

Connection Establishment

Firewall Friendly

Establish quality streams from event

centers and unknown locations

without IT involvement.

HS: INDUCTION

HS: INDUCTION

(RSP)

HS: CONCLUSION

HS: CONCLUSION

DATA

Control (ACK/NAK)

t t

HS: CONCLUSION

HS: CONCLUSION

HS: WAVEHAND HS: WAVEHAND

Cookiecontest:LOST

Cookiecontest:WON

DATA

Control (ACK/NAK)

t t

X

Caller-Listener Handshake Rendezvous Handshake

HS: AGREEMENT

HS: AGREEMENT

Page 19: SRT Protocol Overview

SRT Access ControlThe Stream ID free-form value, but there is a recommended convention.

Example content:#!::u=admin,r=ietf_107_srt_overview

https://github.com/Haivision/srt/blob/master/docs/AccessControl.md

requested resource ID

HS: INDUCTION

HS: INDUCTION

(RSP)

HS: CONCLUSION

HS: CONCLUSION

t t

username Tell SRT a user-uniquepassphrase = F(username)SRT rejects or accepts the connection

Page 20: SRT Protocol Overview

Security & Encryption

Encryption & Transmission Reception & Decryption

• AES 128/192/256-bit encrypted• Payload encrypted with

cipher in AES-CTR mode• Secret/pass-phrase is not

part of the protocol (application layer)

Refer to SRT Technical Overview https://github.com/Haivision/srt/files/2489142/SRT_Protocol_TechnicalOverview_DRAFT_2018-10-17.pdf