Sei sulla pagina 1di 32

Reti di Calcolatori, A.A. 2005/06 M. Cesati / E.

Betti

Reti di calcolatori

Lezione 15
Lez. 15 — 1 M. Cesati / E. Betti

Il modello di riferimento

5 Application
4 Transport
3 Network
2 Data Link
1 Fisico
Lez. 15 — 2 M. Cesati / E. Betti

Controllo della congestione

Il controllo della congestione della communication subnet è uno dei compiti


fondamentali del livello Network

Non è da confondere con il controllo del flusso:

• Il controllo del flusso è relativo ad una singola connessione tra due entità sorgen-
te e destinazione: un canale di comunicazione (gestito a livello Data Link), un
circuito virtuale (gestito a livello Network), una connessione tra due applicazioni
(gestito a livello Transport o superiore), eccetera

• Il controllo della congestione è globale, ossia relativo all’intera communication


subnet, ed è svolto dal livello Network o dal livello Transport
Lez. 15 — 3 M. Cesati / E. Betti

Cause della congestione


Si verifica congestione quando un router non è più in grado di gestire i pacchetti che
gli arrivano

È un meccanismo a cascata, perché i pacchetti scartati causano ritrasmissioni (da


parte dei router vicini a quello congestionato oppure da parte degli host trasmittenti)

Generalmente la congestione è dovuta a componenti della subnet non adeguati per


gestire il carico:

• troppi pochi buffer in un router (ma una quantità infinita di buffer nei router non
necessariamente allevia la congestione)

• processore troppo lento in un router

• linea di trasmissione troppo lenta


Lez. 15 — 4 M. Cesati / E. Betti

Congestione e carico
Lez. 15 — 5 M. Cesati / E. Betti

Tipologie di controllo della congestione


• open loop (senza controreazione):
– corretto dimensionamento degli elementi della communication subnet
– opportune strategie per accettazione di nuovi pacchetti o nuove connessioni
– opportune strategie di scheduling dei pacchetti nei router
– opportune scelte per i parametri dei protocolli di livello Data Link, Network e
Transport
– non è adattivo

• closed loop (con controreazione):


– monitorizza il sistema per rilevare quando e dove si verifica congestione
– invia le informazioni nei luoghi in cui si può rimediare
– modifica i parametri dei protocolli per correggere il problema
Lez. 15 — 6 M. Cesati / E. Betti

Traffic shaping

Una delle principali difficoltà nel controllo della congestione è che il traffico è spesso
di tipo burst (alte punte di traffico in tempi brevi alternate a lunghi periodi di traffico
più basso)

Un metodo per controllare la congestione consiste nel modellare il traffico (traffic


shaping) in modo da renderlo predicibile

È un approccio di tipo open loop (non è adattivo)

• algoritmo leaky bucket

• algoritmo token bucket


Lez. 15 — 7 M. Cesati / E. Betti

Algoritmo leaky bucket (1)

L’algoritmo leaky bucket (secchio che perde) regolarizza il traffico uscente da un host
ritardando il traffico “burst”

• È basato su un buffer a coda (queue) di dimensione finita

• I pacchetti possono essere rimossi dalla coda e trasmessi ad una frequenza


massima prefissata

• Se la coda si riempie completamente, nuovi pacchetti vengono scartati

• Se i pacchetti hanno dimensione variabile, si può modificare l’algoritmo in modo


da inviare byte con frequenza massima pre-fissata
Lez. 15 — 8 M. Cesati / E. Betti

Algoritmo leaky bucket (2)


Lez. 15 — 9 M. Cesati / E. Betti

Algoritmo token bucket (1)

L’algoritmo token bucket (secchio di gettoni) è simile all’algoritmo leaky bucket, ma è


più flessibile nel tagliare il traffico di tipo burst e non perde pacchetti quando la coda
è piena

• Il secchio contiene gettoni (token)

• Per spedire un pacchetto si deve prelevare un gettone dal secchio

• Nuovi gettoni vengono immessi nel secchio ad intervalli di tempo regolari (ad
esempio, uno ogni millisecondo)

• Il secchio ha una capacità massima prefissata


Lez. 15 — 10 M. Cesati / E. Betti

Algoritmo token bucket (2)

• Se i pacchetti hanno dimensione variabile, un gettone può rappresentare il diritto


di trasmettere un numero prefissato di byte invece di un intero pacchetto

• Le trasmissioni di pacchetti avvengono alla massima velocità possibile del canale


di comunicazione finché il secchio è pieno, poi secondo il tasso di generazione
dei gettoni

• Se il secchio è vuoto, i pacchetti non vengono perduti: l’host deve bloccare e


attendere che venga generato un nuovo gettone

• Consente alte punte di traffico, ma limita la lunghezza del burst. Per ridurre i
picchi si usa spesso un leaky bucket dopo il token bucket
Lez. 15 — 11 M. Cesati / E. Betti

Flow specification

Gli algoritmi di traffic shaping sono molto efficaci quando sono adottati
consistentemente da sorgente, communication subnet e ricevente.

In particolare, sorgente, subnet e ricevente devono accordarsi in anticipo su:

• la caratteristiche del traffico generato (data rate, frequenza dei burst, . . . )

• la qualità del servizio garantita dalla subnet (ritardo di trasmissione, varianza del
tempo di trasmissione (jitter ), tasso di pacchetti persi, . . . )

È possibile adottare il flow specification sia nelle subnet organizzate con circuiti
virtuali (più facile) che in quelle organizzate con datagram (più difficile)
Lez. 15 — 12 M. Cesati / E. Betti

Controllo della congestione con circuiti virtuali


Il metodo più semplice per controllare la congestione delle subnet organizzate con
circuiti virtuali è l’admission control (controllo d’accesso)

Quando viene rilevata congestione in una parte della subnet:

• i nuovi circuiti virtuali vengono instradati su percorsi non sovraccarichi

• se non è possibile trovare un percorso non sovraccarico, viene impedita la crea-


zione di nuovi circuiti virtuali fino alla scomparsa della congestione

È un algoritmo di tipo closed loop, perché si adatta al traffico della subnet

È anche possibile utilizzare il flow specification per “prenotare” le risorse della subnet
utilizzate da ciascun circuito virtuale
Lez. 15 — 13 M. Cesati / E. Betti

Controllo della congestione in subnet basate su datagram


Gli algoritmi closed loop utilizzati nelle subnet a commutazione di pacchetto possono
essere utilizzati anche nelle subnet con circuiti virtuali

In ogni algoritmo closed loop, ciascun router monitorizza l’utilizzo delle sue linee di
comunicazione e delle altre sue risorse

Ad esempio, si associa a ciascuna linea una variabile reale u che rappresenta la sua
utilizzazione; ad intervalli regolari la linea viene monitorata e la variabile aggiornata:

unew = a × uold + (1 − a) × f

f rappresenta l’utilizzo istantaneo della linea, ed a ∈ (0, 1) il peso che viene dato
alla storia passata
Lez. 15 — 14 M. Cesati / E. Betti

Algoritmo con bit di allarme

Nella testata di ogni pacchetto è presente un bit di allarme

Se una linea di un router comincia ad essere sovraccarica, il router imposta ad uno il


bit di allarme in ogni pacchetto ricevuto dalla linea prima di inoltrarlo a destinazione

Quando un pacchetto con bit di allarme arriva a destinazione, l’host invia il pacchetto
contentente la conferma di quello ricevuto con il bit di allarme impostato ad uno

Quanto l’host mittente riceve la conferma, il bit di allarme lo informa dell’esistenza


della congestione, quindi diminuisce il tasso di trasmissione

Ogni host può regolare il tasso di trasmissione sulla base della frazione di pacchetti
ricevuti che hanno il bit di allarme impostato ad uno
Lez. 15 — 15 M. Cesati / E. Betti

Algoritmo choke packet


Se per una certa linea di un router la variabile u supera una soglia prefissata, allora
per ogni pacchetto P che transita su una linea sovraccarica il router:
• invia un choke packet all’host sorgente del pacchetto
• prima di ri-trasmettere P al router successivo, imposta un flag nella testata del
pacchetto cosı̀ che il router seguente non generi un altro choke packet

Quando l’host sorgente riceve un choke packet:


• riduce il tasso di trasmissione (ad esempio, del 50%)
• fa partire un timer ed ignora i choke packet che arrivano prima che il timer scada
• dopo la scadenza del timer:
– se arriva un altro choke packet, riduce ulteriormente il tasso di trasmissione
(ad esempio, per un ulteriore 25%)
– se non arrivano altri choke packet, aumenta gradualmente il tasso di trasmis-
sione (ad esempio, del 5% alla volta)
Lez. 15 — 16 M. Cesati / E. Betti

Algoritmo hop-by-hop choke packet

Il principale difetto dell’algoritmo choke packet è la sua lentezza quando il router


congestionato è molto distante dall’host sorgente oppure la subnet è molto veloce

L’algoritmo hop-by-hop choke packet è una variante del choke packet in cui ciascun
router che riceve il choke packet rallenta il tasso di trasmissione (oltre a ri-trasmettere
all’indietro il choke packet stesso)

Il router congestionato ha immediato sollievo

La capacità dei buffer nei router deve essere maggiore


Lez. 15 — 17 M. Cesati / E. Betti

Load shedding
Con il termine load shedding si intende la tecnica che un router adotta quando è
completamente congestionato: scartare i pacchetti che non possono essere gestiti
per mancanza di risorse

Due strategie generali:

• strategia wine (vino): meglio vecchio che nuovo. In una successione di pacchetti
è preferibile trasmettere i più vecchi e scartare i più recenti (meno ritrasmissioni
dovute a protocolli tipo “go back n”)

• strategia milk (latte): meglio nuovo che vecchio. In una successione di pac-
chetti è preferibile trasmettere i più recenti e scartare i più vecchi (migliore per
applicazioni multimediali)

Per adottare strategie di load shedding intelligenti il router deve conoscere la natura
dei dati trasportati nei pacchetti; ad esempio, si potrebbe utilizzare un campo nella
testata del pacchetto per indicare la classe di priorità
Lez. 15 — 18 M. Cesati / E. Betti

Internetworking

Un altro compito fondamentale del livello Network consiste nella funzione di


internetworking: la capacità di collegare tra loro reti aventi:

• diverse tipologie di servizio a livello Data Link

• diverse dimensioni dei frame

• diversi meccanismi di controllo dell’errore e del flusso

• diversi meccanismi di controllo della congestione delle subnet


Lez. 15 — 19 M. Cesati / E. Betti

Esempio di internetwork
Lez. 15 — 20 M. Cesati / E. Betti

Router multiprotocollo
Un dispositivo operante a livello Network in grado di gestire pacchetti appartenenti
a reti con diversa architettura di rete è chiamato router multiprotocollo, od anche
gateway

Il termine gateway talvolta indica anche dispositivi che operano a livello differente:
ripetitori (livello Fisico) e bridge (livello Data Link) (non in questo modulo!), transport
gateway e application gateway

Il termine router multiprotocollo denota un dispositivo che opera solamente a livello


Network

In pratica i dispositivi in vendita hanno caratteristiche tali per cui non è sempre facile
stabilire a quale livello essi operano. Ad esempio, molti dispositivi operano come
ripetitori, come bridge e come router multiprotocollo (brouter)
Lez. 15 — 21 M. Cesati / E. Betti

Concatenazione di circuiti virtuali (1)

È una tipica strategia di internetworking tra communication subnet organizzate con


circuiti virtuali

Ciascun circuito virtuale di una subnet omogena termina in un router multiprotocollo


che lo collega al circuito virtuale di un’altra subnet

Questo approccio funziona bene quando tutte le reti offrono servizi della stessa ti-
pologia (ad esempio, connection-oriented affidabile, con determinate garanzie sulla
qualità del servizio, . . . )
Lez. 15 — 22 M. Cesati / E. Betti

Concatenazione di circuiti virtuali (2)


Lez. 15 — 23 M. Cesati / E. Betti

Connectionless internetworking (1)

La strategia connectionless internetworking è utilizzata quando le communication


subnet sono organizzate con datagram

È alternativa ai circuiti virtuali concatenati

I pacchetti viaggiano indipendentemente e possono arrivare fuori ordine


Lez. 15 — 24 M. Cesati / E. Betti

Connectionless internetworking (2)


Lez. 15 — 25 M. Cesati / E. Betti

Limiti dell’internetworking
Sebbene i router multiprotocollo possano in teoria permettere la comunicazione tra
host in reti con architetture molto differenti tra loro, in pratica questo avviene molto
raramente:

• Ciascun host dovrebbe possedere non solo l’indirizzo relativo alla rete di cui fa
parte, ma anche un indirizzo valido per ciascuna rete da cui potrebbe ricevere
pacchetti (IP, DECnet, IPX, SNA, AppleTalk, . . . )
• I formati dei pacchetti nelle due reti possono essere troppo differenti perché una
completa conversione di formato sia possibile
• Funzionalità quali trasmissione di pacchetti broadcast, qualità del servizio e si-
curezza potrebbero essere supportate da una rete ma non dall’altra

Quindi anche se i router multiprotocollo possono gestire pacchetti di diverso tipo, le


reti in cui si trovano gli host sorgente e destinazione sono generalmente dello stesso
tipo o almeno “compatibili”
Lez. 15 — 26 M. Cesati / E. Betti

Tunneling
Il tunneling è una strategia di internetworking che consente di collegare due reti A
e B utilizzanti la stessa architettura tramite una rete C utilizzante una architettura
differente

• Il pacchetto Network proveniente da una rete viene incapsulato da un router


multiprotocollo all’interno di un pacchetto Network della rete C

• Il nuovo pacchetto viaggia normalmente all’interno della rete C fino ad un altro


router multiprotocollo

• Il secondo router multiprotocollo estrae il vecchio pacchetto Network e lo invia


sulla rete B
Lez. 15 — 27 M. Cesati / E. Betti

Esempio di tunneling
Lez. 15 — 28 M. Cesati / E. Betti

Internetworking a livello Transport

Il livello Transport di quasi tutte le architetture di rete offre un servizio di tipo connection-
oriented affidabile

È quindi naturale definire un meccanismo di internetworking a livello Transport basato


sulla concatenazione di circuiti virtuali

È analogo all’internetworking basato sulla concatenazione di circuiti virtuali a livello


Network, ma si appoggia ai protocolli del livello Transport

I dispositivi che svolgono questo servizio sono chiamati transport gateway


Lez. 15 — 29 M. Cesati / E. Betti

Internetworking a livello Application


Un ulteriore servizio di internetworking può essere offerto dal livello Application da
dispositivi chiamati application gateway

Ad esempio è possibile definire un servizio di posta elettronica che converta il for-


mato dei messaggi di posta quando sorgente e destinazione sono in reti con diverse
architetture

Ad esempio per inviare un messaggio da un host TCP/IP ad un host OSI:

• si compone il messaggio di posta elettronica nel formato Internet; l’indirizzo è


quello dell’utente OSI, codificato secondo lo standard TCP/IP

• il messaggio viene inviato ad un mail gateway

• il mail gateway converte il messaggio nel formato OSI, e lo invia all’utente OSI
Lez. 15 — 30 M. Cesati / E. Betti

Internetwork routing

Le reti che compongono l’internetwork sono entità indipendenti dette AS


(Autonomous System)

Il routing delle internetwork è gerarchico:

• All’interno di ciascun AS si applicano specifici meccanismi di routing. Se l’AS è


esteso, si può anche avere routing gerarchico. Il protocollo utilizzato a questo
livello è chiamato IGP (Interior Gateway Protocol)

• Il routing tra i diversi AS è gestito da un protocollo EGP (Exterior Gateway


Protocol). Generalmente il servizio è svolto dai router multiprotocollo, e deve
tenere in considerazione le legislazioni nazionali ed internazionali.
Lez. 15 — 31 M. Cesati / E. Betti

Frammentazione

La dimensione massima dei pacchetti in transito su ciascuna rete può variare

I router multiprotocollo devono consentire la suddivisione dei pacchetti in


frammenti

Quando necessario, ciascun pacchetto Network troppo lungo viene suddiviso in più
frammenti, che vengono inviati come pacchetti Network separati.

• frammentazione trasparente: appena possibile, un router multiprotocollo


ricombina i vari frammenti per ricostruire il pacchetto originale

• frammentazione non trasparente: l’entità di livello Network della destinazione


riceve i vari frammenti e li ricombina per formare il pacchetto Network originale