Il testo introduce il concetto di qualità del servizio, o QoS, spiegando la differenza tra la capacità teorica di una connessione e le sue prestazioni reali. Vengono poi presentati concetti fondamentali come banda, throughput, latenza, RTT e jitter.
La lezione descrive anche il ruolo del buffer e del jitter buffer, utilizzati per compensare irregolarità nella ricezione dei dati, soprattutto nello streaming e nelle comunicazioni in tempo reale. Nella parte finale viene spiegato perché media diversi richiedono livelli diversi di qualità del servizio: testo e immagini sono meno sensibili al tempo, mentre videochiamate, live streaming e videogiochi online richiedono bassa latenza e continuità.
Viene infine introdotto il comando ping, utile per verificare la raggiungibilità di un host e misurare il tempo di risposta.
Qualità del servizio
Nel campo delle reti, il termine qualità del servizio, o più semplicemente QoS (dall’inglese Quality of Service), è utilizzato per indicare i parametri usati per caratterizzare la qualità del servizio offerto dalla rete (ad esempio, la velocità, la perdita di pacchetti, il ritardo ecc.) oppure gli strumenti e le tecniche per ottenere una qualità del servizio desiderata (Blake et al., 1998; International Telecommunication Union [ITU], 2011).
Di seguito è riportato un elenco degli attributi principali per definire la qualità di una connessione di rete.
Banda
La banda, in informatica, si riferisce alla quantità di dati che possono essere trasferiti da un punto all’altro in un dato periodo di tempo (Chimento & Ishac, 2008).
Banda=\frac{Dimensione\;delle\;informazioni}{Tempo\;di\;trasferimento}La banda viene misurata in bit al secondo (bps). Il bit rate indica infatti la quantità di bit trasferiti in un secondo. I suoi multipli più comuni sono kilobit al secondo (Kbps, mille bit al secondo), megabit al secondo (Mbps, un milione di bit al secondo) e gigabit al secondo (Gbps, un miliardo di bit al secondo) (Chimento & Ishac, 2008).
La banda può riferirsi a collegamenti diversi. Per esempio, può indicare la capacità di un collegamento della rete locale oppure quella dell’ultimo miglio, cioè del collegamento che connette la rete dell’utente alla rete dell’ISP (Chimento & Ishac, 2008).
Quando si parla della “velocità di Internet” di una connessione domestica, ci si riferisce normalmente alla banda disponibile sull’ultimo miglio.
Nel linguaggio delle reti, il termine banda viene spesso usato per indicare la capacità massima teorica di trasferimento dati di una connessione, misurata in bit al secondo (Chimento & Ishac, 2008).
In questo contesto, parlare di una connessione da 100 Mbps significa indicare che, in condizioni ideali, quella connessione può trasferire fino a 100 milioni di bit al secondo.
Questa velocità può variare a seconda di queste variabili (Chimento & Ishac, 2008; Constantine et al., 2011):
La larghezza di banda può essere simmetrica o asimmetrica (Constantine et al., 2011):
Molti ISP domestici offrono connessioni asimmetriche, con velocità di download più elevate rispetto alle velocità di upload. Questo avviene perché, statisticamente, siamo portati più a scaricare contenuti da Internet piuttosto che a caricare nuovi contenuti (Constantine et al., 2011).
Esempio
L’ADSL sta per Asymmetric Digital Subscriber Line. Tale tecnologia di connessione è asimmetrica perché la banda del downstream è maggiore della banda dell’upstream.
Un altro concetto importante è il throughput (Constantine et al., 2011).
Il throughput è la quantità effettiva di dati che viene trasferita in un certo intervallo di tempo. A differenza della banda teorica, il throughput tiene conto delle condizioni reali della rete, come congestione, interferenze, distanza, qualità del segnale, perdita di pacchetti e traffico generato da altri utenti (Constantine et al., 2011).
Quindi il throughput è sempre minore della banda o, al limite, uguale (Chimento & Ishac, 2008; Constantine et al., 2011).
Il throughput può dipendere da (Chimento & Ishac, 2008; Constantine et al., 2011):
Esempio
Devo scaricare un file di 20 MB (un byte equivale a 8 bit) e ci impiego 20 minuti.
\begin{aligned}
\text{Throughput}
&= \frac{20\,\mathrm{MB}}{20\,\mathrm{min}} \\[1em]
&= \frac{20\,000\,000\,\mathrm{B}}
{20 \cdot 60\,\mathrm{s}} \\[1em]
&= \frac{20\,000\,000 \cdot 8\,\mathrm{b}}
{20 \cdot 60\,\mathrm{s}} \\[1em]
&= \frac{160\,000\,000\,\mathrm{b}}
{1\,200\,\mathrm{s}} \\[1em]
&= 133\,333\,\mathrm{bps}
\approx 133\,\mathrm{kbps}
\end{aligned}Dalla larghezza di banda si può calcolare il tempo di trasferimento minimo teorico di un contenuto di una certa dimensione in byte (Chimento & Ishac, 2008).
Consideriamo la formula inversa della banda:
Tempo\;di\;trasferimento=\frac{Dimensione\;delle\;informazioni}{Banda}Esempio
Supponiamo di voler trasferire un file di 10 MB (10 megabyte) su un dispositivo con banda di 5 Mbit/s.
Il tempo di trasferimento sarà dato da:
\begin{aligned}
\text{Tempo di trasferimento}
&= \frac{10\,\mathrm{MB}}{5\,\mathrm{Mbps}} \\[1em]
&= \frac{10\,000\,000 \cdot 8\,\mathrm{b}}
{5\,000\,000\,\mathrm{bps}} \\[1em]
&= \frac{80\,000\,000\,\mathrm{b}}
{5\,000\,000\,\mathrm{bps}} \\[1em]
&= 16\,\mathrm{s}
\end{aligned}Latenza
La latenza (o tempo di latenza; in inglese: latency) è il tempo che intercorre tra l’invio di un pacchetto, di una richiesta o di un segnale e la sua ricezione o risposta da parte della destinazione: rappresenta il ritardo che si verifica tra l’inizio di un’azione e la sua effettiva esecuzione o risposta (ITU, 2019; Almes et al., 1999).
La latenza è misurata in millisecondi (ms) ed è influenzata da diversi fattori all’interno di una rete. Alcuni dei principali fattori che contribuiscono alla latenza includono (ITU, 2019; Almes et al., 1999):
È importante sottolineare che banda e latenza non sono la stessa cosa (ITU, 2019; Constantine et al., 2011).
Una connessione con molta banda può trasferire grandi quantità di dati al secondo, ma non è detto che abbia una latenza bassa.
La latenza dipende anche dalla distanza fisica, dal percorso seguito dai pacchetti, dalla congestione e dai tempi di elaborazione nei dispositivi di rete.
La latenza può avere un impatto significativo su diverse attività, specialmente in applicazioni che richiedono tempi di risposta rapidi, come i giochi online o le videochiamate (International Telecommunication Union [ITU], 2003; ITU, 2011).
Ad esempio, una latenza elevata nei giochi online potrebbe causare ritardi tra l’azione dell’utente e la risposta del gioco, influenzando negativamente l’esperienza di gioco.
In generale, una latenza bassa è preferibile, soprattutto per le applicazioni in tempo reale, poiché consente un funzionamento più fluido e responsivo della rete.
Gli operatori di rete e gli ingegneri di rete cercano costantemente di migliorare la latenza attraverso l’ottimizzazione dell’infrastruttura, l’implementazione di tecnologie avanzate e l’uso di protocolli efficienti.
Esempio
Una connessione con latenza intorno a 15–30 ms può risultare molto reattiva per giochi online. Invece, una latenza di 80–100 ms è ancora utilizzabile, ma può rendere più percepibile il ritardo nelle applicazioni in tempo reale.
Il Round Trip Time (RTT, tempo di andata e ritorno) è una misura correlata alla latenza: rappresenta il tempo che intercorre tra l’invio di un pacchetto verso una destinazione e la ricezione della relativa risposta da parte del mittente (Almes et al., 1999).
In altre parole, il RTT è il tempo totale necessario per completare un giro (andata e ritorno) tra due punti di una connessione di rete.
In una rete ideale e simmetrica, il RTT può essere considerato circa il doppio della latenza solo andata, perché comprende sia il tempo necessario per raggiungere la destinazione sia il tempo necessario per ricevere la risposta. Nelle reti reali, però, questa relazione non è sempre precisa, perché il percorso di andata e quello di ritorno possono avere ritardi diversi (Almes et al., 1999).
Jitter
Il jitter è un altro importante concetto particolarmente rilevante per applicazioni in tempo reale, come le chiamate vocali su Internet o le videoconferenze (Schulzrinne et al., 2003; Demichelis & Chimento, 2002).
Il jitter rappresenta la variazione nella latenza dei pacchetti di dati mentre viaggiano da una sorgente a una destinazione sulla rete (Demichelis & Chimento, 2002).
Il jitter può essere problematico per le applicazioni in tempo reale perché può causare fenomeni come ritardi nella trasmissione della voce o delle immagini durante una videochiamata (Schulzrinne et al., 2003; Morton & Claise, 2009).
Se il jitter è basso, il flusso dei pacchetti è più uniforme e l’esperienza dell’utente è migliore, in quanto ci sono meno interruzioni o problemi di sincronizzazione tra i partecipanti.
Le cause del jitter possono essere diverse, tra cui (Morton & Claise, 2009):
Per affrontare il jitter e migliorare la qualità delle comunicazioni in tempo reale, i fornitori di servizi di rete e gli sviluppatori di applicazioni implementano diverse tecniche, come la prioritizzazione del traffico, l’utilizzo di buffer (vedremo fra poco questa tecnica) o la scelta di percorsi di rete più stabili, al fine di ridurre la variabilità nella latenza e mantenere un flusso regolare dei dati (Blake et al., 1998; Morton & Claise, 2009).
Possiamo vedere il jitter come la deviazione standard della latenza (Demichelis & Chimento, 2002).
La deviazione standard è una misura statistica che rappresenta la dispersione o la variabilità di un insieme di dati rispetto alla loro media. In altre parole, indica quanto i valori di un dato campione tendono a differire dalla media campionaria.
Esempio
Se la media di un insieme di dati è 5 e la deviazione standard è 0, vuol dire che tutti i dati sono uguali a 5.
Buffer
Il termine buffer indica una porzione di memoria temporanea usata per compensare differenze di velocità tra due dispositivi o processi che si scambiano dati (Morton & Claise, 2009).
In pratica, il buffer accumula dati in attesa di essere elaborati o trasmessi, agendo da “cuscinetto” (da cui il nome) tra chi produce i dati e chi li consuma.
Immagina un rubinetto da cui l’acqua esce più velocemente di quanto il bicchiere possa raccoglierla senza traboccare: serve un contenitore intermedio.
Nei sistemi digitali, quel contenitore è il buffer: una RAM temporanea che aiuta a compensare differenze di velocità e irregolarità temporali.
Esempio
Alcuni esempi concreti di uso del buffer:
Un uso importante del buffer su Internet è limitare gli effetti delle variazioni temporanee nella ricezione dei dati. Per esempio, nello streaming video o audio, il buffer serve a caricare in anticipo una parte del contenuto, in modo da evitare interruzioni durante la riproduzione (Morton & Claise, 2009).
Quando l’utente avvia un video, per esempio su YouTube, Netflix o Spotify, il sistema non riproduce immediatamente ogni dato appena ricevuto.
Invece, accumula una porzione del contenuto in un buffer locale, cioè in una memoria temporanea. Quando il buffer contiene abbastanza dati, inizia la riproduzione.
Nel frattempo, nuovi dati continuano ad arrivare e a riempire il buffer.
Questo processo protegge da rallentamenti temporanei della rete e permette una riproduzione più fluida, anche se i dati non arrivano sempre con regolarità.
Se però il flusso in ingresso nel buffer rimane stabilmente superiore alla capacità di elaborazione o riproduzione, il buffer finirà per riempirsi, causando attese, scarti o interruzioni.
Nei flussi in tempo reale, come chiamate vocali e videochiamate, si parla più specificamente di jitter buffer (Morton & Claise, 2009).
Un jitter buffer è un buffer progettato per compensare le variazioni nei tempi di arrivo dei pacchetti, mantenendo però la latenza più bassa possibile (Morton & Claise, 2009).
La differenza principale è:

Il buffer è usato per compensare il jitter e rendere regolare la riproduzione.
Qualità di servizio nei media
Avere una qualità di servizio adeguata per visualizzare i media è importante visto che una qualità di servizio bassa comporta un degrado del media stesso (Blake et al., 1998; ITU, 2011).
La qualità di servizio può avere specifiche diverse in base alle diverse tipologie di media (ITU, 2011; Schulzrinne et al., 2003):
La gestione della qualità di servizio nei media presenta quattro livelli di difficoltà, in ordine crescente (ITU, 2011; Schulzrinne et al., 2003):
Ping
Un modo semplice per analizzare la qualità del servizio è il ping (Postel, 1981; Almes et al., 1999).
Il ping è un comando di rete usato per verificare se un host è raggiungibile tramite una rete IP e per misurare il tempo di risposta. Può anche aiutare a individuare eventuali perdite di pacchetti, osservando se alcune richieste non ricevono risposta (Postel, 1981; Almes et al., 1999).
Il nome deriva dal suono del sonar nei sottomarini: come un’eco sonora verifica se qualcosa risponde, il ping verifica se un host risponde su Internet o in una LAN.
Il ping lo si può scrivere come comando del terminale del sistema operativo. Per esempio, se si scrive:
ping google.com
Il risultato sarà:
Risposta da 142.250.184.14: byte=32 tempo=24ms TTL=118
Dove:






No responses yet