Qualità del servizio IPTV Elena Mammi emammi@fub.it Fondazione Ugo Bordoni Roma, 2 Aprile 2009
Sommario Introduzione SMPTE 2022-1 Codici a fontana Codici LT Codici Raptor 2
Introduzione Il traffico IPTV ha requisiti di banda, ritardo, jitter e perdita di pacchetti molto stringenti. Gli utenti si aspettano un alta qualità del servizio, paragonabile alla qualità della TV analogica tradizionale. Queste caratteristiche non possono essere garantite da una gestione best-effort. 3
Tipi di perdite Burst sparso: periodo che inizia e finisce con un pacchetto perso o scartato, durante il quale vengono soddisfatti alcuni vincoli; tra questi il vincolo per il quale all interno di un burst sparso devono occorrere meno di Gmin pacchetti consecutivi ricevuti. Il valore di Gmin viene scelto in maniera tale che il tasso minimo effettivo di perdita, all interno di un burst, corrisponda al più basso tasso di perdita dei pacchetti, per il quale si presenta qualche distorsione visibile all interno del media stream decodificato. Sono periodi, dell ordine di alcuni secondi, in cui si ha un elevato tasso di perdita di pacchetti. {CAUSA: congestione di rete} 4
Tipi di perdite Burst continuo: periodo durante il quale vengono persi tutti i pacchetti. {CAUSA: guasti nella rete IP} Perdite isolate: pacchetti persi isolati. {CAUSA: bit error} Gli stream video sono molto sensibili alla perdita di informazione. 5
Latenza e jitter La latenza è il tempo necessario impiegato da uno o più pacchetti a raggiungere un altro server in rete. Il jitter è la variazione nel tempo degli arrivi dei pacchetti (ritardo). In generale, valori ragionevoli di jitter e di ritardo end-to-end non sono problematici grazie ai buffer de-jitter dei Set Top Box (STB), dato che la dimensione dei buffer de-jitter viene stabilita in maniera tale da essere compatibile con le prestazioni degli elementi di rete e i decoder video. 6
Tabelle e requisiti Le tabelle che verranno presentate in seguito mostrano i requisiti di perdita e jitter nel trasporto dei pacchetti IP per ottenere degli obiettivi soddisfacenti di qualità del servizio. Parametri minimi raccomandati a livello di trasporto per una QoE soddisfacente per i servizi SDTV codificati MPEG-2 7
Tabelle e requisiti Parametri minimi raccomandati a livello di trasporto per una QoE soddisfacente per i servizi HDTV codificati MPEG-2 8
Sommario Introduzione SMPTE 2022-1 Codici a fontana Codici LT Codici Raptor 9
Forward Error Correction Il Forward Error Correction (FEC) ai livelli applicazione e trasporto generalmente fa riferimento alle tecniche di correzione pacchetti cancellati. In queste tecniche, una quantità di dati che viene inviata in totale è superiore allo stream che deve essere comunicato, con la proprietà che lo stream può essere ricostruito da qualsiasi sottoinsieme di dati trasmessi sufficientemente ampio. Lo stream diventa così resistente ad un determinata quantità di perdita. 10
SMPTE 2022-1 1. Si basa sul Generic Forward Error Correction RFC2733. 2. È sviluppato per stream RTP per contrastare le perdite IP. 3. I pacchetti FEC sono inseriti nei pacchetti RTP. 4. Si colloca a livello applicativo. 11
Base: principio del FEC su una riga Stream da proteggere Pkt 1 Pkt 2 Pkt 3 Pkt 4 Pkt 5 Pkt n Pkt n+1 Pkt n+2 Pkt n+3 FEC 1 FEC (n+2)/3 Pkt 1 Pkt 2 Pkt 3 FEC 1 Pkt 4 Pkt 5 Pkt n Pkt n+1 Pkt n+2 FEC (n+2)/3 Stream con pacchetti FEC inseriti 12
Vantaggi & Svantaggi + FEC molto semplice. + Meccanismo con bassa latenza. - Può proteggere solamente un singolo pacchetto perso. 13
Panoramica sul FEC 1D colonna stream da proteggere 0 1 2 L-1 L L+1 L+2 2L-1 2L 2L+1 2L+2 3L-1 D righe 3L Pkt 3L+1 3L+2 4L-1 (D-1)L (D-1)L+1(D-1)L+2 DL-1 stream combinati FEC C 0 FEC C 1 FEC C 2 FEC C L-1 L colonne 14
Esempi di correzioni avvenute con successo con la tecnica 1D Uno e un solo pacchetto dati perso per colonna Un burst di L pacchetti dati consecutivi persi 0 1 2 3 4 0 1 2 3 4 5 6 7 8 9 10 11 6 7 8 9 14 15 16 17 16 17 18 19 20 21 22 23 18 19 20 21 22 23 24 25 27 28 29 24 25 26 27 28 29 30 31 32 33 34 35 30 31 32 33 34 35 FEC 0 FEC 1 FEC 2 FEC 4 FEC 5 FEC 0 FEC 1 FEC 2 FEC 3 FEC 4 FEC 5 15
Esempi di correzioni fallite con la tecnica 1D Due pacchetti dati persi sulla medesima colonna Un pacchetto dati perso e il proprio pacchetto FEC associato perso 0 1 2 3 4 5 0 1 2 3 4 5 6 12 7 13 8? 9 15 10 16 11 17 6 12 7 13 8 14 9 10 16 11 17 18 24 19 25 20? 21 27 22 28 23 29 18 24 19 25 20 26 21 27 22 28 23 29 30 31 32 33 34 35 30 31 32 33 34 35 FEC 0 FEC 1 FEC 2 FEC 3 FEC 4 FEC 5? FEC 0 FEC 1 FEC 2 FEC 4 FEC 5 16
Panoramica sul FEC 2D stream da proteggere 0 1 2 L-1 L L+1 L+2 2L-1 FEC R 0 FEC R 1 2L 2L+1 2L+2 3L-1 3L Pkt 3L+1 3L+2 4L-1 FEC R 2 FEC R 3 D righe (D-1)L (D-1)L+1(D-1)L+2 DL-1 FEC R D-1 FEC C 0 FEC C 1 FEC C 2 FEC C L-1 L colonne stream combinati 17
Esempio di correzioni avvenute con successo con la tecnica 2D (1/2) 1. Matrice 6x6 di dati con 9 pacchetti di dati persi e un pacchetto FEC perso. 2. I 9 pacchetti persi verranno recuperati con successo. 18
Esempio di correzioni avvenute con successo con la tecnica 2D (2/2) 0 6 12 18 24 1 7 13 19 2 3 4 5 FEC 0 8 9 10 11 14 15 16 17 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 FEC 1 FEC 3 FEC 4 FEC 5 FEC 0 FEC 1 FEC 2 FEC 3 FEC 4 FEC 5 19
Esempi di correzioni fallite con la tecnica 2D Un pacchetto dati perso e i relativi pacchetti FEC persi Quattro pacchetti dati persi posizionati esattamente su due righe e due colonne 0 1 2 3 4 5 FEC 0 0 1 2 3 4 5 FEC 0 6 12 18 7 13 19 8 14 20 9? 21 10 16 22 11 17 23 FEC 1 FEC 3 6 12 18 7 13 19 8 14 20 9? 10 11 17 23 FEC 1 FEC 2 FEC 3 24 25 26 27 28 29 FEC 4 24 25 26 27 28 29 FEC 4 30 31 32 33 34 35 FEC 5 30 31 32 33 34 35 FEC 5 FEC 0 FEC 1 FEC 2 FEC 4 FEC 5 FEC 0 FEC 1 FEC 2 FEC 3 FEC 4 FEC 5 20
Limitazioni Mittenti e destinatari supporteranno tutte le combinazioni di valori di L e di D che soddisfano i seguenti limiti: 1 L 20 4 D 20 L D 100 Se L 4 allora il dispositivo dovrà supportare due stream FEC. 21
Introduzione codici a fontana,, LT, Raptor (1/3) CODICI A FONTANA CODICI LT CODICI RAPTOR I codici LT sono la prima realizzazione pratica dei codici a fontana. I codici Raptor sono un evoluzione dei codici LT. 22
Introduzione codici a fontana,, LT, Raptor (2/3) Codici rateless (con un ritmo non fissato a priori dai parametri del codice). Canale erasure (con cancellazione). Capacità del canale: 1-p. 23
Introduzione codici a fontana,, LT, Raptor (3/3) Il canale trasmissivo quindi che si considera è il Bynary Erasure Channel (BEC). L'alfabeto d'ingresso di tale canale è binario (quindi gli ingressi del canale sono bit). L'alfabeto di uscita è invece costituito dai simboli 0 ed 1 e da un elemento addizionale chiamato e (cancellazione). Ciascuna cifra binaria è trasmessa correttamente (con probabilità 1 -p) o cancellata (con probabilità p). Una generalizzazione di tale canale è il canale PEC (Packet Erasures Channel). L'unica differenza è che gli alfabeti d'ingresso e di uscita non sono costituiti da bit, ma da pacchetti di bit. 24
Sommario Introduzione SMPTE 2022-1 Codici a fontana Codici LT Codici Raptor 25
Codici a fontana Producono per un dato insieme di K simboli in ingresso un flusso potenzialmente infinito di simboli in uscita. I simboli in uscita sono ottenuti in maniera indipendente uno dall altro e in maniera casuale. L algoritmo di decodifica può recuperare K simboli d ingresso da un insieme di K(1-ε) simboli d uscita con un elevata probabilità. 26
Codice random linear fountain (1/5) Il file è composto da K pacchetti sorgente Le fasi di codifica sono scandite da un clock. In ciascun ciclo di clock (n) il codificatore produce K bit random (Gkn). Il pacchetto trasmesso è: s1, s2,, s K ( ) t K = s G n k kn k = 1 27
Codice random linear fountain (2/5) 28
Codice random linear fountain (3/5) Si indica con G il frammento di matrice generatrice KxN. N Se, allora il ricevitore non possiede abbastanza informazioni per recuperare il file. N < = K K Se, allora è plausibile che il ricevitore possa recuperare il file. 29
Codice random linear fountain (4/5) Se la matrice G di dimensioni KxK è invertibile, il ricevitore può calcolare l inversa della matrice stessa e recuperare i pacchetti sorgente: s N 1 k = tng nk n= 1 La probabilità che una matrice binaria di dimensioni KxK casuale sia invertibile è il prodotto di probabilità, ognuna delle quali è la probabilità che una nuova colonna di G sia linearmente indipendente dalle precedenti colonne. ( K ) ( (K 1) 1 2 *1 2 )* *1 ( 1/8*1 ) ( 1/4*1 ) ( 1/2) 30
Codice random linear fountain (5/5) N= K+ E Se N è leggermente più grande di K, ovvero (con E che indica il piccolo numero di pacchetti in eccesso) allora si deve calcolare la probabilità che la matrice binaria di dimensioni KxN contenga una matrice di dimensioni KxK invertibile. 1 δ Tale probabilità è, dove è la probabilità che il ricevitore non sia in grado di decodificare il file una volta ricevuti gli E pacchetti in eccesso. Per qualsiasi K, la probabilità di fallimento è limitata superiormente da:. δ E 2 δ ( ) E 31
Sommario Introduzione SMPTE 2022-1 Codici a fontana Codici LT Codici Raptor 32
Codici LT (1/6) Sono la prima realizzazione pratica dei codici a fontana. Mantengono le buone prestazioni dei codici a fontana lineari casuali. Riducono drasticamente le complessità di codifica e di decodifica. 33
Codici LT (2/6) Codificatore Si sceglie in modo casuale il grado del pacchetto da una distribuzione di gradi ρ ( d ); la scelta appropriata di tale distribuzione dipende dalla dimensione K del file sorgente. Il grado del pacchetto codificato equivale alle connessioni che ha esso con i pacchetti sorgente. Si scelgono, uniformemente a caso, pacchetti di ingresso distinti, e si setta il pacchetto codificato t n pari alla somma bit a bit, modulo 2, dei pacchetti. d n d n d n 34
Codici LT (3/6) Se un pacchetto codificato ha grado d significa che esso è connesso a d pacchetti sorgente. Pacchetti codificati occasionalmente dovrebbero avere grado elevato (cioè prossimo a K), in modo da assicurare che non ci siano pacchetti sorgente non connessi a nessun pacchetto codificato; nel caso invece di parecchi pacchetti codificati, questi dovrebbero avere grado basso, in maniera tale che il numero totale di operazioni di addizione effettuate dal decodificatore rimanga basso. 35
Codici LT (4/6) Decodificatore Si trova un nodo check pacchetto sorgente. Si pone s = t. k s k n Si somma a tutti i nodi check s k per tutti gli n per cui G = 1. s k che è connesso ad un solo che sono connessi a Si rimuovono tutti gli edge connessi al pacchetto sorgente. t n nk Si ripete il primo punto finché non vengono determinati tutti gli. s k t n 36
Codici LT (5/6) Esempio di una decodifica di tipo LT: DEVO DETERMINARE I SEGUENTI VALORI: 1 0 1 37
Codici LT (6/6) 1 0 1 S1 S2 S3 x X X 1 X X X 0X X X 1 + + + + 1 10 1 10 x x x x x x x 38
Complessità computazionale La complessità del processo LT dipende dal numero di edge presenti nel grafo. Affinché il processo di decodifica abbia successo, ciascun pacchetto sorgente deve avere almeno un edge. Il codificatore crea edge tra pacchetti codificati e pacchetti sorgente in maniera random. Il numero di edge dovrà essere dell ordine di KlnK, quantità che deriva dalla distribuzione dei gradi. Idealmente, per evitare ridondanze, il grafo ricevuto dovrebbe avere la proprietà di contenere soltanto un check node di grado uno ad ogni iterazione. 39
Complessità computazionale Idealmente, per evitare ridondanze, il grafo ricevuto dovrebbe avere la proprietà di contenere soltanto un check node di grado uno ad ogni iterazione. Questo comportamento ideale è ottenuto per mezzo della distribuzione solitona ideale. ( 1) ρ ( 1) = 1/K 1 ρ ( d) = per d = 2, 3,, K d d Il grado atteso nel caso di questa distribuzione è lnk. 40
Sommario Introduzione SMPTE 2022-1 Codici a fontana Codici LT Codici Raptor 41
Codici Raptor (1/5) Riescono a migliorare le prestazioni dei codici LT, ottenendo dei tempi di codifica e di decodifica che variano linearmente con la dimensione del file. La loro idea base è quella di rilassare le condizioni dei codici LT. Concatenano un codice LT indebolito e un codice esterno che compensa i gap nel codice LT. Possono generare tanti simboli codificati da un blocco sorgente quanti sono necessari per contrastare gli effetti della perdita dei pacchetti. 42
Codici Raptor (2/5) Usano un codice LT con un grado medio circa pari a 3. Con il grado medio basso la fase di decodifica diventa più leggera. Una frazione dei pacchetti sorgente non sarà connessa al grafo e quindi non sarà recuperata dal codice LT. Si ovvia al problema effettuando una precodifica con un codice esterno eccellente che può correggere le cancellazioni. 43
Codici Raptor (3/5) 16 simboli sorgente; 20 simboli intermedi; 18 simboli di uscita; grado medio 3. 44
Codici Raptor (4/5) I codici Raptor si possono dividere in due grandi gruppi: codici sistematici e codici non sistematici. NB: un codice sistematico è un codice nel quale i simboli sorgente sono inclusi come parte dei simboli codificati trasmessi dallo stesso blocco sorgente. Tale tipo di codice lascia i dati sorgente inalterati; da ciò si deriva che è possibile processare i dati ricevuti anche da parte di terminali che non hanno implementato un decodicatore FEC. 45
Codici Raptor (5/5) I codici Raptor non sistematici hanno come input alla pre-codifica i simboli sorgente. I codici Raptor sistematici non hanno come input alla pre-codifica i simboli sorgente, in quanto questi vengono moltiplicati prima con l inversa della matrice generatrice del codice Raptor nonsistematico. 46
Bibliografia ITU-T IPTV Focus Proceedings, Part II.2 QoS and Performance Aspects, 2008. SMPTE specification 2022-1: "Forward Error Correction for Real-time Video/Audio Transport Over IP Networks". D.J.C. MacKay, Fountain Codes, IEE Proceedings- Communications Volume 152, December 2005. M. Luby, LT Codes, Proc. 43rd Ann. IEEE Symp. on Foundations of Computer Science, November 2002. A. Shokrollahi, Raptor codes, Technical report, 2003. 47