Francesco Tranaso - tranaso
per WinTricks
In Internet e nelle reti in generale la comunicazione tra terminali,
tra client e server, tra router, avviene tramite blocchi di dati che sono chiamati
pacchetti. Se il computer A volesse “dialogare” con il computer B
cosa dovrebbe fare?
Certo non è possibile che ciascuna macchina sia fisicamente
collegata a tutte le altre ed è parimenti impensabile che in locale sia
memorizzato un database che ci dica, su grandi reti, come raggiungere qualsiasi
macchina.
Per risolvere il problema dell’instradamento dei pacchetti
sono stati implementati dei protocolli di routing; questi consentono il trasferimento
di dati tra coppie di router, server, terminali. I protocolli di routing però
presentano lo svantaggio di non consentire un utilizzo ottimizzato della banda
disponibile in quanto tutti i dati tra A e B seguono un unico percorso; immaginiamo
di voler trasferire una gran quantità di dati tra il computer A e quello
B: tutti i link (collegamenti diretti tra due macchine) che fanno parte del tragitto
che collega A e B potrebbero risultare totalmente impiegati.
Il traffico di pacchetti in rete in tal modo non risulta
bilanciato in alcun modo! Un’alternativa ai protocolli di routing
è rappresentata dal traffic engineering.
Con questa metodologia vengono ottimizzate le prestazioni sia
dal lato server che da quello delle applicazioni; in questo caso infatti i flussi
tra due macchine posso seguire tragitti diversi e la banda a disposizione è
totalmente sfruttabile.
Tuttavia questa soluzione, che sicuramente è quella più
efficiente, non è esente da controindicazioni: sarebbe necessario, per
poterla applicare su vasta scala, un ammodernamento totale delle strutture di
rete attualmente presenti. La soluzione qui presentata è una via
di mezzo tra il routing ed il traffic engineering.
L’idea è quella di valutare ad un certo istante
il traffico presente nella rete in esame ed ove ci fossero congestioni cercare
percorsi alternativi. Come primo passo è stato posto il vincolo che tutto
il traffico tra due macchine ad un certo istante percorra un unico tragitto; nel
caso di congestioni sarà il nostro algoritmo a cercare un percorso alternativo
e tutti i flussi andranno sul nuovo tragitto individuato. L’algoritmo scelto
per calcolare i percorsi tra le coppie di router è quello di Dijkstra;
è stato scelto questo algoritmo in quanto è quello utilizzato da
OSPF, che è uno dei protocolli di routing più affermati. L’algoritmo
studiato funziona come esposto nel diagramma che segue:
In base alla Topologia della rete che si prende in considerazione
ed alle richieste di connessioni tra coppie di router, è possibile calcolare
la matrice di carico, ovvero è possibile sapere, per ogni collegamento
fisico tra due macchine, quale sia il traffico che questo dovrebbe supportare.
|