Latency, jitter e packet loss: i tre nemici delle reti radio digitali.

La fibra misura 900 Mbit/s.

Il ripetitore riceve perfettamente.

Il segnale RF è eccellente.

Eppure la voce arriva:

  • spezzata;
  • robotica;
  • in ritardo;
  • con parole mancanti.

Com’è possibile?

Perché per una rete radio digitale la velocità massima della connessione è spesso molto meno importante della qualità con cui arrivano i singoli pacchetti.

Tre parametri sono particolarmente importanti:

latency

jitter

packet loss

Sono tre concetti differenti e comprenderli permette di diagnosticare gran parte dei problemi audio presenti nelle reti digital voice.

Gli standard IETF dedicati alle applicazioni real-time distinguono chiaramente perdita dei pacchetti e variazione dei tempi di arrivo; RFC 3550, ad esempio, tratta l’interarrival jitter come una misura a breve termine della variazione nel comportamento della rete e osserva che perdita e jitter possono indicare forme differenti di congestione.


1. Latency: quanto impiega un pacchetto?

Immaginiamo:

RIPETITORE A
      │
      ▼
   INTERNET
      │
      ▼
   SERVER

Un pacchetto parte alle:

10:00:00.000

e arriva alle:

10:00:00.035

Il ritardo one-way è:

35 ms

Questa è la latenza.


Ping e RTT

Quando utilizziamo:

ping server

misuriamo normalmente il:

RTT

ovvero:

Round Trip Time.

Il pacchetto va:

A → B

e la risposta ritorna:

B → A

Se leggiamo:

40 ms

non significa automaticamente:

20 ms + 20 ms

perché il percorso in una direzione può essere diverso dall’altro.

Ma il ping resta un ottimo indicatore iniziale.


La latenza non deve per forza essere bassissima

Una rete con:

50 ms

costanti può funzionare perfettamente.

Una rete con:

5 ms
20 ms
150 ms
10 ms
400 ms

può essere molto più problematica.

Per la voce real-time conta quindi non soltanto:

quanto ritardo abbiamo

ma anche:

quanto è stabile.

Ed eccoci al jitter.


2. Jitter: quando i pacchetti non arrivano con ritmo regolare

Supponiamo che il trasmettitore produca pacchetti ogni 20 ms:

P1  0 ms
P2 20 ms
P3 40 ms
P4 60 ms
P5 80 ms

La rete ideale li consegna:

P1 100 ms
P2 120 ms
P3 140 ms
P4 160 ms
P5 180 ms

Abbiamo latenza:

100 ms

ma perfettamente regolare.


Ora introduciamo jitter

I pacchetti arrivano:

P1 100 ms
P2 122 ms
P3 171 ms
P4 164 ms
P5 181 ms

La latenza cambia continuamente.

Un pacchetto arriva tardi.

Uno magari arriva persino dopo quello successivo.

Questa variazione temporale è ciò che normalmente chiamiamo jitter o packet delay variation.

RFC 3393 sottolinea che il termine “jitter” viene usato con significati differenti e formalizza invece il concetto di variazione del ritardo dei pacchetti IP.


Perché il jitter è un problema per la voce?

L’altoparlante deve riprodurre un flusso regolare.

Non può fare:

audio
audio
...
silenzio
AUDIO VELOCISSIMO
...
silenzio

soltanto perché Internet ha consegnato i pacchetti in maniera irregolare.

Serve quindi un:

jitter buffer.


Il jitter buffer

Il ricevitore aspetta volutamente un piccolo intervallo prima di iniziare la riproduzione.

Per esempio:

PACCHETTI INTERNET
       ↓
       ↓
 JITTER BUFFER
 P1 P2 P3 P4
       ↓
uscita regolare
       ↓
     AUDIO

Il buffer assorbe piccole variazioni nei tempi di arrivo.

RFC 7657 evidenzia che un riordinamento limitato contenuto all’interno del jitter buffer può essere gestito senza effetti percepibili, mentre pacchetti che arrivano oltre la capacità del buffer possono causare glitch e disturbi.


Buffer enorme? Problema risolto?

No.

Supponiamo di impostare:

jitter buffer = 2 secondi

Avremmo probabilmente grande tolleranza alle variazioni.

Ma ogni QSO avrebbe:

2 secondi

di ulteriore ritardo.

Per una conversazione Push-To-Talk sarebbe fastidiosissimo.

Quindi dobbiamo trovare un compromesso:

buffer piccolo
→ poca latenza
→ poca tolleranza al jitter

buffer grande
→ maggiore tolleranza
→ maggiore latenza

È uno dei classici compromessi delle comunicazioni real-time.


3. Packet loss: il pacchetto non arriva

Ora immaginiamo:

P1 ✓
P2 ✓
P3 X
P4 ✓
P5 ✓

P3 è stato perso.

Questa è:

packet loss.

RFC 3550 prevede proprio metriche per calcolare la frazione di pacchetti persi rispetto a quelli attesi in un intervallo di osservazione.


Perché non chiediamo semplicemente di ritrasmetterlo?

Perché la voce è real-time.

Immaginiamo che P3 appartenga alla sillaba:

“buon…”

Quando il sistema scopre la perdita e ritrasmette il pacchetto, potremmo essere già arrivati alla parola successiva.

Il pacchetto sarebbe corretto ma:

troppo tardi.

RFC 7657 osserva che nelle comunicazioni interattive i dati che arrivano sufficientemente tardi vengono spesso scartati e che la ritrasmissione può diventare controproducente.


Questo spiega perché viene spesso utilizzato UDP

UDP non garantisce:

  • consegna;
  • ordine;
  • ritrasmissione.

Ma proprio per questo evita di fermare il flusso aspettando dati vecchi.

Nelle applicazioni real-time è spesso preferibile:

perdere P3

e continuare con:

P4

piuttosto che bloccare tutto.


Cosa fa il decoder quando manca un pacchetto?

Dipende dal sistema.

Può:

  • ripetere informazioni precedenti;
  • interpolare;
  • generare comfort audio;
  • silenziare;
  • tentare error concealment.

La famiglia di standard RTCP XR prevede perfino metriche specifiche per indicare periodi nei quali il ricevitore ha dovuto generare audio locale per mascherare pacchetti mancanti o scartati.

Quando la perdita diventa troppo elevata sentiamo:

  • pezzi di parola mancanti;
  • audio robotico;
  • gorgoglii;
  • drop;
  • silenzi.

Loss e jitter possono sembrare la stessa cosa

Un pacchetto può tecnicamente arrivare.

Ma se arriva:

troppo tardi

il jitter buffer lo scarta.

Dal punto di vista della rete:

packet delivered

dal punto di vista dell’audio:

packet unusable

Per questo le metriche applicative distinguono spesso:

network loss

da:

packet discard

RFC 4710 osserva infatti che perdita di rete e pacchetti scartati dall’applicazione possono avere effetti simili sulla qualità percepita pur avendo cause differenti.


Una connessione a 1 Gbit può fare pessimo digital voice

Supponiamo:

DOWN 940 Mbit/s
UP   500 Mbit/s

ma:

packet loss 3%
jitter 80 ms

Una rete digital voice può funzionare male.

Al contrario:

10 Mbit/s

con:

loss ≈ 0
jitter molto basso
latency stabile

può funzionare magnificamente.

Questo perché la voce digitalizzata utilizza relativamente poca banda, ma necessita di regolarità.


Bandwidth non è quality

È importante distinguere:

BANDWIDTH

da:

QUALITY

Bandwidth significa:

quanti bit possiamo trasportare.

Latency significa:

quanto impiegano.

Jitter significa:

quanto varia quel tempo.

Packet loss significa:

quanti non arrivano utilizzabili.

Sono quattro parametri differenti.


Il bufferbloat

Un problema particolarmente subdolo nasce quando una linea viene saturata.

Scenario:

fibra / LTE
       │
       ├── digital voice
       ├── backup cloud
       └── telecamera

Parte un upload enorme.

Il router mette centinaia di pacchetti in coda.

La banda non è necessariamente persa.

Ma i pacchetti voice devono aspettare.

Risultato:

latency ↑
jitter ↑

Il QSO inizia a degradarsi.


Il test classico

Proviamo:

ping server

senza traffico.

Risultato:

25 ms
26 ms
24 ms
25 ms

Perfetto.

Ora lanciamo un upload importante.

Il ping diventa:

30 ms
70 ms
240 ms
800 ms
350 ms

Questo è un segnale fortissimo di code eccessive.


QoS può aiutare

Se il router distingue:

VOICE

da:

DOWNLOAD

può dare priorità ai pacchetti real-time.

Per esempio:

HIGH PRIORITY
   digital voice
   VPN management

NORMAL
   web

LOW
   backup
   aggiornamenti

RouterOS permette di classificare e marcare traffico anche attraverso parametri come IP, porta e DSCP.


Ma DSCP non è magia su Internet

Possiamo marcare:

DSCP

all’interno della nostra rete.

Questo può funzionare benissimo:

ripetitore
↓
router locale
↓
WAN

Ma non possiamo pretendere che tutti gli ISP mantengano quella priorità.

RFC 7657 osserva esplicitamente che i valori DSCP possono essere modificati o azzerati ai confini delle reti degli operatori.

Quindi QoS è particolarmente utile sulla nostra parte della rete, soprattutto nel punto di congestione:

LAN → WAN

Il vero collo di bottiglia è spesso l’upload

Una connessione domestica può essere:

1000 Mbit down
100 Mbit up

Se saturiamo:

100 Mbit up

anche la gestione delle code può peggiorare.

Non guardiamo soltanto il download pubblicizzato dall’operatore.


LTE e 5G: il problema della variabilità

Una rete cellulare può passare rapidamente da:

30 ms

a:

150 ms

a causa di:

  • congestione;
  • scheduling radio;
  • cambio cella;
  • condizioni RF;
  • carico della rete.

Non significa necessariamente che LTE sia inadatto.

Significa che dobbiamo osservare:

la stabilità nel tempo.


Starlink

Lo stesso concetto vale per una rete satellitare.

Il throughput può essere elevato, ma per un sistema real-time interessa soprattutto monitorare:

latency
jitter
loss
outage

e non soltanto:

speed test

Wi-Fi: spesso il problema è dentro casa

Immaginiamo:

Internet perfetto

ma:

Raspberry → Wi-Fi

su un canale congestionato.

Possiamo avere:

retransmission RF
interferenze
collisioni
packet loss

prima ancora che il pacchetto raggiunga il router.

Per una postazione fissa importante preferirei:

Ethernet

quando possibile.


Come diagnostichiamo?

Non iniziamo cambiando dieci configurazioni.

Seguiamo il percorso.

REPEATER
   ↓
ROUTER
   ↓
ISP
   ↓
INTERNET
   ↓
SERVER

Testiamo ogni tratto.


Test 1: ping

ping IP_SERVER

Osserviamo:

  • media;
  • minimo;
  • massimo;
  • packet loss.

Ma soprattutto guardiamo la dispersione.

Esempio buono:

21
22
21
23
22

Esempio sospetto:

20
21
180
23
450

La media da sola potrebbe nascondere il problema.


Test 2: ping continuo

Un test di:

10 secondi

può non mostrare nulla.

Meglio misurare per:

ore

se il problema è intermittente.

Con Prometheus possiamo registrare:

latency
loss
availability

e Grafana può mostrarne l’andamento.


Test 3: confrontiamo i gateway

ping router locale
ping gateway ISP
ping VPS

Se:

router locale = instabile

problema LAN.

Se:

router locale = perfetto
VPS = instabile

problema WAN/percorso.


Test 4: MTR/traceroute

Un traceroute mostra il percorso.

MTR ripete continuamente le misurazioni.

Possiamo osservare:

HOP 1 router
HOP 2 ISP
HOP 3 backbone
HOP 4 server

Ma attenzione: alcuni router limitano o deprioritizzano ICMP, quindi una perdita apparente su un hop intermedio non significa automaticamente perdita del traffico reale.

La cosa più importante è ciò che osserviamo alla destinazione finale.


Test 5: iperf3 UDP

Se controlliamo entrambi gli endpoint possiamo utilizzare iperf3.

Il progetto ufficiale supporta test:

TCP
UDP
SCTP

e la modalità UDP viene attivata con:

iperf3 -c SERVER -u

La documentazione corrente di iperf3 descrive anche bitrate, test inversi e bidirezionali.

Esempio:

iperf3 -s

sul server.

Sul sito:

iperf3 -c 10.0.0.1 -u -b 500K -t 60

Non serve necessariamente sparare 100 Mbit/s.

Per simulare un’applicazione radio è spesso più interessante usare un bitrate realistico e osservare stabilità e perdita.


Testare entrambe le direzioni

Problema frequente:

SITE → SERVER perfetto

ma:

SERVER → SITE pessimo

Con iperf3 possiamo invertire la direzione tramite:

-R

oppure usare test bidirezionali nelle versioni che supportano l’opzione dedicata.


Monitoring reale

Per ogni ripetitore registrerei almeno:

WAN UP/DOWN
RTT
packet loss
jitter o delay variation
VPN status

Una dashboard potrebbe mostrare:

RPTR TORTONA

RTT AVG       32 ms
RTT MAX       51 ms
LOSS          0.0 %
JITTER        LOW
VPN           UP
WAN           STARLINK

Gli spike contano più della media

Supponiamo:

media = 35 ms

Sembra ottimo.

Ma se ogni minuto abbiamo:

1500 ms

per due pacchetti, l’audio può comunque avere drop percepibili.

Quindi registrerei:

  • median;
  • percentile;
  • max;
  • loss.

Non soltanto average.


Baseline

Ogni sito ha caratteristiche differenti.

Prima registriamo una condizione sana.

Per esempio:

RTT normale: 25–35 ms
loss normale: 0 %

Se improvvisamente vediamo:

RTT: 80–200 ms
loss: 2 %

abbiamo un’indicazione concreta.

CISA, anche in ambito di sicurezza e network monitoring, raccomanda di stabilire baseline del normale comportamento della rete proprio per poter individuare anomalie.


Quando il problema è il server

Non sempre il problema è Internet.

Il reflector può avere:

CPU 100%
RAM esaurita
NIC congestionata
processo bloccato

Il risultato percepito può assomigliare a packet loss di rete.

Quindi monitoriamo anche:

CPU
load
network queue
RAM
process

Quando il problema è il transcoder

Nei bridge multiprotocollo:

DMR
 ↓
TRANSCODER
 ↓
YSF

un carico eccessivo può produrre:

  • buffering;
  • frame in ritardo;
  • latenza;
  • drop.

Il percorso va quindi analizzato end-to-end.


Una semplice metodologia diagnostica

Se l’audio è pessimo:

STEP 1

RF OK?

Controlliamo BER, RSSI, modulazione.

STEP 2

LAN OK?

Ping router.

STEP 3

WAN OK?

Ping server.

STEP 4

LOSS?

Test prolungato.

STEP 5

JITTER?

Osserviamo variazioni temporali.

STEP 6

SERVER OK?

CPU e network.

STEP 7

TRANSCODER?

Controlliamo buffering e carico.

Questo evita di attribuire a Internet un problema che in realtà nasce dalla RF.


Le tre firme tipiche

Alta latency ma stabile

250
251
249
252

Audio probabilmente regolare ma QSO molto ritardato.


Bassa media, jitter elevato

20
22
180
19
450
21

Audio con possibile instabilità e buffer stressato.


Packet loss

20 ms
21 ms
TIMEOUT
22 ms
TIMEOUT
20 ms

Possibili sillabe mancanti e drop.


Il caso peggiore

latency alta
+
jitter alto
+
loss

In quel caso il jitter buffer deve crescere.

Crescendo aumenta la latenza.

Se comunque i pacchetti arrivano troppo tardi, vengono scartati.

La qualità precipita.


La soluzione non è sempre “più banda”

Se il problema è:

jitter

passare da:

100 Mbit

a:

1 Gbit

può non cambiare nulla.

Se invece la causa è saturazione del link, aumentare la banda può aiutare indirettamente.

Prima bisogna conoscere la causa.


Cosa fare concretamente

Per una postazione remota:

Ethernet dove possibile
router serio
QoS sulla WAN
monitoring permanente
dual-WAN
VPN stabile

Per il traffico real-time:

priorità
code controllate
niente saturazione prolungata

Per i server:

monitor CPU
monitor NIC
monitor loss

Una regola importante

Non giudicate una connessione con:

Speedtest: 500 Mbps

Giudicatela con:

Come si comportano i pacchetti durante tutto il giorno?

Per una rete radio digitale questa è la domanda giusta.


Conclusioni

Latency, jitter e packet loss descrivono tre problemi differenti:

LATENCY
= quanto tempo impiega il pacchetto

JITTER
= quanto varia quel tempo

PACKET LOSS
= quanti pacchetti non arrivano utilizzabili

La banda ci dice invece:

quanti dati possiamo trasmettere

Per la voce digitalizzata, una connessione:

20 Mbit/s
stabile

può essere migliore di:

1 Gbit/s
instabile

Ecco perché un buon Sysop non dovrebbe guardare soltanto:

DOWNLOAD / UPLOAD

ma monitorare continuamente:

LATENCY
JITTER
LOSS

Sono questi tre parametri che spesso determinano se una rete digitale sembra una vera infrastruttura di telecomunicazioni oppure una conversazione robotica che perde una parola ogni tre.

In una rete ben progettata, il pacchetto non deve soltanto arrivare.

Deve arrivare nel momento giusto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *