Académique Documents
Professionnel Documents
Culture Documents
FACOLTA’ DI INGEGNERIA
Tesi di laurea in Ingegneria Informatica
BASI DI DATI
Correlatore:
Dott. PAOLO TOPPAN
II
Sommario
III
Indice
Introduzione ...............................................................................................1
IV
3.4. Schema del database di rete.............................................................40
3.5. Analisi dinamica dei percorsi di banda migliore.............................43
Bibliografia e sitografia.............................................................................60
V
Introduzione
1
Lo sviluppo del “blocco decisore emergenza”, il modulo che stabilisce il
livello di emergenza in corso, ha richiesto la definizione e la simulazione
della rete fisica e della rete "logica", che indica lo scheduling dei controlli
di carico. È stato inoltre sviluppato un algoritmo di routing basato
sull'algoritmo di Dijkstra che, al variare dei rilevamenti di banda
disponibile, ricalcola dinamicamente i percorsi di banda ottima.
Questo tipo di meccanismo di erogazione adattativa di servizi alle
condizioni esterne rende la piattaforma InSeBaLa del tutto innovativa
rispetto ad altre piattaforme integrate di accesso a servizi multimediali su
banda larga.
Il testing è stato effettuato presso il WiLAB di Bologna, su un’architettura
di rete fortemente eterogenea, con le stesse caratteristiche della rete
regionale. In Fig. 1 sono evidenziati i tre poli della rete per il testbed,
posizionati nei pressi della Facoltà d’Ingegneria dell’Università degli Studi
di Bologna. Data questa eterogeneità si sono potute valutare le prestazioni
di applicazioni multimediali in presenza di link diversi, verificando la loro
qualità di servizio.
2
Capitolo 1
3
la richiesta di partecipazione, la modifica di documenti e la richiesta di
apertura di canali di comunicazione audio/video.
L’accesso ubiquo deve permettere ad un utente di ritrovare i propri dati e le
proprie impostazioni d’ufficio accedendo da postazioni remote, quali altri
uffici, altre città, il palmare. Una funzionalità importante dell’accesso
ubiquo è la firma digitale, che garantisce valore legale, integrità, autenticità
e non ripudio dei documenti, oltre a semplificare gli iter procedimentali,
portando a maggiore efficienza ed al contenimento della spesa pubblica.
A fronte di queste necessità, si è deciso di fornire i seguenti servizi:
− servizi per la comunicazione: instant messaging, Voice over IP
(che garantisca la reperibilità telefonica dell’utente sempre con la
stessa modalità), chiamate tetra, videoconferenza, servizi di rubrica.
− servizi per il lavoro di gruppo real-time remoto, da effettuarsi con
il supporto dei servizi di condivisione e comunicazione di contenuti
audio e video, anche off-line, condivisione di documenti e
comunicazione testuale, composizione di documenti a più mani sul
web, piattaforme groupware e sistemi PIM avanzati, e-learning.
− servizi per l’accesso ubiquo: localizzazione di periferiche o di altri
strumenti e risorse, firma digitale.
Il sistema deve anche gestire l’accesso sicuro e l’assegnazione dei diritti
d’utente e provvedere all’ottimizzazione delle risorse di rete. Deve infine
essere aperto ed estendibile, per potersi adattare a vari scenari della
Regione Emilia-Romagna e della Pubblica Amministrazione ed integrare in
futuro ulteriori servizi e funzionalità che si dovessero rendere utili e
necessarie.
4
dell’emergenza. L’accesso al sistema avviene tramite un front-end, che
colloquia con il blocco centrale e da questo riceve le indicazioni per
l’abilitazione dei servizi.
5
Il sistema informativo dell’ambiente che si è delineato deve gestire gli
accessi e fornire un’infrastruttura comune per una vasta gamma di
applicazioni eterogenee. A tal fine deve rappresentare sia informazioni
aggiornate poco di frequente, come utenti, servizi, risorse fisiche e logiche
(dati statici), che informazioni in rapidissima evoluzione come lo stato
delle connessioni (dati dinamici).
Questi requisiti hanno portato alla definizione di un’architettura ibrida, che
fa uso del server di directory LDAP [14-22] per le informazioni statiche e
di un server MySql per le informazioni dinamiche.
I server di directory come LDAP, attualmente utilizzati dai principali
vendor per lo sviluppo di piattaforme integrate (cfr. MS Active Directory),
sono ottimizzati per le letture, il che li rende particolarmente adatti
all’utilizzo per dati di tipo statico. Per quanto riguarda l’estensibilità dello
schema, i database supportano cambiamenti di schema, ma sono eventi rari
e complessi, mentre lo schema di una directory permette notevole
flessibilità. Vi sono ulteriori, molteplici requisiti soddisfatti da un servizio
di directory: autenticazione, personalizzazione del profilo utente, accesso
integrato ai servizi con un unico login, diritti di gruppo gerarchici,
centralizzazione delle configurazioni e degli aggiornamenti, resistenza ai
guasti, sicurezza tramite i protocolli SSL e TLS, supporto di certificati
digitali, ridondanza e gestione trasparente del fail-over.
Di particolare rilevanza in questa scelta è anche il fatto che l’utilizzo di
standard come LDAP garantisce interoperabilità fra sistemi e servizi
eterogenei, cosa che i modelli semiproprietari dei database non possono
fornire. LDAP non è però adatto a gestire dati dinamici, per la qual cosa è
più adatto un server relazionale. Per questo motivo è nata l’idea
dell’utilizzo congiunto di un server LDAP e di un server relazionale
MySql.
Resta da risolvere il problema della flessibilità dello schema dei dati
dinamici: un server relazionale è adatto ed efficiente per la gestione di tali
dati, ma, nell’impostazione tradizionale, non permette buona flessibilità
dello schema, se non con costi pesanti in termine di rivisitazione dello
6
schema stesso, ad esempio per problemi di denormalizzazione e
ricaricamento dei dati. Per garantire comunque flessibilità dello schema
senza oneri di ricostruzione, si è definito uno schema ad hoc pseudo-
relazionale, che permette di aggiungere attributi dinamicamente.
LDAP è un sistema organizzato gerarchicamente, in cui ogni oggetto ha un
identificatore unico detto dn (Distinguished Name) ed è descritto mediante
una serie di attributi che lo contraddistinguono. Il dn non specifica solo il
nome dell’oggetto, ma identifica anche la sua posizione all’interno
dell’albero.
La struttura dell’albero LDAP per InSeBaLa (Fig. 3) prevede sei classi di
primo livello. La struttura completa della gerarchia di classi si può
consultare tramite bind anonimo all’indirizzo [6] (Fig. 4). In questa sede si
vuole invece sottolineare il ruolo di tali classi nell’architettura
d’integrazione:
− Contacts: contiene i dati di utenti senza login (utenti esterni al
sistema)
− Applications: comprende i servizi al momento disponibili
− Ddc (emergenze): struttura dati dell’emergenza; tiene memoria dei
diritti degli utenti e dei gruppi a seconda del livello di emergenza in
atto
− Groups: contiene la struttura dei gruppi, utilizzata dal sistema
abilitante per offrire servizi personalizzati in base al gruppo di
appartenenza dell’utente
− Oid: contiene i numeri univoci che individuano gli oggetti
dell’albero (la base di partenza è stata assegnata da IANA)
− People: contiene i dati di tutti gli utenti in possesso di login
7
Fig. 3: classi LDAP di primo livello
8
Fig. 4: classi LDAP di primo livello su ldapweb.bo.cnit.it
Si noti anche che, per quanto riguarda le prime due tabelle, lo schema
proposto è a metà fra tabelle relazionali e cataloghi di sistema. L’ultima
9
tabella, Values, è di fatto un prodotto cartesiano (obj_id, attr_id) e tiene i
valori effettivi degli attributi.
La ricostruzione dell’informazione relativa a tutti gli attributi di un oggetto
comporta di conseguenza la navigazione delle tre tabelle tramite join,
anziché – come nella soluzione tradizionale – l’accesso ad una sola tabella.
D’altro canto, l’estensione dello schema con un nuovo attributo viene fatta
tramite due semplici registrazioni nella tabella Attributes e nella tabella
Values.
La struttura dati sopra descritta entra in azione all’atto del login, che
restituisce all’utente un’interfaccia del tipo di Fig. 5. Questo front end è
regolato da una procedura di login che, nell’architettura proposta, è
un’operazione complessa, comprensiva di più fasi fra loro interconnesse e
basate sull’interazione LDAP/MySql.
Tale complessità dipende dalla presenza di una funzionalità, detta
“Emergenza Software”, che realizza un particolare tipo di ottimizzazione di
rete e gestione della sicurezza negli accessi. L’emergenza software,
argomento del Cap. 2 ed ambito della tesi, si basa sul rilascio selettivo di
risorse e servizi in base al grado di coinvolgimento dell’utente in una
situazione critica, sia essa dovuta a problemi di traffico di rete (emergenza
rete) o ad eventi catastrofici sul territorio (emergenza geografica).
Così come l'architettura ibrida LDAP/MySql permette una notevole
flessibilità e scalabilità, l’erogazione adattativa di servizi alle condizioni
esterne rende la piattaforma InSeBaLa del tutto innovativa rispetto ad altre
piattaforme integrate di accesso a servizi multimediali su banda larga.
10
Fig. 5: interfaccia di accesso ai servizi
http://[nomeapplicativo].[valoriparametri].
Per quanto riguarda la comunicazione fra applicativi in sessioni di lavoro
cooperativo, si è pensato ad un utilizzo evoluto del server Jabber di
messaggistica. Il server Jabber è stato adattato per la notifica di eventi e
inviti, il passaggio dei parametri per l’avvio degli applicativi, il settaggio
automatico di parametri di configurazione per la connessione a un server e
l’avvio automatico dei client. Ciò ha permesso di risolvere il problema
della dinamicità dei parametri di connessione tra i vari servizi della
piattaforma causato dalla mobilità degli utenti.
Possiamo ora dettagliare lo schema di Fig. 1, in particolare il blocco di
server che costituiscono il sistema integrante (Fig. 6).
Fra i client ed il blocco LDAP/MySql si interpone un server Apache, che
provvede ad interrogare LDAP. Le query sono strutturate in XML: il client
invia l’identificativo dell’utente, Apache interroga LDAP e restituisce la
11
lista dell’abilitazione alle applicazioni. L’interfaccia web è sviluppata in
php. Il server Jabber provvede a gestire la comunicazione fra gli
applicativi.
12
Capitolo 2
13
opportuno che, ai soli utenti di quella zona, vengano limitati i servizi più
pesanti in termini di banda, come i servizi di videoconferenza.
In questo contesto, i diritti non sono solo basati sull’appartenenza
dell’utente ad una data categoria avente dati diritti, ma anche in base al
“livello di emergenza” in corso.
14
• opportuni livelli di emergenza
• come modulare i privilegi di utenti/gruppi a seconda del livello di
emergenza
• quali servizi rendere disponibili (ed a chi) ai diversi livelli di
emergenza.
Il meccanismo che regola il rilascio selettivo dei servizi, se non vi è alcuna
situazione di emergenza, rende disponibili tutti i servizi. Se è in atto una
situazione di emergenza, gestisce due azioni congiunte:
• richiesta di nuove sessioni (abilitazione o meno dei servizi)
• gestione di sessioni attive (blocco dei servizi che sono già attivi a chi
non ne ha più diritto)
Nel primo caso, si deve verificare quali servizi sono disponibili per l’utente
che ha richiesto la sessione al livello di emergenza in corso.
Nel secondo caso, occorre effettuare un refresh dei servizi disponibili, ad
esempio tramite un nuovo login trasparente all’utente. Con un time out
sufficiente a salvare la sessione, si interrompono i servizi cui l’utente, nella
situazione di emergenza in corso, non è più abilitato. Le modalità di
gestione di questa situazione sono in fase di valutazione.
15
2.2.1 Rappresentazione LDAP dell’emergenza
Si è utilizzato LDAP come strumento per memorizzare le informazioni
sugli utenti, sui gruppi di appartenenza degli utenti, sui diritti per ogni
livello di emergenza.
La rappresentazione LDAP dell’emergenza software (Figg. 8, 9) prevede la
definizione di due classi di primo livello, application e ddc.
La classe application contiene l’elenco e le proprietà dei servizi disponibili.
La classe ddc ha tante sottoclassi MTMminutes quanti sono i livelli di
emergenza.
Ogni classe MTMminutes mantiene Access Control List del tipo (can,
who, what). Le ACL di ogni MTMminutes indicano quali servizi sono
disponibili per i diversi gruppi di utenti. Ad esempio, al livello di massima
emergenza (MTMminutes = 1), si ha: CAN = 0, WHO = *, WHAT = *,
ossia tutti i servizi sono bloccati (tranne il login) per tutti gli utenti.
Al momento del login, dunque, l’insieme delle applicazioni rese disponibili
all’utente viene stabilito dinamicamente come segue:
• si legge il valore del livello di emergenza, dato dinamico registrato
in MySql e stabilito dal modulo di gestione dell’emergenza
• si legge su LDAP a quali gruppi cui appartiene l’utente
• in base a questi due dati, si analizzano le access list LDAP e si
stabiliscono i diritti
16
Fig. 8: rappresentazione LDAP dell’emergenza software
17
Questo front end è regolato da una procedura di login che, nell’architettura
proposta, è un’operazione complessa, comprensiva di più fasi fra loro
interconnesse e basate sull’interazione fra tutti i server componenti il
sistema abilitante.
In prima istanza, analizzeremo il caso di un utente fisso e lasceremo in
sospeso la struttura del blocco decisore dell’emergenza. Nel paragrafo 2.2.3
prenderemo invece in considerazione tutti i fattori indicati.
La prima fase è il login tramite dn LDAP e password, verificati mediante
protocollo LDAP dal server LDAP che detiene le credenziali.
La seconda fase prevede che vengano registrati sul server di stato alcuni
dati relativi alla connessione. Al momento, questi dati sono l’identificatore
dell’utente, importato da LDAP, l’avvenuta connessione e l’IP
Nella terza fase dell’autenticazione, il server di stato MySql riceve i dati
sulla connessione dell’utente autenticato, riceve il valore del livello
d’emergenza in corso dal modulo di valutazione emergenza e restituisce
tale livello a LDAP. In base a questo valore si scende nella classe
MTMminutes corrispondente e si leggono le ACL, per determinare quali
funzionalità sono disponibili in quel momento e per quell’utente. Tre sono
dunque le variabili: utente (e quindi gruppi di appartenenza), istante
temporale (situazione attuale), IP (posizione dell’utente).
L’algoritmo che gestisce l’emergenza software comprende i seguenti
blocchi logici:
1. connessione e bind dell’utente
2. ricerca dei gruppi a cui appartiene l’utente
3. ricerca delle applicazioni disponibili per ciascun gruppo cui
appartiene l'utente (questo fa sì che, ad uno stesso livello di
emergenza, per utenti diversi siano disponibili diverse applicazioni)
4. scansione delle ACL corrispondenti al livello dell’emergenza in
corso e ricerca delle applicazioni effettivamente disponibili (questo
fa sì che, a livelli di emergenza diversi, uno stesso utente trovi
disponibili diverse applicazioni diverse)
18
5. attivazione dinamica delle funzionalità effettivamente fruibili da
quel particolare utente in quel particolare momento e in quel
particolare luogo
19
base all’attuale ubicazione geografica dell’utente stesso e quindi al
livello attuale d’emergenza della zona in cui si trova
20
Il BDE prende in ingresso l’IP, che viene utilizzato da diversi moduli.
Prima di tutto, l’IP e dati sulla situazione della rete vengono analizzati dal
“blocco decisore emergenza rete”: un opportuno scheduling di controlli e
misure SNMP permettono di stabilire se un link è attivo e con quali
prestazioni, se l’apparato è saturo, se è necessario attivare il link di backup,
ecc.
In base a questi dati, il modulo crea una tabella (Tab. 1) che ad ogni IP
associa un valore di “emergenza rete”.
Un secondo blocco, a partire da indicazioni sulle zone geografiche, marca
una zona con un dato livello di emergenza e, tramite un reverse DNS, dice
quali IP appartengono a quella zona. Crea una tabella, in cui a ciascuna
zona corrispondono i relativi IP.
Un ulteriore blocco, il “blocco decisore emergenza geografica”, prende in
ingresso l’IP e dati su eventuali emergenze sul territorio e, appoggiandosi
ai dati del blocco reverse DNS, crea una tabella che ad ogni IP associa un
valore di “emergenza geografica”.
L’ultimo modulo prende in ingresso i valori di emergenza rete ed
emergenza geografica, applica una funzione di merge (media, valore più
alto, ecc.) e crea una tabella che ad ogni IP associa il livello di emergenza
totale e restituisce finalmente il livello di emergenza dell’IP considerato.
21
Fig. 12: architettura del blocco decisore emergenza
22
Fig. 13: flusso di ingressi e di uscite dei blocchi del sistema abilitante
per l’attivazione di applicazioni
23
Capitolo 3
Questa tesi è focalizzata su quella parte del blocco decisore emergenza che
valuta l’emergenza di rete.
Per analizzare il carico è essenziale definire dei modelli di rappresentazione
della rete sia in base alla sua topologia fisica che in base alle modalità di
interrogazione SNMP.
La prima parte dei risultati ottenuti in questa tesi riguarda lo studio di
modelli di rappresentazione e simulazione di questi oggetti. È stato poi
ideato e sviluppato un algoritmo di routing, variante dell’algoritmo di
Dijkstra, che utilizza queste strutture e calcola il percorso migliore.
Quando il livello di emergenza cambia, cambia anche la situazione di
carico di rete. Questo algoritmo, dunque, al variare del livello di
emergenza, permette di valutare dinamicamente i percorsi di carico
ottimale.
Questi modelli vengono poi trasferiti sul blocco LDAP/MySql, per
permettere l’interscambio di informazioni con il modulo decisore
dell’emergenza rete.
24
Per gestire il caso in esame, individuiamo alcune caratteristiche e parametri
che caratterizzano il grafo della rete fisica, per valutare poi alcune strutture
di rappresentazione.
Il grafo G(N, E) che rappresenta la rete fisica è orientato e con
collegamenti misti. Ciò vuol dire che esistono sia collegamenti simmetrici,
percorribili in entrambe le direzioni con le stesse caratteristiche di velocità,
o di altri parametri, che collegamenti asimmetrici, che prevedono
caratteristiche diverse a seconda del senso di percorrenza (si pensi a tratti
ADSL, in cui le velocità di download e di upload sono molto diverse).
Si intende che due o più nodi sono connessi se c’è un percorso che li
congiunge e che assicura determinate caratteristiche. Ad esempio, due nodi
collegati da un percorso si intendono connessi se la velocità di connessione
supera una data soglia di tolleranza.
Funzioni che utilizzano misure SNMP stabiliscono se è attivo un link fra
due router, misurando i byte transitati su un link, la banda residua
(controllando così l’avvicinarsi di una situazione di saturazione), il carico
della cpu, ecc. In base a questi dati viene deciso il livello di emergenza.
25
Fig. 14: modello della rete fisica
26
Raccolti i parametri in ingresso, il primo passo è la creazione degli archi
che definiscono il grafo.
Il primo parametro da applicare è quello relativo all’hop. L’idea principale
è quella di seguire una disposizione a stella, con un nodo centrale, un certo
numero (variabile) di diramazioni che partono da ogni nodo ed una
profondità, che rappresenta il raggio (hop) della stella.
Dato il numero di nodi n ed il raggio hop, il numero minimo di diramazioni
che dovrà avere ogni nodo per coprire, in hop passi, tutti i nodi del grafo è
dato dall’intero minimo m tale che:
Σ i = 0..hop
i
m ≥n
27
Fig. 15: vincolo di hop
28
I dati vengono salvati sia su file di testo che su tabella MySql, per verifiche
di prestazioni che serviranno più avanti.
L’algoritmo è stato sviluppato in C++ ed è incluso nel cd che accompagna
questa tesi.
29
3.2.1 Rappresentazione gerarchica dei controlli
Per rappresentare lo scheduling di misure sulla struttura di rete si è pensato
di classificare i nodi in base alla diversa periodicità e granularità dei
controlli del carico di banda.
Utilizzando questo criterio, si è stabilito di disporre i router in un albero di
scheduling dei controlli. Viene scelto un nodo padre ed ogni livello ha nodi
controllati con la stessa frequenza. Altri criteri di clustering sono
l’importanza dei nodi e le zone di appartenenza.
Nell’esempio in Fig. 18, il nodo più importante - e quindi più
frequentemente controllato - è fe1 (ad es. ogni 10 minuti). Il nodo cnitbo1
appartiene alla seconda fascia di frequenza di controllo (30 minuti) e ha fra
i nodi figli cnitbo2 e cnitbo3 (90 minuti).
30
Il framework SNMP utilizza il protocollo SNMP per lo scambio di
informazioni ed è basato su un modello manager/agent costituito da:
1. componenti base: cosa deve essere monitorato e come
2. comandi base per il monitoraggio ed il controllo
3. sistema informativo: come rappresentare e dove mantenere le
informazioni
1. Componenti base - su ogni elemento della rete è installato un agente che
colloquia con il gestore del framework. Più in dettaglio, troviamo:
Network element: dispositivi hardware (computer, router, ecc.) che
vengono connessi alle reti.
SNMP agent: moduli software che risiedono sui network element, con il
compito di memorizzare informazioni e renderle comprensibili a SNMP.
NMS (Network Management Station): è il manager, che esegue
monitoraggio e controllo. Ogni rete gestita ne ha anche più di uno. Il
software da installare su ciascun nodo da gestire è minimo: la maggior
parte delle capacità di elaborazione risiede sui manager.
2. Comandi base - read, con cui il manager effettua il monitoraggio di
variabili degli element; write, per il controllo e la scrittura di variabili su
element; trap, con cui gli element comunicano in modo asincrono a
NMS il verificarsi di particolari eventi; operazioni trasversali, con cui il
manager determina quali variabili sono supportate da un element e
dedurre di conseguenza informazioni da tabelle di variabili come le
routing table.
3. Sistema informativo – di ogni elemento della rete si decide quali
proprietà rappresentare e come. Gli oggetti di base sono:
• Managed object: una caratteristica o una proprietà che deve
essere gestita.
• MIB (Management information base): consiste di un insieme di
managed object memorizzati nel database MIB.
• SMI (Structure of management information): sono il
linguaggio e la sintassi usati per descrivere i managed object
contenuti nel MIB, mediante un formato indipendente dalla
31
piattaforma. Si usa un sottoinsieme dello standard ISO ASN.1
(Abstract Syntax Notation) sia per definire il formato dei pacchetti
scambiati dal protocollo di gestione che per rappresentare gli
oggetti che devono essere gestiti.
L’interazione dei componenti finora indicati è illustrata in Fig. 19: su ogni
device risiede un agent che provvede a scambiare informazioni con il
framework manager.
L’allocazione del database si intenda puramente logica, mirata a
partizionare i dati relativi ai diversi elementi.
32
- iso.identified-organization.dod.internet.management.MIB-2.ip
- 1.3.6.1.2.1.4
indicano entrambi il valore dell’ip del modulo MIB identificato dal
percorso indicato nell’OID.
Grazie agli OID, in maniera formalmente identica alla rappresentazione
degli oggetti LDAP, i managed objects sono organizzati in una struttura ad
albero (SNMP tree) del tipo indicato in Fig. 20: a livello 1 ci sono le
diverse organizzazioni per le standardizzazioni, ciascuna delle quali
fornisce l’identificazione ad altri gruppi associati ed ai relativi sottogruppi,
risorse di rete, oggetti di rete.
33
I moduli sottostanti la classe MIB-2 sono moduli standardizzati orientati ai
componenti hardware ed ai protocolli di rete. L’intera collezione di queste
sottoclassi è:
• System: contiene informazioni di carattere generale sul device di rete
• Interfaces: contiene le informazioni relative alle interfacce di rete
• Address Translation: contiene informazioni relative alla
conversioni degli indirizzi (es. da logico a fisico), esiste per
compatibilà con MIB-I
• Ip: contiene informazioni relative al protocollo IP
• Icmp: contiene informazioni relative al protocollo ICMP
• Tcp: contiene informazioni relative al protocollo TCP. Gli oggetti di
questo gruppo esistono solo per la durate della sessione TCP
• Udp: contiene informazioni relative al protocollo UDP
• Egp: contiene informazioni relative al protocollo EGP (protocollo
utilizzato da un router per scambiare informazioni tra Autonomous
System)
• Transmission: sperimentale, contiene informazione sui mezzi
trasmissione utilizzato da ogni interfaccia di rete
• Snmp: contiene informazioni relative al protocollo SNMP.
34
• Trap: permette all'agent di inviare un messaggio al verificarsi di un
determinato evento
35
3.3 Un algoritmo di routing basato sull’algoritmo di
Dijkstra
Si vuole completare il modello definendo un algoritmo di routing sulla rete
simulata.
Fra tutti i percorsi da un router Ni ad un router Nj nel grafo G(N, E), si
vuole trovare quello ottimo in termini di banda e, di questo, trovare il
“collo di bottiglia”, ossia il link di banda residua peggiore, sia per tenere
sotto controllo lo stato delle connessioni che per sapere quali sono le
prestazioni minime garantite.
Questo problema, opportunamente adattato, è un problema di calcolo di
percorso minimo. Per fare questo, dunque, si è deciso di adattare la
rappresentazione dei pesi degli archi e definire una variante dell’algoritmo
di Dijkstra, che ricordiamo brevemente.
Descrizione dell’algoritmo di Dijkstra: dati due nodi x e y, il problema
del cammino minimo consiste nel fornire un cammino da x a y di peso
minimo. Scopo dell’algoritmo di Dijkstra è determinare il percorso di peso
minimo che connette un nodo sorgente a ciascuno degli altri nodi (Single
Source Shortest Path Problem). I nodi del grafo vengono visitati in maniera
simile ad una ricerca in ampiezza o in profondità. In ogni istante, l’insieme
N dei nodi del grafo è diviso in tre parti: l’insieme dei nodi visitati V,
l’insieme dei nodi di frontiera F, (che sono i nodi successori dei nodi
visitati, ossia raggiungibili lungo un arco che esce da essi) ed i nodi
sconosciuti, che sono ancora da esaminare. Per ogni nodo z, l’algoritmo
tiene traccia di un valore dz, inizialmente posto uguale a ∞, e di un nodo uz,
inizialmente indefinito.
L’algoritmo consiste semplicemente nel ripetere il seguente passo: si
prende dall’insieme F un qualunque nodo z con dz minimo, si sposta z da F
in V, si spostano tutti i successori di z sconosciuti in F, e per ogni
successore w di z si aggiornano i valori dw e uw. L’aggiornamento viene
effettuato con la regola:
dw ← min {dw, dz + pa }
36
dove a è l’arco che collega z a w e pa è il suo peso. Se il valore di dw è
stato effettivamente modificato, allora uw viene posto uguale z.
La regola segue un’idea piuttosto naturale: se sappiamo che con peso dz
possiamo arrivare fino a z, allora arrivare a w non può costare più di
arrivare a z e spostarsi lungo un arco fino a w. L’aggiornamento di uw
permette di ricordare che, al momento, il cammino di peso minimo che
conosciamo per arrivare da x in w ha
come penultimo nodo z.
L’algoritmo parte con V = ∅, F = {x}, dx = 0 e prosegue finché y non viene
visitato, o finché F = ∅: in questo caso, y non è raggiungibile da x lungo un
arco orientato. Se usciamo solo nel secondo caso, alla fine dell’algoritmo
dz contiene, per ogni nodo z, il peso di un cammino minimo da x a z;
inoltre, il vettore u permette di ricostruire l’albero dei cammini minimi con
origine in x.
37
In questo modo, intuitivamente, i link peggiori hanno maggiore rilevanza
degli altri nella somma dei pesi effettuata da Dijkstra. Ad ogni iterazione si
aggiorna anche il maggior peso trovato sul percorso. Ad esempio, in
riferimento al grafo di Fig. 21, prendendo il nodo A come origine e facendo
variare il nodo destinazione, si ottengono i dati di Tab. 2:
B AàB 10
C AàC 5
D AàBàD 10
E AàCàE 20
Tab. 2: percorsi ottimi sul grafo di Fig. 22 e rispettivi tratti peggiori
38
L’algoritmo di simulazione del grafo è stato sviluppato in due varianti: la
prima salva i dati su un file di testo, la seconda li salva in una tabella
MySql.
Per una più ampia e flessibile rappresentazione del grafo, sarebbe
opportuno utilizzare tabelle, ma, ai fini dell’analisi di una rete reale su cui
si opera con l’algoritmo di Dijkstra, occorre valutare se siano più efficienti
i file di testo o le tabelle.
Per quanto riguarda le strutture dati da utilizzare nell’algoritmo di Dijkstra,
si utilizzano generalmente matrici di adiacenza oppure liste di adiacenza.
L’una e l’altra rappresentazione hanno diverse caratteristiche di
complessità spaziale e di accesso.
Quel che interessa in questo caso è la complessità temporale dell’algoritmo
di Dijkstra, che è O(|E|.log|N|) con liste di adiacenza opportunamente
visitate, e O(|N|2) con le matrici di adiacenza.
A seconda della percentuale di interconnessione, l’implementazione con
liste di adiacenza può risultare conveniente. In particolare, è conveniente se
il grafo è sufficientemente sparso, ossia con |E| di ordine inferiore o uguale
a O(|N|2/ log |N|).
Nel caso di una rete reale possiamo ipotizzare una percentuale di
collegamento tra nodi di circa il 10%, quindi si rientra nel caso di un grafo
molto sparso. Per questo motivo si è scelto di implementare l’algoritmo con
liste di adiacenza. I dati del grafo, dunque, siano essi presi da file di testo o
da tabella, vengono trasferiti su liste di adiacenza in memoria centrale per
poi essere analizzati.
Resta da valutare se utilizzare file di testo oppure tabelle MySql.
Il grafico di Fig. 22 mostra le prestazioni dell’algoritmo di Dijkstra
modificato calcolate rispetto ai cicli di clock all’aumentare del numero dei
nodi. I parametri del grafo sono: link effettivi 2%, asimmetrie 20%, hop 4.
L’utilizzo dei file di testo (linea con i quadri) rispetto a tabelle MySql
(linea con i cerchi) è leggermente più efficiente. Ciò non dipende
dall’algoritmo, ma dai tempi di caricamento dei dati. Nel caso di file di
testo, infatti, questi sono trascurabili, mentre caricare dati da una tabella
comporta un tempo di connessione di circa 10-15 cicli di clock. Questa
39
stessa stima comprende anche la cancellazione dei dati originari dopo il
caricamento, trascurabili nel caso di file di testo. Non calcolando questa
parte, i grafici si allineano. Si è dunque deciso di memorizzare il grafo su
tabella.
40
net_graph
id nodeA nodeB value measure status
e la seguente semantica:
net-graph routers
id node node_dest iprouter interf … MIB_in MIB_out MIB_speed
e la semantica è:
iprouter
interface interfaccia di rete del router
snmp_v versione di snmp: v1, v2 o v3. Con v3 si
devono utilizzare username e password e la
connessione è criptata
community monitor/control/trap
41
usr per snmp v3
pw per snmp v3
MIB_in OID snmp del router per trovare il campo
che contiene gli ottetti dei byte transitati in
ingresso
MIB_out OID snmp del router per trovare il campo
che contiene gli ottetti dei byte transitati in
uscita
MIB_speed OID snmp del router per trovare il campo
che contiene la velocità di default di
quell'interfaccia
Fig. 23: struttura di scheduling sui nodi della rete testbed di Bologna
42
3.5 Analisi dinamica dei percorsi di banda migliore
Come abbiamo visto, lo scheduling delle misure SNMP sulla rete avviene
in base ad una gerarchia LDAP di alcuni router di maggiore importanza,
classificati in base alla frequenza dei controlli.
Vediamo ora qual è il ruolo dell’algoritmo di Dijkstra modificato
nell’ambito di questo modello.
L’algoritmo di Dijkstra e l’utilizzo dei suoi risultati vengono gestiti
dinamicamente: se le misure SNMP rilevano peggioramenti o altri
cambiamenti, si ridefiniscono i pesi dei link del grafo della rete fisica e si
riapplica Dijkstra sul “nuovo” grafo, trovando i nuovi percorsi migliori.
In riferimento all’esempio di Fig. 24, i passi sono i seguenti:
1. Si applica Dijkstra per trovare il percorso migliore e vengono
individuati i 2 link in grassetto di Fig. 24b, che formano il
percorso ottimo (costo 25, banda minima assicurata 50 Mbit).
2. Nell’arco dei controlli previsti, i link vengono testati con
SNMP ed i valori di banda residua aggiornati di conseguenza.
Sono peggiorati alcuni link, evidenziati dalle linee tratteggiate:
link AC, passato da 200 a 50 Mbit; link BD, passato da 200 a
20 Mbit). Allo stesso modo, è migliorato un percorso
precedentemente scartato (sul percorso ABE, il link BE è
passato da 50 a 100 Mbit).
3. Poiché sono state rilevate modifiche, si riapplica Dijkstra, che
restituisce un nuovo percorso ottimo fra i due nodi (percorso
in grassetto ABE).
43
Fig. 24: (a) grafo iniziale e (b) relativo percorso ottimo AE; (c) variazioni
rilevate dalle misure SNMP e riassegnazione dinamica dei pesi; (d) nuovo
percorso ottimo AE
44
Capitolo 4
4.1 Generalità
45
La coesistenza dei due linguaggi comporta l’utilizzo di due gerarchie di
classi, una C++ (gerarchia compilata), l’altra OTcl (gerarchia interpretata).
L’utilizzo di entrambe ha motivazioni simili a quelle dell’utilizzo dei due
linguaggi: da una parte la gestione del traffico di rete, dall’altra il controllo
ed il setup della rete.
Le due gerarchie sono strettamente correlate l’una all’altra. Dal punto di
vista dell’utente, infatti, c’è una corrispondenza 1:1 tra una classe nella
gerarchia interpretata ed una classe in quella compilata. La radice di questa
gerarchia è la classe TclObject.
La Fig. 25 mostra i primi livelli. L’utente può creare nuovi oggetti del
simulatore attraverso l’interprete, all’interno del quale vengono istanziati e
dal quale vengono associati immediatamente ad un oggetto corrispondente
nella gerarchia compilata. La gerarchia di classi interpretata è
automaticamente stabilita attraverso i metodi definiti nella classe TclClass,
mentre gli oggetti istanziati dall’utente, vengono associati all’oggetto della
gerarchia compilata attraverso i metodi definiti nella classe TclObject.
46
Fig. 26: visualizzazione dei risultati della simulazione
Tcl-8.4.11 :
./configure: line 7624: syntax error near unespected token ) '
./configure: line 7624: OSF*) '
47
4.3 Simulazioni
Gli algoritmi di routing più usati nele reti reali, anche attualmente, restano
il Link-State ed il Distance Vector, che sono infatti compresi nei moduli
del simulatore NS2 e verranno quindi usati per efettuare i confronti con
l’algoritmo di Dijkstra modificato.
48
è rappresentata dalla seguente tabella:
da a link peso
A B 1 1
A D 3 1
B A 1 1
B C 2 1
B E 4 1
C B 2 1
C E 5 1
D A 3 1
D E 6 1
E B 4 1
E C 5 1
E D 6 1
Tab.3: rappresentazione tabellare della rete di Fig. 27
49
I pacchetti inviati da un router e che, ricevuti dai vari router della rete,
permettono la costruzione della mappa della rete, sono detti Link State
Packet (LSP).
Il Link State Packet (LSP) contiene informazioni sullo stato di ogni link
connesso al router:
• identità di ogni vicino connesso all'altro estremo del link (sulle LAN
possono esserci migliaia di vicini)
• costo del link
• numero di sequenza per il LSP (a seguito di frequenti variazioni di
topologia un router può ricevere un LSP vecchio dopo uno nuovo,
quindi deve essere in grado di valutare il più recente)
• checksum
• lifetime (la validità di ogni LSP è limitata nel tempo, diversamente
un errore sul numero di sequenza potrebbe rendere un LSP valido per
anni)
Il LSP è trasmesso in flooding su tutti i link del router e tutti i router del
dominio di routing ricevono il LSP.
All'atto del ricevimento di un LSP il router compie le seguenti azioni:
• se non ha mai ricevuto LSP da quel router o se il LSP è più recente
di quello precedentemente memorizzato (campo Sequence Number),
memorizza il pacchetto e lo ritrasmette in flooding su tutte le linee
eccetto quella da cui l'ha ricevuto
• se il LSP ha lo stesso numero di sequenza di quello posseduto non fa
nulla
50
• se il LSP è più vecchio di quello posseduto trasmette al mittente il
pacchetto più recente
51
Si supponga che F abbia stimato i ritardi dai routers vicini C,I,G ed E:
• C sa di poter raggiungere A in 5 msec , quindi F che ha calcolato un
ritardo da C di 2 msec, sa di poter raggiungere A tramite C in 5+2=7
msec
• E sa di poter raggiungere A in 2 msec , quindi F che ha calcolato un
ritardo da E di 3 msec, sa di poter raggiungere A tramite E in 2+3=5
msec
• G sa di poter raggiungere A in 3 msec , quindi F che ha calcolato un
ritardo da G di 3 msec, sa di poter raggiungere A tramite G in 3+3=6
msec
• I sa di poter raggiungere A in 6 msec , quindi F che ha calcolato un
ritardo da I di 1 msec, sa di poter raggiungere A tramite I in 6+1=7
msec
Il valore migliore è 5, quindi F crea nella sua tabella di routing un valore
associato ad A registrando il ritardo pari a 5 msec e la linea di trasmissione
E. Quindi, al contrario di altri algoritmi tra i quali il Link-State, il Distance
Vector non fa conoscere a ciascun router la topologia dell'intera rete, ma
solo dei suoi vicini. Questo porta a diverse problematiche, tra le quali il
problema del conto all'infinito.
52
:
$ns color 1 Blue
set nf [open outpr5.nam w]
$ns namtrace-all $nf
proc finish {} {
global ns nf tf
$ns flush-trace
close $nf
close $tf
exec nam outpr5.nam &
exit 0
}
$ns rtproto LS (o $ns rtproto DV)
Si procede ora alla descrizione del grafo, che in un file .tcl si suddivide in
due parti principali.
Prima si crea un oggetto di tipo node per ogni nodo del grafo, assegnando
inoltre ad ognuno di essi un nome univoco:
Si definiscono poi i collegamenti tra i nodi, letti dal file di testo contenente
la loro lista. Questi in ns2 possono essere definiti in due modi:
monodirezionali (simplex-link) o bidirezionali (duplex-link). In questa
simulazione verranno usati solo collegamenti simplex-link dal momento
che, come è stato precedentemente spiegato, vi è una certa percentuale di
asimmetria nella rete ed i link di andata e ritorno vanno distinti.
Specifichiamo infatti per ogni collegamento monodirezionale, il suo costo:
53
$ns simplex-link $n0 $n1 0.3Mb 10ms DropTail
$ns cost $n0 $n1 1000
Infine non resta che stabilire istanti di inizio dell’ invio di pacchetti e di
fine simulazione, e lanciare la simulazione stessa:
54
4.3.3 Confronti
Viene eseguito il programma che genera un grafo casuale di 40 nodi in cui
il nodo 0 ed il nodo 20 sono stati fissati come partenza ed arrivo.
Dopo la generazione del file di testo contenente tutti i link della rete ed il
file .tcl corrispondente descritto prcedentemente, calcola tramite
l’algoritmo di Dijkstra modificato il percorso minimo mostrandone a video
tutti i nodi intermedi e la banda minima garantita, ovvero il costo del link
peggiore (Fig. 29):
55
Fig. 30: File di testo contenente la lista dei collegamenti del grafo
56
Fig. 31: Output .nam con protocollo Link-State
57
In Fig. 32 in un grafo di 30 nodi, sempre con nodo 0 e 20 fissati come
partenza ed arrivo, l’algoritmo di Dijkstra modificato trova come percorso
minore 0-1-20. Dall’esecuzione del file .tcl otteniamo (Fig. 33):
58
Conclusioni e sviluppi futuri
Come illustrato nei capitoli centrali della tesi, partendo dallo sviluppo di un
programma che , inseriti 4 parametri dall’ utente (numero di nodi del grafo,
percentuali di link effettivi esistenti, pecentuale di asimmetria degli archi e
hop minimo), crei una rete che rispetti questi vincoli, si è proceduto alla
creazione di un algoritmo di Dijkstra modificato valutabile su questa rete.
Sempre a questo scopo è stato studiato il simulatore NS2, che tra i suoi
moduli contiene gli algoritmi di routing Link-State e Distance Vector e
confrontando entrambi con i percorsi minimi trovati dall’ algoritmo di
Dijkstra modificato, questi percorsi sono risultati i medesimi.
59
Bibliografia e sitografia
Piattaforme integrate:
[1] Citrix - Access on Demand: Remote Desktop Solutions, www.citrix.com
[2] Sun, Inktomi CorpRedback Networks Inc. et al. (http://www.sun.com)
[3] www.fujitsu.com
[4] www.cisco.com
Adattatività:
[5] T. Kwon, Y. Choi, C. Bisdikian, M. Naghshineh, QoS Provisioning in
Wireless/Mobile Multimedia Networks Using an Adaptive Framework,
ACM Wireless Networks, vol. 9, no. 1, 5159, 2003
[6] Nidal Nasser, Real-Time Service Adaptability in Multimedia Wireless
Networks, Q2SWinet05, Montreal, Quebec, Canada, 2005
[7]Taekyoung Kwon , Yanghee Choi , Sajal K. Das, Bandwidth Adaptation
Algorithms for Adaptive Multimedia Services in Mobile Cellular Networks,
Wireless Personal Communications: An International Journal, v.22 n.3,
p.337-357, September 2002
[8] Ruiz, P.M. Garcia, E. Agora Systems S.A., Madrid, Spain Improving
user-perceived QoS in mobile and wireless IP networks using real-time
adaptive multimedia applications, 15-18 Sept. 2002
Progetto InSeBaLa:
[9] www.bo.ieiit.cnr.it/insebala.php
[10] www.insebala.com
[11] http://www.wilab.org/insebala/
[12] C. Donzelli, C. Fontana, A. Ravaioli, P. Toppan, M. Patella, C. De
Castro, An LDAP/SQL-based Architecture for Broadband Services, Proc. of
60
IASTED Int. Conference on Communication Systems and Applications
(CSA 2006), Banff, Canada, July 3rd-5th 2006.
[13] C. Donzelli, C. Fontana, A. Ravaioli, P. Toppan, M. Patella, C. De
Castro, Software Emergency: Network Optimisation via the Selective
Release of Broadband Services, TR IEIIT-CNR-04-06
LDAP:
[14] W. Yeong, T. Howes, S. Kille, Lightweight Directory Access
Protocol, IETF RFC 1777, 1995 http://www.ietf.org/rfc/rfc1777.txt.
[15] M. Wahl, T. Howes, and S. Kille, Lightweight Directory Access
Protocol (v3), IETF RFC 2251, 1997, www.ietf.org/rfc/rfc2251.
[16] Ehlenberger, R. Gorthi, S.Tuttle et al, Understanding LDAP Design
and Implementation, IBM International Technical Support Organization,
2004, www.redbooks.ibm.com/redbooks/pdfs/sg244986.pdf
[17] T.A. Howes, M.C. Smith, G.S. Good, Understanding and Deploying
LDAP Directory Services, Addison Wesley 2003, 2^ ed.
[18] G. Carter , LDAP System Administration, O'Reilly, 2004
[19] D. Kandlur, H. Schulzrine, D. Verma, X. Wang, Measurement and
Analysis of LDAP Performance, Network Systems Department –
IBM T.J. Watson Research Center,
www.cse.buffalo.edu/~xwang8/public/paper/LDAP_sigmetrics.pdf
[20] V. Koutsonikola, A. Vakali, LDAP: framework, practices, and trends,
Internet Computing, IEEE, Volume 8, Issue 5, Sept.-Oct. 2004 Page(s):66
- 72 Digital Object Identifier 10.1109/MIC.2004.44
[21] C.S. Yang, C.Y. Liu, J. H. Chen, C.Y. Sung, Design and
implementation of secure Web-based LDAP management system,
Proceedings of 15th International Conference on Information Networking,
61
2001, Page(s):259 – 264, Digital Object Identifier
10.1109/ICOIN.2001.905437
[22] L. Kaining, Y.T. Xian, T. Yun, J. Zou, Design and implementation of
DHCP & LDAP directory service integrated management system, IEEE
2002 International Conference on Communications, Circuits and Systems
and West Sino Expositions, Volume 1, 2002 Page(s):758 – 762 vol.1
Simulazione, ns2:
[23] http://www.isi.edu/nsnam/ns/
[24] http://nile.wpi.edu/NS/ (Jae Chung, Mark Claypool, NS by example)
[25] The ns Manual (formerly ns Notes and Documentation) - The VINT
Project. A collaboration between researchers at UC Berkeley, LBL,
USC/ISI, and Xerox PARC. Kevin Fall, Editor & Kannan Varadhan, Editor
Monitoraggio:
[26] L. Li, M. Thottan, B. Yao, S. Paul Distributed Network Monitoring
with Bounded Link Utilization in IP Networks, IEEE INFOCOM 2003
[27] R. Subramanyan, J.Miguel-Alonso, J. A. B. Fortes, A scalable SNMP
based distibuted monitoring system for heterogeneous network computing,
Proceedings of SC2000, Dallas, Texas, 2000
62
Lista delle tabelle:
Tab. 1: blocchi del sistema abilitante con rispettivi ingressi ed uscite
Tab. 2: percorsi ottimi sul grafo di Fig. 22 e rispettivi tratti peggiori
Tab. 3: rappresentazione tabellare della rete di Fig. 1
63
Fig. 21: grafo originale e corrispondente grafo con pesi complementati
Fig. 22: prestazioni dell’algoritmo di Dijkstra al variare del numero di nodi,
utilizzando file di testo e tabella MySql. Link effettivi 2%, asimmetrie
20%, hop 4
Fig. 23: struttura di scheduling sui nodi della rete testbed di Bologna
Fig. 24: (a) grafo iniziale e (b) relativo percorso ottimo AE; (c) variazioni
rilevate dalle misure SNMP e riassegnazione dinamica dei pesi; (d) nuovo
percorso ottimo AE
Fig. 25: gerarchia Ns2
Fig. 26: visualizzazione dei risultati della simulazione
Fig. 27: rete di esempio per Link-State
Fig. 28: sottorete di esempio per Distance Vector
Fig 29: Dijkstra modificato primo confronto
Fig. 30: File di testo contenente la lista dei collegamenti del grafo
Fig. 31: Output .nam con protocollo Link-State
Fig. 32: Dijkstra modificato secondo confronto
Fig. 33: Output .nam con protocollo Distance Vector
Contenuto del cd
• Algoritmo di creazione di un grafo di rete con memorizzazione sia su
file di testo che su tabelle mysql
• Algoritmo di Dijkstra modificato
• Copia di questa tesi in formato elettronico
64