Network performance - Banda e latenza nei collegamenti digitali

Quanto è “buona” la connessione?

Network performance - Banda e latenza nei collegamenti digitali

La prestazione di un collegamento, o di una rete di collegamenti, è ovviamente legata al servizio che si intende realizzare con tale collegamento. In generale, la performance  si può comunque caratterizzare tramite alcuni parametri, tra cui i fondamentali comprendono la banda, la portata effettiva (il termine inglese throughput è spesso utilizzato anche in italiano) e la latenza (latency, o anche delay).

Un’analogia è quella con il traffico stradale. Un tratto autostradale può essere progettato per consentire l’ingresso (e l’uscita dall’altro capo) di, diciamo, 1000 autovetture al minuto. Questo numero esprime la banda del collegamento. Se per qualche motivo si genera in un punto una congestione, un ingorgo stradale, questo numero inevitabilmente si riduce, ad esempio a 100 autovetture al minuto. Questo è il throughput, ovvero la portata effettiva del collegamento. Il tratto autostradale in questione è quindi teoricamente capace di accogliere 1000 autovetture al minuto, ma in realtà, a causa delle condizioni del traffico, la sua capacità può essere ridotta a sole 100 autovetture al minuto. Il tempo di transito di un’autovettura da un capo all’altro rappresenta invece la latenza del collegamento. Questo tempo di transito può essere anch’esso ovviamente influenzato da eventuali congestioni lungo il tragitto.

Bandwidth

La banda del collegamento è la massima quantità di dati, o di bit, che può essere trasmesso nell’unità di tempo, ovvero ogni secondo. Si misura generalmente in bps, cioè bit per secondo (nel senso di bit per ciascun secondo: è una divisione, non una moltiplicazione). Ad esempio lo standard chiamato Gigabit Ethernet, molto comune nelle reti locali, offre una banda disponibile di 1 Gbs, cioè un miliardo di bit può essere trasmesso ogni secondo su tale canale, almeno in via teorica.

Il concetto di banda passante è ben noto a chi si occupa di audio o di radiofrequenze, anche se in tale contesto la banda è misurata tipicamente in hertz. La caratterizzazione in bps della banda di un canale trasmissivo digitale è legata alla banda passante in hertz mentre dipende anche, contemporaneamente, dal rapporto tra segnale e rumore ottenibile per lo stesso collegamento, secondo una relazione ben nota (Shannon, 1948) che, per quanto non eccessivamente complessa, mi sembra poco utile riportare qui. La capacità di trasmissione in bps migliora (cioè aumenta) all’aumentare della banda e all’aumentare del rapporto segnale/rumore, ovvero un collegamento meno rumoroso permette, a parità di banda passante in hertz, di trasmettere più bit al secondo.

Throughput

Il throughput è la quantità di dati che può effettivamente attraversare il canale, e rappresenta una misura della velocità di trasmissione attraverso il collegamento. Anche se possono sembrare simili, banda e throughput esprimono in effetti concetti differenti. La banda è la capacità massima di trasmissione dati di cui il collegamento è teoricamente capace, mentre il thoughput è la velocità effettiva della trasmissione dati. Ovviamente, il throughput non può essere in alcun caso superiore alla banda disponibile.

Il rapporto tra throughput e bandwidth è, prima di tutto, legato al protocollo di trasmissione. Nel caso, per esempio, dell’utilizzo di un canale condiviso statisticamente soggetto a collisioni, come un canale wireless, quando diversi utenti cercano di comunicare contemporaneamente la sovrapposizione dei segnali (collisione) può portare alla perdita di pacchetti e alla necessità di ritrasmissione, diminuendo quindi il throughput nel canale. Anche nel caso di connessioni gestite (via switch, per esempio), l’eventuale trasmissione contemporanea da più sorgenti verso una stessa destinazione porta comunque, se non alla perdita di pacchetti, alla formazione di code e quindi, di nuovo, alla diminuzione del throughput rispetto a quella che sarebbe la banda concessa in via teorica dal collegamento.

Più banalmente possiamo pensare, ad esempio, a un dispositivo connesso ad un estremo di un collegamento Gigabit Ethernet, ad esempio un router in grado di gestire un massimo di 100 Mbs: in questo caso la banda disponibile per il collegamento in sé sarà di 1 miliardo di bit al secondo, mentre il throughput non potrà effettivamente superare, pur nel migliore dei casi (assenza di collisioni), i 100 milioni di bit al secondo ammessi dal dispositivo.

Latency

La latenza definisce il tempo impiegato per trasmettere completamente un messaggio dalla sorgente alla destinazione: dall’istante in cui il primo bit è trasmesso dalla sorgente fino a quando l’ultimo bit è arrivato a destinazione.

La latenza si può generalmente pensare composta dalla somma di quattro contributi separati:

• il ritardo di trasmissione

• il ritardo di propagazione

• il ritardo di instradamento

• il ritardo di elaborazione

Il ritardo di trasmissione, o tempo di trasmissione, è il tempo impiegato dalla sorgente per trasferire un pacchetto di dati completo sul canale di trasmissione. Questo tempo dipende sostanzialmente dalla banda del canale e dalle dimensioni del messaggio. Il tempo di trasmissione è, in effetti, pari al rapporto tra dimensioni del messaggio (in bit) e banda del canale (in bit al secondo):

Il ritardo di propagazione è il tempo che un bit impiega per attraversare completamente il canale fisico di trasmissione, dal dispositivo sorgente al dispositivo destinazione. Questo tempo dipende quindi dalla distanza tra i dispositivi ai capi del collegamento e dalla velocità di propagazione dei dati sul canale.


Il ritardo di propagazione è necessariamente limitato dalla velocità della luce. Questa è infatti la velocità massima con cui un segnale può propagarsi attraverso qualunque mezzo trasmissivo. Per avere un’idea di quanto possa influire questo fattore: la circonferenza equatoriale del pianeta Terra è lunga circa 40.000 km; la luce percorre circa 300.000 km/s, per cui un segnale alla velocità della luce potrebbe fare il giro del mondo in circa 0,13 s, cioè 130 ms. Quindi due punti agli antipodi, diciamo due computer uno in Italia e un altro in Nuova Zelanda, oppure tra New York negli USA e Perth in Australia, potranno comunicare con un tempo di propagazione, e di conseguenza una latenza, non inferiore a circa 65 ms.

Il ritardo di instradamento è il tempo trascorso in coda, ovvero il tempo di attesa richiesto da ogni dispositivo intermedio e/o dal dispositivo terminale prima che il messaggio sia instradato e/o elaborato. Da notare che il ritardo di instradamento non è in genere un valore fisso a priori, ma dipende dalla situazione di congestione della rete: se la rete è molto trafficata, è facile che il messaggio trasmesso passi più tempo in coda. 

Il ritardo di elaborazione è il tempo richiesto da ciascun nodo per elaborare il messaggio, prima di instradarlo sul prossimo tratto di rete vero il dispositivo successivo, o prima di poterlo considerare effettivamente ricevuto dal dispositivo finale.

Round Trip Time (RTT)

Un parametro connesso alla latenza è il cosiddetto round trip time (RTT), ovvero il tempo di andata e ritorno sul canale. In alcuni protocolli, ove si ritenga importante assicurarsi della ricezione di un dato al fine, ad esempio, di ritrasmetterlo in caso di perdita, ad ogni pacchetto trasmesso corrisponde un pacchetto di ritorno chiamato per l’appunto acknowledgement (riconoscimento); in tal caso, la trasmissione di un pacchetto si può dire conclusa quando è stato ricevuto il relativo acknowledgement. Nel caso di un canale non condiviso e senza nodi intermedi, il tempo di andata e ritorno è ovviamente pari al doppio del tempo di propagazione, almeno in prima approssimazione.

Nel caso in cui il tempo di propagazione fosse pari a circa 65 ms, corrispondente alla distanza tra due dispositivi a New York e a Perth, il tempo di round-trip non potrà essere inferiore a 130 ms. Un protocollo che cerchi di assicurare la trasmissione di tutti i pacchetti attraverso la ricezione dei corrispondenti acknowledgement non potrà quindi assicurare una banda superiore a circa sette o otto pacchetti al secondo! Esistono fortunatamente metodi per migliorare tale performance, almeno in termini di throughput (ma non in termini di latenza), anche in dipendenza dal servizio che la specifica trasmissione dati intende fornire, ad esempio utilizzando, quando possibile, meccanismi di caching. Oppure è sufficiente, ad esempio, non richiedere l’acknowledgement (ammettendo la perdita di qualche pacchetto): nella trasmissione di uno streaming audio/video, ad esempio, perdere un pacchetto ogni tanto non sarà un dramma: la quantità di pacchetti persi, soprattutto oltre una certa soglia, influirà certo sulla qualità complessiva del servizio, ma sarà possibile sfruttare meglio la banda concessa dal canale. In questo caso, la percentuale di pacchetti persi, e quindi la qualità del servizio, si potrà stimare ad esempio scambiandosi qualche pacchetto di prova prima dell’avvio dello streaming vero e proprio.

Un metodo per valutare il tempo di round-trip tra un computer e un dispositivo remoto è il ping, che è un software installato praticamente in ogni computer: basta digitare ping  in un terminale – sia su Mac OS, sia su Windows, sia su Linux – e il computer invierà un pacchetto di prova al dispositivo remoto, attendendo la risposta e misurando quindi il tempo di round-trip, valutando inoltre alcune statistiche elementari tra cui la percentuale di pacchetti persi. Per questo il tempo di round-trip è anche detto tempo di ping: perché è il tempo restituito dall’utility ping.

Come già scritto sopra, la latenza (e il tempo di round-trip) non sono determinati solamente dalla velocità di propagazione dei segnali nel mezzo trasmissivo, anzi: la maggior parte della latenza è dovuta spesso al tempo di gestione dei pacchetti da parte dei vari dispositivi sulla rete. Ad esempio il ping tra il computer da cui sto scrivendo e il router verso internet nella stanza accanto, distanti tra loro pochi metri (e un paio di nodi intermedi), mi restituisce un RTT di circa 3 o 4 ms, dei quali il tempo di propagazione è una parte senz’altro trascurabile.

D’altra parte un ping verso un DNS pubblico locato ad Auckland, in Nuova Zelanda, mi restituisce un RTT intorno a 300 ms, di cui evidentemente circa la metà imputabili alla mera propagazione del segnale nel mezzo.

Conclusioni

Una buona connessione offre throughput elevato e bassa latenza. Il throughput influisce sulla quantità di dati che può essere effettivamente trasmessa nell’unità di tempo, quindi in definitiva sulla qualità del segnale trasmesso in termini di banda. Ad esempio uno stream audio stereo @ 24 bit / 96 kHz non compresso ha bisogno di almeno 2 × 24 × 96.000 = 4,61 Mbps (in upload dalla sorgente, in download dalla destinazione). La latenza influisce invece sul ritardo percepito tra i due estremi del collegamento. Nel caso, ad esempio, di due giocatori che competono online l’uno con l’altro, la gran parte delle informazioni, come la grafica e le ambientazioni, sono memorizzate nei rispettivi dispositivi e non occupano banda sul canale di collegamento; quelle che devono invece essere trasmesse sono informazioni semplici, pochi byte, indicanti ad esempio la posizione degli avatar nell’ambiente virtuale o le caratteristiche del moto di eventuali proiettili, o eventuali dialoghi: in questo caso, latenze troppo elevate possono rendere il gioco difficoltoso o persino inutilizzabile. Un servizio come Netflix, d’altra parte, ha bisogno di banda ma praticamente non risente della latenza, eventualmente pre-scaricando porzioni più o meno ampie di contenuto prima dell’inizio dello streaming vero e proprio, o durante eventuali pause.

Per una sessione musicale a distanza in tempo reale, come ne abbiamo viste negli scorsi mesi, sarà necessaria una banda relativamente elevata, in dipendenza della qualità richiesta, soprattutto verso i nodi in cui si esegue il mix e lo streaming pubblico. Tra un musicista e l’altro si potrà invece cercare un compromesso, in termini di banda, dato che lo scopo è essenzialmente il monitoraggio quindi, in sostanza, basta che il segnale trasmesso sia ragionevolmente comprensibile. Tra un musicista e l’altro, però, la latenza non può essere troppo elevata, altrimenti sarà praticamente impossibile sincronizzare i musicisti tra loro.