Gli algoritmi di controllo della congestione spesso non sono sufficienti per ridurre la congestione. Tecniche migliori si basano sullo studio della qualità di servizio richiesta dalle applicazioni.
Si definisce flusso una comunicazione end to end tra una sorgente e una destinazione (requisiti di indirizzamento costanti).
I flussi possono essere unidirezionali o bidirezionali; si parla di flusso downstream per un flusso dalla sorgente verso la destinazione (per esempio da un server Web a un browser) e di flusso upstream per un flusso dalla destinazione verso la sorgente (per esempio da un browser a un server Web).
In una rete orientata alle connessioni un flusso segue sempre lo stesso percorso; in una rete senza connessioni i pacchetti del flusso possono seguire percorsi diversi.
Ogni flusso è caratterizzato da delle esigenze relative alle prestazioni (requisiti di servizio).
Alcuni flussi con prestazioni più elevate o più importanti vengono detti flussi critici.
Le esigenze di ogni flusso, che costituiscono la qualità di servizio (QoS – Quality of Service) possono essere caratterizzate da quattro parametri fondamentali:
-
banda (capacità);
-
ritardo: tempo tra l’invio e la ricezione;
-
jitter: variazione nel tempo di arrivo dei pacchetti (alcuni hanno un ritardo notevole altri no);
-
affidabilità: garanzia che i pacchetti arrivino correttamente.
Affidabilità (Reliability), facilità di manutenzione (Maintainability) e disponibilità (Availability) insieme vengono chiamati fattori RMA.
La facilità di manutenzione può essere misurata dal parametro MTTR (Mean Time To Repair) e la disponibilità come percentuale in un periodo di tempo uptime; il periodo di downtime massimo accettabile può essere un valore cumulativo (in un unico periodo) o distribuito.
Le applicazioni che richiedono requisiti di prestazioni alte, prevedibili o garantite di affidabilità o in generale di RMA vengono dette critiche per la missione; se i requisiti non sono soddisfatti possono verificarsi perdita di dati, di profitto o addirittura della vita. Esempi di applicazioni critiche per la missione sono applicazioni di comando o controllo a distanza.
Le applicazioni che richiedono requisiti di prestazioni alte, prevedibili o garantite di banda sono dette critiche per velocità. Esempi di applicazioni critiche per velocità sono le applicazioni multimediali (voce e video).
Le applicazioni che richiedono requisiti di prestazioni alte, prevedibili o garantite di jitter (cioè che sopportano soltanto variazioni molto basse nel ritardo) sono dette applicazioni in tempo reale; per queste applicazioni c’è una rigida relazione temporale tra origine e destinazione con impostazione di timer). Esempi di applicazioni di questo tipo sono le applicazioni multimediali non bufferizzate come le comunicazioni vocali o la riproduzione di video in tempo reale.
Le applicazioni che non sono molto sensibili al jitter, cioè quelle in cui la destinazione può attendere per un certo tempo le informazioni inviate, si possono suddividere in asincrone e interattive.
Le applicazioni asincrone sono insensibili ai ritardi (per esempio la posta elettronica).
Le applicazioni interattive invece richiedono requisiti di prestazioni alte, prevedibili o garantite di ritardo (cioè la trasmissione deve avvenire il più velocemente possibile in modo che il ritardo sia minimo).
Le applicazioni interattive si distinguono in:
-
interattive di picco se il ritardo nella risposta è dovuto principalmente ai tempi di trasmissione della rete (ritardo end to end o round trip); esempi di applicazioni di questo tipo sono i servizi Web e Telnet;
-
interattive base se il ritardo è dovuto soprattutto al dispositivo o all’applicazione; un esempio è il servizio FTP.
Applicazione | Affidabilità | Ritardo | Jitter | Banda |
---|---|---|---|---|
posta elettronica | XX | |||
trasferimento file | XX | X | ||
accesso a Web | XX | X | X | |
login remoto | XX | X | X | |
audio a richiesta | XX | X | ||
video a richiesta | XX | XX | ||
telefonia | XX | XX | ||
videoconferenza | XX | XX | XX |
È più facile garantire la qualità del servizio nelle reti orientate alle connessioni.
Se il livello di rete non è orientato alle connessioni, la qualità del servizio può essere garantita dalle connessioni a livello di trasporto.
Al momento di creare la connessione il mittente può specificare la qualità di servizio richiesta.
Si possono specificare sia i valori richiesti che quelli minimi accettabili per i vari parametri.
La richiesta di connessione può essere accettata o respinta in base alle risorse disponibili.
La rete determina se è in grado di soddisfare le richieste; se non è in grado di fornire il servizio, le stazioni possono negoziare per concordare i valori dei parametri; se non si raggiunge un accordo la connessione viene rifiutata.
Il mittente e il fornitore concordano un contratto che definisce la qualità del servizio offerta.
Il contratto stabilisce il tipo di traffico (o classe di servizio – CoS) e vari parametri che la rete deve soddisfare, espressi in valori misurabili.
Tipici parametri sono:
-
il ritardo massimo per la creazione della connessione,
-
il throughput per ogni direzione (velocità o banda),
-
il massimo ritardo tra la spedizione e la ricezione di un messaggio,
-
il tasso di errore ammesso, cioè la percentuale dei messaggi persi o rovinati rispetto ai messaggi inviati,
-
la priorità della connessione (che determina l’ordine in cui le connessioni sono servite in caso di congestione),
-
la probabilità che la connessione venga interrotta in caso di congestione,
-
il tipo di protezione contro le intercettazioni dei dati.
Tecniche per garantire la qualità di servizio
Alcune tecniche per garantire la qualità del servizio sono:
-
sovradimensionamento: consiste nel predisporre tanta capacità nel router e spazio nei buffer in modo da far sicuramente transitare i pacchetti, si tratta di una soluzione molto costosa.
-
traffic shaping o normalizzazione del traffico: si tratta di tecniche che controllano il ritmo della trasmissione del traffico inviato dal mittente (regolando la velocità media della trasmissione dei dati); algoritmi di questo tipo sono l’algoritmo del secchio bucato (leaky bucket) e l’algoritmo del secchio di gettoni (token bucket).
L’algoritmo del secchio bucato gestisce i pacchetti trasmessi dal mittente attraverso una coda finita che lascia uscire i pacchetti a un ritmo costante (proprio come un secchio con un buco sul fondo); se un pacchetto arriva quando la coda è piena viene scartato (come un secchio che trabocca); se la coda è vuota non esce nulla.
Una variante per gestire pacchetti di dimensioni variabili può consentire la trasmissione di un numero finito di byte ad ogni intervallo di tempo; possono quindi uscire più pacchetti piccoli, ma un pacchetto grande può dover attendere alcuni intervalli di tempo.
L’algoritmo del secchio di gettoni utilizza una coda di gettoni, generati uno ad ogni intervallo di tempo; un pacchetto per essere trasmesso deve trovare un gettone disponibile; questo algoritmo gestisce meglio i picchi improvvisi: permette a una stazione inattiva di mettere da parte dei gettoni e poi di spedire molti pacchetti di seguito; inoltre non scarta mai i pacchetti anche quando il secchio è pieno (scarta i gettoni ma non i pacchetti).
Una variante è che il gettone rappresenti il diritto di spedire un certo numero di byte; per trasmettere un pacchetto devono essere disponibili tutti i gettoni necessari per la lunghezza del pacchetto.
-
uso di buffer nel ricevente: permette di eliminare lo jitter (problema principale in applicazioni come il video a richiesta); aumenta il ritardo e non influisce su affidabilità e banda.
-
prenotazione delle risorse: per garantire la qualità di servizio è possibile prenotare le risorse necessarie (banda, spazio dei buffer, cicli di CPU); è necessario però che tutti i pacchetti del flusso seguano lo stesso percorso.
-
controllo di ammissione: il router può decidere se accettare un flusso o no; il flusso deve essere descritto da un insieme di parametri che possono essere negoziati (specifica di flusso); il mittente produce una specifica di flusso per proporre i parametri da utilizzare; lungo il percorso i router possono modificare i parametri, ma soltanto riducendo le richieste.
Servizi integrati e servizi differenziati
Relativamente al modo in cui viene considerata la qualità del servizio si possono distinguere due tipi di servizi:
-
servizi integrati (IS – Integrated Services) che considerano la QoS dal punto di vista del supporto dei flussi di traffico lungo un percorso end to end; sono rivolti alla trasmissione di flussi multimediali, in particolare multicast come trasmissioni di video, e sono basati sulla prenotazione delle risorse lungo il percorso (la prenotazione delle risorse lungo il percorso richiede il supporto dei dispositivi attraversati dal flusso). Il protocollo principale di questo tipo è RSVP (Resource reSerVation Protocol).
-
servizi differenziati (DS – Differentiated Services) in cui la qualità del servizio invece che basata sui flussi è basata sulle classi; considerano la QoS dal punto di vista dell’aggregazione dei flussi per ogni tratto di rete (hop) sulla base del comportamento del traffico.
Possono essere offerti da un insieme di router che costituiscono un dominio amministrativo (per esempio un ISP o una compagnia telefonica); l’amministrazione definisce una serie di classi di servizio e le corrispondenti regole di inoltro. I pacchetti IP sono contrassegnati (nel byte type of service per IPv4 o nel byte della classe di traffico in IPv6) in modo da specificare la classe di servizio a cui appartengono, che verrà utilizzata dai meccanismi di controllo delle risorse per stabilire il livello di prestazioni che avranno diritto di ricevere in ciascun dispositivo (o per ciascun hop).
Esempio: Telefonia via Internet. Con la qualità del servizio basata su flussi ogni chiamata telefonica riceve le sue risorse garantite. Con la qualità del servizio basata su classi nessuna chiamata riceve risorse private riservate solo a lei, ma tutto l’insieme delle chiamate telefoniche riceve le risorse prenotate per la classe della telefonia.
Le classi di servizio dei servizi differenziati sono definite dai vari operatori.
Per standardizzare la cosa l’IETF sta cercando di definire delle classi di servizio indipendenti dalle reti.
Oltre ai servizi di tipo best effort si possono avere i servizi:
-
EF (Expedited Forwarding o inoltro accelerato) rivolto al traffico che presenta requisiti di ritardo (tempo reale o interattivo): sono disponibili due classi, una regolare e una accelerata; i pacchetti accelerati devono poter attraversare la rete come se non ci fossero altri pacchetti; i router possono essere gestiti con due code di output per ogni linea di uscita, una per i pacchetti regolari e l’altra per i pacchetti accelerati;
-
AF (Assured Forwarding o inoltro sicuro) rivolto al traffico che presenta requisiti di ritardo e capacità (applicazioni multimediali e teleservizi): vengono definite quattro classi di priorità e tre probabilità di eliminazione per i pacchetti in caso di congestioni (12 combinazioni di classi di servizio); l’host mittente o il primo router classifica i pacchetti in base a una della quattro classi di priorità; i pacchetti vengono marcati in base alla classe di appartenenza nel campo type of service dell’intestazione IP; poi i pacchetti passano attraverso un filtro che può ritardare o scartare pacchetti (in base alla probabilità di eliminazione) per dare una forma accettabile ai flussi delle quattro priorità (usando qualche forma di traffic shaping).
Traffic Policing
Quando la qualità del servizio deve essere prevedibile o garantita viene stabilito un contratto.
Gli accordi sui livelli di servizio, usati di solito nelle reti dei fornitori di servizi, vengono chiamati anche SLA (Service Level Agreement).
I servizi devono essere configurabili, misurabili e verificabili per garantire che si ottenga il servizio richiesto.
Bisogna fissare delle metriche dei servizi che descrivano le caratteristiche prestazionali.
Si definisce soglia il valore di confine fra due regioni di livelli di prestazioni diverse, limite il valore di confine tra regione di conformità e non conformità.
Dopo che la connessione è stata stabilita viene controllato che il flusso di traffico inviato dalla sorgente sia conforme ai parametri stabiliti.
La supervisione del flusso di traffico è chiamata traffic policing.
I dati trasmessi dalla sorgente non conformi ai vincoli possono essere sottoposti a condizionamento.
Il condizionamento del traffico è l’insieme di meccanismi che modificano (aumentano o riducono) le prestazioni per i flussi di traffico: il traffico non conforme può essere scartato, riconfigurato per esempio aumentandone il ritardo, o contrassegnato in modo che venga scartato in caso di congestione.