Säker pålitlig transport
Internetprotokollsvit |
---|
Applikationslager |
Transportlager |
Internetlager |
Länklager |
Secure Reliable Transport ( SRT ) är ett videotransportprotokoll med öppen källkod som använder UDP- transportprotokollet.
Översikt
SRT ger anslutning och kontroll, tillförlitlig överföring liknande TCP ; men det gör det i applikationslagret , med UDP- protokoll som ett underliggande transportlager. Den stöder paketåterställning samtidigt som den bibehåller låg latens (standard: 120 ms). SRT stöder även kryptering med AES .
Protokollet härleddes från UDT-projektet , som designades för snabb filöverföring. Det gav tillförlitlighetsmekanismen genom att använda liknande metoder för anslutning, sekvensnummer, bekräftelser och återsändning av förlorade paket. Den använder selektiv och omedelbar (NAK-baserad) återsändning.
SRT lade till flera funktioner utöver det för att stödja livestreamingläge:
- Kontrollerad latens, med källtidsöverföring (tidsstämpelbaserad paketleverans)
- Avslappnad avsändarhastighetskontroll
- Villkorligt "för sent" paketavbrott (förhindrar head-of-line blockering orsakad av ett förlorat paket som inte återställdes i tid)
- Ivrig paketåteröverföring (periodisk NAK-rapport)
Pakethuvud
SRT-paket skapas vid applikationslagret och lämnas till transportlagret för leverans. Varje enhet av SRT-media eller styrdata som skapas av en applikation börjar med SRT-pakethuvudet.
Offsets | Oktett | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oktett | Bit | 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 | Fältets betydelse beror på pakettypen | ||||||||||||||||||||||||||||||
4 | 32 | Fältets betydelse beror på pakettypen | |||||||||||||||||||||||||||||||
8 | 64 | Tidsstämpel | |||||||||||||||||||||||||||||||
12 | 96 | Destination Socket ID | |||||||||||||||||||||||||||||||
... | ... |
Paketinnehåll (beror på pakettyp) |
Datapaket
Offsets | Oktett | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oktett | Bit | 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 | Paketsekvensnummer | ||||||||||||||||||||||||||||||
4 | 32 | PP | O | KK | R | Meddelandenummer | |||||||||||||||||||||||||||
8 | 64 | Tidsstämpel | |||||||||||||||||||||||||||||||
12 | 96 | Destination Socket ID | |||||||||||||||||||||||||||||||
... | ... | Data |
Fälten i rubriken är följande:
- Paketsekvensnummer (31 bitar)
- PP (2 bitar): Paketpositionsflagga
- O (1 bit): Beställningsflagga
- KK (2 bitar): Nyckelbaserad krypteringsflagga
- R (1 bit): Återsänd paketflagga
- Meddelandenummer (26 bitar)
- Data (variabel längd)
Kontrollpaket
Offsets | Oktett | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oktett | Bit | 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 | Kontrolltyp | Undertyp | |||||||||||||||||||||||||||||
4 | 32 | Typspecifik information | |||||||||||||||||||||||||||||||
8 | 64 | Tidsstämpel | |||||||||||||||||||||||||||||||
12 | 96 | Destination Socket ID | |||||||||||||||||||||||||||||||
... | ... | Kontrollinformationsfält (CIF) |
Fälten i rubriken är följande:
- Kontrolltyp (15 bitar): Kontrollpakettyp
- Undertyp (16 bitar)
- Typspecifik information (32 bitar)
- Kontrollinformationsfält (variabel längd)
Historia
Secure Reliable Transport är ett videotransportprotokoll med öppen källkod som ursprungligen utvecklats av Haivision. Enligt SRT Alliance , en organisation som marknadsför tekniken, optimerar den streamingprestanda. Detta hjälper till att minimera effekterna av jitter och bandbreddsförändringar, medan felkorrigeringsmekanismer hjälper till att minimera paketförluster. SRT stöder end-to-end-kryptering med AES. När SRT utför omsändningar försöker SRT endast återsända paket under en begränsad tid baserat på latensen som konfigurerats av applikationen.
Enligt Marc Cymontkowski, arkitekten för SRT, används den, förutom att skicka MPEG-transportströmmar över det offentliga internet, även för IoT-anslutning, metadatautbyte, som ett kommunikationsprotokoll, såväl som för okomprimerad dataleverans.
Referensimplementeringen av protokollet publicerades ursprungligen under Lesser General Public License version 2.1, men återlicensierades under Mozilla Public License den 22 mars 2018.
SRT stöds i de fria multimediaramverken GStreamer , FFmpeg , OBS Studio och i VLC fri programvara mediaspelare.
Det UDP-baserade Data Transfer Protocol (UDT)-projektet har varit en bas för SRT-projektet. SRT C API är till stor del baserad i design på UDT API
SRT designades för livevideoöverföring med låg latens.
Haivision släppte SRT-protokollet och referensimplementeringen som öppen källkod vid 2017 NAB Show .
I mars 2020 lämnades ett individuellt Internet-utkast, draft-sharabayko-mops-srt, in för behandling till arbetsgruppen för Media OPerationS (MOPS) i Internet Engineering Task Force .
SRT Alliance
SRT Alliance är en organisation vars medlemmar utvecklar, använder och marknadsför Secure Reliable Transport- protokollet och programvara baserad på det. De grundande medlemmarna av alliansen är Haivision och Wowza Streaming Engine .
Genomföranden
Det finns för närvarande en tillgänglig implementering, som är SRT-biblioteket med öppen källkod.
C language API är huvudsakligen baserat på det tidigare UDT API, med ytterligare ändringar när nya funktioner läggs till. API:t är mycket likt det för TCP.
SRT erbjuder faktiskt tre arbetslägen, varav de två första härleddes från UDT:
- Filströmningsläge: som TCP
- Filmeddelandeläge: liknande SCTP -protokollet – skickar datablock med tydligt definierade gränser
- Live-läge: data ska skickas i små paket (vanligtvis upp till 1316 byte, om den överförda strömmen är MPEG-TS ) med redan lämpliga tidsintervall mellan dem. Samma enstaka paket med samma tidsintervall mellan dem levereras sedan på mottagarsidan.
SRT-biblioteket erbjuder också dessa funktioner:
- Kryptering med en fördelad nyckel. Krypteringsstöd tillhandahölls ursprungligen av OpenSSL, nu också alternativt kan Nettle (GNU TLS) eller mbedTLS användas.
- SRT Access Control (aka "StreamID") kan användas av applikationer för att identifiera resurser och använda användarlösenordsåtkomstmetoden samtidigt som samma tjänstportnummer används för flera ändamål.
- Den valfria mekanismen för vidarebefordran av felkorrigering .
Ytterligare och mer detaljerad dokumentation finns i dokumentationen för källkod .
Se även
- Pålitlig Internet Stream Transport , avsedd att fylla en lucka på marknaden för professionella protokoll i motsats till "prosumer" SRT.