24
Università degli Studi di Roma "Tor Vergata" Facoltà di Ingegneria CORSO DI PROGETTO E OTTIMIZZAZIONE DI RETI 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

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

Embed Size (px)

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

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

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  

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

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

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

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

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

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

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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

 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

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

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

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

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

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

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

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

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

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

 

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

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

 

 

 

“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