UniboStreaming
Project
Un applicazione Client/Server per la gestione di streaming audio/video multicast e on-demand
Progetto per il corso di Reti di Calcolatori L-S realizzato da
Loris Cancellieri matr. 0000171431
Agenda
In questa presentazione parleremo di: Streaming RTSP RTP / RTCP Unibo Streaming System
Applicazione Protocolli Politiche di Load Balancing e Disaster Recovery
Demo dell’applicazione
Introduzione allo streaming
Cos’è lo streaming? metodo di trasferimento dei file che permette di riprodurre il
file mentre lo si sta scaricando Vantaggi?:
fruizione istantanea dei contenuti risparmio spazio su disco
Applicazioni?: Audio e Video On-Demand VideoConferenze Web TV Internet Radio
Distribuzione dei contenuti Nell’Unibo Streaming Server si usa sia la distribuzione multicast dei
contenuti che quella unicast.
Server
Switch
Router
Router Router
Switch
Switch
Switch
33 clients 33 clients 33 clients
99 copie
33 copie
Router
Server
Switch
Router
Router Router
Switch
Switch
Switch
33 clients 33 clients 33 clients
1 copia
1 copia
Router
MULTICAST
UNICAST
SDPv=0
o=StreamingServers=TrasmissioneFile
i=Descrizione della sezioneu=http://[email protected]
p=+39-000-0000000c=IN IP4 192.168.0.3
b=AS:2048t=0 0
a=charset:ISO-8859-1m=audio 2000 RTP/AVP 14a=rtpmap:14 MPA/44100
a=control:rtsp://192.168.0.3/audioa=mimetype: audio/MPA
a=range:npt=0-264
Protocolli per lo streaming
RTSP
RTP
RTCP
Informazione
Controllo Stream
Audio
Video
Monitoraggio
Monitoraggio
Protocolli di Streaming
RTCP
Dati
Controllo
Network
Transport
Application UDP perchè:• Minore Overhead• Reazione più veloce alle congestioni della rete• Traffico nella rete più gestibile• Traffico realtime senza ritrasmissione
Simile ad HTTP: Protocollo testuale Messaggi con struttura predeterminataDifferisce da HTTP perchè Contiene informazioni di stato (CSeq) Bidirezionale (Cioè sia il client che il server possono lanciare una richiesta RTSP)
Comandi Obbligatori Describe Setup Play Options Teardown
Per analizzarne il funzionamento faccio riferimento al modo in cui esso lavora all’interno della mia applicazione
Real Time Streaming Protocol
Comandi Facoltativi: Pause (auspicabile) Record Announce Set Parameter Get Parameter (dal server) Redirect (dal server)
Real Time Streaming Protocol
Describe
OK_Describe + SDP_Length + SDPInfo
Client
Messaggi C -> S
Messaggi S -> C
Info Addizionali
SERVER
MAIN
Messaggi RTSP
DESCRIBE rtsp://192.168.0.3/L4.mp2 RTSP/1.0CSeq: 631Accept: application/sdpUser-Agent: JMF RTSP Player Version 2.1.1e
RTSP/1.0 200 OKCSeq: 631
Content-type: application/sdpContent-Length: 394
v=0o=StreamingServer (creator)s=TrasmissioneFile (name)
i=Sessione di trasmissione del file richiestou=http://casafrassinago3.homeip.net
[email protected] (Loris Cancellieri)p=+39-000-0000000c=IN IP4 192.168.0.3
b=AS:2048t=0 0
a=charset:ISO-8859-1m=audio 2000 RTP/AVP 14
a=rtpmap:14 MPA/44100a=control:rtsp://192.168.0.3/audio
a=mimetype: audio/MPAa=range:npt=0-264
Real Time Streaming Protocol
Describe
OK_Describe + SDP_Length + SDPInfo
Setup + client_ports
Client
Messaggi C -> S
Messaggi S -> C
Info Addizionali
OK_Setup + Server_ports + Session_ID
SERVER
MAIN
Messaggi RTSP
SETUP rtsp://192.168.0.3/audio RTSP/1.0CSeq: 632Transport: RTP/AVP;unicast;client_port=40052-40053User-Agent: JMF RTSP Player Version 2.1.1e
RTSP/1.0 200 OKCSeq: 632
Session: 151251593Transport: RTP/AVP; unicast; client_port=40052-40053; server_port=2000-2001;
Bandwidth:128000
Real Time Streaming Protocol
Describe
OK_Describe + SDP_Length + SDPInfo
Setup + client_ports
Client
Messaggi C -> S
Messaggi S -> C
Info Addizionali
OK_Setup + Server_ports + Session_ID
SERVER
MAIN
Messaggi RTSP
PLAY rtsp://192.168.0.3/L4.mp2 RTSP/1.0CSeq: 633Range: npt=0.0-Session: 151251593User-Agent: JMF RTSP Player Version 2.1.1e
RTSP/1.0 200 OKCSeq: 633
Session: 151251593
Play + Session_ID + Range
OK to Play + SessionID
Dati RTP
RTCP
Real Time Streaming Protocol
Describe
OK_Describe + SDP_Length + SDPInfo
Setup + client_ports
Client
Messaggi C -> S
Messaggi S -> C
Info Addizionali
OK_Setup + Server_ports + Session_ID
SERVER
MAIN
Messaggi RTSP
PAUSE rtsp://192.168.0.3/L4.mp2 RTSP/1.0CSeq: 634Session: 151251593User-Agent: JMF RTSP Player Version 2.1.1e
RTSP/1.0 200 OKCSeq: 634
Session: 151251593
Play + Session_ID + Range
OK to Play + SessionID
Dati RTP
RTCPPause + Session_ID
OK_Pause + Session_ID
Real Time Streaming Protocol
Describe
OK_Describe + SDP_Length + SDPInfo
Setup + client_ports
Client
Messaggi C -> S
Messaggi S -> C
Info Addizionali
OK_Setup + Server_ports + Session_ID
SERVER
MAIN
Messaggi RTSP
TEARDOWN rtsp://192.168.0.3/L4.mp2 RTSP/1.0CSeq: 638Session: 151251593User-Agent: JMF RTSP Player Version 2.1.1e
RTSP/1.0 200 OKCSeq: 638
Session: 151251593
Play + Session_ID + Range
OK to Play + SessionID
Dati RTP
RTCPTearDown + Session_ID
OK_TearDown + Session_ID
Real Time Streaming Protocol(descrizione come Automa a Stati Finiti)
Session Description Protocol Protocollo usato per la descrizione di una sessione multimediale
a scopo di annuncio (SAP), invito (SIP) o per altre forme di inizio sessione (RTSP)
Non incorpora un protocollo di trasporto Non supporta la negoziazione dei contenuti e/o della codifica dei
media La descrizione SDP consiste di linee di testo <tipo> = valore In una descrizione in formato SDP si possono individuare tre
parti principali:
Descrizione della sessione (una e una sola)
Informazioni temporali (una o più)
Descrizione del media file (una o più)
v= (versione del protocollo)o= (creatore del file e identificatore di sessione)s= (nome della sessione)i=* (informazioni sulla sessione)u=* (descrizione del URI )e=* (indirizzo e-mail)p=* (numero di telefono)c=* (informazioni sulla connessione)b=* (informazioni sulla banda)t= (tempo in cui la sessione è attiva)
r=* (ripetizioni temporali: settimanali, ecc.)z=* (cambio di fuso orario)k=* (chiave di codifica)a=* (zero o più linee di attributi)
m= (formato multimediale e indirizzo di trasporto)i=* (titolo del media)c=* (informazioni di connessione, opzionali se incluse a livello di sessione)b=* (informazioni sulla banda)k=* (chiave di codifica)a=* (zero o più linee di attributi)
Real-time Transport Protocol Presentato per la prima volta nel 1996 (RFC1889) è stato poi revisionato
nel 2003 (RFC 3550) Trasmissione dati aventi riferimenti temporali Indipendente dai protocolli sottostanti (tipicamente viaggia su UDP) No resource reservation Sicurezza: supporto per la cifratura con algoritmi a blocchi Separazione tra dati e controllo (RTP & RTCP) Sessione formata da due indirizzi di trasporto uno per RTP e uno per
RTCP. Es: 192.168.0.3:2600 RTP e 192.168.0.3:2601 RTCP Audio e Video viaggiano separati in due sessioni RTP distinte e la
sincronizzazione avviene tramite una o più Syncronization Source (SSRC) su RTCP
Payloadtype
Sequence Number
TimeStampSynchronizationSource Identifier
HeaderExtensions
Semplificazione - RTP Header
7 bits128 tipi differenti
di codifica
16 bitsusato per scoprireeventuali perdite
di pacchetti
32 bitsistante di samplingdel primo byte nel
payload del pacchetto
32 bitsID della sorgente
dello streamVedi
Pacchetto
Real-time Control Transport Protocol Protocollo usato per il feedback e il controllo della sessione RTP Pacchetti RTCP vengono inviati periodicamente da tutti i partecipanti alla
sessione, sia sender che receiver Bisogna trovare il giusto compromesso fra pacchetti RTP e pacchetti RTCP per
problemi di occupazione di banda. Il rapporto RTCP / RTP non dovrebbe essere superiore al 5%
I tipi principali di pacchetti RTCP sono: Sender Report (SR)
associazione tra timestamp e tempo reale Bitrate
Receiver Report (RR) Packet Loss Rate Jitter Round-trip delay
Source Description (SDES) Canonical Name (CNAME) (Es: [email protected]): usato per l’associazione tra
sessioni audio e video della stessa sorgente Nome, e-mail, location
Terminazione (BYE) Specifici dell’applicazione (APP)
Politiche di Load-Balancing
Per limitare il carico su un singolo nodo di streaming, è possibile limitare il numero massimo di client serviti contemporaneamente.
Quando questo limite viene raggiunto, il server risponde ad altre richieste dei client mandando loro un messaggio di REDIRECT verso un’altra location
Describertsp://192.168.0.3/L4.mp2
CSeq: 230
RTSP/1.0 301 MovedCSeq: 230
Location: rtsp://192.168.0.1/L4.mp2
Describertsp://192.168.0.1/L4.mp2
CSeq: 231
Politiche di Fault Tolerance(funzionamento del sistema a regime)
Soluzione con Control Server e Slave Server (copia fredda)
ping
Reply_ping
STAND-BYF
ile_Req
ues
t med
ialis
t xm
l
RTSP
RTP / RTCP
Politiche di Fault Tolerance(crash del sistema)
ping
Reply_ping
STAND-BYF
ile_Req
ues
t med
ialis
t xm
l
RTSP
RTP / RTCP
Politiche di Fault Tolerance(reazione al crash)
Initializing
REDIRECT rtsp://192.168.0.3/file.ext RTSP/1.0CSeq: 1
Location: rtsp://192.168.0.1
START_SLAVE
CRASHED
Politiche di Fault Tolerance(nuova situazione di funzionamento)
ACTIVE
CRASHED
File_R
equ
est
med
ialis
t xm
l RTSP
RTP / RTCP
Demo dell’applicazione
(c) 2005 Loris Cancellieri
Top Related