Minule jsme naznačili, že tradiční struktura protokolů TCP/IP zrovna není ideální pro přenos streaming media. Dnes se podíváme, jak to vypadá s transportními protokoly vhodnými pro streaming media.
TCP (
Transmission Control Protocol),
klasický spolehlivý transportní protokol architektury TCP/IP
zajišťující doručení paketů prostřednictvím mechanizmů potvrzování (
acknowledgment) a opětovného vysílání (
retransmission),
není vhodný pro přenosy v reálném čase. Neposkytuje totiž časové údaje
o odeslání jednotlivých paketů a nepodporuje skupinové vysílání, které
se pro aplikace v reálném čase velmi často používá.
Ale nejnevhodnější vlastností TCP v tomto případě je jeho zabudované
řízení chyb: opětovný přenos ztraceného nebo chybného segmentu. Při
přenosu v reálném čase je potřeba naopak ztracené nebo poškozené pakety
ignorovat: jejich opětovný přenos je zbytečný, protože paket už je
nepoužitelný. Vzhledem k dnešní nadbytečnosti audio a video signálů (i
s kompresí) lze jednoduše ztracené pakety ignorovat.
UDP (
User Datagram Protocol)
jako jednodušší transportní protokol nezajišťující spolehlivé doručení
paketů je vhodnější transportní mechanizmus pro provoz v reálném čase.
Ale protože se mu nedostává některých vlastností potřebných pro
specifika přenosu v reálném čase, je potřeba ještě další doplňující
protokol nad UDP, RTP. Protokolová architektura pro aplikace v reálném
čase s RTP je naznačena na obrázku.
Obrázek: Protokolová architektura s RTPReal-time Transport Protocol: RTP
Přenosový protokol v reálném čase (
RTP, Real-time Transport Protocol,
RFC 3550) je protokol zajišťující podporu pro koncové multimediální
přenosy v reálném čase. Nezaručuje doručení dat ani správné pořadí
jednotlivých paketů (to záleží na momentálních možnostech sítě), ale
definuje jejich pořadová čísla, podle kterých mohou multimediální
aplikace rozpoznat chybějící pakety. Zakládá se na synchronizaci
časového přenosu a zjištění ztráty nebo nesprávného pořadí dat. RTP
nejčastěji používá protokol UDP (čísla portů 5004, 5005, 6970), ale
může využít i jiné protokoly. Bezpečnou variantu RTP představuje
protokol SRTP (
Secure Real-time Transport Protocol), specifikovaný v RFC 3711.
RTP protokol byl navržen jak pro individuální tak skupinové přenosy,
pro jednosměrný i obousměrný přenos. Je tedy použitelný pro aplikace
videokonference i pro IP telefonii, používají ho protokoly SIP i H.323.
K multimediálnímu obsahu RTP připojuje záhlaví, které obsahuje pořadové číslo paketu (
sequence number) pro zjištění ztrát nebo duplicity paketů a označení typu obsahu (
payload identification),
tj. informaci o formátu multimediálního souboru, který tvoří obsah
paketu (např. JPEG, G.722, H.261). Kódování obsahu se může změnit,
pokud se má přizpůsobit rozdílům v šířce pásma. Dále RTP pakety
obsahují indikaci začátku a konce rámce (
frame indication), identifikaci zdroje (
source identification) a synchronizaci (
intramedia synchronization)
pro detekci různého kolísání zpoždění v rámci daného toku a pro
potřebnou kompenzaci tohoto kolísání při vlastním přehrávání obrazů a
zvuků.
Formát RTP datagramu je jednoduchý a obecný, takže vyhovuje všem
aplikacím v reálném čase (existuje pouze jeden typ zprávy RTP). Mezi
typy dat RTP zprávy jsou G.721 audio, GSM audio, G.722 audio, MPEG
audio, G.728 audio, H.261, MPEG-1 a MPEG-2 video.
Komprese RTP
Protokol RTP může úspěšně využít komprese při přenosu videa, jednak v
datové části zprávy (RFC 2435 řeší formát dat RTP pro komprimované
video v JPEG), a jednak v záhlaví (RFC 2508 specifikuje kompresi
záhlaví IP/UDP/RTP pro pomalé spoje).
Komprimovaný RTP (
CRTP, Compressed RTP)
je určen pro omezení objemu záhlaví datových jednotek IP, UDP a RTP.
Protokol je velmi účinný zejména na spolehlivých a rychlých
dvoubodových spojích. V méně spolehlivých sítích s dlouhými zpožděními,
ztrátami paketů a doručením paketů mimo pořadí ale CRTP nepracuje
ideálně pro aplikace IP telefonie. Pro tento případ se používá jeho
vylepšení ve formě ECRPT (
Enhanced CRPT; RFC 3545).
Real-time Transport Control Protocol: RTCP
Jak bylo řešeno výše, RTP neposkytuje žádný mechanizmus na zajištění
doručení, včasného doručení paketů, ani pro doručení paketů ve správném
pořadí. Doručování paketů je monitorováno pomocí podpůrného řídicího
protokolu RTCP. Tyto dva protokoly jsou často brány dohromady a
označovány jako RTP/RTCP.
Řídicí protokol pro přenos v reálném čase (
RTCP, Real-time Transport Control Protocol)
spolupracuje s protokolem RTP. Používá periodické vysílání paketů od
každého účastníka relace RTP všem ostatním účastníkům za účelem řízení
výkonnosti a pro diagnostické účely. RTCP pomáhá RTP monitorovat
doručení dat v rozsáhlých sítích se skupinovým vysíláním. Monitorování
pomáhá příjemci detekovat ztrátu paketů a provést kompenzaci kolísání
zpoždění v síti. RTCP používá UDP port o jedničku vyšší než používá
RTP.
RTCP vytváří zpětnou vazbu mezi účastníky relace protokolu RTP, ve
které periodicky probíhá výměna RTCP paketů. RTCP pakety obsahují
informace, podle kterých může strana vysílající multimediální proud
dynamicky měnit např. rychlost přenosu na základě požadavků strany
přijímající. Protokol RTCP tak poskytuje služby řízení toku a kontroly
zahlcení sítě.
Zdroje
Další informace o protokolech pro
streaming media lze nalézt např. v následujících nových publikacích:
Širokopásmový Internet aneb Přístupové a domácí sítě, Computer Press, ISBN 80-251-0139-8, 2004
TCP/IP v kostce, Kopp, ISBN 80-7232-236-2, 2004
Příště se budeme věnovat protokolu SCTP.18. 10. 2004
Autor: Ing. Rita Pužmanová, CSc., MBA