Professional Documents
Culture Documents
Audio: richiede un bit rate decisamente pi basso del video. L'audio digitale si
ottiene tramite due operazioni: campionamento e quantizzazzione. Il
campionamento consiste nel campionare il segnale (cio segnarsi quanto vale il
segnale) a intervalli regolari. Ad ogni campione prelevato poi vengono
assegnati uno o pi valori, questo il procedimento di quantizzazione.
Aumentando la frequenza di campionamenti e il numero di valori dati a ciascun
campione con la quantizzazione si ottiene un audio pi fedele all'originale, si ha
pi qualit. Questa tecnica di encoding prende il nome di Pulse code
modulation (PCM). In internet per non si usa questa tecnica di encoding, ma
vengono usate tecniche di compressione per ridurre il bit rate. Una tecnica
famosa di compressione usata per i CD e per la musica su Internet l'MP3.
L'audio, in una conversazione, pi importante del video perch le persone
sono molto pi sensibili ai disturbi e ai ritardi dell'audio piuttosto che a quelli
del video.
Convertional voice/video-over-ip
Questo tipo di applicazioni riguardano ad esempio le applicazioni che
permettono di fare videoconferenze. Hanno due caratteristiche principali:
sensibilit ai ritardi (se in una videoconferenza ogni persona sente l'altra dopo
dieci secondi dopo un po' si stufano entrambe e il servizio diventa pessimo), ma
sono tolleranti alle perdite (anche se ogni tanto viene persa un po' di
informazione video o c' qualche disturbo lieve ogni tanto nell'audio le persone
si capiscono lo stesso).
I sistemi di streaming video utilizzati per vedere questo tipo di video sono tre:
UDP streaming, HTTP streaming e Adaptive HTTP streaming. Questi sistemi
sfruttano il client buffering: quando il video arriva al client non si comincia
subito la riproduzione, ma si immagazzinano alcuni secondi di video in un
buffer (cio una zona di memoria) dell'applicazione. Dopo aver memorizzato un
po' di secondi di video si comincia la riproduzione del video mentre si
continuano a scaricare le parti seguenti dal server. Il client buffering d due
vantaggi: assorbe i ritardi tra client e server (se un pezzo di video in ritardo,
ma arriva comunque prima che il buffer dove contenuto il video memorizzato
ma ancora non riprodotto si svuoti, allora questo ritardo non sar notato), se il
throughput fornito dalla rete dovesse diventare inferiore al bit rate del video,
l'utente pu comunque continuare a vedere il video finch il buffer non si
svuota. Nel caso dell'UDP streaming il server trasmette il video con un rate che
combacia con il bit rate del video. Se per esempio il video ha un bit rate di
2Mbps e ogni pacchetto UDP porta 8000 bit di video, allora il server invier un
pacchetto UDP ogni 8000bit/2Mbps = 4msec. Nel caso dell'UDP streaming, vi
un'ulteriore connessione aperta in parallelo a quella dello streaming video tra
client e server. Questa connessione serve affinch il client possa informare il
server sui cambiamenti di stato della sessione (pausa, continua, ecc..). una
connessione di controllo. Purtroppo lo streaming UDP ha degli svantaggi, uno
streaming a rate costante, mentre la banda tra client e server pu variare in
modo imprevedibile. Questo pu dare problemi per uno streaming continuo e
pu capitare che ci sia del freezing. Inoltre molti firewall bloccano il traffico
UDP.
Nel caso dell'HTTP streaming il video si trova memorizzato in un server HTTP
come un normalissimo file con uno specifico URL. Quando l'utente vuole
vedere il video si apre una connessione TCP tra client e server e il client manda
una HTTP GET request per quell'url. I dati del video vengono memorizzati in
un buffer dell'applicazione e quando questi dati superano una soglia
predeterminata comincia lo streaming del video. Il client pu per cercare di
scaricare il file ad un rate pi alto del consumption rate con un'operazione di
prefetching, ovvero di precattura di frames che sarebbero da consumare in
futuro. Questi frames vengono ovviamente memorizzati nel buffer
dell'applicazione sul client. Quando i dati vengono mandati dal server sono
immagazzinati in un TCP send buffer, prima di essere trasmessi in Internet.
Dopodich arrivano al TCP receive buffer e poi mandati al buffer
dell'applicazione del client. Se l'utente preme pausa, c' una reazione a catena
per cui tutti i buffer si riempiono e il server non pu pi mandare dati. Si stoppa
la trasmissione finch l'utente non preme il tasto per continuare a guardare il
video.
Se l'utente decide di passare ad un punto successivo del video, il client manda
una HTTP GET request con un header particolare, il byte range header che
serve per far capire al server quale range di byte mandare per far arrivare le
informazioni che interessano all'utente. Quando l'utente salta a una parte
successiva tutti i byte che sono stati immagazzinati nel client application buffer
potrebbero non servire pi e questo determina uno spreco di banda e di tempo.
Per questo motivo in genere i buffer delle client application non sono molto
grandi.
Il Dynamic Adaptive Streaming HTTP (DASH) un sistema in cui si hanno
diverse versioni del video, realizzate con encoding e bit rate diversi e ciascuna
con una qualit particolare. In questo modo il client, a seconda della banda
disponibile, pu scegliere se guardare una versione con una qualit pi alta o
una con una qualit pi bassa. Ogni versione del video immagazzinata nel
server HTTP, ciascuna con un diverso url. Il server contiene anche un manifest
file che indica le varie versioni del video disponibili con i rispettivi bit rate. Il
DASH permette anche di passare da una qualit maggiore a una inferiore
mentre si sta vedendo il video nel caso la larghezza di banda si riducesse. Oltre
a diverse versioni del video nel server sono contenute anche diverse versioni
dell'audio, anch'esse a una qualit diversa l'una dall'altra.
Il metodo pi efficace per distribuire i video con lo streaming sarebbe quello di
costruire un enorme data center, caricare in esso i video e da esso streammarli al
mondo. Il fatto per di avere un unico data center centralizzato comporta degli
aspetti negativi: se una persona lontana dal data center i dati arriveranno con
un ritardo maggiore, i byte dei video pi popolari saranno mandati sempre sugli
stessi link, un unico data center costituisce un unico punto di possibile
fallimento, se qualcosa va storto nel data center non si possono pi distribuire i
video. Per questo esistono delle CDN (Content Distribution Networks) che
gestiscono server per diffondere i video in pi parti del mondo. Queste CDN
possono essere private o appartenenti a terze parti. Le CDN adottano due
filosofie riguardo il piazzamento dei server: Enter deep (i server vengono messi
negli accessi ISP), il cui scopo quello di avvicinare il pi possibile gli utenti
all'insieme di server da cui ricevono i dati per diminuire i ritardi e Bring Home
(si piazzano gruppi di server in pochi luoghi chiave e li si connettono tra loro
con connessioni ad alta velocit). Le CDN, una volta posizionati i gruppi di
server li riempie di video. Alcuni video per non sono mandati a tutti i server,
per esempio quelli non popolari. Se un utente richiede un video a un server a
cui la CDN non l'ha dato, il server inoltra la richiesta alla CDN e si fa una copia
del video mentre lo streamma. Quando un browser nell'host di un utente
istruito nel ricercare un video tramite un URL, la CDN intercetta la richiesta,
determina un gruppo di server adatto a soddisfare la richiesta dell'utente e
reindirizza l'utente verso quel gruppo di server. Per determinare un gruppo di
server adatti, la CDN guarda l'indirizzo IP dell'host che ha fatto la richiesta e
poi pu usare diverse strategie:
- Assegnare come gruppo di server quelli pi vicini geograficamente all'host.
- Le CDN periodicamente testano i server per vedere quali sono i ritardi. Per
fare questo possono usare o il ping, oppure possono vedere quanto tempo passa
tra il SYN-ACK server-client e l'ack client-server durante la connessione TCP.
In questo modo sono in grado di rendeirizzare gli host verso il gruppo di server
con ritardi minori.
Analizziamo ora come funzionano Netflix, Youtube e Kankan:
Netflix: ha fatto molto uso di servizi cloud di terze parti e di CDNs per offrire il
suo servizio. Il sistema di Netflix si basa su quattro componenti: Server che
gestiscono le informazioni di registrazioni e pagamento, Amazon Cloud, CDN
providers e i clients. Netflix fornisce il suo servizio impiegando macchine o
macchine virtuali nell'Amazon cloud che include diverse funzioni: Content
Ingestion (Netflix riceve i vari video e poi li carica sugli host nell'Amazon
Cloud), Content processing (Vengono create diverse versioni di un video, sia
per poter usare il DASH, sia per adattare il video a ogni supporto di
registrazione (cellulari, pc, tablet)), Uploading version to the CDNs (una volta
che le varie versioni del video son state create gli host nell'Amazon cloud le
caricano sulla CDN). Netflix utilizza tre compagnie CDN di terze parti per
fornire il suo servizio. Quando un utente sceglie di vedere un video il client
dell'utente riceve un manifest file con indicate le varie versioni del video e un
elenco di ranked CDN. L'utente solitamente sceglie la CDN con il rank pi alto
e il client viene reindirizzato verso uno specifico server CDN. A questo punto il
client e il server CDN interagiscono usando il DASH.
Adaptive playout delay: non si utilizza un ritardo di playout fisso come nel
caso precedente, ma un ritardo variabile che viene determinato in base a come
varia il ritardo sulla rete. All'inizio di ogni comunicazione il trasmettitore
aspetta un attimo prima di trasmettere in modo che possa essere stabilito questo
ritardo di playout.
Interleaving: le unit che compongono il file audio vengono mescolate tra loro
prima di essere trasmesse. Il ricevitore poi ricostruisce lo stream rimettendo le
unit nell'ordine in cui erano originariamente. Questo mitiga l'effetto di perdita
dei pacchetti.
FIFO (first in first out): questa tecnica seleziona i pacchetti da trasmettere sui
link usando l'ordine con cui i pacchetti sono arrivati in coda.
Round Robin and Weighted Fair Queuing: con questa tecnica si trasmette un
pacchetto appartenente ad una classe con una determinata priorit, poi un altro
dell'altra classe, poi di nuovo uno della prima classe e cos via. C'
un'alternanza nella trasmissione dei pacchetti appartenenti a classi con priorit
diverse che non tiene conto dell'ordine in cui arrivano i pacchetti.
Il Leaky bucket pu essere visto come un cestino al cui interno ci sono dei
tokens che vengono generati dalla rete in numero tot ogni secondo. Questo
cestino pu contenere un massimo di tokens e se pieno i tokens che vengono
generati sono scartati. Questo leaky bucket pu essere usato per controllare un
flusso di pacchetti. Supponiamo che prima di essere mandato in rete un
pacchetto debba togliere un token dal cestino. Se il cestino vuoto il pacchetto
deve aspettare che venga generato un token per toglierlo e poter essere immesso
nella rete. Questo meccanismo aiuta a controllare il flusso di pacchetti perch
pone una limitazione al numero di pacchetti che possono essere immessi sulla
rete (rt + b con b numero di token totale che il cestino pu tenere e r rate con
cui vengono generati i tokens).
Per far s che una classe di traffico continui ad avere un determinato tipo di
servizio questi meccanismi non bastano, ma ne servono di aggiuntivi. Se le
risorse non sono sufficienti e una qualit del servizio deve essere garantita,
necessario un processo di call admission in cui i vari flussi di traffico dichiarano
i loro requisiti QoS (quality of service) e sono ammessi alla rete (al QoS
richiesti) o bloccati nell'accedere alla rete (se i loro requisiti QoS superano le
risorse della rete). Se per esempio due host mandano dei dati audio a 1Mbps su
una rete da 1,5 Mbps uno dei due flussi dovr per forza essere bloccato, perch
la capacit della rete non in grado di supportare entrambi i flussi di dati. I
nuovi meccanismi e protocolli che servono sono:
- Resource reservation: si allocano le risorse a un determinato servizio (per
esempio a una chiamata).
- Call admission: dato che le risorse non sono infinite, devono esistere dei
meccanismi per le richiesta di chiamata e per l'ammissione delle chiamate (call
admission). Quando si vuole fare una chiamata di fa una richiesta di chiamata
che viene rifiutata se non ci sono risorse disponibili. (Es: nella telefonia quando
non riusciamo a chiamare e riceviamo un segnale occupato perch le risorse
non sono disponibili in quel momento).
- Call setup signaling: il processo descritto sopra prevede che una chiamata sia
in grado di allocare sufficienti risorse ad ogni router della rete nel percorso dalla
sorgente alla destinazione per far s che i requisiti end-to-end di QoS siano
rispettati. Ogni router deve determinare le risorse locali richieste dalla sessione,
valutando anche le eventuali altre sessioni in corso e valutare se ha abbastanza
risorse per soddisfare i requisiti per-hop QoS della sessione nuova. Per
coordinare queste attivit c' bisogno di un protocollo, il protocollo RSVP (call
setup protocol).