Sei sulla pagina 1di 24

Università degli Studi di Roma "Tor Vergata"

Università degli Studi di Roma "Tor Vergata" Facoltà di Ingegneria C C O O R R

Facoltà di Ingegneria

CCOORRSSOO DDII PPRROOGGEETTTTOO EE OOTTTTIIMMIIZZZZAAZZIIOONNEE DDII RREETTII

Progettazione e implementazione di un algoritmo per il problema di routing su rete capacitata

Docenti

Studenti

Prof. Gianpaolo Oriolo

Danilo Soluri

Ing. Laura Sanità

Giancarlo Volpe

Anno Accademico 2007/2008

SOMMARIO

INTRODUZIONE

3

1. PROBLEMA INSTRADAMENTO DEL TRAFFICO

6

1.1 Descrizione del problema

6

1.2 Formulazione del problema

7

2. ALGORITMO DI RISOLUZIONE

10

2.1 Strategia di ordinamento delle commodity

10

2.2 Allocazione dei costi sui link della rete

11

2.3 Schema dell’algoritmo di instradamento

11

3. SIMULAZIONI E ANALISI DEI RISULTATI

15

3.1 Topologia delle reti

15

3.2 Risultati delle simulazioni

17

CONCLUSIONI

23

INTRODUZIONE

La creazione, gestione e manutenzione di reti di comunicazione è uno dei campi più fertili

per le applicazioni della Ricerca Operativa, oltre alla loro importanza economica e strategica per lo sviluppo di un paese.

Dalle reti telefoniche a centrali elettromeccaniche e dalle reti telegrafiche, che hanno

caratterizzato i primi anni del 20° secolo, la realtà odierna ha subito un’evoluzione notevole attraverso la diversificazione dei sistemi a rete e l’applicazione di nuove tecnologie di comunicazione. Tale sviluppo ha ricevuto un notevole impulso dall’uso pubblico di Internet e l’introduzione

di reti Intranet in aziende. Questo fenomeno ha caratterizzato l’era in cui viviamo con la

forte integrazione dei diversi servizi di comunicazione: immagini, dati, parole viaggiano sempre più su un insieme di reti interconnesse, rendendo ormai superata la distinzione tra telefono, cellulare, computer e televisione. L’integrazione delle reti ha generato un’esplosione delle attività svolte attraverso una rete,

tale che la domanda di traffico è cresciuta esponenzialmente. Per far fronte a questa tendenza, la ricerca si è orientata verso due direzioni:

Adeguare l’infrastruttura tecnologica aumentando la capacità di traffico trasportabile delle reti;

Ricercare metodi di gestione delle reti in grado di sfruttare e allocare meglio le risorse esistenti.

Per quanto riguarda il primo aspetto, gli interventi sono di natura strutturale. Si è portato avanti lo sviluppo di tecnologie che hanno permesso ai link fisici delle reti di aumentare la loro capacità. In questo senso, un punto di arrivo importante è stata l’evoluzione dalle reti elettriche alle reti ottiche. Riguardo agli aspetti legati alla gestione delle reti, un fondamentale contributo è stato dato dallo sviluppo del Traffic Engineering. Con il termine Traffic Engineering si intende l’insieme di quei meccanismi volti ad un uso intelligente ed efficiente delle risorse di rete. Il processo di Traffic Engineering consiste nello stabilire come il traffico debba fluire attraverso la rete, in modo da evitare la congestione

della rete o di link della rete, dovuta ad un utilizzo sbilanciato delle risorse, e da ottimizzare

le prestazioni.

Gli aspetti di ottimizzazione del Traffic Engineering riguardano la gestione della capacità e

del traffico: la prima comprende pianificazione, controllo dell’instradamento e

amministrazione delle risorse; la seconda include funzioni di controllo del traffico nei nodi e

di regolazione del traffico attraverso la rete.

Il controllo effettuato dal Traffic Engineering può essere preventivo o reattivo: per controllo preventivo si intende le azioni atte a scongiurare l’insorgere di problemi futuri; per controllo reattivo si intende le risposte correttive ad eventi sfavorevoli già verificatisi sulla rete. Il Traffic Engineering si propone il raggiungimento di obiettivi prestazionali suddivisibili in due categorie: trafficoriented e resource oriented . Gli obiettivi traffic oriented riguardano la crescita della qualità di servizio fornita al traffico. Includono i pacchetti persi, il ritardo e la variazione del ritardo. L’efficacia delle politiche traffic oriented può essere valutata anche in termini di porzione di traffico offerto che raggiunge i requisiti prestazionali richiesti.

Gli obiettivi resource oriented si riferiscono all’ottimizzazione dell’utilizzo della rete. Per assicurare tali obiettivi è necessaria un’efficiente allocazione delle risorse. Tra gli altri obiettivi del Traffic Engineering vi è la minimizzazione della congestione della rete. Tipicamente si verificano problemi di congestione quando le risorse sono insufficienti o inadeguate per servire le richieste di traffico, oppure quando il traffico è distribuito in maniera asimmetrica sulle risorse provocando la congestione di alcune e il sottoutilizzo di altre. Un altro importante obiettivo del Traffic Engineering è l’affidabilità delle operazioni di rete. È opportuno ideare diversi scenari di recupero in caso di fallimenti per assicurare la continuità del servizio. Dopo un fallimento si richiede un’adeguata capacità nel ripristino del servizio e il Traffic Engineering deve essere in grado di reinstradare il traffico velocemente. Quindi l’obiettivo di un operatore di rete è quello di soddisfare le richieste di connessione e fornire dei meccanismi di recupero in grado di mantenere attiva la trasmissione dei dati anche nell’eventualità che parte della rete sia affetta da rottura. Data una richiesta di connessione, si possono distinguere due fasi:

Una fase di provisioning, in cui vengono scelti i percorsi per l’instradamento del traffico; tali percorsi sono detti primari;

Una fase di recovery, in cui si individuano i cammini alternativi, detti secondari, che i dati percorreranno in caso di un evento di rottura.

In particolare, in questo lavoro, ci occuperemo della sola fase di provisioning , andando ad analizzare e descrivere il problema di instradamento di traffico su rete capacitata, formulandolo come un PLI, descrivendo un algoritmo euristico adatto a risolverlo e successivamente implementando tale algoritmo mediante linguaggio di programmazione Java. In fine effettueremo delle simulazioni su diverse topologie di rete, instradando dei file test di matrici di traffico con un numero di commodity vario e diverso livello di carico della rete. Analizzeremo i risultati ottenuti e valuteremo l’efficienza delle strategie proposte.

1. PROBLEMA INSTRADAMENTO DEL TRAFFICO

1.1. Descrizione del problema

In questa fase le risorse disponibili sono fissate: abbiamo come dato la topologia della rete costituita da link bi direzionali e capacitati, ovvero ad ognuno di essi è assegnato un valore finito che rappresenta la capacità massima del link, la banda massima. Ogni nodo della rete può essere sia origine che destinazione di una richiesta di traffico. Il problema riguarda la configurazione delle relative commodity a costo minimo, in base ad un volume di traffico statico e predeterminato. Le commodity sono i flussi che devono essere instradati sui link della rete; una commodity k è definita da una terna:

( o k , d k , b k )

Dove

o k rappresenta il nodo origine del flusso di dati; d k rappresenta il nodo destinazione del flusso di dati; b k è il valore della banda della commodity, ovvero la porzione di capacità che deve essere riservata sui link quando il flusso viene instradato.

I flussi delle commodity sono unsplittable , cioè non possono essere frazionati e inviati su cammini diversi ma occorre instradarli su un unico cammino dall’origine alla destinazione, quindi secondo uno schema di routing detto Single Path Routing. Le domande di traffico, come detto, sono statiche e ciò caratterizza il momento temporale in cui avviene la configurazione della rete in uno scenario off line . Lo scenario off line prevede l’esistenza di una matrice di traffico contenente l’insieme di richieste di connessione tra un’origine e una destinazione per tutte le coppie origine/destinazione, costituita sia dal traffico prenotato (on demand) e sia dalle stime di quello non prenotato (on line). Per calcolare il valore di utilizzo delle risorse si utilizza la variabile congestione . La congestione è un valore che ci dà l’informazione sull’utilizzo delle risorse:

cong(e) =

b

k : e P

k

k

u

e

Il picco di congestione sarà:

e E

MAX (cong (e ))

e

che si cerca di tenere il più basso possibile.

1.2 Formulazione del problema

Presentiamo ora una possibile formulazione del problema di routing su rete capacitata in termini di programmazione lineare intera.

Dati:

Grafo G( V,E ) orientato e con vincoli di capacità sugli archi. Dove v Є V è l’insieme dei nodi, e Є E è l’insieme degli archi; Un valore di capacità dell’arco u e , e Є E ; Una matrice di traffico costituita da un set K di n commodity;

Trovare:

Un instradamento per le commodity date, cercando i percorsi o d ;

Funzione Obiettivo:

Massimizzare il numero di commodity da soddisfare; Minimizzare il picco di congestione.

Introduciamo le seguenti variabili:

x =

k

1

0

se la commodity k è servita altrimenti

k

y =

e

1 se la commodity

altrimenti

0

k è attiva sull' arco e

e le variabili ausiliarie binarie

α

k

e

γ

k

δ

+ (u )= {uv E : u = u}

Indicando con

formulato come PLI nel seguente modo:

e con

k K dove K è l’insieme delle commodity.

δ

(v )= {uv E : v = v

} , il problema può essere

MAX

k K

x

k

b

k

y

k

e

k K

e

δ

( o

y

k

e

k )

=

0

u

e

k

y =

e

e

δ

+

(

d

k

y

)

k

e

e

δ

+

()

i

0

y

e

δ

()

i

γ

k

e

δ

+

(

o

y

k

e

k

)

α

k

e

δ

(

d

y

k

e

k

)

k

e

x

x

k

k

α

k

+

γ

k

α

k

2

+

γ

k

1

=

0

x

k

{}0,1 ;

k

y {}0, 1 ;

e

γ

k

∀∈

e

∀∈

k

E

K

∀∈

k

K

k

∀∈ ∀∈ ≠

K,

i

V, i

k K

∀∈

k K

∀∈

k K

∀∈

k K

∀∈

{}0, 1 ;

α

k

{}0, 1

o ,

k

d

k

(1.1)

( 1.2

)

(

1.3

)

(

1.4

)

(

(

1.5

1.6

)

)

(

1.7

)

(

1.8

(

1.9

)

)

(1.10

)

La funzione obiettivo (1.1) massimizza il numero di commodity instradate(domande servite); una commodity è servita se è stato trovato un cammino sulla rete dal nodo origine al nodo destinazione.

Il vincolo (1.2) è il vincolo di capacità sui link della rete, atto a garantire che il volume di traffico totale delle commodity installate sulla risorsa non ecceda la sua capacità. I vincoli (1.3) e (1.4) esprimono, rispettivamente, che non ci siano archi entranti nel nodo origine e non ci siano archi uscenti dal nodo destinazione, per ogni commodity instradata.

Il vincolo (1.5) garantisce la continuità del flusso lungo il cammino per i nodi intermedi; per

ognuno di essi, infatti, entra un solo link ed esce un solo link, per una commodity servita .

I

commodity k ha attivato un link dal nodo origine e uno nel nodo destinazione, allora la commodity k è servita; e i vincoli (1.8) e (1.9) vanno a modellizzare proprio il legame tra le

variabili ausiliarie e la variabile

vincoli (1.6) e (1.7) esprimono, grazie alle variabili ausiliarie e , che se una

α

k

γ

k

k

x = α AND γ

k

k

.

x

k

2. ALGORITMO DI RISOLUZIONE

Assegnati una rete capacitata e una matrice di traffico, il nostro problema consiste nel soddisfare il maggior numero di domande di traffico andando a determinare i cammini origine/destinazione. La risoluzione di una certa istanza di questo problema, per flussi unsplittable come nel

nostro caso, richiede un tempo di risoluzione molto elevato e può essere inserito nella classe

di problemi NPHARD. Ci occuperemo, quindi, di implementare un algoritmo euristico, che

non garantisce a priori l’ottimalità ma che operando in tempi limitati sia in grado di fornire soluzioni accettabili. Prima di presentare e descrivere dettagliatamente l’algoritmo proposto, andiamo ad analizzare le strategie e le scelte effettuate ai fini della sua implementazione.

2.1 Strategia di ordinamento delle commodity

L’input del nostro problema consiste in una serie di domande di traffico che devono essere instradate sulla rete; queste commodity sono fornite in una matrice di traffico dove si specifica, per ognuna di esse, l’origine la destinazione e la relativa quantità di flusso da inviare. Fase importante per la risoluzione del problema proposto è l’ordinamento delle commodity

in quanto la scelta del percorso primario per una commodity è influenzata da quante e quali

commodity sono state precedentemente servite e in che modo. Il criterio di ordinamento deve logicamente seguire la funzione obiettivo del problema, cioè servire il massimo numero di commodity possibile.

Il criterio usato in questa sede è: Valori crescenti di banda. Utilizzando tale strategia vengono instradate prima le commodity che richiedono bande più piccole; questa scelta permette di avere maggiore successo nell’instradamento di un numero maggiore di commodity, in quanto inizialmente le risorse vuote vengono riempite

gradualmente dalle bande basse in maniera tale da avere quanto più spazio possibile per le restanti commodity.

2.2 Allocazione dei costi sui link della rete

A supporto della fase di provisioning si utilizza l’algoritmo di Dijkstra: sulla rete verrà cercato

un cammino minimo per le commodity e verso le rispettive origini e destinazioni. È importante, quindi, andare a definire quali pesi verranno associati ai link poiché il costo di un

cammino trovato tramite tale algoritmo è riferito alla somma dei costi sui singoli archi che compongono il percorso, andando a concorrere all’individuazione del minimo.

A tale scopo introduciamo il costo di congestione z ij su ogni link della rete; questo costo è riferito alla percentuale di capacità dell’arco utilizzata in relazione alle bande delle

commodity instradate. Quando questo valore sarà pari ad 1, per un generico link, allora non sarà più possibile installare dei flussi di traffico su di esso. Indicando con u e la capacità massima dell’arco e, il costo di congestione sarà:

z ij = 1/ u e

e E, con e = ij.

Ad un generico instante t , quando sulla rete sono state instradate un certo numero m di commodity, il costo di congestione sarà:

z ij = (B k + 1)/ u e

dove B k è la somma delle bande delle m commodity instradate il cui percorso utilizza il link e .

2.3 Schema dell’algoritmo di instradamento

Dopo aver descritto e formalizzato il problema affrontato, procediamo con la descrizione delle varie fasi dell’algoritmo proposto. La rappresentazione grafica mediante diagramma di flusso è la seguente:

INPUT: Topologia fisica della rete. Insieme delle commodity (1, ,k, ,n) Ordina l’insieme delle commodity
INPUT: Topologia fisica della rete.
Insieme delle commodity (1,
,k,
,n)
Ordina l’insieme
delle commodity
secondo valori crescenti di banda e poni
k = 1
Per ogni arco ( i,j ) Є E poni :
z ij = 1/ u e , con e=ij
Seleziona la k ‐esima commodity
Applica l’algoritmo di Dijkstra
alla rete assegnando così i costi:
k = k +1
∀ arco ( i,j )
poni c i j = z i j
NO
Il cammino
esiste?
SI
Assegna la relativa commodity al cammino
e aggiorna il peso degli archi che
costituiscono il path : z i j = z i j + b k /u i j
NO
SI
K è l’ultima
FINE
commodit y

Figura 2.1: Schema dell’algoritmo di instradamento mediante digramma di flusso

Descriviamo i passi della fase sequenziale dell’algoritmo. Si prende in input il grafo G = (V,E) rappresentante la rete fisica e la matrice di traffico composta dalle n commodity, specificando per ognuna origine, destinazione e banda da trasmettere. Successivamente le commodity vengono ordinate come spiegato precedentemente ed inserite in una lista.

A questo punto viene selezionata la prima commodity e applicando l’algoritmo di Dijkstra si

identifica il percorso minimo dall’origine alla destinazione, allocando i costi come già spiegato. Se il cammino esiste, la commodity viene assegnata alla rete e di conseguenza ci saranno dei link, quelli che appartengono al path individuato, che hanno diminuito la loro capacità iniziale, aumentando il loro livello di congestione.

Quindi si andrà a operare sui relativi pesi aggiornando i valori del costo di congestione z ij in relazione alla banda b k della commodity instradata.

Si ripetono questi passi fino all’ultima commodity della lista.

Procedendo in questo modo si realizza un bilanciamento della rete, in quando, applicando

l’algoritmo di Dijkstra, di volta in volta si identificherà il cammino con la minima congestione

e assegnando la commodity si ottiene via via un livellamento dei carichi sulle risorse.

Nell’applicare l’algoritmo di Dijkstra, bisogna definire in modo corretto la condizione di assegnamento delle etichette ai nodi della rete; così da far rispettare il vincolo di capacità

sugli archi che, avendo definito il costo di congestione sui link come un valore percentuale sulla capacità massima, è uguale ad 1. In definitiva se indichiamo con Y i l’etichetta assegnata al nodo i V e dobbiamo cercare un cammino di costo minimo dal nodo s al nodo t , lo schema dell’algoritmo è:

PASSO P0 (Inizializzazione)

L ={s};

Y s = 0

Pred i = i i V

Y = +∞

i

i V, i s

PASSO P1 Si estrae un nodo i dalla lista L : i = arg min{Y , j L}

j

Per tutti i nodi j V , j s , tale che ( i,j ) E:

Se

Y

j

> Y + c

i

ij

e b k /u e + c ij < 1 , allora :

1.1

1.2

1.3

Y

j

= Y + c ;

i

ij

Pred j = i ;

Si aggiunge j a L , se j L ;

.

Se L = Ø oppure se si estrae il nodo destinazione t da L, allora STOP. Y t : Y t < + ∞ , rappresenta il peso di un percorso orientato di peso minimo dall’origine s alla destinazione t. Altrimenti torna al passo P1 .

3. SIMULAZIONI E ANALISI DEI RISULTATI

L’algoritmo proposto in precedenza è stato implementato tramite linguaggio di programmazione Java, in ambiente di sviluppo JBuilder. L’implementazione ha reso possibile l’esecuzione dell’algoritmo su istanze di diversi problemi. In questo capitolo presenteremo le reti sui cui sono stati effettuati i test, l’esecuzione delle simulazioni e l’analisi dei risultati.

3.1 Topologia delle reti

Per effettuare i test dell’algoritmo, sono state fornite 3 diverse reti topologicamente differenti per numero di nodi presenti:

Rete a 7 nodi

topologicamente differenti per numero di nodi presenti: Rete a 7 nodi Figura 3.1: Topologia della rete

Figura 3.1: Topologia della rete a 7 nodi

Rete a 14 nodi

Rete a 14 nodi Figura 3.2: Topologia della rete a 14 nodi Rete a 43 nodi

Figura 3.2: Topologia della rete a 14 nodi

Rete a 43 nodi

a 14 nodi Figura 3.2: Topologia della rete a 14 nodi Rete a 43 nodi Figura

Figura 3.3: Topologia della rete a 43 nodi

3.2

Risultati delle simulazioni

Per ognuna delle tre reti, abbiamo testato 4 matrici di traffico con un diverso valore del livello di carico della rete: 10%, 30%, 50%, 70%. Ognuna di esse presenta un diverso numero di commodity da instradare. Lanciando le simulazioni del nostro algoritmo, siamo interessati a conoscere il numero di commodity servite al variare del livello di carico e il valore del picco di congestione finale in ogni configurazione di rete. Otteniamo i seguenti risultati:

RETE 7 NODI

100% 100% 100% 99% 0.1 0.3 0.5 0.7 % Commodity servite
100%
100%
100%
99%
0.1
0.3
0.5
0.7
% Commodity servite

Livello di carico rete

Figura 3.4: Rappresentazione delle commodity servite al variare del livello di carico per rete con 7 nodi

Livello di carico rete

0.1

0.3

0.5

0.7

TOT Commodity

22

62

99

143

Picco di congestione

0.238

0.609

0.973

0.99

Tabella 3.1: Numero di commodity delle matrici di traffico e picco di congestione per rete con 7 rete nodi

RETE 14 NODI

100% 100% 100% 84% 0.1 0.3 0.5 0.7 % Commodity servite
100%
100%
100%
84%
0.1
0.3
0.5
0.7
% Commodity servite

Livello di carico rete

Figura 3.5: Rappresentazione delle commodity servite al variare del livello di carico per rete con 14 nodi

Livello di carico rete

0.1

0.3

0.5

0.7

TOT Commodity

32

86

137

191

Picco di congestione

0.42

0.868

0.995

0.997

Tabella 3.2: Numero di commodity delle matrici di traffico e picco di congestione per rete con 14 nodi

RETE 43 NODI

100% 100% 92% 76% 0.1 0.3 0.5 0.7 % Commodity servite
100%
100%
92%
76%
0.1
0.3
0.5
0.7
% Commodity servite

Livello di carico rete

Figura 3.6: Rappresentazione delle commodity servite al variare del livello di carico per rete con 43 nodi

Livello di carico rete

0.1

0.3

0.5

0.7

TOT Commodity

49

141

229

311

Picco di congestione

0.491

0.996

0.996

0.997

Tabella 3.3: Numero di commodity delle matrici di traffico e picco di congestione per rete con 43 nodi

I risultati ottenuti mostrano che, seguendo la strategia da noi scelta, l’applicazione dell’algoritmo garantisce il servizio di tutte le commodity contenute nelle matrici di traffico fino a che il valore del livello di carico si mantiene sotto il 70%. All’aumentare del numero di nodi delle reti e del numero di commodity da servire, il picco di congestione aumenta e di conseguenza vengono servite via via meno commodity.

Per ottenere uno scenario alternativo di confronto e poter meglio valutare i risultati ottenuti in precedenza, procediamo ad apportare una modifica al nostro algoritmo, in particolare cambiando il criterio di scelta per l’ordinamento delle commodity contenute nelle matrici di traffico, che rappresentano l’input del problema prima di procedere all’instradamento:

ordineremo le commodity per valori di banda decrescenti. In questo modo vengono instradate prima le commodity che richiedono bande più elevate; questa scelta potrebbe permettere di avere maggiore successo nell’instradamento di un numero maggiore di commodity, in quanto le ultime commodity della lista, necessitando di piccoli valori di banda, hanno più possibilità di trovare un percorso disponibile sui link. Riportiamo i risultati ottenuti applicando questo criterio confrontati con i risultati ottenuti nello scenario principale; per ogni rete si confrontano i valori della percentuale di commodity servite e del picco di congestione, al variare del livello di carico:

RETE 7 NODI

100% 98% 96% 94% 92% 90% 0.1 0.3 0.5 0.7 % Commodity servite
100%
98%
96%
94%
92%
90%
0.1
0.3
0.5
0.7
% Commodity servite

Livello di carico rete

Ord_CrescenteOrd_Decrescente

Ord_DecrescenteOrd_Crescente

Figura 3.7:Confronto tra strategie di ordinamento commodity sulla base delle commodity servite– rete 7 nodi

RETE 7 NODI

1 0.8 0.6 0.4 0.2 0 0.1 0.3 0.5 0.7 Picco di congestione
1
0.8
0.6
0.4
0.2
0
0.1 0.3
0.5
0.7
Picco di congestione

Livello di carico rete

Ord_CrescenteOrd_Decrescente

Ord_DecrescenteOrd_Crescente

Figura 3.8:Confronto tra strategie di ordinamento commodity sulla base del picco di congestione– rete 7 nodi

RETE 14 NODI

100% 95% 90% 85% 80% 75% 70% 0.1 0.3 0.5 0.7 % Commodity servite
100%
95%
90%
85%
80%
75%
70%
0.1
0.3
0.5
0.7
% Commodity servite

Livello di carico rete

Ord_Crescente14 NODI 100% 95% 90% 85% 80% 75% 70% 0.1 0.3 0.5 0.7 % Commodity servite

Ord_Decrescente14 NODI 100% 95% 90% 85% 80% 75% 70% 0.1 0.3 0.5 0.7 % Commodity servite

Figura 3.9:Diverse strategie di ordinamento commodity sulla base delle commodity servite rete 14 nodi

RETE 14 NODI

1 0.8 0.6 0.4 0.2 0.1 0.3 0.5 0.7 Picco di congestione
1
0.8
0.6
0.4
0.2
0.1 0.3
0.5
0.7
Picco di congestione

Livello di carico rete

Ord_CrescenteRETE 14 NODI 1 0.8 0.6 0.4 0.2 0.1 0.3 0.5 0.7 Picco di congestione Livello

Ord_DecrescenteRETE 14 NODI 1 0.8 0.6 0.4 0.2 0.1 0.3 0.5 0.7 Picco di congestione Livello

Figura 3.10:Confronto tra strategie di ordinamento commodity sulla base del picco di congestione – rete 14 nodi

RETE 43 NODI

100% 95% 90% 85% 80% 75% 70% 0.1 0.3 0.5 0.7 % Commodity servite
100%
95%
90%
85%
80%
75%
70%
0.1
0.3
0.5
0.7
% Commodity servite

Livello di carico rete

Ord_CrescenteOrd_Decrescente

Ord_DecrescenteOrd_Crescente

Figura 3.11:Diverse strategie di ordinamento commodity sulla base delle commodity servite rete 43 nodi

RETE 43 NODI

1 0.9 0.8 0.7 0.6 0.5 0.4 0.1 0.3 0.5 0.7 Picco di congestione
1
0.9
0.8
0.7
0.6
0.5
0.4
0.1
0.3
0.5
0.7
Picco di congestione

Livello di carico rete

Ord_Crescente43 NODI 1 0.9 0.8 0.7 0.6 0.5 0.4 0.1 0.3 0.5 0.7 Picco di congestione

Ord_DecrescenteRETE 43 NODI 1 0.9 0.8 0.7 0.6 0.5 0.4 0.1 0.3 0.5 0.7 Picco di

Figura 3.12:Confronto tra strategie di ordinamento commodity sulla base del picco di congestione– rete 43 nodi

Analizzando i risultati ottenuti dalle simulazioni dei due scenari proposti, vediamo che la strategia da noi scelta inizialmente (ordinamento crescente delle commodity) permette di servire una percentuale di commodity maggiore o uguale di quella dello scenario alternativo; si verifica un unico caso in cui l’ordinamento delle commodity in modo decrescente porta a servire un maggior numero di commodity rispetto all’ordinamento crescente: in particolare nella rete con 7 nodi in corrispondenza della matrice di traffico con livello di carico dello 0.7.

Riguardo ai valori del picco di congestione della rete, dai risultati non si riesce a delineare un preciso andamento di questo valore che sia migliore in generale in una strategia rispetto all’altra. Nella rete a 7 nodi, la strategia decrescente sembra produrre un picco di congestione più basso con un numero maggiore di commodity servite, all’aumentare del livello di carico. Un andamento inverso si verifica nella rete a 14 nodi, dove per valori bassi del livello di carico la rete risulta meno congestionata con un ordinamento decrescente e all’aumentare del carico risulta prevalere la strategia crescente. Nella rete con 43 nodi inizialmente risulta favorevole la strategia di ordinamento crescente e all’aumentare del livello di carico, per entrambe le strategie risulta un picco di congestione prossimo a 1; ma la strategia originaria di ordinamento crescente, come già visto, garantisce di servire un numero maggiore di commodity.

CONCLUSIONI

L’algoritmo proposto per il problema di instradamento di domande di traffico su una rete capacitata, risulta essere efficiente nel soddisfare le richieste ondemand dei clienti offrendo un elevato livello di servizio in relazione all’obiettivo di massimizzare il numero di commodity instradate rispettando i vincoli di capacità sui link. Dalle simulazioni effettuate, per ogni tipologia di rete in riferimento a differenti livelli di carico, risulta evidente la flessibilità con cui l’ algoritmo raggiunge i risultati desiderati in termini di flusso instradato, garantendo sempre un’alta percentuale di commodity servite, infatti nel nostro caso limite, con rete a 43 nodi e livello di carico dello 0.7, il valore ottenuto è stato 76%. Il valore del picco di congestione, ottenuto dall’esecuzione delle varie simulazioni, risulta essere prossimo a 1 all’aumentare del livello di carico delle reti, denotando un elevato sfruttamento delle risorse; ciò deriva dal fatto che le matrici di traffico rappresentavano dei flussi di domanda statici predeterminati. Nel caso in cui si volesse riservare sui link una parte di capacità per flussi online, cioè quelle richieste variabili e imprevedibili che arrivano durante il funzionamento della rete, si dovrebbe operare sull’algoritmo andando a modificare il vincolo sulla capacità massima dei link e impostare il valore desiderato.

“We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard”

(J.F.K. 1962)