Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Overview  





2 Packet header  



2.1  Data packet  





2.2  Control packet  







3 History  





4 SRT Alliance  





5 Implementations  





6 See also  





7 Notes  





8 References  





9 External links  














Secure Reliable Transport






Čeština
Deutsch

Latviešu
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Secure Reliable Transport (SRT) is an open source video transport protocol that utilises the UDP transport protocol. The SRT Protocol specification is available as an Internet Draft from the IETF.[1]

Overview[edit]

SRT provides connection and control, reliable transmission similar to TCP; however, it does so at the application layer, using UDP protocol as an underlying transport layer. It supports packet recovery while maintaining low latency (default: 120 ms). SRT also supports encryption using AES.

The protocol was derived from the UDT project,[2] which was designed for fast file transmission. It provided the reliability mechanism by utilising similar methods for connection, sequence numbers, acknowledgements and re-transmission of lost packets. It utilises selective and immediate (NAK-based) re-transmission.

SRT added several features on top of that in order to support live streaming mode:

  1. Controlled latency, with source time transmission (timestamp-based packet delivery)
  2. Relaxed sender speed control
  3. Conditional "too late" packet dropping (prevents head-of-line blocking caused by a lost packet that wasn't recovered on time)
  4. Eager packet re-transmission (periodic NAK-report)

Packet header[edit]

SRT packets are created at the application layer and handed to the transport layer for delivery. Each unit of SRT media or control data created by an application begins with the SRT packet header.[1]

SRT packet header
Offsets Octet 0 1 2 3
Octet Bit[a] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 F Field meaning depends on the packet type
4 32 Field meaning depends on the packet type
8 64 Timestamp
12 96 Destination Socket ID
... ... Packet Contents
(depends on the packet type)

Data packet[edit]

SRT data packet header
Offsets Octet 0 1 2 3
Octet Bit[a] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 0 Packet Sequence Number
4 32 PP O KK R Message Number
8 64 Timestamp
12 96 Destination Socket ID
... ... Data

The fields in the header are as follows:

Control packet[edit]

SRT control packet header
Offsets Octet 0 1 2 3
Octet Bit[a] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 1 Control Type Subtype
4 32 Type-specific Information
8 64 Timestamp
12 96 Destination Socket ID
... ... Control Information Field (CIF)

The fields in the header are as follows:

History[edit]

Secure Reliable Transport is an open source video transport protocol developed originally by Haivision. According to SRT Alliance, an organisation that promotes the technology, it optimises streaming performance. This helps minimise effects of jitter and bandwidth changes, while error-correction mechanisms help minimise packet loss. SRT supports end-to-end encryption with AES.[3] When performing retransmissions, SRT only attempts to retransmit packets for a limited amount of time based on the latency as configured by the application.[4]

According to Marc Cymontkowski, the architect of SRT, in addition to sending MPEG transport streams over the public internet, it is also being used for IoT connectivity, metadata exchange, as a communication protocol, as well as for uncompressed data delivery.[5]

The reference implementation of the protocol was originally published under the Lesser General Public License version 2.1,[6] but was relicensed under the Mozilla Public License on 22 March 2018.[7]

SRT is supported in the free software multimedia frameworks GStreamer, FFmpeg, OBS Studio and in VLC free software media player.[4][8]

The UDP-based Data Transfer Protocol (UDT) project has been a base for the SRT project.[9] The SRT C API is largely based in design on the UDT API[10]

SRT was designed for low-latency live video transmission.[9][3]

Haivision released the SRT protocol and reference implementation as open source at the 2017 NAB Show.[9]

In March 2020, an individual Internet-Draft, draft-sharabayko-mops-srt,[1] was submitted for consideration to the Media OPerationS (MOPS) working group of the Internet Engineering Task Force.

SRT Alliance[edit]

SRT Alliance is an organisation whose members develop, use and promote the Secure Reliable Transport protocol and software based on it. The founding members of the alliance are Haivision and Wowza Streaming Engine.[11]

Implementations[edit]

There's currently one available implementation, which is the open-source SRT library.

The C language API is mainly based on the previous UDT API, with further changes as new features are added. The API is very similar to the one of TCP.

SRT offers actually three working modes, of which the first two were derived from UDT:

The SRT library also offers these features:

  1. Encryption using a pre-shared key. Encryption support was originally provided by OpenSSL, now also alternatively, Nettle (GNU TLS) or mbedTLS can be used.
  2. SRT Access Control (aka "StreamID") can be used by applications to identify resources and use user-password access method while using the same service port number for multiple purposes.[12]
  3. The optional Forward Error Correction mechanism.

Further and more detailed documentation can be found in the Source code documentation.

See also[edit]

Notes[edit]

  1. ^ a b c Bits are ordered most significant to least significant; bit offset 0 is the most significant bit of the first octet. Octets are transmitted in network order. Bit transmission order is medium dependent.

References[edit]

  1. ^ a b c Sharabayko, M.P; Sharabayko, M.A (2021). The SRT Protocol. IETF. I-D draft-sharabayko-srt-01. Retrieved 20 October 2023.
  • ^ "UDT: Breaking the Data Transfer Bottleneck". udt.sourceforge.io. Retrieved 2020-08-27.
  • ^ a b Haivision (26 September 2021). "Secure, Reliable, Transport". GitHub.
  • ^ a b Olivier Crête (16 February 2018). "SRT in GStreamer".
  • ^ "It glues everything together: an interview with Marc Cymontkowski, evangelist of SRT". Medialooks Blog. 5 November 2019.
  • ^ Michael Larabel (24 April 2017). "SRT Video Transport Protocol Open-Sourced". Phoronix.
  • ^ Roman rndi (22 March 2018). "Change License to MPLv2.0 · Haivision/srt@a75d4c4". GitHub.
  • ^ Olivier Crête (June 2018). "Secure Video Comes of Age". Linux Format magazine. No. 237.
  • ^ a b c Marc Cymontkowski. "Why We Created SRT and the Difference Between SRT and UDT".
  • ^ "Haivision srt API docs"
  • ^ "Microsoft Joins SRT Open Source Streaming Project". The Broadcast Bridge. 17 September 2018.
  • ^ "SRT Access Control Guidelines". GitHub. 7 November 2019.
  • ^ "5 Reasons You Should Pick RIST over SRT". RIST Forum. 27 May 2020. Retrieved 2021-12-04.
  • External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=Secure_Reliable_Transport&oldid=1215615851"

    Categories: 
    Application layer protocols
    Streaming
    Video software
    Hidden categories: 
    Articles with short description
    Short description matches Wikidata
    Articles needing additional references from March 2019
    All articles needing additional references
    Wikipedia introduction cleanup from August 2020
    All pages needing cleanup
    Articles covered by WikiProject Wikify from August 2020
    All articles covered by WikiProject Wikify
    Articles with multiple maintenance issues
    Use British English from December 2020
     



    This page was last edited on 26 March 2024, at 04:40 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki