
Conoscendo anche le caratteristiche di ciascun link è
possibile valutare la supportabilità del traffico e verificare se talune
richieste di flusso non potranno essere soddisfatte a causa di congestioni.
Se il carico sulla rete è supportabile i percorsi tra
tutte le coppie di macchine che si scambiano dati saranno lasciati inalterati;
se il carico invece non fosse supportabile si cercherà di individuare nuovi
percorsi tra i router in modo da far diminuire la quantità di traffico
che insiste sui link che rappresentano colli di bottiglia.
I nuovi percorsi sono calcolati applicando l’algoritmo
di Dijkstra, ma l’aspetto innovativo consiste nel fatto che ai link vengano
attribuiti pesi diversi in funzione della distribuzione del traffico sulla rete;
in particolare nel caso in cui anche un solo link dell’area presa in considerazione
risulti congestionato vengono rideterminati i “pesi” di tutti i link.
Il peso di un link aumenterà nel caso in cui il traffico da supportare
sia maggiore di quello supportabile, sarà diminuito nel caso opposto; in
tal modo taluni flussi dovrebbero prendere percorsi alternativi risolvendo alcune
congestioni. Questa procedura di modifica dei pesi e ricalcolo dei percorsi, alla
ricerca di una situazione di totale supportabilità, si può ripetere
anche più volte.
Ora ci si pone il problema di chi debba effettuare le operazioni sopra descritte,
in modo da non dover però modificare le strutture di rete; per questo si
è pensato ad un supervisore per ciascuna rete o sottorete, il Bandwidth
Broker (BB), che risieda su uno dei router. Il BB è in grado di rilevare,
tramite scambio di pacchetti, le eventuali situazioni di congestione ed off-line
è in grado di ricalcolare i percorsi. Il BB inoltre, conoscendo tutta la
situazione del traffico in transito sulla rete, può simulare la situazione
che si stabilisce dopo il ricalcolo dei percorsi e valutare la supportabilità
del traffico.
Con questa procedura ci si è posti a metà tra il routing ed il traffic
engineering; i risultati di ottimale distribuzione del traffico non saranno quelli
raggiungibili dal traffic engineering in quanto quest’ultimo consente di
instradare pacchetti tra due router su più percorsi permettendo così
lo sfruttamento totale della banda passante sui link. Tuttavia la procedura proposta
migliora le prestazioni offerte dal routing senza la necessità di modificare
le strutture di rete già presenti.
Dalle sperimentazioni effettuate è stato dimostrato che, applicando l’algoritmo
proposto, la quantità di traffico supportabile aumenta sino al 70-80% nel
caso migliore; la bontà dell’algoritmo dipende da molteplici fattori:
in primis dalla funzione scelta per modificare i costi dei link. In secondo luogo,
se le congestioni sono dovute non ad una cattiva distribuzione del traffico ma
al transito di una quantità di pacchetti fisicamente non supportabile,
allora il miglioramento apportato dall’algoritmo è nullo (in questo
caso anche con il traffic engineering le cose non cambiano un gran che!!)
In definitiva, senza incidere sulle costose infrastrutture di rete, si è
riusciti ad “allargare la banda efficace” in una porzione di rete.
Il codice per simulare quanto descritto è stato scritto
in linguaggio C ed è stato compilato su piattaforma LINUX.
Francesco Tranaso - per WinTricks
|