View
99
Download
7
Category
Preview:
DESCRIPTION
Questo lavoro è orientato allo studio della fase di provisioning relativa ad un problema di connessione in cui vengono scelti i percorsi per l’instradamento del traffico. Si analizza e si descrive 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.
Citation preview
Università degli Studi di Roma "Tor Vergata"
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
2
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
3
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: traffic‐oriented 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;
4
• 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.
5
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:
(ok, dk, bk)
Dove
ok rappresenta il nodo origine del flusso di dati;
dk rappresenta il nodo destinazione del flusso di dati;
bk è 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:
6
cong(e) = e
Pekk
u
bk
∑∈: Ee∈∀
Il picco di congestione sarà: ( )( )econgMAXe
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 ue , ∀ 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.
7
Introduciamo le seguenti variabili:
⎩⎨⎧
=servita è k commodity la se 1
altrimenti 0kx
⎩⎨⎧
=e arcosull' attiva è k commodity la se 1
altrimenti 0key
e le variabili ausiliarie binarie dove K è l’insieme delle commodity. Kk e k ∈∀γα k
Indicando con ( ) { }uuEuvu =∈=+ :δ e con ( ) { }vvEuvv =∈=− :δ , il problema può essere
formulato come PLI nel seguente modo:
(1.1) ∑∈Kk
kxMAX
( )
( )( )
( )( )
( ) ( )( )
( )( )
( )( )
( )
( )
{ } { } { } { } (1.10 1 0, ;1 0, ;1 0, ;0,1
1.9 Kk 1
1.8 Kk 2
1.7 Kk
1.6 Kk
1.5 ,oi V,i K,k 0
1.4 Kk 0
1.3 Kk 0
1.2 Ee
k
∈∈∈∈
∈∀−+≥
∈∀+
≤
∈∀≤
∈∀≤
≠∈∀∈∀=−
∈∀=
∈∀=
∈∀≤⋅
∑
∑
∑∑
∑
∑∑
−
+
−+
+
−
∈
∈
∈∈
∈
∈
∈
kkkek
kkk
kk
k
de
ke
k
oe
ke
k
k
ie
ke
ie
ke
de
ke
oe
ke
eKk
kek
yx
x
x
y
y
dyy
y
y
uyb
k
k
k
k
αγ
γα
γα
α
γ
δ
δ
δδ
δ
δ
)
8
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 vincoli (1.6) e (1.7) esprimono, grazie alle variabili ausiliarie e , che se una
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
kα kγ
kx . kkk ANDx γα =⇒
9
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 NP‐HARD. 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
10
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 dà 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 zij 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 ue la capacità massima dell’arco e, il costo di congestione sarà:
zij = 1/ ue ∀ 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à:
zij = (Bk + 1)/ ue
dove Bk è 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:
11
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 :
zij = 1/ ue , con e=ij
Seleziona la k‐esima commodity
Applica l’algoritmo di Dijkstra
alla rete assegnando così i costi:
∀ arco (i,j) poni cij = zij
Il camminoesiste?
Assegna la relativa commodity al cammino
e aggiorna il peso degli archi che
costituiscono il path : zij = zij + bk/uij
K è l’ultima commodity
FINE
NO
SI
SINO
k = k +1
Figura 2.1: Schema dell’algoritmo di instradamento mediante digramma di flusso
12
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 zij in
relazione alla banda bk 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 Yi 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)
• { }; sL =
• Ys = 0
• si V,i ≠∈∀+∞=iY
• Predi = i Vi∈∀
13
PASSO P1 Si estrae un nodo i dalla lista L : { }Lj∈= ,Yminargi j .
Per tutti i nodi V∈j , sj≠ , tale che (i,j) ∈ E:
Se ijij cYY +> e bk/ue + cij < 1 , allora :
1.1 ijij cYY += ;
1.2 Predj = i ;
1.3 Si aggiunge j a L , se j L∉ ;
Se L = Ø oppure se si estrae il nodo destinazione t da L, allora STOP.
Yt : Yt < , rappresenta il peso di un percorso orientato di peso minimo ∞+
dall’origine s alla destinazione t.
Altrimenti torna al passo P1.
14
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
Figura 3.1: Topologia della rete a 7 nodi
15
Rete a 14 nodi
Figura 3.2: Topologia della rete a 14 nodi
Rete a 43 nodi
Figura 3.3: Topologia della rete a 43 nodi
16
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:
Figura 3.4: Rappresentazione delle commodity servite al variare del livello di carico per rete con 7 nodi
RETE 7 NODI100% 100% 100% 99%
Livello di carico rete
% C
omm
odity
ser
vite
0.1
0.3
0.5
0.7
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
17
RETE 14 NODI100% 100% 100%
84%
Livello di carico rete
% C
omm
odity
ser
vite
0.1
0.3
0.5
0.7
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 NODI100% 100%
92%
76%
Livello di carico rete
% C
omm
odity
ser
vite
0.1
0.3
0.5
0.7
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
18
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
90%92%
94%96%
98%100%
0.1 0.3 0.5 0.7
Livello di carico rete
% C
omm
odity
ser
vite
Ord_CrescenteOrd_Decrescente
Figura 3.7:Confronto tra strategie di ordinamento commodity sulla base delle commodity servite– rete 7 nodi
19
RETE 7 NODI
0
0.20.4
0.60.8
1
0.1 0.3 0.5 0.7
Livello di carico rete
Picc
o di
con
gest
ione
Ord_CrescenteOrd_Decrescente
Figura 3.8:Confronto tra strategie di ordinamento commodity sulla base del picco di congestione– rete 7 nodi
RETE 14 NODI
70%75%80%85%90%95%
100%
0.1 0.3 0.5 0.7
Livello di carico rete
% C
omm
odity
ser
vite
Ord_CrescenteOrd_Decrescente
Figura 3.9:Diverse strategie di ordinamento commodity sulla base delle commodity servite – rete 14 nodi
RETE 14 NODI
0.2
0.4
0.6
0.8
1
0.1 0.3 0.5 0.7
Livello di carico rete
Picc
o di
con
gest
ione
Ord_CrescenteOrd_Decrescente
Figura 3.10:Confronto tra strategie di ordinamento commodity sulla base del picco di congestione –
rete 14 nodi
20
RETE 43 NODI
70%75%80%85%90%95%
100%
0.1 0.3 0.5 0.7
Livello di carico rete
% C
omm
odity
ser
vite
Ord_CrescenteOrd_Decrescente
Figura 3.11:Diverse strategie di ordinamento commodity sulla base delle commodity servite – rete 43 nodi
RETE 43 NODI
0.40.50.60.70.80.9
1
0.1 0.3 0.5 0.7
Livello di carico rete
Pic
co d
i con
gest
ione
Ord_CrescenteOrd_Decrescente
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.
21
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.
22
CONCLUSIONI
L’algoritmo proposto per il problema di instradamento di domande di traffico su una rete
capacitata, risulta essere efficiente nel soddisfare le richieste on‐demand 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 on‐line, 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.
23
“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)
24
Recommended