Metriche e prestazioni di rete per i servizi multimediali
In questa pagina 9
Per sapere se una rete è in grado di sostenere uno streaming o una videochiamata bisogna saper misurare e calcolare le sue prestazioni: quanti bit al secondo trasporta, quanto ritardo introduce, quanti pacchetti si perdono. Questa nota definisce queste metriche con precisione e le usa per fare i conti che compaiono nei quiz (svolti in Esercizio - Ritardi, throughput e BDP (domande ed esercizi del corso), Esercizio - Canale binario simmetrico e codici di canale (domande ed esercizi del corso) e Esercizio - Stima della banda con il comando ping (dispensa del corso)). Richiami più generali sono in Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete →, Modello ISO-OSI e pila TCP-IPUna comunicazione tra due calcolatori è un problema troppo vario (segnali, errori, accesso al mezzo, instradamento, controllo di flusso, rappresentazione dei dati) per un solo protocollo, quindi si divide in strati (layer). Il modello ISO/OSI ha 7 livelli (fisico, collegamento, rete, trasporto, sessione, presentazione, applicazione); la pila TCP/IP riunisce gli ultimi tre in un solo livello applicazione, quindi ne ha 5. Ogni livello offre un servizio a quello sopra e parla solo con il livello pari dell'altro nodo tramite PDU; scendendo si aggiunge un'intestazione (PCI): incapsulamento. Indirizzi: MAC (collegamento, locale), IP (rete, globale).Modello ISO-OSI e pila TCP-IP → e nella nota sul modello a strati del modulo HTTP, Modello ISO-OSI, data plane e control plane, architetture client-server e publish-subscribeIl modello ISO/OSI (7 livelli) e la pila TCP/IP (4 livelli) dividono la comunicazione in strati; ogni livello riceve una SDU dal livello superiore, aggiunge la sua intestazione e produce una PDU; il confine fra due livelli adiacenti e' il SAP, identificato da un indirizzo (EtherType per Ethernet, numero di protocollo per IP, numero di porta per TCP e UDP) e per un programma C il SAP del trasporto e' l'API delle socket; il data plane inoltra i pacchetti seguendo le tabelle, il control plane le costruisce con i protocolli di instradamento; client/server funziona come una chiamata di funzione (richiesta e risposta), peer-to-peer mette tutti i nodi alla pari, publish/subscribe funziona come un interrupt: un broker inoltra gli eventi agli iscritti, con disaccoppiamento nello spazio, nel tempo e nella sincronizzazione.Modello ISO-OSI, data plane e control plane, architetture client-server e publish-subscribe →.
1. Architettura a strati
Una rete deve risolvere problemi molto diversi: generare segnali fisici dai bit e recuperare i bit dai segnali; gestire i disturbi del canale; assicurare comunicazioni corrette tra due host vicini (single hop); trovare un percorso attraverso più host; gestire messaggi incompleti o persi; offrire servizi di alto livello (e-mail, web, streaming, cloud gaming). Per dominare la complessità le reti sono organizzate come pile di livelli (layers). È un'idea comune in informatica (tipi di dato astratti, sistemi operativi con kernel e servizi, database con livello fisico, logico e vista): si offrono servizi nascondendo i dettagli dell'implementazione.
Livello, servizio, protocollo, interfaccia.
- Un livello ha l'obiettivo di fornire un insieme di servizi ai livelli superiori nascondendo la complessità della sua implementazione; resta definito dai servizi che offre al livello superiore.
- Un servizio è un insieme di primitive offerte al livello superiore: dice che cosa il livello può fare, non come. Si espleta tramite l'interfaccia tra il fornitore (livello inferiore) e l'utente (livello superiore).
- Un protocollo è un insieme di regole che definiscono formato e semantica dei pacchetti scambiati dalle entità pari (peer) dello stesso livello su host diversi.
- Un protocollo si può cambiare, purché servizi e interfacce restino identici (esempio: HTTP/3 usa QUIC su UDP al posto di TCP, mantenendo servizi simili ai livelli superiori).
Esempio: il livello fisico (L1) fa la modulazione (crea un segnale elettromagnetico, ottico o acustico dai bit) e la demodulazione (stima i bit dal segnale) e nasconde ai livelli superiori il canale analogico: offre un servizio di canale digitale per bit. I protocolli superiori non devono sapere se il mezzo è fibra o radio e non cambiano se il livello fisico cambia.
| Livello | Servizio offerto |
|---|---|
| L1 fisico (PHY) | canale digitale per bit, single hop, inaffidabile |
| L2 collegamento (DLL) | canale a pacchetti single hop, affidabile |
| L3 rete (NET) | canale a pacchetti end-to-end e senza connessione tra host |
| L4 trasporto | canale end-to-end tra processi (flusso di bit) |
| L5 applicazione (APP) | servizi agli utenti (servizi multimediali) |
La definizione dei servizi di un livello è in parte arbitraria (esistono più modelli: ISO/OSI e TCP/IP), ma l'idea è che un livello tratti problemi omogenei.
2. Pacchettizzazione
L'applicazione produce dati a una certa velocità (non necessariamente costante) e li offre al livello sottostante (L4), che li suddivide in unità più piccole aggiungendo informazioni di controllo (header); L4 offre i pacchetti a L3, che decide il percorso sorgente-destinazione; ogni livello può spezzare le unità di dati e aggiungere altre intestazioni. A destinazione si fa il processo inverso e i dati dell'applicazione vengono ricostruiti.
Il flusso di bit è diviso in blocchi (source data blocks); un pacchetto è formato da header (dati di controllo: identificativo del blocco, sorgente, destinatario, ecc.) e payload. Ogni livello ha il suo protocollo che definisce sintassi e semantica dell'header, e il pacchetto di un livello è il payload del livello inferiore: nei termini del modello a strati.
Vantaggi della trasmissione a pacchetti rispetto a un blocco unico:
- Efficienza: i pacchetti possono seguire percorsi diversi e la rete si usa meglio;
- Affidabilità: in caso di errore si ritrasmettono solo i pacchetti danneggiati, non il messaggio intero;
- Scalabilità: si gestiscono più dispositivi e più traffico senza cambiare l'infrastruttura;
- Multiplexing statistico: più flussi condividono dinamicamente le stesse risorse (Commutazione di circuito e di pacchettoUn nodo di commutazione (switch) può collegare ingresso e uscita in tre modi. Commutazione di circuito: si stabilisce prima un collegamento fisico dedicato (rete telefonica), tempo di consegna $T=3Nt_p+Nt_s+M/R$. Commutazione di pacchetto a datagramma: il messaggio è diviso in $K$ pacchetti con intestazione, ognuno è instradato indipendentemente con store-and-forward, $T=Nt_p+(N+K-1)\frac{M/K+H}{R}$, con $K_{ott}=\sqrt{(N-1)M/H}$. A circuito virtuale: tre fasi (setup, dati, chiusura), connessione logica dedicata ma senza risorse dedicate, identificatore locale che cambia a ogni salto.Commutazione di circuito e di pacchetto →).
L'applicazione multimediale in linea di principio non dovrebbe conoscere la pacchettizzazione, ma può dare indicazioni: nei video compressi moderni (H.264, HEVC, AV1) la pacchettizzazione segue spesso le unità codificate (ogni immagine in uno o più pacchetti, e in ogni pacchetto dati di una sola immagine). In ricezione la de-pacchettizzazione estrae i dati utili e, grazie alle informazioni di controllo, ricostruisce il bitstream (ordinamento, rilevazione e correzione degli errori).
3. PDU, SDU, overhead ed efficienza
Due entità dello stesso livello si scambiano PDU (protocol data unit). Per esempio una PDU di un'applicazione di comunicazione video (L5) può essere un frame intra. La PDU è virtualmente inviata all'entità pari, ma praticamente viene passata al livello inferiore, che la tratta come SDU (service data unit) e vi aggiunge le proprie informazioni di controllo PCI (protocol control information, cioè header) per formare la propria PDU. Per esempio L4 aggiunge i numeri di porta, L3 gli indirizzi IP.
L'overhead è costituito dai dati di controllo, che si aggiungono al carico utile. Il throughput massimo che il livello offre al superiore è Si definisce l'efficienza del protocollo di livello Aumenta con le dimensioni della SDU e diminuisce con quelle dell'header (per questo conviene avere SDU grandi e header piccoli). Esistono però altri vincoli che impediscono di avere SDU troppo grandi o header troppo piccoli: un pacchetto lungo ha più probabilità di essere errato (vedi PER), occupa il link più a lungo (ritardo di trasmissione), ecc.
Esempio. Il livello crea PDU da 1200 byte; il livello ha throughput Mbit/s e un header di 60 byte. byte, , quindi Mbit/s (se il livello produce dati abbastanza in fretta e il link non è condiviso).
4. Bit-rate, throughput e goodput
Sono tre concetti simili: una velocità di trasferimento tra due entità pari; la differenza sta nel livello considerato.
| Metrica | Significato |
|---|---|
| Bit-rate | velocità nominale (massima) del link fisico (L1), in bit/s |
| Throughput | velocità effettiva osservata a un livello tra 2 e 4 (bit/s, pacchetti/s) |
| Goodput | throughput utile all'applicazione (L5), cioè throughput a lungo termine a livello applicazione |
Unità: bit/s, , (non si usano le potenze di 2); byte/s: kbit/s.
Il bit-rate è la velocità "grezza" con cui i bit attraversano un singolo hop, senza garanzie di affidabilità (i bit possono essere alterati o persi). Dipende da banda in Hz, modulazione e rapporto segnale-rumore.
Vincolo fondamentale: . Gli strati superiori non possono essere più veloci dei sottostanti perché: (1) parte della capacità è occupata dai segnali di controllo (overhead); (2) il link può essere congestionato o condiviso da più flussi; (3) i protocolli (specie di L2) possono imporre tempi di inattività (un host non deve trasmettere contemporaneamente a un altro). Nei sistemi reali (Wi-Fi, 5G) il throughput è spesso molto inferiore al bit-rate nominale. In generale: bit-rate throughput goodput.
Il throughput è il rapporto tra quantità di dati e tempo impiegato, quindi dipende dall'intervallo di tempo considerato. Sia il numero cumulativo di bit trasmessi fino a visto dal livello :
- medio su un intervallo : ;
- istantaneo (): (la derivata di );
- di lungo termine (asintotico): .
Il throughput di lungo termine a livello applicazione è il goodput.
Esempio (collegamento punto-punto, traffico periodico). Bit-rate PHY Mbit/s. L'applicazione genera una PDU da 1200 byte ogni ms; i livelli inferiori portano la PDU a 1260 byte a livello PHY.
- Traffico offerto al PHY: Mbit/s. È minore del bit-rate: può essere sostenuto, quindi è il throughput di lungo termine del PHY.
- Throughput istantaneo: periodico con periodo 10 ms; la PDU occupa il link per ms, durante i quali Mbit/s, e per il resto dei 10 ms (9,9 ms) è zero.
- Goodput APP: kbit/s; oppure, visto che il traffico è sostenuto completamente, kbit/s. Si noti perché l'applicazione produce poco.
- Overhead del livello APP (frazione del traffico PHY che non è utile all'APP): (nota: è , con PDU del PHY e dell'APP).
5. Ritardi
5.1 Ritardo nodale, punto-punto, end-to-end, RTT
- Il ritardo punto-punto (o nodale) è il tempo tra l'inizio della trasmissione di un pacchetto in un nodo e la sua ricezione completa nel nodo successivo.
- Il ritardo end-to-end è il tempo tra l'inizio della trasmissione nel primo nodo e la ricezione completa alla destinazione finale: la somma dei ritardi nodali lungo il percorso: ; con link identici .
- Il RTT (round-trip time) tra A e B è la somma dei ritardi end-to-end da A a B e da B ad A; spesso si approssima .
Il ritardo nodale ha quattro componenti:
- Processing : controllo d'errore e scelta del link di uscita (instradamento). Tipicamente costante e spesso trascurabile (nei router moderni è fatto in hardware dedicato: ASIC, SmartNIC, DPU). Non confondere con gli algoritmi di routing.
- Accodamento : tempo che un messaggio passa in un buffer in attesa di essere elaborato. Dipende dal traffico complessivo sul nodo; buffer troppo pieni causano perdita di pacchetti. Si controlla in parte con priorità, schedulazione, controllo di ammissione (Introduzione alla teoria delle codeUn sistema a coda (QS) è fatto da un processo di arrivi (di Poisson, tasso $\lambda$), una coda e uno o più servitori con tasso di servizio $\mu$. Carico offerto $G=\lambda/\mu$, fattore di carico $\rho=\lambda/(m\mu)$: il sistema è stabile solo se $\rho<1$, e allora il throughput è $\lambda$ (altrimenti è $m\mu$). Legge di Little: $E[x]=\lambda E[s]$, valida per qualsiasi disciplina. Coda M/M/1: $E[x]=\frac{\rho}{1-\rho}$, $E[s]=\frac{1/\mu}{1-\rho}$, $E[w]=\frac{\rho/\mu}{1-\rho}$. Con servizio deterministico (M/D/1, caso particolare di Pollaczek-Khinchin): $E[w]=\frac{\rho}{2\mu(1-\rho)}$. Il ritardo cresce senza limite quando $\rho\to1$.Introduzione alla teoria delle code →).
- Trasmissione (o di forwarding, di inoltro) : tempo tra la ricezione del primo e dell'ultimo bit del messaggio, cioè il tempo per "mettere" tutti i bit sul link: con lunghezza del pacchetto (bit) e bit-rate del link. Esempio: 100 Mbit su un link da 100 Mbit/s: s. Si può ridurre aumentando . Si può calcolare anche a livelli superiori se il sistema lavora al massimo (sempre dati pronti): .
- Propagazione : tempo per la propagazione fisica del segnale dalla sorgente alla destinazione: con distanza e velocità di propagazione nel mezzo (circa m/s in cavo e fibra, circa i due terzi della luce nel vuoto). Spesso è trascurabile, tranne nelle comunicazioni a lungo raggio (satelliti, transoceaniche: migliaia di km decine di ms) e con link ad alto bit-rate. Non si può ridurre (dipende da grandezze che non si possono cambiare). e sono grandezze molto diverse: è una velocità in m/s, in bit/s.
Esempio. Pacchetto da bit su un link da 1 Gbit/s lungo 1 km: , : qui la propagazione domina.
Il ritardo minimo corrisponde a code vuote e processing trascurabile: .
5.2 Jitter
Il jitter è la varianza (nelle slide; nella pratica si usa spesso la deviazione standard) del ritardo. Il ritardo è un fenomeno aleatorio: conta il valore medio, ma anche lo scostamento dalla media. È critico per cloud gaming, videoconferenza, VR/AR, teleoperazione. Nello streaming un ritardo costante non è un grosso problema; ma se all'improvviso il ritardo cresce, la riproduzione deve fermarsi: freezing, che riduce molto la qualità percepita. Il jitter si contrasta con un buffer di riproduzione (playout buffer): più è grande, più jitter si assorbe, ma ha un costo (memoria e ritardo di avvio). Un jitter elevato richiede lunghi ritardi di riproduzione e produce code più lunghe in media.
6. Prodotto banda-ritardo (BDP)
Se il mittente vuole essere sicuro che il pacchetto sia stato ricevuto, deve attendere l'ACK; se non arriva entro un timeout si suppone che il pacchetto sia perso e si ritrasmette. Quindi non può scartare prima di aver ricevuto l'ACK: i pacchetti trasmessi e non ancora confermati restano nel buffer di trasmissione. Quanti sono? Dipende dal BDP (bandwidth-delay product).
Definizione (BDP). Numero di bit (o pacchetti) che possono essere contemporaneamente "in transito" nella connessione: anche il numero di bit ricevuti (a regime) in un tempo pari al RTT.
Si considera il throughput a regime. Nell'esempio delle slide, tra l'invio del primo pacchetto e la ricezione del suo ACK ne vengono trasmessi 8. Il BDP è importante nelle Long Fat Networks (alta capacità e alta latenza: dorsali transcontinentali, data center interconnessi, satelliti).
Connessioni multi-hop. Il bit-rate da considerare è il minimo tra tutti i collegamenti. Ragione: se la sorgente produce un pacchetto di bit ogni s, il primo link con non riesce a trasmettere a ritmo e deve attendere prima del pacchetto successivo; i link a valle non possono aumentare la frequenza di arrivo. Perciò il link a bit-rate minimo determina il periodo dei pacchetti, e quindi quanti ne sono "in volo".
Se il buffer di trasmissione è più piccolo del BDP non si riesce a trasmettere in modo continuo:
Esempio (buffer più piccolo del BDP). Buffer di trasmissione 300 kbit, RTT 10 ms, Mbit/s, ritardi di processing e propagazione trascurabili; protocollo di ritrasmissione Go-Back-N (Protocolli ARQ - Stop-and-Wait, Go-Back-N e Selective RepeatARQ (Automatic Repeat reQuest) rende affidabile un collegamento che sbaglia: il ricevitore conferma (ACK) i frame ricevuti bene, il trasmettitore ritrasmette allo scadere del timeout. Servono timeout (contro il deadlock) e numeri di sequenza (contro i duplicati). Con $t_G=t_F+2\tau_p+t_A$ e probabilità di errore $p$: Stop-and-Wait $\rho=\frac{t_F(1-p)}{t_G}$; Go-Back-N con finestra $N\ge t_G/t_F$ $\rho=\frac{1-p}{1+(N-1)p}$; Selective Repeat $\rho=1-p$. Efficienza $\eta=\rho,I/F$. La finestra ottima è la capacità del tubo in pacchetti. In Selective Repeat esiste anche una lunghezza ottima del frame: con overhead $o$ e probabilità di errore sul bit $P_b$, $x_{ott}\simeq\frac o2+\sqrt{o/P_b}$ (frame più corti se il canale sbaglia di più).Protocolli ARQ - Stop-and-Wait, Go-Back-N e Selective Repeat →): se l'ACK non arriva entro il RTT si torna a trasmettere dal primo pacchetto non confermato. Il BDP è Mbit, maggiore del buffer. Trasmettere 300 kbit richiede ms; poi il trasmettitore aspetta altri 7 ms (non può sapere se il primo pacchetto è arrivato). Throughput di lungo periodo: 300 kbit ogni 10 ms Mbit/s (un terzo del bit-rate). Se invece non si garantisce la ritrasmissione, si può usare tutto il throughput del canale.
Esempio svolto (10 link identici). link, ciascuno di km; pacchetti PHY da kbit; Mbit/s; m/s; processing trascurabile. Ritardo di propagazione di un hop: s s. Ritardo di trasmissione: s. Ritardo punto-punto minimo: s. End-to-end minimo: s. kbit pacchetti.
Il resto delle varianti (un link più lento, un link più lungo, satellite) è in Esercizio - Ritardi, throughput e BDP (domande ed esercizi del corso).
7. Affidabilità: errori su bit e sui pacchetti
I pacchetti ricevuti possono essere affetti da errori: uno o più bit diversi da quelli inviati (cause tipiche: basso SNR, interferenze, fading). Indici:
- probabilità di errore su bit (bit error rate, BER);
- probabilità di perdita di un pacchetto: un pacchetto può non arrivare mai, o troppo tardi per essere utile; cause: congestione (un nodo riceve più pacchetti di quanti ne può memorizzare) ed errori (un pacchetto riconosciuto errato può essere scartato);
- ordine di ricezione: alcune tecnologie garantiscono l'ordine, ma allora un pacchetto in ritardo ritarda tutti i successivi; per certi servizi conviene trascurare un pacchetto che non può arrivare entro la scadenza.
7.1 Il canale binario simmetrico (BSC)
Il più semplice modello di canale punto-punto a errori su bit è il BSC: accetta in ingresso una sequenza di bit e restituisce una sequenza dello stesso numero di bit (niente inserzioni né cancellazioni); ogni bit viene invertito con probabilità , uguale se si trasmette 0 o 1 (da cui "simmetrico"); errori indipendenti e identicamente distribuiti (i.i.d.). Rimando a Canale binario simmetrico, codifica di Gray e probabilità di bitIl canale numerico equivalente a modulatore, canale e demodulatore è un canale binario simmetrico senza memoria (BSC): ogni bit è sbagliato con probabilità $P_{bit}$, indipendentemente dagli altri. Per una modulazione $M$-aria con $n=\log_2M$ bit per simbolo, la probabilità di errore sul simbolo è $P[E]=1-(1-P_{bit})^n\approx nP_{bit}$ e $P_{bit}\le P[E]$. Il legame inverso passa dalla distanza di Hamming tra le parole di bit: $P_{bit}=\sum_k\sum_{j\ne k}p_kP_{j|k}\frac{d_H(\mathbf c_j,\mathbf c_k)}{\log_2M}$. Con la codifica di Gray (simboli adiacenti differiscono per un solo bit) e SNR non troppo basso gli errori più probabili, verso i vicini, sbagliano un solo bit, quindi $P_{bit}\approx\frac{P[E]}{\log_2M}$.Canale binario simmetrico, codifica di Gray e probabilità di bit →.
PER. Un pacchetto di bit è ricevuto correttamente se e solo se tutti i suoi bit sono corretti. Un bit è corretto con probabilità ; con errori indipendenti il pacchetto è corretto con probabilità . Quindi il packet error rate (frazione di pacchetti con uno o più errori, equivalente alla probabilità che un pacchetto abbia almeno un errore) è Probabilità di bit errati su : ci sono modi di scegliere gli errori, ciascuno con probabilità : Un messaggio di pacchetti è ricevuto senza errori con probabilità .
Grafico interattivo: PER = 1 - (1 - eps)^L in funzione della lunghezza del pacchetto L: pacchetti più lunghi sbagliano più spesso (eps = 1e-5 sopra, eps = 1e-6 sotto)
Esempio. bit, : (non l'1%: sbagliare di un fattore 10 è tipico dei quiz). Un messaggio di 750 pacchetti arriva intatto con probabilità .
7.2 Rilevazione e correzione degli errori, codifica di canale
Una tecnica di rilevazione (error detection, ED) riconosce se un pacchetto ha errori; una di correzione (error correction, EC) rileva e corregge. Entrambe aggiungono bit di ridondanza: sono codifica di canale (channel coding), da distinguere dalla codifica di sorgente (la compressione). Quest'ultima toglie ridondanza "non controllata" dei segnali; la codifica di canale aggiunge ridondanza "controllata" per rilevare o correggere errori.
Due famiglie: codici a blocchi (un blocco di simboli in ingresso produce un blocco di simboli) e codici convoluzionali (un flusso di simboli, simboli in uscita ogni in ingresso, con memoria: l'uscita dipende anche dal passato). Rapporto di codifica ; overhead (frazione di simboli che non portano informazione) .
Controllo di parità. Blocchi di bit; si aggiunge il bit (somma modulo 2): il blocco codificato ha sempre un numero pari di 1. In ricezione, se la somma degli 8 bit è c'è almeno un errore. Con , : un errore singolo è rivelato, ma due errori no (un numero dispari di errori è sempre rivelato, un numero pari mai). L'overhead è : aumentare riduce l'overhead ma anche la capacità di rilevazione.
Codice di Hamming (nelle slide "(4,7)": dati, ; si usa più spesso la scrittura (7,4)). Tre bit di parità, ciascuno controlla un sottoinsieme dei bit: il bit 5 controlla le posizioni , il 6 le , il 7 le . Per : , , , quindi . Se si riceve (errore sul bit 2):
- controllo : somma : non OK;
- controllo : : OK;
- controllo : : non OK.
Il bit sbagliato sta nell'intersezione dei due insiemi che falliscono: ; non può essere il 4 perché il secondo controllo (che contiene il 4) è OK; quindi è il bit 2: lo si corregge. Perché funziona: ogni posizione ha un'impronta diversa nei tre controlli (1: , 2: , 3: , 4: , 5: , 6: , 7: ) e quindi l'insieme dei controlli falliti individua la posizione errata (distanza minima 3: ho verificato in Python che i 16 codeword stanno a distanza e che ogni errore singolo si corregge). Il codice corregge tutti gli errori singoli oppure rileva tutti gli errori singoli e doppi; con tre o più errori può sbagliare. Qui . Rimando a Codici di Hamming e CRCIl codice di Hamming $(2^h-1,,2^h-h-1)$ ha come matrice di controllo $H$ che ha per colonne tutte le sequenze non nulle di $h$ bit: colonne distinte e non nulle danno $d_{min}=3$, la sindrome di un errore singolo è la colonna corrispondente, quindi corregge 1 errore (o rivela 2) ed è un codice perfetto ($2^{n-k}=1+n$). Per $(7,4)$ e BSC: errore non rivelato $\simeq7P^3(1-P)^4$, parola sbagliata dopo correzione $\simeq\binom72P^2(1-P)^5$. Il CRC è un codice lineare ciclico usato per sola rivelazione: la parola è $m(x)x^r$ più il resto della divisione per il polinomio generatore $g(x)$ di grado $r$ (modulo 2); rivela ogni errore a burst di lunghezza $\le r$.Codici di Hamming e CRC → e Codici a blocco - distanza minima, rivelazione e correzioneLa codifica di canale aggiunge ridondanza in modo mirato: $k$ bit di informazione diventano una parola di codice di $n>k$ bit scelta tra $2^k$ parole ammesse. Se la parola ricevuta non è una parola di codice l'errore è rivelato (e si può chiedere la ritrasmissione, ARQ) oppure corretto (FEC). La qualità dipende dalla distanza minima di Hamming $d_{min}$: si rivelano fino a $d_{min}-1$ errori e se ne correggono $t<d_{min}/2$, ma non contemporaneamente. Per un BSC con $P_{bit}<1/2$ la decisione ottima ML coincide con quella a distanza minima. Limite di Hamming: $k/n\le1-\frac1n\log_2\sum_{r=0}^t\binom nr$.Codici a blocco - distanza minima, rivelazione e correzione →.
Burst e interleaving. Con un codice (7,4) si corregge un errore ogni sette bit. Ma alcuni fenomeni fisici concentrano gli errori nel tempo: burst (errori a raffica; per esempio 10 bit errati su 70, tutti consecutivi): il codice (7,4) fallirebbe pur con un errore su sette in media. L'interleaving distribuisce gli errori consecutivi su più blocchi: prima della trasmissione si scrivono i bit nelle righe di una matrice e si leggono le colonne; in ricezione si fa l'operazione inversa.
Esempio. 21 bit numerati , scritti per righe in una matrice (righe: , , ) e letti per colonne: si trasmette Un burst di 3 errori consecutivi colpisce (o altre terne): sono uno per riga. Dopo il de-interleaving, ciascuna riga (cioè ciascun blocco del codice (7,4)) ha un solo errore, correggibile. Senza interleaving i tre errori consecutivi sarebbero tutti nello stesso blocco: non correggibili.
Compromessi della codifica di canale.
- Bit-rate: aumentando si riduce l'overhead ma anche la capacità di ED ed EC.
- Complessità: codici più sofisticati migliorano ED/EC ma costano calcolo e memoria: i turbo codici (convoluzionali) hanno alta capacità di correzione; i codici LDPC (a blocchi con molto grande) prestazioni simili con costo in memoria alto ma non computazionale; Reed-Solomon e in generale i codici ciclici (CRC) sono efficienti in hardware, meno performanti. Stato dell'arte: LDPC per il payload ad alta velocità (5G, Wi-Fi), codici polar per canali di controllo e pacchetti brevi, Reed-Solomon per errori a burst (link ottici, storage).
- Ritardo: l'interleaving migliora la robustezza ai burst ma aggiunge ritardo; anche i codici convoluzionali richiedono latenza aggiuntiva.
7.3 Perdite per congestione
I pacchetti da inoltrare su un link occupato si accodano nel buffer di uscita del nodo, che ha capacità finita: quando è pieno c'è buffer overflow e bisogna scegliere cosa scartare. Politiche: drop tail (si scartano i nuovi arrivi a buffer pieno); early dropping casuale (sopra una soglia critica, per esempio 2/3 della capacità, si scartano pacchetti in coda a caso). Un pacchetto scartato può essere ritrasmesso dal nodo precedente, dalla sorgente o mai (dipende dai protocolli).
Packet loss rate : frazione complessiva dei pacchetti trasmessi non consegnati, per qualsiasi motivo (errori o overflow). I termini "tasso o probabilità di errore, perdita, scarto di pacchetti" (packet error / drop / loss rate) si usano spesso come sinonimi. Packet delivery ratio : frazione consegnata con successo.
Il PDR può essere diverso ai vari livelli, secondo i meccanismi di recupero: un L2 con un PHY inaffidabile può ridurre il visto da L3 con rilevazione e correzione d'errore, ritrasmissioni e interleaving.
8. Misurare le prestazioni: il comando ping
Il comando ping usa il protocollo ICMP (direttamente su IP, senza trasporto) per inviare pacchetti di bit a una destinazione che risponde con pacchetti della stessa dimensione; misura il RTT di ciascuno (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →). Ripetendo volte per ogni , il RTT osservato è la somma dei ritardi su tutti i link di andata e ritorno ( link in totale): , per cui
con coefficiente di , somma dei ritardi di accodamento (variabile con la ripetizione ) e ritardi di propagazione (costanti; il processing è trascurato). Il RTT cresce con , ma l'accodamento maschera la relazione. Per eliminarlo si prende il minimo tra le misure a costante: prima o poi un pacchetto trova tutte le code vuote, quindi è una retta. Dalla pendenza (per esempio con i minimi quadrati) si stima il throughput:
- se tutti gli link (andata e ritorno) hanno lo stesso throughput : , quindi ;
- se c'è un collo di bottiglia molto più lento degli altri, uguale in andata e in ritorno: , quindi .
Un esempio numerico è in Esercizio - Stima della banda con il comando ping (dispensa del corso).
Domande d'esame
1. Qual è la differenza tra bit-rate, throughput e goodput? Traccia: sono tutte velocità di trasferimento; cambia il livello: bit-rate = velocità nominale del livello fisico (tra nodi adiacenti), throughput = velocità effettivamente osservata a un livello tra 2 e 4 (sempre bit-rate per overhead, condivisione, attese dei protocolli), goodput = throughput a lungo termine utile all'applicazione. Vale bit-rate throughput goodput.
2. Quali sono le componenti del ritardo punto-punto e quali si possono ridurre? Traccia: processing, accodamento, trasmissione , propagazione ; la trasmissione si riduce aumentando il bit-rate, l'accodamento con priorità e controllo del traffico, il processing con instradamento efficiente; la propagazione no.
3. Un pacchetto di 2000 bit viaggia su un BSC con : qual è il PER? Traccia: .
Versione ripasso
Livelli. Pila di livelli: ciascuno offre un servizio (primitive: cosa, non come) al superiore tramite interfaccia e dialoga con il pari con un protocollo; un protocollo si può cambiare se servizio e interfacce restano (HTTP/3 su QUIC). L1: canale digitale per bit, single hop, inaffidabile; L2: single hop affidabile; L3: end-to-end senza connessione tra host; L4: end-to-end tra processi; L5: servizi. Pacchettizzazione: header + payload; il pacchetto di un livello è payload del livello inferiore. Vantaggi: efficienza, affidabilità (si ritrasmette solo il pacchetto errato), scalabilità, multiplexing statistico.
PDU, SDU, PCI. , . ; efficienza (cresce con la SDU, cala con l'header). Esempio: SDU 1200 B, header 60 B, Mbit/s: Mbit/s.
Bit-rate, throughput, goodput. (L1, nominale) (livello 2-4) goodput (L5). per overhead, condivisione e attese dei protocolli. Medio , istantaneo , lungo termine ; goodput = lungo termine a livello APP. Mbit/s bit/s. Esempio: PDU APP 1200 B ogni 10 ms, PHY 1260 B, Mbit/s: Mbit/s; istantaneo Mbit/s per ms e 0 per 9,9 ms; goodput kbit/s; overhead .
Ritardi. ; (riducibile alzando ), con m/s (non riducibile; domina su satelliti e tratte lunghe); accodamento dipende dal traffico (overflow perdite). Punto-punto minimo ; end-to-end dei nodali ( se uguali); . Esempio: 1000 bit, 1 Gbit/s, 1 km: s, s. Jitter = variabilità del ritardo; un ritardo costante non dà problemi, un picco provoca freezing; si assorbe con il playout buffer (costo: memoria e avvio).
BDP. , : bit in transito durante l'attesa dell'ACK; nel multi-hop si usa il bit-rate minimo; importante nelle Long Fat Networks. Con buffer di tx BDP non si trasmette in continuo: buffer 300 kbit, RTT 10 ms, 100 Mbit/s BDP Mbit, throughput Mbit/s. Esempio 10 link da 10 km, 10 kbit, 100 Mbit/s: s, s, s, BDP kbit pacchetti.
BSC. Ogni bit invertito con probabilità (simmetrico, i.i.d.). ; ; messaggio di pacchetti intatto con . , : (0,1%), : .
Codici di canale. ED/EC con ridondanza controllata (la codifica di sorgente toglie ridondanza non controllata). Blocchi o convoluzionali (con memoria); , overhead . Parità: mod 2; rivela errori dispari, mai pari; overhead . Hamming (7 bit, 4 dati; "(4,7)" nelle slide): , , ; ; ricevuto : falliscono i controlli e , intersezione , il 4 è escluso dal controllo OK bit 2. Corregge 1 errore o rivela 1-2; . Interleaving: scrivere per righe, leggere per colonne (matrice ): un burst di 3 errori finisce uno per riga, correggibile; costo: ritardo. Compromessi: bit-rate, complessità (turbo, LDPC, Reed-Solomon, polar), ritardo.
Perdite. Cause: errori e congestione (buffer overflow: drop tail, early dropping oltre una soglia). = frazione non consegnata; , diverso nei vari livelli.
Ping. , ; (retta, code vuote). Link uguali: ; collo di bottiglia: .
Errori tipici: confondere banda (Hz) e bit-rate; usare il bit-rate del primo link nel BDP; dimenticare i due versi (andata e ritorno) in ; calcolare il goodput con il traffico del PHY senza togliere gli header; dire che un codice di parità rileva anche gli errori pari; valutare il PER come .
Collegamenti: Protocolli per i servizi multimedialiLe applicazioni multimediali si appoggiano al livello di trasporto, che offre un canale per flussi di bit, end-to-end e tra processi (porte). TCP è affidabile, ordinato, con controllo di flusso e di congestione ma più oneroso (header 20-60 byte, handshake); UDP è senza connessione e best-effort (header 8 byte): per il real-time conviene UDP, lasciando all'applicazione le funzioni davvero necessarie. Famiglia RTP: RTP (numero di sequenza, timestamp, tipo di payload; su UDP; SRTP lo cifra), RTCP (feedback sulla qualità, sincronizzazione), RTSP (telecomando di rete per sessioni di streaming), RTMP (Adobe, su TCP); WebRTC (API JavaScript che integra RTP/SRTP, DTLS, ICE/STUN/TURN) e SIP (segnalazione). Videochiamata: codec + WebRTC o SIP + RTP/RTCP su UDP. Streaming live e on demand: HLS o MPEG-DASH su HTTP/TCP (o HTTP/3 su QUIC) con CDN, perché HTTP attraversa NAT e firewall e sfrutta le cache.Protocolli per i servizi multimediali →, Esercizio - Ritardi, throughput e BDP (domande ed esercizi del corso), Esercizio - Canale binario simmetrico e codici di canale (domande ed esercizi del corso).
Servizi dei livelli (tabella).
| Livello | Servizio |
|---|---|
| L1 PHY | canale digitale per bit, single hop, inaffidabile |
| L2 DLL | canale a pacchetti single hop, affidabile |
| L3 NET | canale a pacchetti end-to-end, senza connessione, tra host |
| L4 trasporto | canale end-to-end tra processi |
| L5 APP | servizi agli utenti |
Esempi svolti da ricordare.
- Overhead e throughput: ; 1200 B su 1260 B: , Mbit/s da 100.
- Goodput: se il traffico è sostenuto: kbit/s.
- Ritardo di trasmissione: s; propagazione di 10 km a m/s: s; per link s; 10 link: ms; kbit pacchetti.
- Satellite GEO: ms, Mbit.
- PER: , ; , ; messaggio di 750 pacchetti intatto con probabilità ; con codice che corregge 1 errore: , messaggio .
Domande tipiche.
- Differenza bit-rate, throughput, goodput: livello considerato; bit-rate throughput goodput (header, condivisione, attese dei protocolli).
- Componenti del ritardo punto-punto: processing, accodamento, trasmissione , propagazione ; si riduce la trasmissione alzando , mai la propagazione.
- PER su BSC: (corretto con probabilità ; è solo un'approssimazione).
- Perché il minimo nel ping: isola ritardi deterministici (code vuote); la media include l'accodamento.
- Perché interleaving e a che costo: distribuisce un burst su più blocchi, ritardo per riempire la matrice; profondità lunghezza del burst.
Esercizi su questo argomento
- Esercizio - Canale binario simmetrico e codici di canale (domande ed esercizi del corso)
- Esercizio - Domande di teoria su reti, qualità e streaming (domande ed esercizi del corso)
- Esercizio - Ritardi, throughput e BDP (domande ed esercizi del corso)
- Esercizio - Stima della banda con il comando ping (dispensa del corso)