Secure Reliable Transport

Last updated

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]

Contents

Overview

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

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
OffsetsOctet0123
OctetBit [lower-alpha 1] 012345678910111213141516171819202122232425262728293031
00FField meaning depends on the packet type
432Field meaning depends on the packet type
864Timestamp
1296Destination Socket ID
......Packet Contents
(depends on the packet type)

Data packet

SRT data packet header
OffsetsOctet0123
OctetBit [lower-alpha 1] 012345678910111213141516171819202122232425262728293031
000Packet Sequence Number
432PPOKKRMessage Number
864Timestamp
1296Destination Socket ID
......Data

The fields in the header are as follows:

Control packet

SRT control packet header
OffsetsOctet0123
OctetBit [lower-alpha 1] 012345678910111213141516171819202122232425262728293031
001Control TypeSubtype
432Type-specific Information
864Timestamp
1296Destination Socket ID
......Control Information Field (CIF)

The fields in the header are as follows:

History

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

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

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

Notes

  1. 1 2 3 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.

Related Research Articles

The Internet protocol suite, commonly known as TCP/IP, is a framework for organizing the set of communication protocols used in the Internet and similar computer networks according to functional criteria. The foundational protocols in the suite are the Transmission Control Protocol (TCP), the User Datagram Protocol (UDP), and the Internet Protocol (IP). Early versions of this networking model were known as the Department of Defense (DoD) model because the research and development were funded by the United States Department of Defense through DARPA.

The Real-time Transport Protocol (RTP) is a network protocol for delivering audio and video over IP networks. RTP is used in communication and entertainment systems that involve streaming media, such as telephony, video teleconference applications including WebRTC, television services and web-based push-to-talk features.

The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore, the entire suite is commonly referred to as TCP/IP. TCP provides reliable, ordered, and error-checked delivery of a stream of octets (bytes) between applications running on hosts communicating via an IP network. Major internet applications such as the World Wide Web, email, remote administration, and file transfer rely on TCP, which is part of the Transport layer of the TCP/IP suite. SSL/TLS often runs on top of TCP.

In computer networking, the User Datagram Protocol (UDP) is one of the core communication protocols of the Internet protocol suite used to send messages to other hosts on an Internet Protocol (IP) network. Within an IP network, UDP does not require prior communication to set up communication channels or data paths.

<span class="mw-page-title-main">Transport layer</span> Layer in the OSI and TCP/IP models providing host-to-host communication services for applications

In computer networking, the transport layer is a conceptual division of methods in the layered architecture of protocols in the network stack in the Internet protocol suite and the OSI model. The protocols of this layer provide end-to-end communication services for applications. It provides services such as connection-oriented communication, reliability, flow control, and multiplexing.

In computer networking, Layer 2 Tunneling Protocol (L2TP) is a tunneling protocol used to support virtual private networks (VPNs) or as part of the delivery of services by ISPs. It uses encryption ('hiding') only for its own control messages, and does not provide any encryption or confidentiality of content by itself. Rather, it provides a tunnel for Layer 2, and the tunnel itself may be passed over a Layer 3 encryption protocol such as IPsec.

In computer networking, the Datagram Congestion Control Protocol (DCCP) is a message-oriented transport layer protocol. DCCP implements reliable connection setup, teardown, Explicit Congestion Notification (ECN), congestion control, and feature negotiation. The IETF published DCCP as RFC 4340, a proposed standard, in March 2006. RFC 4336 provides an introduction.

This article lists communication protocols that are designed for file transfer over a telecommunications network.

Datagram Transport Layer Security (DTLS) is a communications protocol providing security to datagram-based applications by allowing them to communicate in a way designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the stream-oriented Transport Layer Security (TLS) protocol and is intended to provide similar security guarantees. The DTLS protocol datagram preserves the semantics of the underlying transport—the application does not suffer from the delays associated with stream protocols, but because it uses UDP or SCTP, the application has to deal with packet reordering, loss of datagram and data larger than the size of a datagram network packet. Because DTLS uses UDP or SCTP rather than TCP, it avoids the "TCP meltdown problem", when being used to create a VPN tunnel.

In telecommunications and computer networking, connection-oriented communication is a communication protocol where a communication session or a semi-permanent connection is established before any useful data can be transferred. The established connection ensures that data is delivered in the correct order to the upper communication layer. The alternative is called connectionless communication, such as the datagram mode communication used by Internet Protocol (IP) and User Datagram Protocol, where data may be delivered out of order, since different network packets are routed independently and may be delivered over different paths.

IP multicast is a method of sending Internet Protocol (IP) datagrams to a group of interested receivers in a single transmission. It is the IP-specific form of multicast and is used for streaming media and other network applications. It uses specially reserved multicast address blocks in IPv4 and IPv6.

UDP-based Data Transfer Protocol (UDT), is a high-performance data transfer protocol designed for transferring large volumetric datasets over high-speed wide area networks. Such settings are typically disadvantageous for the more common TCP protocol.

A network socket is a software structure within a network node of a computer network that serves as an endpoint for sending and receiving data across the network. The structure and properties of a socket are defined by an application programming interface (API) for the networking architecture. Sockets are created only during the lifetime of a process of an application running in the node.

In computing, Microsoft's Windows Vista and Windows Server 2008 introduced in 2007/2008 a new networking stack named Next Generation TCP/IP stack, to improve on the previous stack in several ways. The stack includes native implementation of IPv6, as well as a complete overhaul of IPv4. The new TCP/IP stack uses a new method to store configuration settings that enables more dynamic control and does not require a computer restart after a change in settings. The new stack, implemented as a dual-stack model, depends on a strong host-model and features an infrastructure to enable more modular components that one can dynamically insert and remove.

Micro Transport Protocol is an open User Datagram Protocol-based (UDP-based) variant of the BitTorrent peer-to-peer file sharing protocol intended to mitigate poor latency and other congestion control problems found in conventional BitTorrent over Transmission Control Protocol (TCP), while providing reliable, ordered delivery.

The Stream Control Transmission Protocol (SCTP) is a computer networking communications protocol in the transport layer of the Internet protocol suite. Originally intended for Signaling System 7 (SS7) message transport in telecommunication, the protocol provides the message-oriented feature of the User Datagram Protocol (UDP), while ensuring reliable, in-sequence transport of messages with congestion control like the Transmission Control Protocol (TCP). Unlike UDP and TCP, the protocol supports multihoming and redundant paths to increase resilience and reliability.

QUIC is a general-purpose transport layer network protocol initially designed by Jim Roskind at Google, implemented, and deployed in 2012, announced publicly in 2013 as experimentation broadened, and described at an IETF meeting. QUIC is used by more than half of all connections from the Chrome web browser to Google's servers. Microsoft Edge, Firefox and Safari support it.

NACK-Oriented Reliable Multicast (NORM) is a transport layer Internet protocol designed to provide reliable transport in multicast groups in data networks. It is formally defined by the Internet Engineering Task Force (IETF) in Request for Comments (RFC) 5740, which was published in November 2009.

<span class="mw-page-title-main">Fast and Secure Protocol</span> Terminal command scheme used to transfer data

The Fast Adaptive and Secure Protocol (FASP) is a proprietary data transfer protocol. FASP is a network-optimized network protocol created by Michelle C. Munson and Serban Simu, productized by Aspera, and now owned by IBM subsequent to its acquisition of Aspera. The associated client/server software packages are also commonly called Aspera. The technology is patented under US Patent #8085781, Bulk Data Transfer, #20090063698, Method and system for aggregate bandwidth control. and others.

Reliable Internet Stream Transport (RIST) is an open-source, open-specification transport protocol designed for reliable transmission of video over lossy networks with low latency and high quality. It is currently under development in the Video Services Forum's "RIST Activity Group."

References

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