Alma Mater Studiorum
Università di Bologna
Facoltà di Ingegneria
Dipartimento di Elettronica, Informatica e Sistemistica
DEIS-TLC
Relazione di attività
sulla creazione di un emulatore per
router ottico programmabile
per reti ibride
Relazione di: Raul Cafini
Correlatori: Carla Raffaelli
Michele Savi
Walter Cerroni
Collaboratori: Ivan Aldaya
retro della copertina
Versione 1
Indice
1 Introduzione.......................................................................................................................................5
1.1 Reti Ottiche e Multigranularità.................................................................................................. 5
1.2 Wavelength Division Multiplexing............................................................................................6
1.3 Optical Switching Paradigms.....................................................................................................6
1.3.1 Optical Circuit Switching...................................................................................................6
1.3.2 Optical Burst Switching..................................................................................................... 7
1.3.3 Optical Packet Switching................................................................................................... 7
1.4 Slotted vs. Unslotted Networks................................................................................................. 7
1.5 Architettura................................................................................................................................ 7
1.6 Contention Reslution................................................................................................................. 8
2 L'Approccio Scelto............................................................................................................................ 8
2.1 Simulazione vs. Emulazione......................................................................................................9
2.2 La proposta IETF ForCES......................................................................................................... 9
2.3 L'estensione del gruppo DEIS-TLC.........................................................................................10
3 Il Modello Software.........................................................................................................................10
3.1 Architettura del nodo............................................................................................................... 10
3.2 Management Plane...................................................................................................................11
3.2.1 Network Management Plane............................................................................................ 12
3.2.2 Node Management Plane................................................................................................. 12
3.2.3 Standard Protocol NETCONF......................................................................................... 12
3.3 Control Plane........................................................................................................................... 12
3.3.1 Standard Protocol RSVP-TE (over GMPLS)...................................................................13
3.3.2 Standard Protocol ForCES............................................................................................... 14
3.4 Forwarding Plane.....................................................................................................................14
3.4.1 Forwarding Element.........................................................................................................15
3.4.2 Switching Module............................................................................................................ 16
4 Il Click!............................................................................................................................................16
4.1 Elementi................................................................................................................................... 17
4.2 Configurazioni......................................................................................................................... 17
4.3 Pacchetto Click!....................................................................................................................... 17
4.3.1 Puntatore.......................................................................................................................... 18
4.3.2 Annotazioni...................................................................................................................... 18
4.3.3 Dati...................................................................................................................................19
4.4 Elementi Propri........................................................................................................................ 19
4.4.1 Creare un nuovo elemento............................................................................................... 19
4.4.2 Metodo simple_action......................................................................................................19
4.4.3 Compilare un nuovo elemento......................................................................................... 19
4.5 Driver Userlevel e Kernelmodule............................................................................................ 20
5 Il Test-Bed....................................................................................................................................... 20
5.1 Architettura.............................................................................................................................. 20
5.1.1 Macchina di Gestione da Remoto.................................................................................... 22
5.1.2 Macchina Generatrice di Traffico.................................................................................... 23
5.1.3 Macchina Router.............................................................................................................. 24
5.1.4 Macchina Ricevitore del Traffico.....................................................................................24
5.2 Management Plane...................................................................................................................25
5.2.1 Management Element.......................................................................................................25
5.3 Control Plane........................................................................................................................... 26
14 dicembre 2010
1
Versione 1
5.3.1 OCS Signaling Channel................................................................................................... 26
5.3.2 Control Element (CE)...................................................................................................... 26
5.3.3 From/To Kernel................................................................................................................ 28
5.4 Forwarding Plane.....................................................................................................................29
5.4.1 From/To User................................................................................................................... 29
5.4.2 Logical Forwarding Element (LFE).................................................................................31
5.4.3 Physical Forwarding Element (PFE) – OCS....................................................................31
5.4.4 Physical Forwarding Element (PFE) – OBS....................................................................31
5.4.5 Physical Forwarding Element (PFE) – OPS.................................................................... 32
5.4.6 Control Bus...................................................................................................................... 32
5.5 Switching Module....................................................................................................................32
5.5.1 Architettura Broadcast & Select.......................................................................................32
5.5.2 EDFAs.............................................................................................................................. 33
5.5.3 WDM Multiplexer & Demultiplexer............................................................................... 33
5.5.4 Fiber Delay Lines.............................................................................................................33
5.5.5 Wavelength Converters (WC).......................................................................................... 33
5.5.6 Splitters & Couplers.........................................................................................................34
5.5.7 Semiconductor Optical Amplifier (SOA)........................................................................ 34
5.6 Livelli di Esecuzione............................................................................................................... 34
5.6.1 Livello Userlevel..............................................................................................................35
5.6.2 Livello Kernelmodule...................................................................................................... 36
5.7 Programmi e Script di Emulazione.......................................................................................... 36
5.7.1 Ricezione del Traffico (deisnet67)................................................................................... 37
5.7.2 Emulatore Router (deisnet 69)......................................................................................... 37
5.7.3 Generazione del Traffico (deisnet68)...............................................................................38
5.8 Caratterizzazione di Potenza....................................................................................................39
5.8.1 Tabelle di funzioni complesse.......................................................................................... 39
5.8.2 Numeri in Virgola Fissa................................................................................................... 39
6 Elenco degli Elementi......................................................................................................................39
6.1 Attenuator.................................................................................................................................39
6.2 Bus........................................................................................................................................... 39
6.3 CEScheduler............................................................................................................................ 39
6.4 CESecurityModule...................................................................................................................39
6.5 CircuitsTable............................................................................................................................ 39
6.6 Click2Data............................................................................................................................... 40
6.7 Combiner................................................................................................................................. 40
6.8 Connector.................................................................................................................................40
6.9 CrossTalk................................................................................................................................. 40
6.10 Data2Click............................................................................................................................. 40
6.11 EDFA..................................................................................................................................... 40
6.12 FEScheduler...........................................................................................................................40
6.13 FMOCSScheduler..................................................................................................................40
6.14 FMOPSScheduler.................................................................................................................. 40
6.15 LabelLookup.......................................................................................................................... 40
6.16 LabelSwap............................................................................................................................. 41
6.17 LogarithmicAttenuator...........................................................................................................41
6.18 NETCONFManager...............................................................................................................41
6.19 NewElement...........................................................................................................................41
6.20 NewHeaderAppend................................................................................................................41
6.21 NoiseSource........................................................................................................................... 41
2
11 novembre 2010
Versione 1
6.22 OCSSignalingChannel........................................................................................................... 41
6.23 OpticalRouterAnnotations..................................................................................................... 41
6.24 Power..................................................................................................................................... 41
6.25 PowerModule.........................................................................................................................41
6.26 ReadAnnotationBytes............................................................................................................ 42
6.27 ReadAnnotation..................................................................................................................... 42
6.28 ReadWavelengthColor........................................................................................................... 42
6.29 RSVPManager....................................................................................................................... 42
6.30 RSVPMessage....................................................................................................................... 42
6.31 SetPower................................................................................................................................ 42
6.32 SetTimeslot............................................................................................................................ 42
6.33 SetTrafficNeed....................................................................................................................... 42
6.34 SOASwitch............................................................................................................................ 42
6.35 Splitter...................................................................................................................................42
6.36 TimeslotManager................................................................................................................... 43
6.37 TimeslotMarker......................................................................................................................43
6.38 TimeWrite.............................................................................................................................. 43
6.39 TunableWavelengthConverter................................................................................................43
6.40 Wavelength............................................................................................................................ 43
6.41 WDMDemultiplexer.............................................................................................................. 43
6.42 WDMMultiplexer.................................................................................................................. 43
6.43 WritePower............................................................................................................................ 43
7 Risultati............................................................................................................................................43
7.1 Validazione...............................................................................................................................44
7.2 Standardizzazione, Multi-granularità e Sicurezza................................................................... 45
7.2.1 RSVP/GMPLS Protocol...................................................................................................51
7.2.2 NETCONF Protocol.........................................................................................................51
7.2.3 ForCES Protocol.............................................................................................................. 52
7.3 Performance............................................................................................................................. 52
7.3.1 Packet header processing time......................................................................................... 52
7.3.2 Time Slot reduction.......................................................................................................... 54
7.4 Caratterizzazione di Potenza....................................................................................................54
7.4.1 Generico percorso del segnale ottico............................................................................... 55
7.4.2 Profili di Potenza e OSNR............................................................................................... 56
8 Software, wiki e manuali................................................................................................................. 58
8.0.1 Pubblicazione dei lavori presentati alle conferenze sul sito del Click!............................58
8.0.2 Pubblicazione del software sul sito del Click! Come pacchetto aggiuntivo del tool;......59
8.0.3 Pubblicazione di un sito per il progetto;.......................................................................... 59
8.0.4 Pubblicazione di un sotto-sito wiki per la documentazione del progetto;.......................59
8.0.5 Pubblicazione di una pagina di interazione con il modello;............................................59
9 Sviluppi futuri..................................................................................................................................60
9.1 Re-Ingegnerizzazione del modello e documentazione............................................................ 60
9.2 Apertura ad altri attori..............................................................................................................60
9.2.1 Laureandi, Borsisti e Dottorandi...................................................................................... 61
9.2.2 Aziende.............................................................................................................................61
9.3 Consumo di Potenza................................................................................................................ 61
9.3.1 Consumo del Piano di Controllo...................................................................................... 61
9.3.2 Consumo del Piano di Inoltro.......................................................................................... 61
9.4 Test sulle performance............................................................................................................. 61
9.4.1 Funzionamento a “polling” delle schede di rete.............................................................. 62
14 dicembre 2010
3
Versione 1
9.5 Interfaccia utente......................................................................................................................62
9.5.1 Soluzione Java..................................................................................................................62
9.5.2 Soluzione PHP................................................................................................................. 62
10 Guide per l'installazione................................................................................................................ 62
10.1 Installazione del Sistema Operativo...................................................................................... 63
10.1.1 Scelta della Distribuzione.............................................................................................. 63
10.1.2 Installazione................................................................................................................... 63
10.1.3 Ottimizzazione Iniziale.................................................................................................. 64
10.1.4 Ottimizzazione Avanzata................................................................................................65
10.2 Installazione del Click! Modular Router............................................................................... 65
10.2.1 Installazione................................................................................................................... 65
10.3 Installazione Interfaccia Grafica Clicky (Opzionale)............................................................ 67
10.4 Installazione e Compilazione di un Kernel per Click!...........................................................67
10.4.1 Download dei sorgenti................................................................................................... 67
10.4.2 Installazione delle Patch.................................................................................................68
10.4.3 Configurazione del Nuovo Kernel................................................................................. 68
10.4.4 Compilazione ed Installazione....................................................................................... 69
10.4.5 Installazione del Click! Con il nuovo Kernel.................................................................69
10.5 Installazione di NETCONF (YUMA)....................................................................................71
10.5.1 Installazione dei sorgenti................................................................................................71
10.5.2 Avvio del Demone NETCONF (netconfd).....................................................................71
10.5.3 Avvio del Client NETCONF (yangcli)...........................................................................72
10.5.4 Realizzazione del Modulo “Optical Router”................................................................. 72
10.5.5 Caricamento del Modulo................................................................................................72
10.6 Installazione del plugin ForCES per Wireshark.................................................................... 73
10.6.1 Reperimento del codice dissector.................................................................................. 73
10.6.2 Installazione di Wireshark..............................................................................................73
10.6.3 Estensione per protocolli aggiuntivi.............................................................................. 73
10.6.4 Installazione del dissector ForCES “nativo”..................................................................73
10.6.5 Installazione del dissector ForCES come “plugin”........................................................73
4
11 novembre 2010
Introduzione
Versione 1
1 Introduzione
Negli ultimi anni, lo scenario di Internet è in continua evoluzione. Le nuove necessità infatti richiedono di poter trasferire una maggiore quantità di informazioni (nel minor tempo possibile)
unite alla crescita esponenziale degli utenti e ad una proliferazione di servizi con richieste di banda e velocità sempre maggiori pongono nuove sfide al mondo delle reti di telecomunicazioni.
•
Problema: i gestori della rete, i centri di ricerca e le aziende del settore si chiedono come
adattare l'infrastruttura esistente ai nuovi requisiti.
Trasporto del traffico su tecnologia ottica (garantisce grandi margini in termini di velocità, quantità e qualità della trasmissione delle informazioni). Le dorsali intercontinentali per telecomunicazioni si basano già su queste tecnologie, Con l'emergere di questi nuovi scenari, si è cominciato a sfruttare a pieno le potenzialità (anche nelle reti di calcolatori) Con il passare degli anni la
tecnologia si è resa disponibile anche in ambito metropolitano e per grandi istituti ed enti di ricerca
Problematiche del trasporto delle informazioni nel dominio ottico: Rispetto e la compatibilità
verso i sistemi esistenti (ad esempio con le reti ATM o quelle basate su protocollo IP) Processamento delle informazioni di instradamento e di inoltro nel dominio ottico (presenza o assenza di
luce) in dispositivi in grado di manipolare ed instradare le informazioni (router ottici) Presenza
di colli di bottiglia (bottleneck) Limiti tecnologici nella realizzazione di alcuni componenti, altrimenti elementari nel dominio elettromagnetico (RAM vs. FDL) Obiettivo: Studio di architetture
per router e soluzioni efficienti, compatibili con i sistemi legacy esistenti, scalabili, dinamiche …
Come studiare queste architetture e tecnologie a basso costo? Come comparare le prestazioni in
maniera veloce Come testare diverse soluzioni in maniera rapida ed economica?
1.1 Reti Ottiche e Multigranularità
Nelle reti ottiche le informazioni viaggiano sotto forma di segnali luminosi, connettendo due
o più Standard Networks periferiche basate sullo scambio di segnali elettromagnetici realizzando una backbone ottica;
Illustrazione 1: Esempio di backbone ottica.
•
•
Edge Router: convertono i segnali da e verso il dominio ottico;
Core Router: scambiano e elaborano segnali nel dominio ottico;
14 dicembre 2010
5
Introduzione
Versione 1
Rispetto ai normali router, nelle reti ottiche si cerca di far coesistere vari paradigmi di commutazione per far fronte alle diverse esigenze del traffico e ai diversi servizi offerti realizzando così il concetto di Multi-Granularità.
1.2 Wavelength Division Multiplexing
E’ una tecnica di multiplazione del segnale ottico su diverse lunghezze d’onda (portanti).
I diversi contenuti informativi sono posti in ingresso ad un combinatore ottico (multiplexer
WDM). Il combinatore modula i vari segnali insieme ma su diverse portanti a diverse lunghezze d’onda;
Illustrazione 2: Esempio di modulazione WDM.
Il segnale viaggia così multiplexato all’interno della fibra, a destinazione questa è ripartita in
più copie mediante uno Splitter;
Ogni copia è posta in ingresso ad un filtro per la corrispondente lunghezza d’onda (l) e ogni
contenuto informativo è così riottenuto dal segnale globale.
In gergo le lunghezze d'onda vengono anche chiamate colori e la trasmissione WDM viene
detta colorata, anche se in realtà le lunghezze d'onda usate non sono nel campo del visibile. I
sistemi moderni possono gestire fino a 160 lunghezze d’onda e possono quindi moltiplicare la
banda di una fibra a 10Gbit/s fino ad un limite teorico di circa 1.6Tbit/s.
1.3 Optical Switching Paradigms
Esistono quindi diversi paradigmi in cui può essere realizzata la commutazione del traffico all’interno delle reti ottiche. Le tre principali tecniche sono:
•
Optical Circuit Switching (OCS): paradigma a circuito;
•
Optical Packet Switching (OPS): paradigma a pacchetto;
•
Optical Burst Switching (OBS): via di mezzo tra i due;
1.3.1 Optical Circuit Switching
Fa propria la commutazione di circuito in ambito ottico cercando di costruire dei percorsi tra il mittente ed il ricevente mediante dei messaggi di segnalazione, che viaggiano
6
11 novembre 2010
Introduzione
Versione 1
su un canale dedicato e fuori banda per la mediazione, la creazione e l'abbattimento della connessione.
1.3.2 Optical Burst Switching
Questo tipo di commutazione si trova tra la commutazione di circuito e la commutazione di pacchetto. Il traffico in ingresso dai client ai margini della rete viene aggregato in
base a un parametro particolare, comunemente per destinazione, o tipo di servizio (TOS
byte).
Pertanto, all’Edge Router OBS, code diverse rappresentano le varie destinazioni o la
classe di servizi.
1.3.3 Optical Packet Switching
Trasposizione della commutazione di pacchetto in ambito ottico, in cui viaggiano pacchetti e informazioni di instradamento (G-MPLS) sulla stessa banda (non esistono canali di segnalazione o controllo). Possono esistere due tipologie:
•
OPS Slotted / Sincrono
•
OPS Unslotted / Asincrono
1.4 Slotted vs. Unslotted Networks
•
•
Slotted OPS Networks: Pacchetti di dimensione fissa, posizionati all'interno di intervalli di tempo prefissati detti timeslot (ognuno può contenere un singolo pacchetto) I
nodi lavorano in maniera sincrona mantenendo i confini dei timeslot allineati fra loro
(richiede uno stadio di sincronizzazione). Minor numero di contese tra pacchetti (essendo di lunghezza fissa vengono inoltrati insieme con i limiti degli slot allineati).
Compatibile con ATM
Unslotted OPS Networks: I pacchetti possono essere di dimensione variabile, Il tempo non è suddiviso in timeslot. I nodi su questa tipologia di rete lavorano in maniera
asincrona senza alcun requisito di allineamento. Presenta un numero maggiore di contese da risolvere. Compatibile con IP
1.5 Architettura
•
•
•
•
Input Interface (IF): Delineazione del pacchetto (Guard Band) Sincronizzazione (reti
OPS-Slotted): allineamento di pacchetti appartenenti allo stesso timeslot Pre-processamento dell'header separazione header e payload e converisione OE dell’header Buffer: Immagazzinamento delle informazioni in attesa del processamento elettronico dell’header.
Control Unit: Operazioni di controllo ed inoltro (nel dominio elettronico) del traffico
in accordo a degli algoritmi di scheduling sulle informazioni contenute negli header
dei pacchetti.
Switching Matrix (SM): Set-up dei dispositivi interni (FDL, Convertitori TWC, Switch SOA o MEMS) Inoltro del payload dall’unità di buffer all’output interface
Output Interface (OI): Aggiornamento dell’header (nuove informazioni in uscita dal
nodo da ricongiungere al payload) Rigenerazione 3R del segnale (reamplification, reshaping, retiming) Sincronizzazione (solo in reti OPS-Slotted)
14 dicembre 2010
7
Introduzione
Versione 1
1.6 Contention Reslution
Quando due o più pacchetti competono per la stessa risorsa, ovvero la stessa fibra di uscita e
sulla stessa lunghezza d'onda allo stesso istante si parla di contesa.
Questo problema può essere affrontato in diversi domini:
•
Spazio: aumento delle risorse, aumento dei costi
•
Tempo: bufferizzare le informazioni
•
Frequenza: o più propriamente lunghezza d'onda
Nel dominio elettromagnetico (EPS) il problema è affrontato nel dominio del tempo usando le
memorie RAM come code. In ambito ottico (OPS) ci si scontra con un limite tecnologico, la
difficoltà di implementare un componente che agisca come memoria ottica. Questi componenti, detti:
Fiber Delay Lines (FDL) non permettono di immagazzinare l’informazione ma solo di ritardarne il suo percorso di un tempo fissato. L'approccio OPS permette di affrontare la contesa
nel dominio delle lunghezze d'onda (wavelength domain) sfruttando le proprietà della conversione.
Illustrazione 3: Fiber Delay
Line.
Illustrazione 4: Tunable
Wavelength Converter.
Tunable Wavelength Converters (TWCs): dispositivi in grado di convertire la lunghezza
d'onda del segnale in ingresso su un’altra lunghezza d'onda in uscita, permettendo così di risolvere le contese. Svantaggio: dispositivi molto costosi.
2 L'Approccio Scelto
Dato che queste architetture e questi dispositivi sono in realtà molto costosi, per studiare queste
soluzioni si può ricorrere a diverse approcci:
•
Test-bed: difficoltà di verifica delle prestazioni logiche, scarsa modularità e flessibilità
nella configurazione, costi elevati …
•
Simulatori: le interazioni nel piano di controllo non sono evidenti, la modellazione e l’attuazione dell’hardware è poco realistica, in caso di traffico non reale risultati fuorvianti.
La nostra soluzione propone un approccio differente:
•
Emulatore altamente configurabile (numero di ingressi, uscite, lunghezze d’onda) e modulare (modifica della architettura semplice ed immediata);
◦ Realizzato in ambiente open source (Linux) mediante il software Click! Modular
Router;
◦ Implementazione attuale: architettura di tipo Broadcast-&-Select, con opzione MultiGranulare (OPS-Slotted e OCS) e in linea con le raccomandazioni espresse in ForCES (RFC3746);
8
11 novembre 2010
L'Approccio Scelto
◦
Versione 1
Analisi e valutazione dei livelli di potenza e consumo all’interno del nodo.
2.1 Simulazione vs. Emulazione
•
•
Simulazione: prevede la creazione di un modello della realtà che si desidera studiare
che consenta di valutare e prevedere lo svolgersi dinamico di una serie di eventi susseguenti all'imposizione di certe condizioni da parte dell'analista o dell'utente.
◦ I parametri di configurazione devono essere impostati correttamente
◦ Le interazioni tra il controllo (le decisioni di forwarding) e il set-up dell'hardware
di commutazione non è effettivamente messo in evidenza attraverso la simulazione;
◦ Se il traffico in ingresso simulato non è realistico, questo potrebbe generare risultati fuorvianti.
Emulazione: si differenzia per la caratteristica di duplicare in tutto per tutto le funzioni di un determinato sistema su un secondo sistema differente dal primo.
◦ Modularità: una volta definiti, i moduli possono essere aggiunti, rimossi, collegati
e scambiati per ottenere diverse architetture;
◦ Chiarezza del punto di interazione: le interazioni tra i diversi moduli sono esplicitate dalle connessioni tra gli stessi che possono essere prese in considerazione ed
analizzate;
◦ Testabilità dei moduli: i moduli possono essere testati, anche se il costoso hardware che li costituisce nella realtà non è disponibile;
◦ Facile modifica del traffico in ingresso: può essere facilmente modificato cambiando soltanto le proprietà della sorgente (e non l’intero simulatore).
2.2 La proposta IETF ForCES
Questa soluzione è conforme alla RFC 3746 che esprime le raccomandazioni IEEE per la Forwarding and Control Element Separation: Separazione logica tra Control Element CE e Forwarding Element FE Protocollo standard di comunicazione tra CE e FE (ora soluzioni proprietarie).
14 dicembre 2010
9
L'Approccio Scelto
Versione 1
Illustrazione 5: Schema di relazioni tra CE ed FE secondo
la direttiva ForCES.
2.3 L'estensione del gruppo DEIS-TLC
Una estensione proposta dal modello di studio da parte del dipartimento consiste nella introduzione di elementi detti Forwarding Modules (FM) Indipendenza dall’hardware. Solo i FM
sono definiti specificatamente per una determinata implementazione hardware. Alta personalizzazione da parte degli ISP che possono definire i propri FM.
3 Il Modello Software
Si è deciso quindi di approntare un test-bed su hardware PC per collaudare tutti i meccanismi,
validare e valutare le prestazioni delle proposte in atto.
3.1 Architettura del nodo
Si è dunque approntata un modello di architettura del nodo come visibile in figura:
10
11 novembre 2010
Il Modello Software
Versione 1
Illustrazione 6: Piani dell'architettura del nodo (Network Element NE).
N.B: Spesso a seguire si troverà la dicitura FM alternativa ma duale a quella PFE!!!
Il nodo (o Network Element NE secondo la dicitura ForCES), è rappresentato suddiviso nei suoi
3 piani fondamentali:
•
(Node) Management Plane;
•
(Node) Control Plane;
•
(Node) Forwarding Plane;
Inoltre il nodo è interconnesso alla rete ed in particolare al piano di management della stessa:
•
(Network) Management Plane;
In figura sono presenti le connessioni interpiano e, ove previsto, queste sono corredate dall'opportuno standard utilizzato.
14 dicembre 2010
11
Il Modello Software
Versione 1
3.2 Management Plane
Piano deputato alla gestione del nodo. Il nodo è una risorsa dispendiosa ed è prevista la sua
condivisione da parte di più utenti abilitati alla suddivisione della risorsa stessa. Possiamo individuare così due entità:
•
Host Operator (HO): entità proprietaria dell'hardware del nodo, responsabile della
condivisione della risorsa.
•
Guest Operator (GO): entità appaltatrice della risorsa e dei suoi servizi (ad. Esempio
un Internet Service Provider (ISP))
Uno o più GO possono dunque interagire con la risorsa e richiedere l'attivazione o la rimozione di servizi e/o risorse secondo il contratto d'uso del nodo firmato con l'HO.
Nella architettura il piano di management si può riferire alla rete o al nodo:
3.2.1 Network Management Plane
Piano di gestione della rete. E' formato dagli elementi:
•
Network Management (NM): è il punto da cui la rete invia e riceve le informazioni di configurazione del nodo.
In pratica è il punto da cui il GO invia i comandi di configurazione del nodo a
suo piacimento (in base ad un contratto stabilito tra GO e HO) mediante il protocollo NETCONF.
3.2.2 Node Management Plane
Piano di gestione del nodo. E' formato dagli elementi:
•
Management Element (ME): è il punto da cui il nodo riceve e invia le informazioni che riguardano la sua configurazione.
In pratica è il punto da cui l'HO riceve i comandi di configurazione del nodo da
parte di un GO. Si controlla se questi è autorizzato (meccanismo basato su SSH)
e si da luogo alla configurazione richiesta mediante il protocollo NETCONF.
3.2.3 Standard Protocol NETCONF
Il NM ed il ME comunicano attraverso lo standard NETCONF. Il Network Configuration Protocol, o NETCONF, è un protocollo IETF di gestione della rete, pubblicato nel
dicembre 2006 come RFC 4741.
N.B: I dettagli del NETCONF sono fruibili nel lavoro di tesi di Ramon Righini che
ha curato in maniera approfondita questo aspetto nel suo lavoro!!!
NETCONF fornisce meccanismi per installare, modificare e eliminare configurazioni
dei dispositivi di rete. Le sue interazioni sono realizzate mediante semplici Remote Procedure Call (RPC) di alto livello.
Il protocollo NETCONF utilizza l'Extensible Markup Language (XML) per la codifica
di dati di configurazione così come per i messaggi di protocollo. Questo a sua volta
viaggia in cima al protocollo di trasporto (es. SSH).
Operazioni di Base: Il protocollo di base include le operazioni seguente protocollo:
<get>, <get-config>, <edit-config>, <copy-config>, <delete-config>, <lock>, <unlock>,
<close-session> , <kill-session>.
12
11 novembre 2010
Il Modello Software
Versione 1
3.3 Control Plane
Piano deputato al controllo del nodo. Si compone dei seguenti elementi:
•
Control Element (CE): elemento deputato al controllo del nodo, si interfaccia con i
differenti piani:
◦ Piano di management del nodo (dialoga con il ME)
◦ Piano si forwarding del nodo (dialoga con il FE via ForCES Protocol)
◦ Canali di segnalazione fuori banda (dialoga via RSVP-TE / GMPLS)
Illustrazione 7: Control
Element.
3.3.1 Standard Protocol RSVP-TE (over GMPLS)
Il meccanismo di segnalazione fuori banda utilizzato nel paradigma a circuito (OCS) si
avvale dell'uso del protocollo RSVP-TE basato su GMPLS per riservare le risorse necessarie al circuito nei nodi intermediari la comunicazione tra mittente e destinatario del
traffico a circuito.
•
Resource Reservation Protocol – Traffic Engeneering (RSVP-TE) : è un protocollo di prenotazione e differisce in modo sostanziale dai protocolli di segnalazione convenzionali usati nelle reti orientate alla connessione.
Illustrazione 8: Schema di interazione protocollo RSVP.
Uno dei presupposti chiave di RSVP è quello di non togliere nulla alla robustezza attuale delle reti prive di connessione, tali reti si basano sul fatto di non avere
informazioni di stato (o averne pochissime) memorizzate al proprio interno, pertanto è possibile che i router interrompano bruscamente il proprio funzionamento e si riavviino o che le linee di collegamento si guastino e poi riprendano la
14 dicembre 2010
13
Il Modello Software
•
Versione 1
propria operatività, senza che la connettività tra i nodi terminali sia compromessa.
Il protocollo RSVP cerca di mantenere viva questa robustezza usando il concetto
di stato soft nei router: lo stato soft, al contrario dello stato hard che si usa nelle
reti orientate alla connessione, non ha bisogno di essere rimosso esplicitamente
quando non è più necessario perché scade dopo un periodo di tempo opportuno
se non viene periodicamente aggiornato.
Un'altra caratteristica di RSVP è quella di supportare i flussi multicast con la
stessa efficacia di quella offerta ai flussi unicast. Questo protocollo fa uso di un
approccio orientato ai destinatari. Piuttosto che lasciare il compito al mittente di
tenere traccia di un numero di destinatari potenzialmente elevato, è più sensato
che siano i destinatari a gestire le proprie necessità, come un'unica persona che
parla e tante che ascoltano una lezione tenuta su una rete Mbone.
◦ Funzionamento:
▪ Fase di Downstream: ovvero una fase di discovery basata su messaggi
in grado di definire un “percorso”. Il mittente indirizza un pacchetto di
tipo PATH verso il primo router del percorso fino all'host destinatario.
Nel suddetto pacchetto sono indicati il Phop, Sender_Tspec e Adspec. Il
Phop è l'indirizzo del router al passo precedente, mentre Sender_Tspec e
Adspec includono informazioni sulle caratteristiche richieste alla linea
che si intende prenotare. Quando un router riceve il PATH, aggiorna le
sue informazioni, aggiorna il timer della prenotazione ed inoltra il PATH
al router successivo, dopo aver modificato il campo Phop.
▪ Fase di Upstream: viene spedito a ritroso un pacchetto di tipo RESV
contente il FlowSpec. Ogni router valuterà tramite l'Admission Control
se tale traffico è accettabile dalla rete, e in caso aggiunge al Packet Classifier le informazioni su tale traffico ricavate dal FilterSpec, e al Packet
Scheduler le informazioni tratte dal FlowSpec per poter fare un corretto
scheduling. Inoltre aggiorna il timer associato allo stato RESV e inoltra il
pacchetto al router indicato nel Phop, fino al mittente originale. In caso il
traffico non sia accettabile dalla rete, viene generato un messaggio di errore.
Applicare RSVP con IntServ porta ad avere una scarsa scalabilità, in quanto è
necessario mantenere le informazioni di stato per ciascun microflusso, e il numero di questi microflussi può risultare molto elevato (basti pensare che solitamente un microflusso è individuato da 5-tuple: indirizzo IP sorgente, indirizzo IP destinazione, porta sorgente, porta destinazione e protocol ID). È tuttavia errato
pensare che sia RSVP a essere poco scalabile. Infatti può essere utilizzato con
successo nel campo dell'MPLS, laddove l'approccio non è a microflusso ma a
flussi aggregati.
Generalized Multi Protocol Label Switching (GMPLS): sd
4
3
2,5
2
1
14
Layer
Transport
Network
Link
Physical
Protocol
RSVP-TE
IP
GMPLS
Ethernet, Optical Lambda
Cable, Fiber, ...
11 novembre 2010
Il Modello Software
Versione 1
3.3.2 Standard Protocol ForCES
Il protocollo ForCES è definito dall'IETF nelle RFC 5810 e seguenti per definire un linguaggio comune per la separazione tra gli elementi di controllo ed inoltro all'interno di
dispositivi di rete.
N.B: I dettagli del NETCONF sono fruibili nel lavoro di tesi di Ramon Righini che
ha curato in maniera approfondita questo aspetto nel suo lavoro!!!
3.4 Forwarding Plane
Il Forwarding Plane è il piano in cui riceviamo il traffico e lo smistiamo verso la destinazione
richiesta. E' formato dai seguenti elementi:
•
Forwarding Element (FE): è l'elemento deputato alla gestione delle funzioni di inoltro del traffico. Molto più ampiamente si può suddividere questo elemento, in accordo
all'idea proposta dal nostro gruppo di ricerca, in due piani distinti in base alle conoscenze dirette sull'hardware sottostante.
•
Header Tap: elemento che separa la parte di informazioni trasportate in banda dal
traffico a pacchetto (OPS).
•
Switching Module: modulo di commutazione, ovvero l'insieme dei dispositivi che
realizza l'hardware per l'inoltro del traffico. Teoricamente questo modulo può rappresentare un qualsiasi tipo di hardware destinato allo smistamento del traffico sia questo
nel dominio elettronico (dispositivi switch elettronici) sia ottico (dispositivi ottici
SOA, MEMS etc..).
3.4.1 Forwarding Element
Il Forwarding Element FE è un oggetto contenitore di due entità distinte: una parte
“hardware independent” che conterrà al suo interno le funzionalità logiche della fase di
inoltro (es. Label Lookup, ...) detta LFE e una parte “hardware dependent” che conterrà
al suo interno le funzionalità più a stretto contatto con l'hardware della fase di inoltro
(es. Attivazione dei dispositivi):
Illustrazione 9: Forwarding Element.
14 dicembre 2010
15
Il Modello Software
◦
Versione 1
Logical Forwarding Element (LFE): è l'elemento che secondo la concezione del
nostro gruppo di lavoro è deputato allo svolgimento di quelle azioni necessarie all'inoltro del traffico che siano però indipendenti dallo stato dell'hardware realizzando quindi una separazione di funzionalità di tipo “hardware-independent” (nessuna
conoscenza dello stato della matrice e della tipologia dei suoi componenti). Può instanziare a tal proposito uno o più PFE in grado di gestire l'hardware per un determinato servizio offerto (es. OPS, OCS, …):
Illustrazione 10: Logical FE.
◦
Physical Forwarding Element (PFE ex Forwarding Module FM): è l'elemento
che secondo la concezione del nostro gruppo di lavoro è deputato allo svolgimento
di quelle azioni necessarie all'inoltro del traffico che siano però fortemente dipendenti dallo stato dell'hardware realizzando quindi una separazione di funzionalità
di tipo “hardware-dependent” (totale conoscenza dello stato della matrice e della
tipologia dei suoi componenti).
Illustrazione 11:
Physical FE.
3.4.2 Switching Module
Il modulo di commutazione è l'insieme dei dispositivi che realizza l'hardware per l'inoltro del traffico. Teoricamente questo modulo può rappresentare un qualsiasi tipo di hardware destinato allo smistamento del traffico sia questo nel dominio elettronico (dispositivi switch elettronici) sia ottico (dispositivi ottici SOA, MEMS etc..).
16
11 novembre 2010
Il Modello Software
Versione 1
Illustrazione 12: Switching Module.
Nel nostro caso l'implementazione prevede lo studio e la caratterizzazione di un router
ottico, e di conseguenza lo switching module sarà del tipo:
◦ Optical Switching Module: al suo interno può presentare varie architetture composte da diversi dispositivi in uso nelle matrici ottiche per indirizzare il traffico verso
lunghezze d'onda o percorsi differenti. Nel nostro caso avremo una architettura del
tipo Broadcast & Select:
▪ Archtettura Broadcast & Select: è un tipo di architettura in cui il traffico è indirizzato verso tutte le uscite possibili e successivamente autorizzato a lasciare
solo l'interfaccia voluta.
Illustrazione 13: Esempio dell'architettura B&S utilizzata.
Come si vede il traffico in ingresso, opportunamente convertito in lunghezza d'onda
per risolvere eventuali contese, viene inviato contemporaneamente a tanti pool di SOA
quante sono le uscite (broadcast). Questi opportunamente attivati (select) indirizzano il
traffico verso l'uscita desiderata.
4 Il Click!
Il Click! è un framework open source modulare, orientato alla realizzazione di dispositivi come:
•
Router, processori di pacchetti, sorgenti di traffico, Ethernet switch, firewall, etc.
14 dicembre 2010
17
Il Click!
Versione 1
Basato su piattaforma GNU/Linux è sviluppato dal MIT, si avvale di un Linguaggio Dichiarativo (human-readable).
Illustrazione 14: Click! Modular Router Logo.
4.1 Elementi
Il software Click è scritto in C++ ed ogni elemento appartiene ad una sottoclasse della classe
“Element” la quale contiene diverse funzioni virtuali (push, pull e run_scheduled, … ) base
per il funzionamento di tutti gli elementi.
Gli elementi possono avere più porte in ingresso o in uscita (identificate dalle parentesi e dal
numero della porta [0]) e queste possono essere di tipo push, pull e agnositche.
E’ possibile definire elementi composti (da più sotto-elementi, vedi elementclass) e/o implementare elementi personalizzati per scopi particolare scrivendone direttamente il codice C++.
E’ stato proprio il nostro caso in cui abbiamo definito nuovi elementi per modellare i componenti ottici del router (SOA, Splitter, Combiner, etc…) per caratterizzarli nel comportamento
logico e fisico.
4.2 Configurazioni
Le configurazioni sono dei semplici file di testo con estensione .click. Sono normalmente separati in due sezioni diverse:
•
Sezione delle Dichiarazioni: in questa sezione vengono definiti gli elementi da utilizzare nella configurazione specificando un nome dell'istanza e la classe di appartenenza
ad esempio:
◦ nome_istanza::Classe(parametri_della_classe);
•
Sezione dei Collegamenti: in questa sezione gli elementi precedentemente definiti
vengono collegati (mediante l'operatore ) in modo da definire il percorso che il flusso dati percorrerà una volta in esecuzione la configurazione.
◦ istanza1->istanza2
Elementi composti: esiste anche la possibilità di definire un macro elemento che contiene al
suo interno diversi elementi raggruppandoli in un unico contenitore. Questa soluzione è possibile definendo un elemento come elementclass:
•
•
18
elementclass NomeClasse{parametri |
// definizione elementi
11 novembre 2010
Il Click!
Versione 1
•
istanza1::Classe1();
•
istanza2::Classe2();
•
// definizione connessioni
•
input->istanza1->istanza2->output;
•
}nome_istanza_nuova_classe;
Un oggetto del tipo elementclass è dunque una classe che racchiude al suo interno altri elementi base interconnessi tra loro. Questi oggetti vengono poi espansi dal Click in fase di esecuzione del file di configurazione.
Esempio di configurazione: di seguito viene illustrata un semplice file di configurazione click:
// Sezione Dichiarazioni
source::TimedSource(INTERVAL 1, LIMIT 5);
print::Print(“Hello”);
sink::Discard();
// Sezione Collegamenti
source->print->sink;
questa configurazione definisce una sorgente di pacchetti attiva ad intervalli di 1 secondo che
genera 5 pacchetti passati ad un elemento che li stampa ed un altro che li distrugge.
4.3 Pacchetto Click!
Il pacchetto Click è l'astrazione dei dati di rete che fluiscono all'interno di un file di configurazione. Per non consumare risorse il software non fa attraversare all'intero blocco dati tutti gli
elementi della configurazione ma li fa attraversare dalla sua astrazione “pacchetto click” che
punta in qualche modo sempre ai dati senza portarsi la loro pesantezza dietro.
In particolare dunque il pacchetto Click! è composto da:
•
Puntatore: ai dati reali.
•
Annotazioni: byte di appoggio per l'utente click.
•
Dati: dati reali del pacchetto in arrivo dalla rete.
Illustrazione 15: Il pacchetto secondo la rappresentazione
Click!.
Le annotazioni sono state usate come memoria comune tra gli elementi del nodo: Ogni volta
che un pacchetto Click! Attraversa un elemento, questo può:
•
Leggere ed interpretare le informazioni presenti nelle annotazioni al fine di determinare le azioni da intraprendere
•
Scrivere/Modificare le informazioni presenti come risultato della sua operazione
In uscita dal modello possiamo dunque catalogare tutte le informazioni contenute nelle annotazioni dei pacchetti per caratterizzare il comportamento del router.
14 dicembre 2010
19
Il Click!
Versione 1
E' importante inoltre distinguere tra pacchetti standard e di tipo writable:
•
Standard Packet: sono così tutti i pacchetti che riceviamo dalla rete, non sono modificabili nei loro dati.
•
Writable Packet: tutti i pacchetti per cui cambia il campo dati sia in valore sia in dimensione vanno ricreati come WritablePacket.
Tutte le informazioni sui campi e i metodi relativi all classe packet (e in generale a tutte le
classi) possono essere recuperati sul sito del Click! nella sezione API Documentation Classess Packet (http://read.cs.ucla.edu/click/doxygen/classPacket.html).
4.3.1 Puntatore
Il puntatore è lo strumento in grado di riferirsi alle diverse strutture del pacchetto Click!
Negli elementi usati è possibile mediante il puntatore Packet *packet, riferirsi al campo
annotazioni o dati:
•
packet->anno_<dim>
•
packet->data()
4.3.2 Annotazioni
Le annotazioni sono dei byte a disposizione dell'utente per marcare con diversi significati i pacchetti all'interno di una configurazione.
La dimensione totale delle annotazioni è di 48 bytes e i loro valori, nel caso del nostro
emulatore, sono definiti per gli elementi click che ne fanno uso nel file “CLICKDIR/elements/local/OpticalRouterAnnotations.hh” mentre se vi vogliamo far riferimento nel file
di configurazione click, come nel nostro caso, vanno definite all'inizio (come nei file
.click del nostro testbed).
E' possibile accedere ai byte dei dati mediante il puntatore:
•
packet->data() punta al byte 0 del pacchetto (es. il primo byte dell'intestazione
Ethernet)
4.3.3 Dati
Il campo dati del pacchetto rappresenta il vero “pacchetto” che viene ricevuto dal nodo
in esame, a partire dall'intestazione Ethernet in su.
E' possibile accedere ai byte dei dati (in sola lettura se il pacchetto è standard, in lettura
e scrittura se di tipo “writable”) mediante il puntatore:
•
packet->data() punta al byte 0 del pacchetto (es. il primo byte dell'intestazione
Ethernet)
4.4 Elementi Propri
La estendibilità del Click! e del nostro emulatore si concretizza con la possibilità di definire
nuovi elementi (nuove classi) con funzionalità logiche proprie e specifiche.
Nel nostro caso abbiamo deciso di definire classi per tipologie di elementi sia reali (come i dispositivi di commutazione, SOA, TWC, etc...) sia logici (scheduler ed elementi del piano di
controllo).
20
11 novembre 2010
Il Click!
Versione 1
4.4.1 Creare un nuovo elemento
Per creare un nuovo elemento occorre in particolare definire due files (in generale nella
cartella “CLICKDIR/elements/local”):
•
NewElement.cc: contiene il codice implementativo delle funzioni dell'elemento.
•
NewElement.hh: contiene le definizioni di variabili globali e metodi.
4.4.2 Metodo simple_action
La maggior parte degli elementi è caratterizzata da un singolo metodo in fase di funzionamento, ovvero quando un pacchetto click attraversa l'elemento.
Questo metodo prende nome di “simple_action” e fornisce un puntatore al pacchetto
click, e lo restituisce alla fine.
Questo metodo viene scatenato quando un pacchetto arriva in ingresso all'elemento e da
li in poi il click esegue il codice C presente nel metodo.
Nel codice, grazie al puntatore è possibile leggere e scrivere i dati e le annotazione in
modo da definire il comportamento logico dell'elemento.
Alla fine del metodo occorre sempre restituire il pacchetto con l'istruzione return packet
oppure con return 0;
Per distruggere il pacchetto e non ritornare nulla occorre eseguire packet->kill() seguita
da return 0;
4.4.3 Compilare un nuovo elemento
Una volta finita la creazione del nostro elemento (salvato in “CLICKDIR/elements/local”) occorre riposizionarsi sulla cartella principale ed eseguire:
•
[root@deisnetXX click-git]# make elemlist
Questo comando serve a dire al click che è stato aggiunto un nuovo elemento e in fase
di compilazione dovrà tenerne conto!!!
Ora si può compilare il tutto con il comando:
•
[root@deisnetXX click-git]# make install
N.B: La fase di compilazione di consta di due fasi:
•
La prima fase si compila il codice C dell'elemento e qui vengono fuori problemi
relativi alla sintassi dell'elemento.
•
La seconda fase, invece, il compilatore si occupa di linkare (fase che inizia con
la stringa “LINK” mostrata a video) le librerie necessarie all'elemento e creare i
moduli oggetto usrlevel e kernelmodule.
◦ N.B.B: E' proprio qui se capita qualche errore per il modulo kernel che viene
notificato, e il modulo kernel del click non sarà loadable finchè questi problemi non saranno risolti (si va da un blocco della compilazione perchè le librerie non sono raggiungibili fino ad una semplice notifica di simbolo non
definito che poi impedisce il caricamento dell'elemento.. occhio!!!)
14 dicembre 2010
21
Il Click!
Versione 1
4.5 Driver Userlevel e Kernelmodule
Una configurazione Click gira all’interno di un driver che implementa le funzioni usate da tutti gli elementi. Esistono due driver:
•
User-level driver: è un’applicazione a livello utente, che interviene sui pacchetti IP
separatamente dal kernel (quindi dipende da come il kernel gestisce il flusso di pacchetti IP);
•
Linux-kernel driver: funziona come modulo caricabile nel kernel e può completamente rimpiazzare le funzionalità di rete del sistema operativo (offre maggiori prestazioni);
5 Il Test-Bed
Il nostro gruppo ha provveduto alla realizzazione di un piccolo test-bed hardware approntando
tre macchine in laboratorio per eseguire le prove di emulazione.
5.1 Architettura
L'architettura del test-bed è rappresentata in figura:
Illustrazione 16: L'architettura del Test-Bed approntato in laboratorio.
22
11 novembre 2010
Il Test-Bed
Versione 1
Come si evince dall'immagine il test-bed vero e proprio è rappresentato dalla macchina router
(deisnet69) che si trova al centro dello schema.
Alla sinistra troviamo il generatore di traffico OPS/OCS (deisnet68) e alla destra il ricevitore
del traffico (deisnet67)
Infine possiamo notare la macchina di gestione remota del test-bed (deisnet209) e il gateway
che fa da portale verso internet (deisnet254).
Tutte queste macchine sono collegate tra loro mediante la rete interna del deis (deisnet) con
indirizzi 192.168.10.XX dove XX è il numero della macchina, sulle rispettive interfacce di
rete “eth0”. Su questa rete (e quindi se ci poniamo in ascolto sulle interfacce “eth0” di queste
macchine) viaggiano:
•
Il traffico DEIS-TLC da/verso Internet che costituisce il grosso del traffico;
•
I segnali di controllo remoto del test-bed (sessioni X e ssh dalla macchina di gestione
remota deisnet209 verso deisnet67/68/69);
•
I messaggi di segnalazione fuori banda del traffico OCS test-bed (Protocollo RSVP)
•
I messaggi di gestione del nodo da parte dei GOs via HOs (Protocollo NETCONF)
Inoltre le macchine che più strettamente fanno parte del test-bed, ovvero generatore (deisnet68), router (deisnet69) e ricevitore (deisnet67) sono collegate tra loro mediante ulteriori interfacce di rete in una configurazione:
•
Il generatore (deisnet68) invia il traffico OPS, OCS e la segnalazione OPS (in banda)
attraverso la sua seconda interfaccia di rete “eth1” direttamente collegata all'ingresso
del router. La segnalazione OCS (fuori banda) viene inviata tramite “eth0” sempre
verso il router.
•
Il router (deisnet69) riceve il traffico in ingresso OPS, OCS e la segnalazione OPS (in
banda) attraverso la sua seconda interfaccia di rete “eth2” direttamente collegata al generatore di traffico. La segnalazione OCS (fuori banda) viene ricevuta tramite “eth0”.
A questo punto il router analizza le informazioni di routing in banda per l'OPS o le
eventuali richieste fuori banda per OCS elabora i messaggi e il traffico.
Il Il router invia il traffico OPS, OCS e la segnalazione OPS (in banda) se correttamente schedulati attraverso la sua terza interfaccia di rete “eth1” direttamente collegata al
ricevitore di traffico. La segnalazione OCS (fuori banda) viene inviata tramite “eth0”.
•
Il ricevitore (deisnet67) riceve il traffico OPS, OCS e la segnalazione OPS (in banda)
attraverso la sua seconda interfaccia di rete “eth1” direttamente collegata all'uscita del
router. La segnalazione OCS (fuori banda) viene inviata tramite “eth0” sempre dal il
router.
5.1.1 Macchina di Gestione da Remoto
Questa macchina in realtà può essere una qualsiasi macchina sotto la rete deisnet
192.168.10.X in grado di collegarsi via terminale SSH alle macchine del test-bed per
avviare, terminare e monitorare le emulazioni.
14 dicembre 2010
23
Il Test-Bed
Versione 1
Illustrazione 17: La macchina di gestione da
remoto deisnet209.
Nel periodo in esame tale macchina era a disposizione nel box laureandi con una installazione Linux FC12 simile a quelle installate nel test-bed ed in particolare:
•
Nome: deisnet209
•
Utenti
◦ Utente: raul.cafini
◦ Password Utente: raul.cafini
•
Root
◦ Utente Root: root
◦ Password Root: 209raul
Da qui ci si connette aprendo il terminale linux e connettendosi come utente root via
SSH alle macchine in laboratorio:
•
[root@deisnet209 /]# ssh -X [email protected]
N.B: Il parametro -X serve per utilizzare il server X11 (interfaccia grafica) della macchina locale per renderizzare le applicazioni grafiche delle macchine in laboratorio (es.
gedit e wireshark).
5.1.2 Macchina Generatrice di Traffico
La macchina generatrice di traffico (deisnet68 IP:192.168.10.68) è collegata alla rete
deisnet mediante l'interfaccia “eth0” dalla quale riceve il controllo remoto dalla macchina di gestione deisnet209.
24
11 novembre 2010
Il Test-Bed
Versione 1
Illustrazione 18: La macchina generatrice di
traffico deisnet68.
In particolare ad essa si accede con le seguenti credenziali:
•
Nome: deisnet68
•
Utenti
◦ Utente: user68
◦ Password Utente: user68
•
Root
◦ Utente Root: root
◦ Password Root: opticalrouter
Questa macchina è destinata ad eseguire processi di generazione di traffico e segnalazione OPS e OCS ed inoltrarli attraverso le opportune interfacce di rete al fine di raggiungere il nodo router.
L'area di lavoro di questa macchina è composta dalle seguenti directory:
•
/home/user68/
Directory di lavoro principale
•
/home/user68/Configurazioni
Directory contenente i file di generazione
5.1.3 Macchina Router
La macchina router (deisnet69 IP:192.168.10.69) è collegata alla rete deisnet mediante
l'interfaccia “eth0” dalla quale riceve il controllo remoto dalla macchina di gestione deisnet209.
14 dicembre 2010
25
Il Test-Bed
Versione 1
Illustrazione 19: La macchina router deisnet69
In particolare ad essa si accede con le seguenti credenziali:
•
Nome: deisnet69
•
Utenti
◦ Utente: user69
◦ Password Utente: user69
•
Root
◦ Utente Root: root
◦ Password Root: opticalrouter
Questa macchina è destinata ad eseguire i processi di emulazione del nodo ottico sia a
livello user (configurazione eseguita come processo) sia livello kernel (configurazione
inserita come modulo kernel).
L'area di lavoro di questa macchina è composta dalle seguenti directory:
•
/home/user69/
Directory di lavoro principale
•
/home/user69/Configurazioni
Directory con i file di configurazione
•
/home/user69/click-git
Directory contenente il click
•
/home/user69/click-git/elements/local Directory contenente gli elementi
5.1.4 Macchina Ricevitore del Traffico
La macchina ricevitore di traffico (deisnet67 IP:192.168.10.67) è collegata alla rete deisnet mediante l'interfaccia “eth0” dalla quale riceve il controllo remoto dalla macchina
di gestione deisnet209.
26
11 novembre 2010
Il Test-Bed
Versione 1
Illustrazione 20: La macchina ricevitore di traffico
deisnet67.
In particolare ad essa si accede con le seguenti credenziali:
•
Nome: deisnet67
•
Utenti
◦ Utente: user67
◦ Password Utente: user67
•
Root
◦ Utente Root: root
◦ Password Root: opticalrouter
Questa macchina è destinata ad eseguire processi di cattura del traffico (correttamente
schedulato dal router) e della segnalazione OPS e OCS, rispondere alla segnalazione
fuori banda OCS e memorizzare statistiche su di esso.
L'area di lavoro di questa macchina è composta dalle seguenti directory:
•
/home/user67/
Directory di lavoro principale
•
/home/user67/Configurazioni
Directory contenente i file di ricezione
5.2 Management Plane
La gestione del nodo da parte di GO e HO è realizzata mediante l'uso del protocollo NETCONF attraverso la sua implementazione open source provvista dalla suite di tool YUMA.
5.2.1 Management Element
E' composto da:
•
Demone NETCONFd:
◦ Modulo “opticalrouter”: è un semplice file di testo (con estensione .yang)
scritto nel metalinguaggio definito da YUMA. Qui sono dunque definite le
14 dicembre 2010
27
Il Test-Bed
Versione 1
•
operazioni che il GO, una volta caricato il modulo lato server e autenticato il
GO via SSH al nodo del router dove è in esecuzione il demone netconfd, può
richiedere. Ogni operazione eseguirà una chiamata via RPC tra nodo client
(GO) e nodo server (HO o nodo router) per eseguire una determinata azione.
Le azioni definite nel modulo “opticalrouter.yang” sono:
▪ Aggiungere un indirizzo IP alla WhiteList :
•
add-address address=<ip-address>
▪ Rimuove un indirizzo IP dalla WhiteList
•
remove-address address=<ip-address>
▪ Ridurre il throughput OPS di un numero di canali
•
reduce-bandwidth channels=<channels-number>
Il codice eseguibile relativo alle operazioni chiamate è definito nel file opticalrouter.c (vedi installazione di netconf).
Nel nostro caso, all'invocazione di uno dei comandi di cui sopra, abbiamo
creato un pacchetto UDP da inviare alla configurazione clcik in ascolto sull'interfaccia di loopback contenente le informazioni sul tipo di azione (primo
byte) e sul valore passato come parametro (indirizzo IP). Il pacchetto UDP è
inviato sull'interfaccia di segnalazione del modello e catturato dal NETCONFManager.
NETCONF Manager: è il modulo deputato alla gestione dei messaggi di protocollo gestione.
5.3 Control Plane
Il controllo del nodo passa per una serie di componenti che gestiscono le varie mansioni.
5.3.1 OCS Signaling Channel
E' un elemento click composto, che funge da canale di segnalazione fuori banda per il
paradigma a pacchetto:
Illustrazione 21: Schema a blocchi elemento
OCSSignalingChannel.
All'elemento provengono pacchetti dalla rete (su interfaccia eth0 su cui viaggia la segnalazione OCS via RSVP) o dal nodo stesso (messaggi di risposta alla segnalazione).
I pacchetti in ingresso dalla rete (ingresso [0]) vengono analizzati da un Classifier che
filtra il traffico, ad esempio in caso di pacchetti di tipo ARP risponde per mantenere fun-
28
11 novembre 2010
Il Test-Bed
Versione 1
zionante lo smistamento dei pacchetti IP nella rete mentre permette ai soli pacchetti
IP/RSVP di entrare nel modello.
I pacchetti IP portatori di RSVP vengono spogliati della loro intestazione IP ed Ethernet
ed inviati all'oggetto OCSSignalingChannel.
I pacchetti provenienti dal nodo, ossia il CE (ingresso [1] messaggi in risposta ad una
precedente richiesta sul canale di segnalazione) giungono anch'essi direttamente all'OCSSignalingChannel.
L'elemento OCSSignalingChannel discrimina la provenienza e la destinazione dei pacchetti (es. dalla rete verso il CE o dal CE verso la rete) e insieme all'outputSwitch:
•
Rispedisce i messaggi destinati alla rete aggiungendovi l'intestazione IP ed
Ethernet opportuna (settata via click handler dall'RSVPManager)
•
Oppure invia i messaggi RSVP giunti dalla rete al CE
5.3.2 Control Element (CE)
Il Control Element è anch'esso un elemento composto, deputato al controllo logico delle azioni all'interno del nodo, del dialogo con gli altri piani di interfcciamento, degli
aspetti di sicurezza e controllo.
In particolare il suo funzionamento dipende, in particolare nelle richieste di servizio a
circuito, da una Macchina a Stati Finiti come quella in figura:
Illustrazione 22: Macchina a Stati Finiti del CE
(CEScheduler).
N.B: Sarebbe ottimale inserire il comportamento del CE con un modello di implementazione a thread indipendenti in modo da gestire le richieste in maniera concorrente. Il problema è utilizzare i thread nel Click.
In particolare osserviamo due comportamenti in base al paradigma ricevuto:
N.B: Lo stato iniziale sia per OPS che per OCS è LISTEN!!!
•
OPS Message: Lo stato del CE (dell'elemento CEScheduler in particolare...) alla
ricezione di un messaggio OPS ovvero in particolare di un Packet Header (PH)
transita nello stato di OPS Security Check (il PH è passato al CESecurityModu14 dicembre 2010
29
Il Test-Bed
Versione 1
•
le). Se il controllo di sicurezza per OPS (non ancora implementato!!!) va a buon
fine, il CE invia il PH al FE con l'indicazione di processare le informazioni in
esso contenute per schedulare il payload relativo (in attesa nella FDL dello Switching Module) per l'inoltro, altrimenti se fallisce il PH viene scartato. In entrambi i casi il CE torna nello stato di LISTEN in attesa di nuovi pacchetti.
OCS Message: Lo stato del CE (dell'elemento CEScheduler in particolare...)
alla ricezione di un messaggio OCS/RSVP PATH ovvero di una richiesta di instaurazione di circuito (crea un istanza relativa alla richiesta nella tabella CircuitRequests) e transita nello stato di OCS Security Check (il campo state del record relativo alla richiesta in CircuitRequests viene settato opportunamente). Se
il controllo di sicurezza per OCS (vedi dopo) va a buon fine, il CE invia una
OCS_REQ al FE con l'indicazione di valutare se è possibile accettare la richiesta
di circuito, altrimenti se fallisce il pacchetto RSVP PATH viene scartato.
Nel primo caso il CE (ovvero lo stato del CE per la corrente richiesta) transita in
PATH_RECEIVED. Se l'FE risponde positivamente alla richiesta di circuito allora questo invia al CE un OCS_GRANT, il CE invia il PATH al NextHop e
transita nello stato di PATH_SENT. Se l'FE risponde negativamente alla richiesta
di circuito allora questo invia al CE un OCS_DENY, il CE invia un PATHERR
al PreviousHop e transita nello stato iniziale di LISTEN.
•
Una volta nello stato di PATH_SENT ci aspettiamo di ricevere un RSVP RESV
come conferma di instaurazione del circuito o un PATHERR in caso di errore. In
quest'ultimo caso il CE invia un NACK al FE per avvisarlo non tener conto più
della precedente richiesta in quanto fallita (ripristino soglia) e contemporaneamente riflette il PATHERR al PreviousHop.
•
Se invece riceviamo un RSVP RESV allora il CE invia un OCS_COMMIT al FE
per dirgli di settare opportunamente i dispositivi in quanto la richiesta di circuito
è in fase di instaurazione. Il CE passa nello stato di RESV_RECEIVED.
•
Se l'FE ha successo nel riservare i dispositivi allora invia un OCS_SUCCESS ed
il CE invia un RESV al NextHop transitando nello stato di CIRCUIT_ESTABLISHED. Per il CE il circuito dal prossimo timeslot è attivo!!!
•
Se l'FE non ha successo nel riservare i dispositivi allora invia un OCS_FAILURE ed il CE invia un RESVERR al NextHop transitando nello stato di LISTEN.
•
Infine nel caso di un RSVP PATHTEAR il CE chiude il circuito inviando al FE il
messaggio OCS_REL, propagando al NextHop un PATHTEAR e torna nello stato di LSITEN.
Vediamo ora nel dettaglio come è composto il CE internamente e quali sono gli elementi che lo compongono e i loro ruoli:
Illustrazione 23: Schema a blocchi elemento Control
Element (CE).
30
11 novembre 2010
Il Test-Bed
Versione 1
E' composto da:
•
RSVPManager: gestore dei messaggi RSVP, decodifica il protocollo definendo
il tipo messaggio e i parametri fondamentali (indirizzi ip, etc) da utilizzare nel
CE. Questi dati sono scritti nel campo condiviso rsvpmessage. I messaggi che
passano al RSVPManager vengono poi spediti al CESM per il controllo di sicurezza.
•
CE Security Module (CESM): questo è l'elemento o modulo dedicato al controllo e verifica degli aspetti di sicurezza (esposti di seguito nel dettaglio). In
particolare per quanto riguarda il paradigma OCS si effettua un controllo di integrità del messaggio con l'opportuno campo INTEGRITY di RSVP ed un controllo di autenticazione confrontando gli indirizzi di sender e receiver del circuito
con quelli presenti nelle WhiteList.
◦ WhiteList: Tabella degli indirizzi fidati per il servizio a circuito. E' possibile
stabilire un circuito tra A e B se e solo se gli indirizzi IP di A e B sono nella
tabella!!!
•
CE Scheduler: questo è l'elemento chiave del CE, il cervello delle azioni logiche di controllo compiute dall'elemento. Al suo interno si trovano sezioni divere
per ogni paradigma con comportamenti diversi in base alle differenti situazioni
che si possono verificare (ovvero in base al messaggio in ingresso al CEScheduler e allo stato delle sue variabili come ad esempio la tabella CircuitRequests)
◦ CircuitRequests: Tabella delle richieste di circuito, contiene un record per
ogni PATH diverso che arriva e mantiene nota dello stato in cui è la richiesta
(PATH_RECEIVED; SENT; RESV_RECEIVED, etc) caratterizzando così il
comportamento del CE.
•
CE Bus: elemento di interscambio dei messaggi tra i sotto-elementi del CE.
Security Aspects: come accennato il modello prevede anche la computazione di alcune
semplici tecniche per garantire gli aspetti di sicurezza.
Illustrazione 24: Aspetti e meccanismi di sicurezza nel CE.
In particolare, per quanto riguarda il paradigma a circuito, ogni richiesta che giunge via
RSVP dopo essere stata processata dall'elemento OCS Signaling Channel viene passata
al CE. L'elemento RSVPManager effettua il parsing del protocollo, identificando il tipo
di messaggio (PATH, RESV, …) gli indirizzi del sender, receiver, previous e next hop
14 dicembre 2010
31
Il Test-Bed
Versione 1
oltre ad una serie di informazioni aggiuntive (es. lunghezze d'onda disponibili per l'instaurazione del circuito nel nodo precedente).
A questo punto, note le informazioni chiave contenute nella richiesta di servizio per un
circuito, i messaggio è passato al CESM, l'elemento deputato ai controlli di sicurezza. In
particolare vengono controllati due aspetti:
•
Integrità: viene estrapolato il campo “INTEGRITY” dal protocollo RSVP che
contiene il “digest” dell'intero pacchetto processato all'invio secondo una funzione hash del tipo HMAC (es. MD5 o SHA-1). In ricezione il CESM ricalcola il
digest sul pacchetto e lo confronta con quello inviato. Se sono uguali vuol dire
che il messaggio non è stato alterato e quindi viene giudicato genuino, altrimenti
può essere stato vittima di un attacco (es. di tipo Man in The Middle) e viene
quindi scartato (qui è giusto non inserire alcun tipo di notifica al mittente in
quanto fornirebbe informazioni utili a chi vuole attaccare il nodo).
•
Validazione: il pacchetto, se genuino, viene inoltre processato per verificare se,
gli indirizzi di sender e receiver del circuito sono presenti nella tabella degli indirizzi autorizzati ad usufruire del servizio a circuito (WhiteList). In caso affermativo la richiesta lascia il CESM in quanto autorizzata a procedere, altrimenti il
pacchetto viene scartato (qui forse è giusto inserire qualche tipo di notifica al
mittente in modo da comunicare che non si è abilitati a mandare/ricevere per
questo tipo di servizio)
A questo punto la richiesta lascia il CESM e raggiunge il CE dove viene creato un record nella tabella CircuitRequests con tutte le informazioni necessarie al fine di mantenere lo stato della richiesta.
Per quanto riguarda il paradigma a pacchetto OPS attualmente l'implementazione fornisce il pacchetto in arrivo dalle fibre in ingresso al CESM ma questo non effettua alcun
tipo di controllo di sicurezza sul traffico. Questo perché, nella nostra implementazione,
manca un vero riferimento alla struttura dell'header ottico, in particolare riferimento ad
uno standard che lo delinei ed identifichi i campi necessari come ad esempio il campo
INTEGRITY del protocollo RSVP.
N.B: Si veda lo standard OPS KEOPS come linea guida per la definizione del nostro
header ottico!!!
5.3.3 From/To Kernel
Elementi che inviano/ricevono informazioni (pacchetti) verso/dalla configurazione che
gira in kernelmodule:
•
32
FromKernel: elemento che riceve le informazioni (pacchetti) dalla configurazione che gira in kernelmodule.
11 novembre 2010
Il Test-Bed
Versione 1
Illustrazione 25: Schema a blocchi
elemento FromKernel.
•
•
•
•
•
•
•
14 dicembre 2010
E' composto da:
Classifier: elemento che classifica i pacchetti in arrivo dall'interfaccia di rete in
ascolto (tap0).
◦ Pacchetti ARP: vengono inviati ad un opportuno elemento ARPResponder
che provvede a rispondere alle interrogazioni ARP.
◦ Pacchetti IP: vengono inviati all'elemento successivo;
-Eth: elimina l'intestazione ethernet (14 bytes)
-IP: elimina l'intestazione IP (20 bytes)
-UDP: elimina l'intestazione UDP (8 bytes)
Data2Click: preleva dal campo dati le annotazioni e le inserisce nel campo annotazioni.
CircuitTable: estrapola le informazioni di aggiornamento della tabella dei circuiti.
------ToKernel: elemento che invia le informazioni (pacchetti) alla configurazione
che gira in kernelmodule.
33
Il Test-Bed
Versione 1
Illustrazione 26: Schema a blocchi elemento ToKernel.
•
•
•
•
•
E' composto da:
CircuitTable: inserisce le informazioni di aggiornamento della tabella dei circuiti.
Click2Data: preleva dal campo annotazioni le annotazioni e le inserisce nel
campo dati.
+UDP: aggiunge l'intestazione UDP (8 bytes)
+IP: aggiunge l'intestazione IP (20 bytes)
+Eth: aggiunge l'intestazione ethernet (14 bytes)
5.4 Forwarding Plane
Il piano di inoltro contiene al suo interno i dispositivi che compongono il percorso attraversato dai dati, che vengono configurati dagli elementi logici e fisici del FE anch'essi nel piano di
inoltro.
5.4.1 From/To User
Elementi che inviano/ricevono informazioni (pacchetti) verso/dalla configurazione che
gira in userlevel:
•
FromUser: elemento che riceve le informazioni (pacchetti) dalla configurazione
che gira in userlevel.
34
11 novembre 2010
Il Test-Bed
Versione 1
Illustrazione 27: Schema a blocchi elemento FromUser.
•
14 dicembre 2010
E' composto da:
◦ Classifier: elemento che classifica i pacchetti in arrivo dall'interfaccia di rete
in ascolto (tap0).
▪ Pacchetti ARP: vengono inviati ad un opportuno elemento ARPResponder che provvede a rispondere alle interrogazioni ARP.
▪ Pacchetti IP: vengono inviati all'elemento successivo;
◦ -Eth: elimina l'intestazione ethernet (14 bytes)
◦ -IP: elimina l'intestazione IP (20 bytes)
◦ -UDP: elimina l'intestazione UDP (8 bytes)
◦ Data2Click: preleva dal campo dati le annotazioni e le inserisce nel campo
annotazioni.
◦ CircuitTable: estrapola le informazioni di aggiornamento della tabella dei
circuiti.
------ToUser: elemento che invia le informazioni (pacchetti) alla configurazione che
gira in kernelmodule.
35
Il Test-Bed
Versione 1
Illustrazione 28: Schema a blocchi elemento
ToUser.
E' composto da:
◦ CircuitTable: inserisce le informazioni di aggiornamento della tabella dei
circuiti.
◦ Click2Data: preleva dal campo annotazioni le annotazioni e le inserisce nel
campo dati.
◦ +UDP: aggiunge l'intestazione UDP (8 bytes)
◦ +IP: aggiunge l'intestazione IP (20 bytes)
◦ +Eth: aggiunge l'intestazione ethernet (14 bytes)
5.4.2 Forwarding Element (FE)
Come detto il FE si compone di due sotto-moduli, il LFE e i PFEs.
•
Logical Forwarding Element: precedentemente indicato (come visibile in figura) semplicemente come FE si compone di vari sotto-elementi:
36
11 novembre 2010
Il Test-Bed
Versione 1
◦
◦
14 dicembre 2010
LabelLookup: elemento che controlla (solo traffico a pacchetto) la label
GMPLS dell'header OPS per determinarne (attraverso l'interrogazione della
tabella ForwardingTable) l'interfaccia di uscita. Una volta calcolata questa
informazione viene introdotta nell'annotazioni del pacchetto click per essere
utilizzata nell'algoritmo di scheduling.
▪ N.B: Qui la ForwardingTable è realizzata in maniera molto semplice, ovvero si valuta il 3° byte dell'indirizzo IP destinazione che viene diviso
modulo n° di fibre di uscita del nodo. Nel caso di due fibre di uscita, se il
resto è 0 (3° byte pari) allora OF per il pacchetto è OF0, mentre se il resto è 1 (3° byte dispari) allora OF per il pacchetto è OF1.
FEScheduler: è l'elemento che coordina le operazioni all'interno del LFE oltre che determinare l'inoltro vero e proprio del traffico grazie all'algoritmo di
scheduling (la versione del corrente algoritmo è possibile trovarla definito e
commentato in dettaglio nei paper HPSR 2010 e Globecom 2010). In particolare qui vengono lette le informazioni contenute nelle annotazioni del pacchetto click contenente l'header OPS (IF, OF (da LabelLookup), IW) e ne
viene calcolata la destinazione di uscita:
▪ Se non si è raggiunto il n° massimo di pacchetti schedulati per quella fibra nel corrente timeslot
▪ In caso di contesa sulla stessa lunghezza d'onda si cerca di determinare
un possibile schema di conversione che ottimizzi il traffico
37
Il Test-Bed
Versione 1
▪
•
38
In caso negativo il pacchetto viene droppato (informazione inserita nelle
annotazioni e l'elemento drop uccide successivamente il pacchetto).
Inoltre lo scehduler indirizza opportunamente il pacchetto correttamente
schedulato logicamente verso il suo relativo PFE Packet (ex FMOPS).
La tabella CircuitRequests2 è una copia in replica della tabella CircuitRequests presente nel CE. Questo perché se una struttura dati è dichiarata extern in c può essere condivisa tra tutti gli elementi della configurazione click
corrente (elementi di uno stesso processo click, condividono la risorsa extern) questo non può essere fatto da elementi appartenenti a configurazioni
diverse. E così l'LFE che necessita di alcune informazioni presenti in CircuitRequests per compiere le sue mansioni deve costituire la sua replica e tenerla aggiornata con quella del CE dato che FE e CE si trovano in due file di
configurazioni diversi, ovvero in due processi diversi tra cui peraltro uno (la
configurazione che contiene l'FE) esegue come modulo kernel (ed è quindi
impensabile l'uso di una struttura condivisa tra processi userlevel, dato che lo
spazio di indirizzamento in memoria tra processi user e kernel è
differente!!!)
Per quanto riguarda il traffico OCS invece l'LFE intercambia i messaggi secondo lo standard ForCES con il CE e i vari PFEs (ex FMs).
◦ GranularitySwitch: questo elemento in base alla relativa annotazione invia
i pacchetti al PFE (ex FM) di destinazione.
◦ *LabelSwap: questo elemento era presente nelle prime implementazioni in
cui si prevedeva di poter alterare le informazioni presenti nell'header ottico
(in questo piano convertito in elettronico) per poter poi essere reinserite nel
traffico. E' stato successivamente eliminato in quanto con il protocollo GMPLS questo non è strettamente necessario.
Phisical Forwarding Elements: precedentemente indicati (come visibile in figura) semplicemente come FMs si compongono di un singolo sotto-elemento:
11 novembre 2010
Il Test-Bed
Versione 1
Illustrazione 29: PFEs, ex FMs.
•
FMScheduler: è l'elemento che riceve le richieste dal LFE e interagisce con
l'hardware. In particolare è a corrente dello stato dei dispositivi della matrice
(numero, tipo, stato [occupato o meno e con quale priorità]) e può interagire con
essi attraverso l'uso degli handler click (invocazione mediante la funzione handlercall_read/write)
5.4.3 Control Bus
Questo elemento è stato introdotto per ragioni di ottimizzazione delle connessioni e di
pulizia della configurazione click.
Tutte le uscite degli elementi e gli ingressi delle configurazioni sono collegate al solo ingresso del Bus mentre tutti gli ingressi degli elementi e le uscite delle configurazioni
sono connesse ai suoi output. Questo permette al Bus di far viaggiare le informazioni
dentro e fuori la configurazione e da verso qualsiasi dispositivo che ne faccia parte.
La logica è realizzata associando ad ogni elemento e configurazione un numero (presente in OpticalRouterAnnotation.hh) e caratterizzando opportunamente le annotazioni dei
dati che attraversano la configurazione nei campi FROM (elemento/configurazione mittente) e TO (elemento/configurazione destinatario).
5.5 Switching Module
Il modulo di commutazione contiene al suo interno tutti i dispositivi, propri di una certa tecnologia, attui allo switch dei dati dalle interfacce di ingresso alle interfacce di uscita.
14 dicembre 2010
39
Il Test-Bed
Versione 1
Se pur in linea di principio questo elemento possa emulare il comportamento di differenti tecnologie (elettronica, ottica...) il nostro studio si è caratterizzato sull'uso di tecnologia ottica.
5.5.1 Architettura Broadcast & Select
Tra le tante architetture proposte in letteratura per quanto riguarda le matrici di commutazione ottiche si è scelto di adottare una matrice di semplice architettura come quella
Broadcast&Select.
Esistono diverse architetture per le matrici di commutazione: Alcune pongono attenzione al contenimento dei costi (Shared Architectures, condivisione TWC) Altre forniscono
un supporto nativo alla QoS senza preoccuparsi dei costi. Un esempio è l’architettura
Broadcast-&-Select: Il traffico è propagato a tutte le interfacce di uscita (supporto nativo a broadcast e multicast). Il percorso è ostacolato da dei dispositivi in grado di comportarsi come interruttori ottici. Configurando i dispositivi secondo le istruzioni fornite
dall’algoritmo di scheduling è possibile instradare i pacchetti verso i percorsi voluti.
Dispositivi diversi in base alla tecnologia: fast (SOA) e slow (MEMS).
5.5.2 EDFAs
Questi dispositivi sono posti all'ingresso della matrice (interfacce di input) e nello stadio
intermedio post conversione per garantire che il segnale ottico mantenga valori di potenza e OSNR accettabile per la soglia di rilevazione dei dispositivi ottici della matrice
stessa.
•
Funzionalità Logica: i pacchetti dati li attraversano senza alcun effetto nel percorso.
•
Caratterizzazione in Potenza: essendo componenti attivi questi dispositivi affliggono sia il livello di potenza del segnale sia il rapporto OSNR.
5.5.3 WDM Multiplexer & Demultiplexer
Questi dispositivi ripartiscono o multiplano da/verso un'unica fibra ottica le sue componenti di lunghezza d'onda secondo lo schema WDM.
•
Demultiplexer:
40
11 novembre 2010
Il Test-Bed
Versione 1
◦
•
Funzionalità Logica: i pacchetti che entrano nell'unico ingresso del dispositivo vengono portati verso l'uscita dedicata alla lunghezza d'onda cui appartengono memorizzata nel campo wavelength delle proprie annotazioni.
◦ Caratterizzazione in Potenza:
Multiplexer:
◦ Funzionalità Logica: i pacchetti che entrano nei diversi ingressi (uno per
lunghezza d'onda) del dispositivo vengono portati verso l'unica uscita.
◦ Caratterizzazione in Potenza:
5.5.4 Fiber Delay Lines
Le fibre di ritardo rappresentano l'unico espediente assimilabile alle memorie in ambiente ottico. Queste incanalando il segnale in un loop di lunghezza variabile ritardano il suo
arrivo ai dispositivi di conversione e switch permettendo il contemporaneo processamento delle informazioni di instradamento.
•
Funzionalità Logica: i pacchetti vengono ritardati di un dt necessario al processamento delle informazioni di instradamento e alla attivazione dei dispositivi di
switching.
•
Caratterizzazione in Potenza: l'attraversamento del loop introduce attenzuazione nella potenza del segnale.
5.5.5 Wavelength Converters (WC)
Questi dispositivi permettono di convertire la lunghezza d'onda fissa del segnale che ricevono (Fixed Input) verso una qualsiasi altra lunghezza d'onda (Tunable Output):
•
Funzionalità Logica: se necessario (ovvero se impartito dall'algoritmo di scheduling per risolvere eventuali contese) si varia la lunghezza d'onda del pacchetto
andando a variare il campo annotazione relativo.
◦ N.B: Essendo comandati dallo scheduling questi dispositivi dovranno prevedere un meccanismo di interfaccia (click handlers) per modificare il loro stato durante il funzionamento della matrice in base al risultAto dello scheduling (conversione o meno del segnale per il corrente timeslot)
•
Caratterizzazione in Potenza: essendo componenti attivi questi dispositivi affliggono sia il livello di potenza del segnale sia il rapporto OSNR in modi diversi in base al fatto che avvenga conversione o meno.
5.5.6 Splitters & Couplers
Questi componenti si occupano di ripartire o accoppiare il segnale ottico su più o sulla
stessa fibra:
•
Splitter:
◦ Funzionalità Logica: la fibra ottica posta in ingresso viene ripartita su più
fibre ottiche in uscita (quindi tutti i pacchetti/segnali in ingresso sono duplicati su tutte le uscite).
◦ Caratterizzazione in Potenza: ripartendo una fibra su più uscite ne deriva
una attenuazione della potenza.
•
Coupler:
14 dicembre 2010
41
Il Test-Bed
Versione 1
◦
◦
Funzionalità Logica: le fibra ottica poste in ingresso vengono riunite su una
singola fibra in uscita (quindi qui i pacchetti non devono presentare collisioni!!!).
Caratterizzazione in Potenza: ricongiungendo il segnale di più fibre su una
ne deriva una attenuazione della potenza.
5.5.7 Semiconductor Optical Amplifier (SOA)
Questi dispositivi si caratterizzano logicamente come dei semplici interruttori on/off, e
quindi è semplice la loro implementazione derivata dall'elemento Switch del Click!
•
Funzionalità Logica: in base al loro stato (aperto/chiuso) si caratterizzano logicamente come dei semplici interruttori on/off permettendo al pacchetto/segnale
di attraversarli o meno.
◦ N.B: Essendo comandati dallo scheduling questi dispositivi dovranno prevedere un meccanismo di interfaccia (click handlers) per modificare il loro stato durante il funzionamento della matrice in base al risultAto dello scheduling (conversione o meno del segnale per il corrente timeslot)
•
Caratterizzazione in Potenza: essendo componenti attivi questi dispositivi
affliggono sia il livello di potenza del segnale sia il rapporto OSNR.
5.6 Livelli di Esecuzione
•
•
In base ad alcune necessità intrinseche nelle funzionalità dell'emulatore è stato deciso di suddividere l'esecuzione dello strumento su due piani distinti:
Livello Userlevel: qui risiedono i componenti che non hanno bisogno di prestazioni estreme
di calcolo e/o richiedono l'appoggio a librerie utilizzabile solo in userspace.
Livello Kernelmodule: qui risiedono i componenti che hanno bisogno di accedere alle
massime prestazioni di calcolo e/o non richiedono l'appoggio a librerie esterne in userspace.
5.6.1 Livello Userlevel
•
•
42
Come accennato qui risiedono i componenti che non hanno bisogno di prestazioni estreme di calcolo e/o (soprattutto) richiedono l'appoggio a librerie utilizzabile solo in userspace.
Ne fanno parte:
OCS Signaling Channel: ovvero il canale di segnalazione fuori banda per il paradigma di
traffico a circuito;
Control Element (CE): al suo interno troviamo diverse componenti tra cui
◦ CE Security Module (CESM): questo componente elabora tutti i meccanismi di sicurezza che coinvolgono il nodo (es. Il meccanismo di integrità dei messaggi RSVP) e si
avvale degli algoritmi di sicurezza della libreria OpenSSL fruibile solo a livello userspace.
▪ Secure Sockets Layer (SSL): è un protocollo crittografico che permettono una comunicazione sicura e una integrità dei dati su reti TCP/IP come, ad esempio, internet.
Cifra la comunicazione dalla sorgente alla destinazione (end-to-end) sul livello di
trasporto.
11 novembre 2010
Il Test-Bed
◦
Versione 1
CE Scheduler: il cuore logico del CE oltre a coordinare deve gestire le varie richieste in
arrivo al nodo (es. Richieste di circuito dal canale di segnalazione OCS). Per fare ciò ed
essere concorrente utilizza dei thread per gestire concorrentemente le varie richieste*.
▪ N.B: Questa funzionalità non è implementata ed è opzionalmente prevista per estensioni future.
5.6.2 Livello Kernelmodule
Come accennato qui risiedono i componenti che abbisognano di prestazioni elevate di
calcolo e/o (soprattutto) non richiedono (o possono fare a meno) di librerie utilizzabili
solo in ambiente userspace.
14 dicembre 2010
43
Il Test-Bed
Versione 1
Difficoltà maggiore la si ha nella emulazione dei calcoli legati alla caratterizzazione in
potenza dei dispositivi in quanto in kernelmodule non è possibile utilizzare né le librerie
matematiche (si pensi alle funzioni logaritmiche nel calcolo delle attenuazioni di potenza), né il calcolo in virgola mobile.
5.7 Programmi e Script di Emulazione
L'emulatore allo stato attuale prevede la configurazione vista in precedenza e si avvale fondamentalmente di tre diverse procedure per eseguire una simulazione. In particolare si deve:
1. Avviare il ricevitore del traffico che raccoglie il traffico correttamente schedulato dal
router.
2. Avviare il router in ascolto sulle interfacce di rete.
3. Avviare la generazione del traffico voluto per testare le prestazioni della configurazione corrente.
5.7.1 Ricezione del Traffico (deisnet67)
I programmi e gli script per la ricezione del traffico risiedono in “/home/user67/Confi gurazioni/” ed in particolare abbiamo:
•
receiver<ANNO><MESE><GIORNO>.c: è il codice sorgente del ricevitore di
traffico, parametrizzato per porsi in ascolto su un numero variabile di sorgenti di
traffico OPS sincrone e per rispondere alla sequenza asincrona di richieste di circuito (OCS) che pervengono correttamente inviando opportuni messaggi di
RESV;
•
receiver.sh: è lo script che lancia il codice del ricevitore di traffico con i parametri impostati;
44
11 novembre 2010
Il Test-Bed
Versione 1
•
•
•
interface_config_rx.sh: è lo script che imposta correttamente gli indirizzi delle
sottoreti necessarie a simulare la rete ottica;
◦ N.B: da eseguire ad ogni riavvio della macchina in esame!!!
kill_rx.sh: è uno script che si assicura di uccidere tutti i processi mandati in esecuzione dal ricevitore per interrompere correttamente una simulazione;
workspace_rx.sh: è uno script che apre l'editor di testo e tutti i file editabili della cartella corrente per dare allo sviluppatore il controllo del workspace;
5.7.2 Emulatore Router (deisnet 69)
Su questa macchina abbiamo due sezioni distinte:
•
/home/user69/Configurazioni
•
/home/user69/click-git/
Nella cartella “/home/user69/click-git/” vi è l'installazione locale del click compilato in
modo da avere sia i driver per userlevel che per linuxmodule (e quindi sulla macchina è
in esecuzione un kernel particolare, non quello della distribuzione FC12, ovvero un kernel vanilla [2.6.24.7] a cui è applicata la patch click opportuna).
In particolare poi nella cartella “/home/user69/click-git/elements/local/” risiedono i files
sorgenti degli elementi caratteristici del router (es. SOA, CEScheduler, … ) che sono
necessari per utilizzare le funzionalità del router.
Nella cartella “/home/user69/Configurazioni/” risiedono i programmi e gli script per l'esecuzione dell'emulatore ed in particolare abbiamo:
•
optical_router<VERSION>_user_<M>x<N>_w<W>.click: è il file di configurazione click a livello userlevel (contiene CE e altri elementi che necessitano
di librerie a livello utente) lanciato come processo semplice (a massima priorità)
con il comando click dallo script router_script.sh;
•
optical_router<VERSION>_kernel_<M>x<N>_w<W>.click: è il file di configurazione click a livello kernelmodule (contiene la matrice di commutazionee
altri elementi che necessitano della velocità massima di processamento) installato come modulo kernel con il comando click-install dallo script router_script.sh;
•
router_script.sh: è lo script che lancia il codice del ricevitore di traffico con i
parametri impostati;
•
output_user<M>x<N>_w<W>_ocs_q<LOADFACTOR>.txt: l'output dell'emulazione per scopi di debug (può essere molto grande!!!)
•
output_kernel<M>x<N>_w<W>_ocs_q<LOADFACTOR>.txt: l'output dell'emulazione per scopi di debug (può essere molto grande!!!)
•
readcounter.sh: è uno script che campiona ogni 20 secondi lo stato di alcuni
contatori della configurazione in esecuzione (pacchetti OPS, pacchetti OCS, … )
per statistiche sul throughput.
•
readtime.sh: è uno script che campiona ogni 20 secondi lo stato di alcuni contatori della configurazione in esecuzione per statistiche sui tempi e performance
della configurazione.
•
makeinstall.sh: è uno script che compila gli elementi in “../clickgit/elements/local/” senza dover uscire dalla cartella corrente.
•
makeelemlist.sh: è uno script che aggiorna la lista degli elementi da compilare
senza dover uscire dalla cartella corrente (solo se aggiungo nuovi elementi!!!).
14 dicembre 2010
45
Il Test-Bed
Versione 1
•
•
•
•
interface_config_router.sh: è lo script che imposta correttamente gli indirizzi
delle sottoreti necessarie a simulare la rete ottica;
◦ N.B: da eseguire ad ogni riavvio della macchina in esame!!!
throughput.txt/.ods/.dat/.plt: file per il plotting del throughput. Il file .txt viene
scritto dallo script readcounters e dato in pasto al file .ods. Il risultato della elaborazione del foglio di calcolo è inserito nel file .dat che è il file plottato da gnuplot caricando il file .plt.
kill_click.sh: è uno script che si assicura di uccidere tutti i processi mandati in
esecuzione dallo script router (configurazioni e readers...) per interrompere correttamente una simulazione;
workspace_router.sh: è uno script che apre l'editor di testo e tutti i file editabili
della cartella corrente e degli elementi in “../git-click/local/” per dare allo sviluppatore il controllo del workspace;
5.7.3 Generazione del Traffico (deisnet68)
I programmi e gli script di generazione del traffico risiedono in “/home/user68/Configurazioni/” ed in particolare abbiamo:
•
generator<ANNO><MESE><GIORNO>.c: è il codice sorgente del generatore
di traffico, parametrizzato per generare un numero variabile di sorgenti di traffico OPS sincrone a carico variabile verso un certo indirizzo e una sequenza asincrona di richieste di circuito (OCS) ad intervalli IAT;
•
generator.sh: è lo script che lancia il codice del generatore di traffico con i parametri impostati;
•
interface_config_tx.sh: è lo script che imposta correttamente gli indirizzi delle
sottoreti necessarie a simulare la rete ottica;
◦ N.B: da eseguire ad ogni riavvio della macchina in esame!!!
•
kill_tx.sh: è uno script che si assicura di uccidere tutti i processi mandati in esecuzione dal generatore per interrompere correttamente una simulazione;
•
workspace_tx.sh: è uno script che apre l'editor di testo e tutti i file editabili della
cartella corrente per dare allo sviluppatore il controllo del workspace;
5.8 Caratterizzazione di Potenza
N.B: Questa sezione è stata sviluppata con il fondamentale contributo di Ivan Aldaya.
Questa caratteristiche dell'emulatore è definita elemento per elemento all'interno della matrice
di commutazione.
Come abbiamo visto in kernelmodule non è possibile utilizzare né le librerie matematiche (si
pensi alle funzioni logaritmiche nel calcolo delle attenuazioni di potenza), né il calcolo in virgola mobile. Per ovviare a questi problemi si sono introdotte due soluzioni:
5.8.1 Tabelle di funzioni complesse
In kernelmode è proibito l'uso di librerie di sistema a livello utente come ad esempio la
libreria matematica. Va da sé che i calcoli necessari alla caratterizzazione di potenza, i
quali utilizzano spesso funzioni di tipo logaritmico e/o esponenziale, non possono essere eseguiti con facilità.
46
11 novembre 2010
Il Test-Bed
Versione 1
Per ovviare a questa mancanza, tenendo conto del limitato range dei valori in ingresso
utilizzati come parametri per queste funzioni oltre che il numero contenuto di queste, si
è pensato di implementare delle tabelle in grado di restituire il valore di una determinata
funzione (logaritmo, divisione, esponente) per un determinato valore (parametro della
funzione) utilizzato come indice della tabella stessa.
Esistono dunque funzioni della libreria kernel Power.hh (in CLICKDIR/elements/local)
che restituiscono il valore di queste funzioni interrogando tabelle in cui spesso il primo
indice è la parte intera del valore e il secondo è la parte decimale spesso arrotondata per
eccesso o difetto.
N.B: Questa soluzione non è ottimale, soprattutto per i valori dei calcoli che ne risultano ovviamente inficiati. E' opportuno far presente che i calcoli che le utilizzano (es.
la caratterizzazione in potenza e OSNR) possono essere affetti da un errore più o
meno marcato che può deriva da questo stratagemma.
5.8.2 Numeri in Virgola Fissa
Oltre all'impossibilità di fare uso di librerie esterne in un modulo kernel (come tale è la
configurazione del forwarding plane) è vietato anche l'uso dei valori in virgola mobile.
Si è dunque preso spunto da librerie disponibili su internet all'utilizzo di valori in virgola fissa, con le dovute limitazioni che questi impongono. Infatti un numero in virgola fissa può avere una determinata precisione nei confronti della parte intera o di quella decimale, ma non di entrambe. Occorre dunque tenerne conto nei calcoli.
Esistono dunque una serie di classi di tipo dato fixed point nella libreria Fixed.hh che
abilitano queste funzionalità.
5.9 Il Traffico OPS e OCS
Analizziamo ora come si presenta al nodo il traffico OPS e OCS:
5.9.1 Traffico OPS
Il traffico OPS originato dal generatore è composto da pacchetti UDP/IP incapsulati su
Ethernet che trasportano un payload ottico variabile tra 64 e 1500 bytes (parametro da
riga di comando del generatore)
•
Ethernet: qui si trovano gli indirizzi MAC della scheda associata all'IP sorgente
(ovvero la scheda di rete del generatore) e della scheda associata al next hop per
raggiungere l'IP destinazione (ovvero la scheda di rete associata al traffico in ingresso del router). Questi indirizzi sono forniti mediante protocollo ARP opportunamente istruito dai script di configurazione delle interfacce di rete presenti
nelle cartelle “/home/userXX/Configurazioni”.
•
IP: qui si trovano gli indirizzi IP sorgente del pacchetto ottico e destinazione.
•
UDP: qui si trovano le informazioni UDP che distinguono i pacchetti per porta
sorgente. La porta sorgente individua anche il canale (lunghezza d'onda e fibra)
su cui il pacchetto giunge al nodo. Le porte nella corrente confiugrazione 2x2
w=4 sono:
◦ Fibra 0:
▪ 10000 lunghezza d'onda 0;
▪ 10001 lunghezza d'onda 1;
14 dicembre 2010
47
Il Test-Bed
Versione 1
▪
•
10002 lunghezza d'onda 2;
▪ 10003 lunghezza d'onda 3;
◦ Fibra 1:
▪ 10004 lunghezza d'onda 0;
▪ 10005 lunghezza d'onda 1;
▪ 10006 lunghezza d'onda 2;
▪ 10007 lunghezza d'onda 3;
Optical Packet: questo è il “protocollo ottico” su cui viaggiano le vere informazioni elaborate nel nodo. In particolare avremo:
◦ Header (? bytes): a default i byte dell'header (parametro) sono posti al valore
'H' 72.
▪ byte 0 = label
▪ byte 1 = timeslot corrente
▪ byte 2-5 = emulated arrival power level
▪
◦
byte 6-9 = emulated arrival OSNR level
▪ byte 10 = byte di fine emulazione, settato ad 1 quando è l'ultimo pacchetto dell'emulazione per avvertire il ricevitore.
Payload (? Bytes): a default i byte del payload (parametro) sono posti al valore 'P' 80.
5.9.2 Traffico OCS
Il traffico di segnalazione OCS originato dal generatore è composto da pacchetti
RSVP/IP incapsulati su Ethernet che trasportano messaggi RSVP per l'instaurazione del
circuito:
•
Ethernet: qui si trovano gli indirizzi MAC della scheda associata all'IP sorgente
(ovvero la scheda di rete del generatore) e della scheda associata al ricevitore
l'IP destinazione (ricorda che i messaggi tipo PATH sono tra sender e receiver e i
messaggi tipo RESV sono hop-by-hop). Questi indirizzi sono forniti mediante
protocollo ARP opportunamente istruito dai script di configurazione delle interfacce di rete presenti nelle cartelle “/home/userXX/Configurazioni”.
•
IP: qui si trovano gli indirizzi IP sorgente del pacchetto ottico e destinazione
(sender e receiver nel PATH e sender e nexthop nei messaggi tipo RESV).
•
RSVP: qui si trovano le informazioni proprie del protocollo RSVP tra cui tipo
messaggio, IP Sender e Recever e rispettivi tunnel ID, …
Inoltre le richieste arrivano con un tempo di interarrivo di tipo IAT e una durata parametrizzabile da linea di comando all'esecuzione del generatore.
Il traffico OCS puro originato dal generatore e inviato sul canale dedicato al circuito, e
qui l'header ricopre solo un importanza marginale in quanto porta con se solo le informazioni di sincronizzazione:
•
Ethernet: qui si trovano gli indirizzi MAC della scheda associata all'IP sorgente
(ovvero la scheda di rete del generatore) e della scheda associata al next hop per
raggiungere l'IP destinazione (ovvero la scheda di rete associata al traffico in ingresso del router). Questi indirizzi sono forniti mediante protocollo ARP oppor-
48
11 novembre 2010
Il Test-Bed
Versione 1
•
•
•
tunamente istruito dai script di configurazione delle interfacce di rete presenti
nelle cartelle “/home/userXX/Configurazioni”.
IP: qui si trovano gli indirizzi IP sorgente del traffico a circuito ottico e destinazione.
UDP: qui si trovano le informazioni UDP che distinguono i pacchetti facenti
parte del traffico a circuito per porta sorgente. La porta sorgente individua anche
il canale (lunghezza d'onda e fibra) su cui il pacchetto giunge al nodo. Le porte
nella corrente confiugrazione 2x2 w=4 sono (come sopra);
Optical Packet: questo è il “protocollo ottico” su cui viaggiano le vere informazioni elaborate nel nodo. In particolare avremo:
◦ Header (? bytes): a default i byte dell'header (parametro) sono posti al valore
'H' 72.
▪ byte 0 = label
▪ byte 1 = timeslot corrente
▪ byte 2-5 = emulated arrival power level
▪ byte 6-9 = emulated arrival OSNR level
▪
◦
byte 10 = byte di fine emulazione, settato ad 1 quando è l'ultimo pacchetto dell'emulazione per avvertire il ricevitore.
Payload (? Bytes): a default i byte del payload (parametro) sono posti al valore 'P' 80.
6 Elenco degli Elementi
Ecco ora un elenco punto per punto degli elementi presenti e facenti parte del framework di lavoro.
N.B: Ogni elemento è composto dai rispettivi files .cc e .hh inoltre può includere delle librerie
come OpticalRouterAnnotation.hh o altri files presenti nelle librerie del SO o nella stessa cartella “CLICKDIR/elements/local”
6.1 Attenuator
Elemento che modella l'attenuazione del segnale ottico.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Valore attenuazione: in db;
•
Emulazione di Potenza: attiva o meno;
•
Aggiunta del connettore: se l'elemento deve prevedere nel calcolo di potenza l'inserimento di due connettori nei punti di collegamento;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
14 dicembre 2010
49
Elenco degli Elementi
Versione 1
Nel metodo simple-action invece, all'arrivo del pacchetto se è attiva la funzione di emulazione della potenza viene richiamato il metodo di powerMethod che ne calcola l'entità e modifica
di conseguenza i valori nelle annotazioni e si inizializzano le variabili da usare.
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.2 Bus
Elemento che collega e smista i messaggi tra diversi elementi a lui connessi attraverso la lettura delle annotazioni TO e FROM.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Ports: numero di porte in uscita;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla l'annotazione FROM e
TO quindi si stampa(se verbose true) da dove proviene il pacchetto e dove va, poi lo si smista
verso la porta dell'elemento corrispondente al valore memorizzato nella annotazione TO del
pacchetto.
Gli elementi che vogliono usare il bus devono implementare un metodo di tipo send_message
per inviare e riceverne messaggi settando il tipo, sorgente e destinazione;
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.3 CEScheduler
Elemento che modella il centro logico del CE.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
INPUT_FIBERS: numero fibre in ingresso del nodo;
•
OUTPUT_FIBERS: numero fibre in uscita del nodo;
•
WAVELENGTHS: numero lunghezze d'onda per canale;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla il paradigma di appartenenza (OCS, OBS, OPS) e si entra in un'opportuna biforcazione del codice sorgente per caratterizzare comportamenti diversi in base al tipo di appartenenza.
Il metodo send_message indica che questo elemento è collegabile ad un elemento bus per inviare e riceverne messaggi settando il tipo, sorgente e destinazione;
L'elemento ha inoltre i seguenti handlers:
•
non usati
50
11 novembre 2010
Elenco degli Elementi
Versione 1
6.4 CESecurityModule (CESM)
Elemento che modella il controllo di sicurezza ed integrità nel CE.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
INPUT_FIBERS: numero fibre in ingresso del nodo;
•
OUTPUT_FIBERS: numero fibre in uscita del nodo;
•
WAVELENGTHS: numero lunghezze d'onda per canale;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla il paradigma di appartenenza (OCS, OBS, OPS) e si entra in un'opportuna biforcazione del codice sorgente per caratterizzare comportamenti diversi in base al tipo di appartenenza (controllo sicurezza ed integrità).
Il metodo send_message indica che questo elemento è collegabile ad un elemento bus per inviare e riceverne messaggi settando il tipo, sorgente e destinazione;
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.5 CircuitsTable
Elemento che inserisce le informazioni delle CircuitsTable per lo scambio e la sincronizzazione delle stesse tra CE e FE (che sono su due configurazioni diverse, per di più a livelli differenti e non condividono la stessa struttura CircuitsTable).
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
LEVEL: indica se l'elemento agisce a livello userlevel o kernelmodule;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla a quale livello si agisce
e in che direzione CE
FE o FE
CE. In base a ciò si incapsulano o si aggiornano le informazioni delle CircuitsTable.
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.6 Click2Data
Elemento che inserisce le informazioni delle annotazioni click del pacchetto nel campo dati
dello stesso per lo scambio e la sincronizzazione delle stesse tra CE e FE (che sono su due
configurazioni diverse e non manterrebbero le stesse annotazioni).
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
14 dicembre 2010
51
Elenco degli Elementi
Versione 1
Nel metodo simple-action invece, all'arrivo del pacchetto si inseriscono le annotazioni nel
campo data in modo da inviarle attraverso l'interfaccia di rete condivisa tra le due configurazioni.
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.7 Combiner
Elemento che modella un combiner ottico.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
PORTS: numero di porte in ingresso del Combiner;
•
Emulazione di Potenza: attiva o meno;
•
Aggiunta del connettore: se l'elemento deve prevedere nel calcolo di potenza l'inserimento di due connettori nei punti di collegamento;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, tutti i pacchetti in ingresso al nodo vengono convogliati da
tutti gli ingressi alla stessa uscita e se è attiva la funzione di emulazione della potenza viene
richiamato il metodo di powerMethod che ne calcola l'entità e modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.8 Connector
Elemento che modella un connettore fisico tra due elementi ottici.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Value: valore di attenuazione;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action viene richiamato il metodo di powerMethod che ne calcola l'entità
e modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.9 CrossTalk
Elemento che modella l'effetto di cross-talk tra elementi ottici.
52
11 novembre 2010
Elenco degli Elementi
Versione 1
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
PORT: numero di porte da considerare per il valore di cross-talk;
•
Emulazione di Potenza: attiva o meno;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action se è attiva la funzione di emulazione della potenza viene richiamato il metodo per il calcolo del valore del cross-talk per dispositivi con un certo numero di porte, ne calcola l'entità e modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
id
•
port
6.10 Data2Click
Elemento che recupera le informazioni delle annotazioni click del pacchetto dal campo dati
per lo scambio e la sincronizzazione delle stesse tra CE e FE (che sono su due configurazioni
diverse e non manterrebbero le stesse annotazioni).
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si estraggono le annotazioni dal
campo data e si rimettono in quello annotation.
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.11 EDFA
Elemento che modella un amplificatore ottico tipo EDFA.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Wavelengths: numero di lunghezze d'onda;
•
Emulazione di Potenza: attiva o meno;
•
Control Type: tipo di controllo potenza o guadagno;
•
Model Type: modello EDFA, secondo datasheet modello 1 o 2 vedi report Ivan;
•
Aggiunta del connettore: se l'elemento deve prevedere nel calcolo di potenza l'inserimento di due connettori nei punti di collegamento;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
14 dicembre 2010
53
Elenco degli Elementi
Versione 1
Nel metodo simple-action se è attiva la funzione di emulazione della potenza viene richiamato il metodo di powerMethod che ne calcola l'entità in base al tipo di modello e di controllo e
ne modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
id
6.12 FEScheduler
Elemento che modella il centro logico del FE.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
INPUT_FIBERS: numero fibre in ingresso del nodo;
•
OUTPUT_FIBERS: numero fibre in uscita del nodo;
•
WAVELENGTHS: numero lunghezze d'onda per canale;
•
Soglia Circuiti: soglia logica massima di circuiti contemporanei nel nodo;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla il paradigma di appartenenza (OCS, OBS, OPS) e si entra in un'opportuna biforcazione del codice sorgente per caratterizzare comportamenti diversi in base al tipo di appartenenza.
Il metodo send_message indica che questo elemento è collegabile ad un elemento bus per inviare e riceverne messaggi settando il tipo, sorgente e destinazione;
L'elemento ha inoltre i seguenti handlers:
•
value
•
fe_dropped packets pacchetti scartati dal FE
6.13 FMOCSScheduler
Elemento che modella il centro logico del PFEs (ex FM) paradigma OCS.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
OCS_IF: numero fibre in ingresso del nodo;
•
OCS_OF: numero fibre in uscita del nodo;
•
WAVELENGTHS: numero lunghezze d'onda per canale;
•
Priority: la priorità del modulo rispetto agli altri;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla il paradigma di appartenenza (OCS, OBS, OPS) e si entra in un'opportuna biforcazione del codice sorgente per caratterizzare comportamenti diversi in base al tipo di appartenenza.
Il metodo send_message indica che questo elemento è collegabile ad un elemento bus per inviare e riceverne messaggi settando il tipo, sorgente e destinazione;
L'elemento ha inoltre i seguenti handlers:
54
11 novembre 2010
Elenco degli Elementi
•
•
•
•
Versione 1
schedule
inputfiber
outputfiber
wavelength
6.14 FMOPSScheduler
Elemento che modella il centro logico del PFEs (ex FM) paradigma OPS.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
INPUT_FIBERS: numero fibre in ingresso del nodo;
•
OUTPUT_FIBERS: numero fibre in uscita del nodo;
•
WAVELENGTHS: numero lunghezze d'onda per canale;
•
Priority: la priorità del modulo rispetto agli altri;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
•
Switching Matrix: stringa dell'elemento SM nel file configurazione per richiamare gli
handler click (obsoleta)
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla il paradigma di appartenenza (OCS, OBS, OPS) e si entra in un'opportuna biforcazione del codice sorgente per caratterizzare comportamenti diversi in base al tipo di appartenenza.
Il metodo send_message indica che questo elemento è collegabile ad un elemento bus per inviare e riceverne messaggi settando il tipo, sorgente e destinazione;
L'elemento ha inoltre i seguenti handlers:
•
TWCName1: il primo indice del twc da abilitare;
•
TWCName2: il primo indice del twc da abilitare;
•
TWCValue: il primo indice del twc da abilitare;
•
SOAName1: il primo indice del soa da abilitare;
•
SOAName2: il primo indice del soa da abilitare;
•
SOAName3: il primo indice del soa da abilitare;
•
fmdroppedpackets
6.15 LabelLookup
Elemento che modella l'azione di LabelLookup.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
INPUT_FIBERS: numero fibre in ingresso del nodo;
•
OUTPUT_FIBERS: numero fibre in uscita del nodo;
•
WAVELENGTHS: numero lunghezze d'onda per canale;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
14 dicembre 2010
55
Elenco degli Elementi
Versione 1
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla il paradigma di appartenenza (OCS, OBS, OPS) e si entra in un'opportuna biforcazione del codice sorgente per caratterizzare comportamenti diversi in base al tipo di appartenenza (LabelLookup solo per OPS).
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.16 LabelSwap
Elemento che modella l'azione di LabelSwap (obsoleto).
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si esegue l'operazione di aggiornamento dell'header ottico del pacchetto.
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.17 LogarithmicAttenuator (not used)
Elemento che modella l'attenuazione logaritmica del segnale ottico.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
TYPE: indica se modellare l'attenuazione logaritmica di uno splitter, combiner, etc...;
•
N: valore parametrico per la funzione logaritmo;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action si restituisce il paccchetto.
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.18 NETCONFManager
Elemento che modella la gestione dei messaggi provenienti dal demone NETCONF.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ANNO: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, quando riceve un pacchetto dalla socket deputata al dialogo con il NETCONF, esegue le operazioni in base al comando ricevuto.
L'elemento ha inoltre i seguenti handlers:
•
non usati
56
11 novembre 2010
Elenco degli Elementi
Versione 1
6.19 NewElement
Scheletro per a definizione di nuovi elementi.
6.20 NewHeaderAppend (not used)
Elemento che modella l'aggiornamento dell'header ottico all'uscita dal nodo.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
WAVELENGTH: la lunghezza d'onda;
•
GUARDBAND1: dimensione guardband1;
•
GUARDBAND2: dimensione guardband 2;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action in base alle informazioni si esegue un determinato codice.
N.B: Qui era pensato di agire su un pacchetto ottico formato da un header (5 bytes) una
guard band da 6 byte il payload 48 byte e un'altra guard banda da 5 bytes!!! Vedi esempio
formato pacchetto ottico KEOPS
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.21 NoiseSource
Elemento che modella una sorgente di rumore.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
INPUT_W: numero di lunghezze d'onda;
•
Emulazione di Potenza: attiva o meno;
•
Gain: guadagno;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action se è attiva la funzione di emulazione della potenza viene richiamato il metodo di powerMethod che ne calcola l'entità in base al tipo di modello e di controllo e
ne modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
id
6.22 OCSSignalingChannel
Elemento che modella il canale di segnalazione per OCS.
14 dicembre 2010
57
Elenco degli Elementi
Versione 1
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ANNO: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, all'arrivo del pacchetto si controlla la provenienza e si entra in un'opportuna biforcazione del codice sorgente per caratterizzare comportamenti diversi
in base al tipo di appartenenza.
Il metodo send_message indica che questo elemento è collegabile ad un elemento bus per inviare e riceverne messaggi settando il tipo, sorgente e destinazione;
L'elemento ha inoltre i seguenti handlers:
•
id
6.23 OpticalRouterAnnotations
Questo è un file particolare in cui sono presenti le costanti condivise ed utilizzate in tutto il
modello in particolare:
•
Byte relativi alle annotazioni: ogni pacchetto click porta con se le annotazioni, 48 bytes, che assumono il significato espresso in questo file. In particolare questi valori sono
riportati anche all'inizio dei file di configurazione per essere usati al loro interno.
•
Costanti di vario tipo
◦ Messaggi RSVP
◦ Valori paradigmi OPS, OBS e OCS e priorità
◦ Valori ControlBus
◦ Soglie valori di potenza
•
Strutture condivise: strutture dati condivise da più elementi vengono dichiarate qui
con 'extern'
◦ Circuit
◦ WhiteAddress
6.24 PowerModule
Elemento per il calcolo del valore di potenza
6.25 ReadAnnotationBytes
Elemento di prova per leggere le annotazioni.
6.26 ReadAnnotation
Elemento di prova per leggere le annotazioni.
58
11 novembre 2010
Elenco degli Elementi
Versione 1
6.27 ReadWavelengthColor
Elemento che legge la lunghezza d'onda del pacchetto
6.28 RSVPManager
Elemento che modella la gestione dei messaggi provenienti dalla segnalazione OCS su GMPLS/RSVP-TE.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
INTEGRITY: se controllare o meno l'integrità dei pacchetti RSVP;
•
CURRENTHOPADDRESS: indirizzo corrente del nodo ottico nella rete;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action invece, quando riceve un pacchetto dal canale di segnalazione o
dal CEScheduler, esegue le operazioni in base al tipo di messaggio e al mittente ricevuto.
Il metodo send_message indica che questo elemento è collegabile ad un elemento bus per inviare e riceverne messaggi settando il tipo, sorgente e destinazione;
L'elemento ha inoltre i seguenti handlers:
•
non usati
6.29 RSVPMessage
Elemento che modella il messaggio RSVP come punto di appoggio nella memorizzazione.
6.30 SetPower
Elemento per impostare i valori di OSNR e Potenza(not used);
6.31 SetTimeslot
Elemento per valutare il valore del corrente timeslot;
6.32 SetTrafficNeed
Elemento che imposta il traffico in base al paradigma (not used);
6.33 SOASwitch
Elemento che modella uno switch ottico.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
14 dicembre 2010
59
Elenco degli Elementi
Versione 1
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Emulazione di Potenza: attiva o meno;
•
Control Type: tipo di controllo potenza o guadagno;
•
Model Type: modello EDFA, secondo datasheet modello 1 o 2 vedi report Ivan;
•
Aggiunta del connettore: se l'elemento deve prevedere nel calcolo di potenza l'inserimento di due connettori nei punti di collegamento;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action se è attiva la funzione di emulazione della potenza viene richiamato il metodo di powerMethod che ne calcola l'entità in base al tipo di modello e di controllo e
ne modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
switch
•
config
6.34 Splitter
Elemento che modella uno splitter.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Ports: numero di lunghezze d'onda;
•
Emulazione di Potenza: attiva o meno;
•
Aggiunta del connettore: se l'elemento deve prevedere nel calcolo di potenza l'inserimento di due connettori nei punti di collegamento;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action se è attiva la funzione di emulazione della potenza viene richiamato il metodo di powerMethod che ne calcola l'entità in base al tipo di modello e di controllo e
ne modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
none
6.35 TimeslotManager
Elemento per la gestione del timeslot;
6.36 TimeslotMarker
Elemento per la marcatura del timeslot;
60
11 novembre 2010
Elenco degli Elementi
Versione 1
6.37 TimeWrite
Elemento per la scrittura dei timestamp per il calcolo delle performance;
6.38 TunableWavelengthConverter
Elemento che modella un convertitore di lunghezza d'onda.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
Wavelengths: numero di lunghezze d'onda;
•
Emulazione di Potenza: attiva o meno;
•
Colore: lunghezza d'onda su cui convertire a default;
•
Aggiunta del connettore: se l'elemento deve prevedere nel calcolo di potenza l'inserimento di due connettori nei punti di collegamento;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
Nel metodo simple-action se è attiva la funzione di emulazione della potenza viene richiamato il metodo di powerMethod che ne calcola l'entità in base al tipo di modello e di controllo e
ne modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
color
6.39 Wavelength
Elemento per la lettura e l'impostazione dei parametri sulla lunghezza d'onda del segnale
6.40 WDMMulti e Demultiplexer
Elemento che modella un mux o demux ottico WDM.
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ID elemento: un valore numerico in formato stringa che lo identifichi nella configurazione;
•
PORTS: numero di porte;
•
Emulazione di Potenza: attiva o meno;
•
Aggiunta del connettore: se l'elemento deve prevedere nel calcolo di potenza l'inserimento di due connettori nei punti di collegamento;
•
Verbose: se l'elemento deve stampare a video stringhe utili al debug;
14 dicembre 2010
61
Elenco degli Elementi
Versione 1
Nel metodo simple-action se è attiva la funzione di emulazione della potenza viene richiamato il metodo di powerMethod che ne calcola l'entità in base al tipo di modello e di controllo e
ne modifica di conseguenza i valori nelle annotazioni.
L'elemento ha inoltre i seguenti handlers:
•
none
6.41 WritePower
Elemento che scrive il valore di potenza dalle annotazioni all'header ottico in uscita dal nodo
(per essere rilevate dal ricevitore e valutare le oscillazioni prodotte).
Nel metodo configure imposta i parametri passati nella stringa di configurazione all'atto di
creazione nel file di configurazione click e si inizializzano le variabili da usare.
•
ANNO: un valore numerico in formato stringa che lo identifichi nella configurazione;
Nel metodo simple-action invece, si copiano i valori di Power e OSNR dalle annotazioni all'intestazione del pacchetto;
7 Risultati
In questa sezione verranno presentati i risultati ottenuti durante i mesi di lavoro e pubblicati sui
vari articoli scientifici prodotti (HPSR 2010, ITWDC 2010, GLOBECOM 2010, INFOCOM
2011*). In particolare mostreremo i risultati riguardo agli aspetti di:
•
Validazione (HPSR 2010);
•
Standardizzazione, Multi-granularità e Sicurezza (ITWDC 2010, GLOBECOM 2010);
•
Performance (INFOCOM 2011*);
•
Caratterizzazione in Potenza (INFOCOM 2011*)
* N.B: L'articolo per la conferenza internazionale INFOCOM 2011 non è stato accettato (acceptance rate 16%), il lavoro verrà ampliato e riproposto ad un altra conferenza.
7.1 Validazione
Il primo risultato voluto ed ottenuto è stata la validazione del modello. Si è lavorato in modo
che l'emulatore, in una data configurazione in termini di matrice di commutazione e algoritmo
di scheduling, presentasse lo stesso comportamento (ovvero quantità di traffico correttamente
schedulato e/o perso a fronte di contese insolubili) di un simulatore software esistente e collaudato, caratterizzato dalla stessa architettura per la matrice di commutazione e lo stesso algoritmo di scheduling.
62
11 novembre 2010
Risultati
Versione 1
Illustrazione 30: Validazione al variare del carico e delle configurazioni del nodo.
Come si evince dalla figura, i risultati sono rappresentati dalle curve (risultati simulazione) e
dai punti (risulati emulazione) che esprimono il tasso di perdita di un nodo con architetture simili.
La sovrapposizione di punti e curve indica che i due strumenti (simulatore ed emulatore)
giungono alle stesse conclusioni di perdita per carico di traffico crescente confermando di fatto la correttezza (e quindi la validazione) dello strumento emulatore.
Le curve esprimono come accennato la percentuale di perdita di un nodo al variare della architettura e del carico di traffico, in un solo termine viene espressa la Packet Loss Probability.
Packet Loss Probability (PLP): Probabilità di perdita dei pacchetti, espressa come differenza tra i pacchetti in ingresso e quelli effettivamente inoltrati sul totale dei pacchetti in ingresso:
PLP =
•
•
Pacchetti Entrati− Pacchetti Usciti
Pacchetti Entrati
Minore è, migliori sono le prestazioni del nodo (e quindi della sua architettura e del
suo algoritmo di scheduling).
Variazioni del numero di ingressi, uscite, numero di lunghezze d'onda del canale e delle possibili implementazioni degli algoritmi di scheduling sono tutti fattori che, come
vedremo, influenzano il valore espresso dalla PLP.
7.2 Standardizzazione, Multi-granularità e Sicurezza
Altri tre aspetti della categoria dei risultati riguardano la standardizzazione (in termini di protocolli usati per il dialogo all'interno e/o all'esterno del modello), l'introduzione della multigranularità (ovvero della co-esistenza di paradigmi di traffico differenti come quello a pacchetto OPS e a circuito OCS) e la presenza di meccanismi di sicurezza (insiti nei protocolli
ma anche in elementi modulari del modello che permettono di analizzare il traffico e autorizzarlo solo in caso di successo nella verifica di opportune caratteristiche).
Per evidenziare tali risultati viene utilizzato uno strumento di analisi e cattura del traffico sulla rete, chiamato Wireshark (opportunamente modificato per includere anche i protocolli di re14 dicembre 2010
63
Risultati
Versione 1
cente definizione come ad es. IETF ForCES) e di questo ne viene proposta la finestra di cattura relativa ad una emulazione a traffico misto OPS + OCS oltre ad un grafico che illustra il throughput complessivo del nodo differenziato per tipologia di traffico.
Illustrazione 31: Cattura Wireshark.
Illustrazione 32: Grafico del throughput OPS/OCS.
•
•
64
La cattura è in ascolto sul canale di segnalazione fuori banda del traffico OCS e sul canale di comunicazione tra il demone NETCONF ed eventuali Client (interazione HO e
GOs), presenta una riga per ogni pacchetto catturato (n°), l'istante di cattura (in secondi, qui 1 timeslot = 1 sec), l'IP sorgente e destinazione del pacchetto, il protocollo in
uso (RSVP), il tipo di messaggio.
Il grafico a destra mostra il throughput del traffico OPS (rosso, in alto) e OCS (blu, in
basso) con dei riferimenti negli istanti significativi della emulazione. Il throughput del
nodo è plottato analizzando i contatori (via click handlers) diversificati per paradigma
presenti all'interno del modello.
11 novembre 2010
Risultati
Versione 1
Sull'asse orizzontale è presente il riferimento temporale in timeslot (1 timeslot = 1
sec) mentre sull'asse verticale è presente il throughput.
Questo è normalizzato ad 1 per una configurazione 2x2 con 4 lunghezze d'onda ovvero 8 canali.
Questo significa che se avessimo solo traffico a pacchetto (es. nel tratto tra il timeslot
0 e 500) su tutti i canali con carico pari ad 1 e nessuna contesa la linea rossa sarebbe
fissa ad 1. In realtà il traffico OPS generato dalla nostra emulazione ha si carico = 1
ma non è esente da contese e questo caratterizza il classico andamento ondulatorio del
throughput OPS che si attesta tra 0.8 e 1 evidenziando le perdite dovute alle contese.
In presenza invece di traffico OCS (dal timeslot 500 in poi) si possono osservare due
comportamenti distinti, ovvero il throughput del traffico OCS totale balza ad un valore
pari a 0,125 in quanto il traffico OCS è di tipo Constant Bit Rate (CBR) ed occupa
quindi tutto il canale, ovvero 1/8 = 1,25 del throughput totale mentre il throughput del
traffico OPS totale diminuisce (in quanto meno prioritario un canale OPS viene perso
per realizzare il circuito) di un valore pari a – 0,125.
Analizziamo ora la cattura in ordine temporale ricordando le seguenti condizioni iniziali che:
•
La tabella Whitelist contiene i seguenti indirizzi:
◦
•
Receiver Fidati (N.B: mancano gli indirizzi pari!!!)
▪ 192.168.101.1
▪ 192.168.103.1
▪ 192.168.105.1
▪ 192.168.107.1
◦ Sender Fidati
▪ 172.16.0.1
▪ 172.16.1.1
▪ 172.16.2.1
▪ 172.16.3.1
▪ 172.16.4.1
▪ 172.16.5.1
▪ 172.16.6.1
▪ 172.16.7.1
◦ Next e PreviousHop
▪ 10.50.50.1
▪ 10.50.51.1
▪ 10.50.50.2
▪ 10.50.51.2
▪ 10.100.50.1
▪ 10.100.51.1
▪ 10.100.50.2
▪ 10.100.51.1
La tabella CircuitRequests è vuota;
14 dicembre 2010
65
Risultati
Versione 1
•
La soglia circuiti (variabile fe_circuitsallowedthreshold) è impostata a 2;
Vediamo ora l'interazione temporale:
1. Il primo pacchetto è un ping per sincronizzare la cattura di Wireshark con i timeslot
dell'emulazione (pacchetto non visibile);
2. Il secondo pacchetto viene ricevuto sul canale di segnalazione fuori banda OCS all'istante/timeslot n°300. Il messaggio indica una richiesta di instaurazione di circuito per
un sender/client (IP 172.16.2.1) verso un receiver (IP 192.168.102.1). Questa richiesta
viene analizzata dal nodo, in particolare dal CE che la passa al CESM per la verifica di
sicurezza ed autenticità. Per scelta progettuale, staticamente prima dell'inizio della
emulazione, si è provveduto a riempire la WhiteList associata al CESM con i soli indirizzi dispari delle sotto-reti 172.16.1/3/5/7.1 e 192.168.101/103/105/107.1. Nel confronto tra sender e receiver il CESM non trova corrispondenza nella WhiteList e da indicazione al CE di rifiutare la richiesta in quanto non pervenuta da indirizzi autorizzati
all'utilizzo del servizio a circuito.
Il pacchetto viene semplicemente ucciso nel nodo senza dare notifica al mittente, a cui
scadrà il timeout di attesa di risposta e proverà in seguito (N.B: questa soluzione non è
ottimale occorrerebbe sempre dare notizia dell'avvenuto rifiuto, vedere se esistono tipi
di errore RSVP per segnalare questo evento).
3.
66
Il secondo pacchetto viene ricevuto all'istante/timeslot n°510. Il messaggio indica una
richiesta di instaurazione di circuito per un sender/client (IP 172.16.5.1) verso un receiver (IP 192.168.105.1). Questa richiesta viene analizzata dal nodo, in particolare dal
CE (in realtà viene decodificata dal RSVPManager) che la passa al CESM per la verifica di sicurezza ed autenticità. Questa volta sender e receiver fanno parte della WhiteList (che come detto è riempita staticamente in avvio con i soli indirizzi dispari delle
sotto-reti 172.16.1/3/5/7.1 e 192.168.101/103/105/107.1).
Nel confronto tra sender e receiver il CESM trova dunque corrispondenza nella WhiteList e da indicazione al CE di accettare la richiesta in quanto pervenuta da indirizzi
autorizzati all'utilizzo del servizio a circuito.
Il CE a questo punto (CEScheduler) crea una istanza nella tabella delle richieste di
circuito CircuitRequests per gestire la stessa, in cui vengono memorizzati tutti i parametri relativi (record occupato = true, stato = listen, IP src, IP dst, … N.B: ogni circuito è univocamente identificato dalla coppia Destination IP e tunnel-id del protocollo
RSVP) e passa la richiesta al FE (FEScheduler messaggio interno OCS_REQ o equivalente ForCES).
L'FE (FEScheduler) controlla la soglia di circuiti correnti instaurati attraverso il nodo.
Per scelta progettuale si è definita una soglia logica di circuiti OCS contemporaneamente possibili sul nodo pari a Th=2. Questo perché non avere una soglia potrebbe significare l'occupazione del nodo esclusivamente per il traffico a circuito, maggiormente prioritario rispetto al pacchetto, rendendo il nodo impermeabile al traffico a pacchetto. Con questa soluzione si mantiene dunque attiva sempre la multi-granularità.
Dato che, attualmente (all'istante 500), nel nodo non sono presenti circuiti il FE dà
l'ok al controllo sulla soglia (diminuendola Th = 2 – 1 = 1), e passa il messaggio al FM
deputato (FM_OCS attraverso un messaggio OCS_REQ o equivalente ForCES).
Il FM controlla se, attualmente (all'istante 500), sarebbe in grado di instaurare il circuito come richiesto in base alla disponibilità dell'hardware ed in particolare su quale e
quante lunghezza d'onda è in grado di convertire il circuito in ingresso al nodo per diventarne parte. Questo dipende dalla fibra di ingresso e di uscita del circuito derivata
dagli indirizzi IP del sender e del receiver del circuito. Se per la data IF e OF voluta vi
sono nel pool di convertitori di lunghezza d'onda delle lunghezze d'onda libere o occupate con priorità inferiore a quella del circuito, allora sono in grado di accettare. Se
11 novembre 2010
Risultati
Versione 1
riesco a trovare almeno una lunghezza d'onda vuol dire che (attualmente) sono in grado di instaurare sul nodo il circuito richiesto, memorizzo la lista delle lunghezze d'onda su cui posso convertire e restituisco al FE un messaggio OCS_GRANT o l'equivalente ForCES.
In realtà se trovo una sola lunghezza d'onda e dò l'ok a questo circuito può avvenire
che arrivi un'altra richiesta OCS e anche a questa verrà comunicata la disponibilità
della lunghezza d'onda (allo stato attuale non è occupata da nessun circuito!). Questo
perché è meglio “prenotare” in questa fase la lunghezza d'onda anziché marcare come
occupata per il futuro perché se la fase di instaurazione del primo circuito dovesse fallire nei nodi a valle avremmo rifiutato il secondo senza motivo e quindi perso la potenzialità di instaurare almeno 1 dei 2 circuiti.
Se non trovo alcuna lunghezza d'onda libera comunico al FE l'impossibilità di instaurare il nodo per indisponibilità hardware corrente ed invio un messaggio OCS_DENY
o l'equivalente ForCES.
Nel nostro caso il nodo ha disponibilità di lunghezze d'onda e risponde con un
OCS_GRANT al FE.
A questo punto l'FE se riceve un OCS_GRANT o l'equivalente ForCES lo ritorna
semplicemente al CE (come nel caso corrente) mentre se riceve un OCS_DENY aumenta di nuovo il valore di soglia di 1 (nel nostro caso Th = 1 + 1 = 2) e ritorna il
messaggio OCS_DENY o l'equivalente ForCES.
Il CE a questo punto aggiorna lo stato della richiesta di circuito corrente nella tabella
CircuitRequests a PATH_SENT ed invia il PATH (aggiornato nell'indirizzo del previous hop, nodo corrente, e nella lista delle lunghezze d'onda disponibili per il next
hop) al next hop (N.B: il path inviato dal nodo al next hop non si vede nella cattura occorre inserire la cattura completa!!!).
4. Il terzo pacchetto viene ricevuto all'istante/timeslot n°513 (3 secondi è infatti il tempo
che attende il programma receiver per rispondere con un RESV, tempo introdotto per
simulare il tempo di attraversamento di una serie di nodi a valle). Il messaggio indica
la conferma di instaurazione del circuito precedente (ogni circuito è univocamente
identificato dalla coppia Destination IP e tunnel-id del protocollo RSVP) e proviene
questa volta dal next hop (IP 10.100.51.2) verso una delle reti rappresentate dal current
hop (IP 10.100.51.1). Questo messaggio come tutti viene analizzato dal nodo, in particolare dal CE (in realtà viene decodificata dal RSVPManager) che la passa al CESM
per la verifica di sicurezza ed autenticità. Anche questa volta sender e receiver fanno
parte della WhiteList (vedi sopra).
Nel confronto tra sender e receiver il CESM trova dunque corrispondenza nella WhiteList e da indicazione al CE di accettare la richiesta in quanto pervenuta da indirizzi
autorizzati all'utilizzo del servizio a circuito.
Il CE a questo punto (CEScheduler) aggiorna l'istanza nella tabella delle richieste di
circuito CircuitRequests passando allo stato RESV_RECEIVED e passa la richiesta al
FE (FEScheduler messaggio interno OCS_ACK o equivalente ForCES).
L'FE (FEScheduler) ha già tenuto conto di questa richiesta nel computo della soglia e
quindi passa diretamente il messaggio al FM deputato (FM_OCS attraverso un messaggio OCS_COMMIT o equivalente ForCES).
Il FM controlla se, attualmente (all'istante 513) è in grado di instaurare il circuito
come richiesto in base alla disponibilità dell'hardware ed in particolare su quale e
quante lunghezza d'onda è in grado di convertire il circuito in ingresso al nodo per diventarne parte. Questo dipende dalla fibra di ingresso e di uscita del circuito derivata
dagli indirizzi IP del sender e del receiver del circuito e dalla lunghezza d'onda scelta
14 dicembre 2010
67
Risultati
Versione 1
dal next hop per ricevere e dalle lunghezze d'onda disponibili a trasmettere comunicte
dal previous hop nel precedente PATH.
Cerco quindi di stabilire se posso occupare le risorse hardware opportune ovvero, per
questa architettura, il convertitore di lunghezza d'onda ed il SOA opportuno.
Per il convertitore scelgo innanzitutto un convertitore nel pool della IF da cui proviene il circuito (che dipende dall'IP del sender) ed in particolare quello della lunghezza
d'onda da cui voglio ricevere il traffico a circuito, scelto come la prima lunghezza tra
quelle libere comunicatemi come disponibili dal previous hop (nel messaggio PATH
relativo a questo circuito). Inoltre imposterò il TWC in modo da convertire sulla lunghezza d'onda richiesta dal nexthop e comunicatami nel corrente RESV (nella parte
GMPLS del protocollo RSVP)
Il SOA da riservare sarà determinato dalla IF, lunghezza d'onda di conversione e OF
del circuito.
Se queste risorse sono libere o occupate con priorità inferiori a quella del paradigma a
circuito (priorità massima) allora posso instaurare il circuito ed invio OCS_SUCCESS
o l'equivalente ForCES. altrimenti comunico un errore nell'allocazione delle risorse ed
invio OCS_FAILURE o l'equivalente ForCES..
5.
6.
7.
8.
9.
68
Nel nostro caso il nodo ha disponibilità di lunghezze d'onda e risponde con un
OCS_SUCCESS al FE.
A questo punto l'FE ritorna semplicemente il messaggio OCS_SUCCESS o FAILURE
o l'equivalente ForCES al CE.
Il CE a questo punto aggiorna lo stato della richiesta di circuito corrente nella tabella
CircuitRequests a CIRCUIT_ESTABLISHED ed invia il RESV (aggiornato nell'indirizzo del previous hop, nodo corrente, e nella lista delle lunghezze d'onda disponibili
per il next hop) al previous hop.
Nel grafico si può notare che a partire da questo istante si avverte il traffico CBR di
tipo OCS (throughput 0,125) e l'equivalente diminuzione nel throughput OPS (uno dei
canali in cui fluiva prima traffico OPS ora è destinato al circuito).
I pacchetti 5, 6 e 7 all'istante 634 sono pacchetti della transazione di un comando
NETCONF da parte di un GO verso l'HO incapsulati in una sessione criptata e protetta
via SSH. In particolare qui riceviamo il comando NETCONF da parte di una console
Client remota rispetto al nodo (la command console deisnet 209 ad es.) che chiede al
modulo netconf-yang opticalrouter di aggiornare la WhiteList inserendo tra l'elenco
dei receiver fidati anche gli indirizzi “pari” ovvero 192.168.100/102/104/106.1. Questo comando realizza di fatto la programmabilità del nodo e simula ad esempio l'intenzione di un Internet Service Provider (GO) di abilitare il servizio a circuito per alcune
sue sotto-reti destinazione (quelle appunto, con l'indirizzo pari)
Vedi sopra;
Vedi sopra;
L'ottavo pacchetto indica (di nuovo) una richiesta di instaurazione di circuito per un
sender/client (IP 172.16.2.1) verso un receiver (IP 192.168.102.1). Questa richiesta
viene analizzata dal nodo, in particolare dal CE che la passa al CESM per la verifica di
sicurezza ed autenticità. Questa volta, grazie al comando netconf impartito in precedenza, il confronto di sender e receiver nella WhiteList effettuato dal CESM troverà riscontro e la richiesta verrà accettata!!! La soglia diventa Th = 0 (se si rimane così nes sun altro circuito può essere richiesto per limite di soglia!!!).
RESV Message di accettazione del circuito precedente. Nel grafico si può notare che a
partire da questo istante si avverte che il traffico CBR di tipo OCS balza ad un throu-
11 novembre 2010
Risultati
Versione 1
ghput 0,250) e l'equivalente diminuzione nel throughput OPS (due dei canali in cui
fluiva prima traffico OPS ora sono destinati al circuito).
10. I pacchetti 10, 11 e 12 all'istante 1206 sono pacchetti della transazione di un comando
NETCONF da parte di un GO verso l'HO incapsulati in una sessione criptata e protetta
via SSH. In particolare qui riceviamo il comando NETCONF da parte di una console
Client remota rispetto al nodo (la command console deisnet 209 ad es.) che chiede al
modulo netconf-yang opticalrouter di ridurre la banda del traffico OPS di un valore
corrispondente a 2 canali. Questo comando realizza di fatto la programmabilità del
nodo e simula ad esempio l'intenzione del gestore del nodo (HO) di ridurre il traffico
OPS in attraversamento sul suo device.
Nel grafico si può notare che a partire da questo istante si avverte che il traffico di tipo
OPS decresce di un valore pari a 0,250 l'equivalente diminuzione del traffico di 2 canali.
11. Vedi sopra;
12. Vedi sopra;
13. Questo messaggio indica la chiusura del primo circuito instaurato, il nodo rilascia le
risorse e torna disponibile su quel canale al traffico OPS. Nel grafico si può notare che
a partire da questo istante si avverte che il traffico CBR di tipo OCS si riduce ad un throughput 0,125 (un solo circuito in atto) e l'equivalente aumento nel throughput OPS
(al netto della riduzione dovuta al comando netconf di riduzione banda).
14. Questo messaggio indica la chiusura del secondo circuito instaurato, il nodo rilascia le
risorse e torna disponibile su quel canale al traffico OPS. Nel grafico si può notare che
a partire da questo istante si avverte che il traffico CBR di tipo OCS si riduce ad un throughput 0 (nessun circuito in atto) e l'equivalente aumento nel throughput OPS (al
netto della riduzione dovuta al comando netconf di riduzione banda).
15. Nuova richiesta circuito accettata.
16. Instaurazione del circuito.
Analizziamo ora la cattura protocollo per protocollo.
7.2.1 RSVP/GMPLS Protocol
Ogni richiesta di circuito che attraversa il nodo è catturata mediante un filtro su protocollo RSVP.
Ai messaggi di discovery del mittente PATH si risponde, in caso ci sia disponibilità di
risorse, inoltrando il PATH al NextHop e ponendosi in attesa di un messaggio di conferma per l'occupazione delle risorse destinate al circuito attraverso la ricezione di un messaggio RESV da parte del NextHop.
In caso di indisponibilità delle risorse correnti il nodo risponde ai messaggi di discovery
del mittente PATH mediante PATHERROR.
In caso di indisponibilità delle risorse sui nodi a valle nodo riceve dei RESVERROR.
In caso di abbattimento del circuito da parte del mittente il nodo riceve un PATHTEAR
che viene propagato al seguito del rilascio delle risorse occupate per il circuito.
Analogamente in caso di abbattimento del circuito da parte del ricevente il nodo riceve
un RESVTEAR che viene propagato al seguito del rilascio delle risorse occupate per il
circuito.
14 dicembre 2010
69
Risultati
Versione 1
7.2.2 NETCONF Protocol
Il protocollo di management del nodo si appoggia sull'implementazione YUMA di
NETCONF e i comandi che prevedono l'abilitazione di una serie di indirizzi IP di un
ISP autorizzato a interagire sulla WhiteList del nodo sono evidenti in cattura e nel graffico.
All'istante P1 arriva al router una richiesta di circuito da parte di un mittente
(192.168.102.1) non inserito nella WhiteList, la sua richiesta viene dunque scartata
(nessuna risposta RSVP).
All'istante N1 della emulazione il G.O. (ovvero l'ISP che possiamo pensare è a capo della rete del mittente non autorizzato 192.168.102.1) si autentica alla gestione del nodo
mediante NETCONF e in particolare sfruttando SSH (username e password ssh) al nodo
come evidenziato dalla cattura dei pacchetti netconf-ssh su Wireshark.
I comandi che il G.O. Impartisce riguardano l'aggiunta di un determinato indirizzo alla
WhiteList (in particolare l'indirizzo 192.168.102.1) che da ora in poi sarà autorizzato
alla richiesta del servizio a circuito.
All'istante successivo P3 arriva di nuovo al router una richiesta di circuito da parte del
mittente 192.168.102.1 questa volta non inserito nella WhiteList, la sua richiesta viene
dunque accolta.
All'istante N2 della emulazione l'H.O. (ovvero il gestore del nodo hardware condiviso tr
più GOs) si autentica alla gestione del nodo mediante NETCONF e in particolare sfruttando SSH (username e password ssh) come evidenziato dalla cattura dei pacchetti netconf-ssh su Wireshark e richiede l'abbassamento della banda a pacchetto per il GO in
esame riducendola di 2 canali.
All'istante successivo è possibile osservare un'abbassamento proporzionale del throughput OPS nel nodo in esame.
7.2.3 ForCES Protocol
Questo protocollo è stato implementato di recente con il lavoro del laureando Ramon
Righini. In particolare sono stati creati degli elementi tra il CE ed il FE che incapsulano
i messaggi correnti in formato “click” (OCS_REQ, OCS_ACK, …) nel formato del protocollo forces, di cui si mostra sotto in figura la cattura:
7.3 Performance
Un'altro dei risultati ottenuti è l'andamento delle performance dell'emulatore quando spinto ai
limiti della velocità con cui si presenta il traffico e delle configurazioni di conversione che
questo affronta. Possiamo quindi individuare due sotto-aspetti:
•
Tempo di processamento dell'header e set-up della matrice di commutazione;
•
Riduzione della durata del timeslot;
N.B: Questa analisi è completamente dipendente dall'hardware utilizzato in questo caso
ovvero un Server Dell PowerEdge 1600SC con mP a 3.6 Ghz, 512 MB RAM, tre schede di
rete, gigabit ethernet ad interrupt!!!
70
11 novembre 2010
Risultati
Versione 1
7.3.1 Packet header processing time
Nella valutazione delle performance importante rilevanza ha il tempo di processamento
dell'header del pacchetto e del relativo tempo di set-up dei dispositivi della matrice. In
particolare si possono avere differenti scenari relativi alla matrice di commutazione:
•
Bar State: in questo scenario i pacchetti in ingresso all'interfaccia IF0 sono
schedulati in modo da fuoriuscire dal nodo attraverso l'interfaccia di uscita OF0
senza subire conversione.
•
Switching Only: in questo scenario i pacchetti in ingresso all'interfaccia IF0
sono schedulati in modo da fuoriuscire dal nodo attraverso l'interfaccia di uscita
OF1 e viceversa senza subire conversione (solo cambio di interfaccia).
•
Conversion Only: in questo scenario i pacchetti in ingresso all'interfaccia IF0
sono schedulati in modo da fuoriuscire dal nodo attraverso l'interfaccia di uscita
OF0 e subiscono tutti conversione (chi arriva su lambda 0 diventa lambda 3,
lambda 1 diventa lanbda 2 etc...).
•
Switching & Conversion: in questo scenario i pacchetti in ingresso all'interfaccia IF0 sono schedulati in modo da fuoriuscire dal nodo attraverso l'interfaccia
di uscita OF1 e subiscono tutti conversione (chi arriva su lambda 0 diventa
lambda 3, lambda 1 diventa lanbda 2 etc oltre a cambiare interfaccia...).
◦ N.B: Teoricamente il caso peggiore!!!
•
Random Scheduling: in questo scenario i pacchetti in ingresso sono schedulati
e convertiti per lunghezze d'onda e interfacce casuali;
◦ N.B: Simulazione di traffico reale!
Illustrazione 33: Bar State.
Illustrazione 34: Only switching.
Illustrazione 35: Only conversion.
Illustrazione 36: Switching & conversion.
14 dicembre 2010
71
Risultati
Versione 1
I risultati pervenuti dal test sul modello sono espressi nella tabella a seguire:
Illustrazione 37: Risultati sul tempo di
processamento dell'header e set-up dei
dispositivi della matrice.
Queste misure sono state svolte facendo stampare al click! Il campo timeslot dei pacchetti in ingresso ed in uscita dal piano di controllo, processando l'output per raccoglierre questi valori ed utilizzando un foglio di calcolo per estrapolarne i risultati.
E' stato calcolato il tempo medio in micro-secondi impiegato dal modello a processare
l'header ottico di un singolo pacchetto dall'ingresso nel piano di controllo fino al set-up
dei corrispondenti dispositivi nella matrice di controllo. Questa misura è ripetuta per
ogni scenario di configurazione, ognuna ricalcolata più volte (5-10) per derivarne la varianza delle misurazioni e l'intervallo di confidenza al 95%.
Possiamo quindi vedere che il caso peggiore risulta essere il caso random (al contrario
del previsto caso switching & conversion) con un tempo medio di 80 micro-secondi ed
una varianza di 3.48 micro-secondi.
7.3.2 Time Slot reduction
Un'altro aspetto delle performance riguarda valutare fino a che punto l'hardware a disposizione è in grado di processare correttamente i pacchetti, ovvero fino a quale intervallo di tempo è possibile ridurre il timeslot mantenendo la funzionalità del modello al
fine di ridurre i tempi delle emulazioni.
Ad esempio finora si sono osservate emulazioni con timeslot dell'ordine del secondo o
poco meno, il che significa che se volessimo valutare un numero molto alto di pacchetti,
ad es. 1.000.000, in una configurazione 2x2 a 4 lunghezze d'onda a pieno carico occorrerebbero 1.000.000 / 8 * 1 sec = 34,72 ore!!! Un tempo non ragionevole.
Per cercare questo limite si è imposta una configurazione nota del traffico in cui l'header ottico proposto al nodo non prevedeva conflitti in modo da avere in uscita al nodo lo
stesso numero di pacchetti in ingresso. Si è poi parametrizzato il generatore di traffico in
modo da generare pacchetti ogni timeslot di dimensione variabile in modo da poter effettuare le misure.
Riducendo man mano il timeslot, per una configurazione nota in cui la perdita dei pacchetti in ingresso (80.000) è nulla, osserviamo (per differenti misure del payload ottico)
il comportamento del modello:
72
11 novembre 2010
Risultati
Versione 1
Illustrazione 38: Effetto della riduzione
del timeslot sulle performance del
modello.
Ovviamente, diminuendo man mano il timeslot il modello “perde” pacchetti e questa
perdita non è dovuta a contese ma al fatto che il modello non riesce a far fronte ad un
traffico così “veloce” e quindi a settare i suoi dispositivi per schedulare con correttezza
il traffico. Ad un limite di 15 milli-secondi per timeslot abbiamo che il modello non perde nulla, e questo rappresenta il limite oltre cui non possiamo andare nelle nostre emulazioni senza perdere di validità.
7.4 Caratterizzazione di Potenza
L'aspetto della caratterizzazione di potenza del modello è uno degli aspetti più interessanti e
di maggior successo nella realizzazione del modello.
Come parametri utili ai fini dello studio si è pensato di fornire riferimenti rispetto alla potenza del segnale ottico ed al suo rapporto segnale rumore o OSNR.
In particolare vedremo:
•
Il percorso del segnale ottico all'interno del nodo;
•
I profili di potenza e OSNR relativi a segnali ottici convertiti o meno in lunghezza
d'onda;
N.B: Questi risultati saranno introdotti ed analizzati solo negli aspetti
principali ed implementativi in quanto lo studio analitico e di modellazione
fisica è fornita nel report di Ivan Aldaya presente nella documentazione!!!
7.4.1 Generico percorso del segnale ottico
La figura sottostante mostra il percorso del segnale ottico attraverso il nodo ed in particolare i vari stadi che questo attraversa:
14 dicembre 2010
73
Risultati
Versione 1
Illustrazione 39: Il percorso del segnale ottico attraverso il nodo.
Nel dettaglio abbiamo:
•
Connettori: Ogni piccolo pallino bianco rappresenta un punto di connessione ed
affligge il segnale con una attenuazione in potenza pari a 0,2 dB;
•
EDFA_1: E' il primo amplificatore di segnale (elemento attivo) serve per aumentare la potenza del segnale in modo da irrobustirlo per attraversare i componenti del nodo (e superare la soglia di sensitività di alcuni di questi). L'attenuazione di potenza e OSNR è complessa ed è presente nel report di Ivan;
•
DEMUX: Il demultiplexer WDM introduce una attenuazione della potenza in
base alla seguente formula che dipende dal numero di uscite del dispositivo:
Loss WDMDemux = 1,676 ln  N 1,046
•
•
FDL: La fibra di ritardo è modellata come un link ed introduce un attenuazione
proporzionale alla sua lunghezza (in tal caso pari a 3 dB)
TWC: Non esistendo datasheet disponibili di un così cruciale elemento la soluzione proposta da Ivan è stata quella di modellare il comportamento in base ai
due casi disponibili ovvero nel caso di conversione e in caso di non conversione
(Ivan sollevava anche dubbi sul fatto che un TWC possa solo convertire e non
mantenere la lunghezza d'onda uguale!!!).
◦ Splitter: questo splitter divide il segnale verso i due percorsi introduce una
attenuazione della potenza in base alla seguente formula che dipende dal numero di uscite del dispositivo:
Loss Splitter = 5,561 ln  N −0,221
◦
◦
◦
74
Conversion Path: nel caso in cui il convertitore performi la conversione di
lunghezza d'onda questo può essere modellato come:
▪ WC: elemento vero e proprio che effettua la conversione, affligge notevolmente la potenza del segnale di circa 24 dB generando rumore fino a
40 dB;
▪ SOA Amplifier: SOA utilizzato come amplificatore per riequalizzare la
potenza del segnale a valle del WC;
No-Conversion Path: nel caso in cui il convertitore non performi alcuna
conversione di lunghezza d'onda questo può essere modellato come:
▪ Attenuatore;
▪ SOA Switch: SOA utilizzato come interruttore;
Combiner: riunisce il segnale proveniente dai due percorsi introduce una attenuazione della potenza in base alla seguente formula che dipende dal numero di uscite del dispositivo:
11 novembre 2010
Risultati
Versione 1
Loss Combiner = 0,11052⋅N 0,979
◦
•
•
•
•
•
•
NoiseSource: in base alle conversioni contemporanee nel pool dei convertitori possono essere presenti dei disturbi modellati da questo componente. Ad
ogni timeslot si controlla il numero di conversioni contemporanee e si setta il
componente per introdurre un rumore proporzionale.
Combiner: riunisce il segnale proveniente dai due percorsi;
EDFA_2: E' il secondo amplificatore di segnale (elemento attivo) serve per aumentare la potenza del segnale in modo da irrobustirlo per attraversare i componenti del nodo (e superare la soglia di sensitività di alcuni di questi). L'attenuazione di potenza e OSNR è complessa ed è presente nel report di Ivan;
Splitter: questo splitter divide il segnale verso i due percorsi;
DEMUX: Il demultiplexer WDM;
SOA Switch: SOA utilizzato come interruttore l'attenuazione di potenza e
OSNR è complessa ed è presente nel report di Ivan;
MUX: Il multiplexer WDM introduce una attenuazione della potenza in base
alla seguente formula che dipende dal numero di uscite del dispositivo:
Loss WDMMux = 0,11052⋅N 0,979
•
•
Combiner: riunisce il segnale proveniente dai due percorsi;
CrossTalk: introduce il rumore che dipende dal numero di porte, nel report di
Ivan vi è una tabella con i valori riportati;
7.4.2 Profili di Potenza e OSNR
Presentiamo ora dei grafici che mostrano i profili di potenza e OSNR del segnale ottico
che attraversa tutti gli stadi visti in precedenza nel caso in cui incontri sul suo cammino
una conversione o meno o se nello stesso pool avvengano contemporaneamente altre
conversioni di lunghezza d'onda:
14 dicembre 2010
75
Risultati
Versione 1
•
Come si vede dalla prima figura vengono mostrati le variazioni di OSNR e potenza quando nel pool di twc (stessa IF) non vengono eseguite contemporaneamente altre conversioni (nessuna sorgente di rumore aggiuntiva) per i casi in cui:
◦ a) il segnale non viene convertito in lunghezza d'onda: si possono notare i livelli che variano di stadio in stadio.
◦ b) il segnale viene convertito in lunghezza d'onda: si può notare il gradino
dovuto alla conversione e successiva riamplificazione nello stadio 5 e 6;
•
Nella seconda figura vengono mostrati le variazioni di OSNR e potenza quando
nel pool di twc (stessa IF) avvengono 3 conversioni simultanee (aumento da parte di sorgente di rumore aggiuntiva) per i casi in cui:
◦ a) il segnale non viene convertito in lunghezza d'onda: si può notare un leggero gradino nello stadio 8 dovuto al rumore;
◦ b) il segnale viene convertito in lunghezza d'onda: si può notare il gradino
dovuto alla conversione e successiva riamplificazione nello stadio 5 e 6 e un
grande gradino nello stadio 8 dovuto al rumore;
L'immagine sottostante invece propone la variazione in dB di potenza e OSNR in ingresso ed uscita al/dal nodo per un determinato canale in una emulazione di durata pari
a 50 timeslot (per evidenziare meglio i punti).
Assumendo un traffico OPS con carico pari ad uno, emuliamo dei valori di OSNR e potenza per i pacchetti in ingresso che variano casualmente in un range di valori ammissibili. Se il valore casuale è sopra la soglia di rilevazione del primo dispositivo in ingresso
(EDFA_1) allora per il corrente timeslot esisterà il segnale, quindi il pacchetto ed il rispettivo punto nel grafico. I pacchetti ad ogni timeslot possono trovarsi in situazioni differenti, in cui si necessita che siano convertiti o meno, o che siano sottoposti a conversioni adiacenti che ne influenzano il rapporto segnale rumore. I pacchetti correttamente
schedulati (contese risolte) e con valori non troppo logori di potenza e rumore fuoriescono dal nodo (sono infatti in numero minore rispetto ai pacchetti in ingresso).
76
11 novembre 2010
Risultati
Versione 1
Mentre i valori di potenza per i pacchetti in ingresso variano, in uscita i pacchetti correttamente schedulati vengono equalizzati dall'EDFA in uscita, mentre il loro OSNR è
afflitto dal fatto che vengano sottoposti o meno a conversione.
8 Software, wiki e manuali
Si era cominciato a discutere della possibilità di pubblicare il software sviluppato o quantomeno
la sua documentazione on-line per raggiungere visibilità ed attirare l'attenzione e/o ricercare collaborazioni in ambito sia universitario che industriale.
Le proposte avanzate riguardavano:
•
Pubblicazione dei lavori presentati alle conferenze sul sito del Click!
•
Pubblicazione del software sul sito del Click! Come pacchetto aggiuntivo del tool;
•
Pubblicazione di un sito per il progetto;
•
Pubblicazione di un sotto-sito wiki per la documentazione del progetto;
•
Pubblicazione di una pagina di interazione con il modello;
8.0.1 Pubblicazione dei lavori presentati alle conferenze sul
sito del Click!
Questo aspetto è stato assolto almeno in parte dato che Walter ha provveduto a pubblicare il paper HPSR 2010 sulla pagina.
Si suggerisce di aggiungere ITWDC 2010 e GLOBECOM 2010 per maggiore visibilità.
8.0.2 Pubblicazione del software sul sito del Click! Come
pacchetto aggiuntivo del tool;
Questo aspetto è stato preso in considerazione come elemento chiave per l'approvigionamento di supporto esterno al progetto. Rendendo aperto e di pubblico dominio il codice sorgente altre università o enti interessati potrebbero decidere di entrare valutandone
le potenzialità e segnalando bug e migliorie.
14 dicembre 2010
77
Software, wiki e manuali
Versione 1
Purtroppo esiste anche un aspetto negativo che riguarda la tutela del lavoro svolto che
non si vuole venga “attinto” e riproposto senza autorizzazione. Per questa delicata caratteristica l'idea è temporaneamente sospesa.
8.0.3 Pubblicazione di un sito per il progetto;
La realizzazione di un sito riguardante il progetto è stata messa in cantiere ma ha subito
la forza maggiore delle scadenze delle varie conferenze che richiamavano l'attenzione
ad aspetti più concreti del lavoro.
Raul e Walter avevano cominciato ad imbastire una piattaforma web basata su Joomla
per contenere le informazioni sul progetto, la documentazione e l'eventuale software.
Questa soluzione permette inoltre la possibilità di creare utenti e gestire i profili per la
pubblicazione delle news e l'accesso riservato ad alcune sezioni;
N.B: La piattaforma è ancora raggiungibile nel repository sulla macchina che funge
da host web del dipartimenot DEISNET (per l'indirizzo chiedere a Walter, user e password sono i nostri nomi e/o opticalrouter)!!!
8.0.4 Pubblicazione di un sotto-sito wiki per la
documentazione del progetto;
La realizzazione di un sotto-sito wiki raggiungibile dal sito del progetto per la documentazione è stata messa in cantiere ma ha subito la forza maggiore delle scadenze delle varie conferenze che richiamavano l'attenzione ad aspetti più concreti del lavoro.
Raul e Walter avevano cominciato ad imbastire una piattaforma basata su mediawiki
per contenere le informazioni relative alla documentazione che sono fondamentalmente
quelle poi scritte in questa relazione;
N.B: La pagina wiki è ancora raggiungibile nel repository sulla macchina che funge
da host web del dipartimenot DEISNET (per l'indirizzo chiedere a Walter, user e password sono i nostri nomi e/o opticalrouter)!!!
8.0.5 Pubblicazione di una pagina di interazione con il
modello;
Un ultimo aspetto riguarda la pubblicazione di una qualsiasi interfaccia web che permetta a chi è interessato di provare le funzionalità del modello;
Nonostante non abbia mai visto la luce rimane un punto cardine secondo il relatore per
la visibilità e la fruibilità del progetto.
9 Sviluppi futuri
Illustriamo ora brevemente una serie di accorgimenti o sviluppi futuri che rappresentano le priorità a breve e lungo termine della vita del progetto:
Due aspetti non legati alla implementazione:
•
Re-ingegnerizzazione del modello e documentazione
•
Apertura ad altri attori
Aspetti legati alla implementazione:
78
11 novembre 2010
Sviluppi futuri
•
•
•
Versione 1
Consumo di Potenza
Performance
Interfaccia Utente
9.1 Re-Ingegnerizzazione del modello e
documentazione
Ad avviso del relatore il lavoro mostrato fin qui ha tolto numerose soddisfazioni e raccolto
notevole interesse ma è stato svolto in condizioni di continua evoluzione dettata dalle tempistiche e deadline delle varie conferenze in cui questo è stato proposto.
Il primo e fondamentale sviluppo di cui occorrerebbe prendere carico è sfruttare le conoscenze fin qui acquisite riguardo il funzionamento logico e implementativo del modello nonché le
nozioni acquisite sul click e le sue funzionalità per impostare una re-ingegnerizzazione del
modello che passi da una sua completa riscrittura:
•
Partire da un modello ben definito in termini di nomi, protocolli ed interazioni come
quello raggiunto in stesura del CommunicationMagazine;
•
Ridefinire gli elementi per essere conformi alla nuova nomenclatura;
•
Definire meglio gli elementi in particolare:
◦ Definire regole base per gli elementi (es. nomi variabili etc...)
◦ Commentare in inglese tutti i passi fondamentali
◦ Togliere il codice superfluo
◦ Rendere il tutto parametrizzabile eliminando i pochi vincoli fissi ancora rimasti;
•
Estendere il testo base per il copyright e prevedere una qualche versione di licenza del
software tipo GPL etc.
Ad avviso del relatore è difficile proseguire senza prevedere un ampio lavoro di questo tipo
oltre che ad una completa ed affidabile riscrittura della documentazione (mancanza da ricercarsi nella lacuna di tempo alternativo allo sviluppo).
9.2 Apertura ad altri attori
Come visto nel paragrafo dedicato alla documentazione on line crocevia fondamentale della
prosecuzione del progetto è il reclutamento di manpower per il suo sviluppo:
9.2.1 Laureandi, Borsisti e Dottorandi.
Provenienti dalla facoltà;
9.2.2 Aziende
Aziende interessate (CISCO, TILab, … ) che diano supporto di personale e/o finanziario.
14 dicembre 2010
79
Sviluppi futuri
Versione 1
9.3 Consumo di Potenza
Un'altra possibile estensione delle funzionalità del modello è prevedere un meccanismo per
l'emulazione del consumo di potenza del nodo in termini sia di energia spesa in fase di sche duling e forwarding del traffico (nel piano di controllo) sia come energia spesa ai fini del funzionamento e switching dei dispositivi.
•
Obiettivi: estrapolare un grafico del consumo di potenza del nodo per una data architettura della matrice e dell'algoritmo di scheduling.
◦ Dal grafico dovrà risultare che in fase di traffico più intenso si ha un maggiore
consumo in termini di potenza istantanea e viceversa.
◦ Confrontando più architetture e più algoritmi di scheduling si suppone vengano
mostrate le differenze in termini di consumo di potenza al variare di questi parametri con il fine di determinare la scelta migliore in termini di consumo.
9.3.1 Consumo del Piano di Controllo
Per quanto riguarda il consumo in fase di elaborazione della destinazione del traffico si
può prevedere, come prima implementazione, una serie di contatori adibiti a tener conto
di:
•
Operazioni di lettura/scrittura in memoria (aspetto con impatto maggiore) inteso
come accesso alle Forwarding/Routing Table
•
Durata ed impiego di risorse dell'algoritmo di scheduling stesso.
9.3.2 Consumo del Piano di Inoltro
Per quanto riguarda il consumo in fase di inoltro del traffico si può prevedere, come
prima implementazione, di caratterizzare ogni componente ottico in due aspetti:
•
Consumo a riposo: il consumo di potenza del componente quando alimentato e a
“riposo”.
•
Consumo in fase “attiva”: il consumo di potenza del componente quando è attraversato da un segnale ottico/pacchetto (un contatore nel metodo simple action di
ogni elemento Click può darne un idea).
9.4 Test sulle performance
Uno degli aspetti da analizzare in particolare riguarda un test approfondito sulle performance
del router in termini di pacchetti processabili e durata del timeslot.
9.4.1 Funzionamento a “polling” delle schede di rete
Attualmente le schede del test-bed funzionano in modalità “interrupt”, per migliorare le
performance è noto che questo metodo di funzionamento è penalizzante.
Una soluzione potrebbe essere il settaggio delle schede di rete per un funzionamento a
“polling” in grado di gestire così una maggior frequenza di traffico.
80
11 novembre 2010
Sviluppi futuri
Versione 1
Per fare questo occorre indagare se è necessario impostare qualche parametro a livello
di s.o. e inoltre nella configurazione Click!.
9.5 Interfaccia utente
Forse l'aspetto più importante da implementare è la realizzazione di una interfaccia utente che
permetta di testare, controllare, modificare ed analizzare i risultati di varie configurazioni del
nodo emulato, variandone parametri, simulando traffico in arrivo e analizzandone la risposta.
•
Obiettivo: definire un interfaccia in grado di permettere all'utente di modificare i parametri della emulazione (tipo traffico, carico, dimensione, etc.) e del nodo (tipo di architettura, algoritmo di scheduling, etc.) e di eseguire l'emulazione e valutarne i risultati.
9.5.1 Soluzione Java
Una possibile implementazione prevede l'uso di una applicazione Java che permetta di
creare il file di configurazione Click, impostare i parametri per il traffico ed eseguire l'emulazione.
•
Pro: possibilità di disegnare in tempo reale il grafico del throughput o di altri parametri grazie alle librerie grafiche Java.
•
Contro: se si vuole rendere pubblico lo strumento, l'utente che lo scarica per uso
personale deve installare il click e java ed impostare alcuni parametri.
9.5.2 Soluzione PHP
Una differente soluzione prevede la creazione di una interfaccia web in linguaggio PHP
che permetta da remoto (da un qualsiasi browser) di impostare i parametri base di una
emulazione, richiederla al test-bed e visualizzarne i risultati:
•
Pro: mobilità estrema, da qualsiasi punto attraverso un browser lo strumento è
fruibile;
•
Contro: la visibilità dello strumento è opaca, limitata alle impostazioni settabili
via web dalla pagina php.
10 Guide per l'installazione
Di seguito sono riportate le procedure eseguite per il setup del test-bed in laboratorio ed in particolare:
•
Installazione del Sistema Operativo
•
Installazione Click!
•
Installazione Kernel ottimizzato per Click!
•
Installazione di NETCONF
•
Installazione di un “dissector” per Wireshark.
14 dicembre 2010
81
Guide per l'installazione
Versione 1
10.1 Installazione del Sistema Operativo
Per utilizzare le funzionalità del modello occorre disporre di una piattaforma software altamente personalizzabile e performante su cui testare il modello nelle sue prestazioni.
La nostra scelta è ricaduta sul sistema operativo Linux per il suo ampio utilizzo nell'ambiente
della ricerca e la sua alta configurabilità anche a livello di codice nativo.
10.1.1 Scelta della Distribuzione
Seppure Linux sia disponibile in diverse distribuzioni nel nostro test-bed si è scelta la
distribuzione Fedora release 12 (d'ora in poi Fedora Core 12 o FC12). Fedora a differenza di altre distribuzioni (come ubuntu) mantiene uno standard nella disposizione dei file
di configurazione, l'accesso come utente root e altre configurazioni avanzate che la prediligono rispetto a distribuzioni più user-friendly (anche se fedora lo è molto). Da ora in
poi in questo manuale faremo riferimento alla configurazione sotto questa distribuzione,
anche se in generale i comandi ed i settaggi saranno riproducibili sotto qualsiasi distro,
con minime variazioni.
10.1.2 Installazione
•
•
•
•
•
•
82
L'installazione di FC12 è eseguita nel nostro caso dal cd Net-Install il quale contiene
l'ambiente minimo necessario ad eseguire l'installazione e recupera i pacchetti della distribuzione (aggiornati) dal sito del progetto fedora.
N.B: E' altamente consigliato disporre di almeno 512 MB di RAM per eseguire l'installer in modalità grafica il che ci permette di selezionare poi i pacchetti a piacimento (si
farà riferimento a questa modalità da ora in poi).
Inserire il CD e riavviare;
Scegliere installare o sovrascrivere il S.O. dal menù di boot che appare una volta in esecuzione il net cd;
Eseguire a piacimento il controllo del cd per verificare la presenza di errori (da effettuare
una volta sola ...);
Una volta partita l'interfaccia grafica selezionare:
◦ Lingua: italiano
◦ Tastiera: italiano
◦ Nome macchina: sostituire localhost.localdomain con deisnetXX (dove XX è il numero
che si vuole assegnare alla macchina).
◦ Fuso orario: Roma
◦ Password di amministrazione (root): opticalrouter
A questo punto vengono analizzati i supporti per l'installazione (HDDs) per stabilire la struttura del sistema;
Scegliere di definire uno schema personalizzato per l'installazione e alla pagina successiva:
◦ Liberare tutto lo spazio (eliminare le partizioni) su HDD
◦ Creare il seguente schema:
▪ sda1 mount point: /
formattare: ext3*
dim: available
11 novembre 2010
Guide per l'installazione
Versione 1
▪
•
•
sda2 mount point: null formattare: swap
dim: 2 x RAM
Ovvero creare la partizione sda1 dove installerò il so formattata ext3 (* N.B: è obbligatorio farlo in ext3 e non ext4 per personalizzare poi il kernel in caso di necessità!!!) di
dimensione pari a tutta la dimensione del disco meno 2 volte la dimensione della RAM
(se 512MB di RAM allora dim disco – 1024MB).
Creare poi la partizione sda2 per lo spazio di swap formattata come swap di dimensione
paria a 2 volte la dimensione della RAM (se 512MB di RAM allora dim disco –
1024MB).
Lasciare invariate le impostazioni del boot loader;
Ora appare una schermata che mostra le interfacce di rete disponibili e chiede di impostarle
per raggiungere la sorgente dei pacchetti sul sito fedora;
◦ Selezionare l'interfaccia connessa ad internet (di solito eth0 ma non sempre!!!)
◦ Disabilitare DHCP
◦ Indirizzo IP: 192.168.10.XX
◦ Maschera: 255.255.255.0
◦
•
•
•
•
•
•
Gateway: 192.168.10.254
◦ DNS: 137.204.57.1
N.B: Se premendo avanti non si trovano i pacchetti o da errore probabilmente con i settaggi
non si raggiunge l'esterno (internet) oppure si è selezionata la scgeda di rete sbagliata. In tale
caso occorre (penso per un bug del sistema) riavviare l'installazione in quanto non è più possibile accedere alla scheda di settaggio della interfaccia di rete.
Alla schermata successiva verranno mostrati i pacchetti installati di default. Per il nostro test-bed possiamo eliminare tutto il superfluo come pacchetti per giochi grafica e ufficio mentre è importante inserire i pacchetti per lo sviluppo ed in particolare per le librerie.
Proseguendo si avvia l'installazione la cui durata dipende dal numero di pacchetti selezionati
dalla velocità di download da internet e dalle prestazioni dell'hardware;
Una volta terminata l'installazione riavviare;
Togliere il CD dal drive o selezionare avvio da HDD;
Nella schermata di benvenuto inserire i dati dell'utente:
◦ Nuovo utente: userXX
◦ Password: opticalrouter o userXX
Avvio del s.o.
Complimenti, ora FC12 è installato!!!
10.1.3 Ottimizzazione Iniziale
Come prima fase di ottimizzazione si può andare su Sistema->Preferenze->Applicazioni
di Avvio e rimuovere tutti i demoni non utilizzati.
10.1.4 Ottimizzazione Avanzata
•
Come fase di ottimizzazione avanzata possiamo operare diverse operazioni:
Eseguire in runlevel 3:
14 dicembre 2010
83
Guide per l'installazione
Versione 1
◦
•
•
•
Modificare il file “/etc/inittab” sostituendo “id:5:initdefault:” con id:3:initdefault:”
Disattivare i servizi in background:
Impostare il setting per le schede di rete:
◦ modificare /etc/sysconfig/network-scripts/ifcfg-ethX
▪ #<Device Name Description>
▪ DEVICE=eth<X>
▪ HWADDR=<MAC_ADDRESS>
▪ BOOTPROTO=static
▪ IPADDR=<IP_ADDRESS>
▪ NETMASK=<NETMASK>
▪ ONBOOT=yes
Impostare il login remoto di root senza password: (in dettaglio la procedura su http://linuxproblem.org/art_9.html)
◦ Andare sulla macchina da cui vogliamo collegarci al test-bed e digitare
▪
◦
◦
[root@deisnetXA ~] ssh-keygen -t rsa
Eseguire:
▪ [root@deisnetXA ~] ssh [email protected] mkdir -p .ssh
Infine
▪ [root@deisnetXA ~] cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
10.2 Installazione del Click! Modular Router
Il tool di cui faremo uso è il Click!
10.2.1 Installazione
Per ottenere una versione aggiornata del software è consigliabile ottenerlo mediante l'uso di un cvs (Concurrent Versioning System) come ad esempio git o cvs.
•
Loggarsi sulla macchina in questione (deisnetXX) come root;
•
Verificare la presenza del comando git nel sistema, altrimenti installare il cvs con
il comando:
◦ [root@deisnetXX ~] yum install git
•
Creare la cartella principale per l'installazione del Click riferita d'ora in poi nella
corrente relazione e nella documentazione ufficiale come CLICKDIR. Nel nostro caso andare su /home/userXX/ e creare una cartella di nome “click-git”:
◦ [root@deisnetXX ~]# cd /home/userXX/
◦ [root@deisnetXX userXX]# mkdir click-git
•
Eseguire il comando:
◦ [root@deisnetXX userXX]# git clone git://read.cs.ucla.edu/git/click CLICKDIR
84
11 novembre 2010
Guide per l'installazione
Versione 1
Una volta terminato di ottenere i sorgenti è possibile installare il software;
•
Entrare nella directory di installazione:
◦ [root@deisnetXX userXX]# cd click-git
•
Eseguire lo script di configurazione
◦ [root@deisnetXX click-git]# ./configure
▪ N.B: è possibile eseguire lo scirpt con alcuni parametri di configurazione
come
•
--enable-local: abilita la compilazione degli elementi nella cartella local (abilitata di default)
•
--enable-fixincludes: cerca di compilare il modulo per il kernel provando a pathcare gli header del kernel (soluzione di rimedio)
N.B: Lo script analizza il sistema alla ricerca dei pacchetti di sviluppo necessari alla
compilazione (gcc, gcc-c++, etc...) e alla versione del kernel per vedere se è possibile
compilare anche il driver per l'esecuzione come kernel-module delle configurazioni
Click!
Se appare:
configure: WARNING:
=========================================
Your Linux kernel header files cause errors when included by a C++ program,
so I won't try to compile the linuxmodule driver.
There are two common reasons for this error:
1. You have not applied the Linux kernel patch that comes with this
distribution. Apply the right patch and try again. See the INSTALL
file for more information.
2. Your Linux configuration enables some functionality that is not yet
covered by our patches. Turn off this functionality and try again,
or fix the error and tell us how you did it. See the config.log file
for more detailed information on the error.
=========================================
•
•
•
•
14 dicembre 2010
Compilare il codice:
◦ [root@deisnetXX click-git]# make
Installare il software nel sistema:
◦ [root@deisnetXX click-git]# make install
Se l'installazione ha generato solo il driver Userlevel troveremo il comando
“click” installato nel sistema se invece siamo su un sistema con kernel pathcabile
e l'installazione ha quindi generato il driver Kernelmodule troveremo anche il comando “click-install” installato nel sistema;
Per verificare se l'installazione è andata a buon fine si possono lanciare delle configurazioni di test ed in particolare:
◦ Userlevel:
▪ [root@deisnetXX click-git]# click conf/test.click
85
Guide per l'installazione
◦
Versione 1
Questo comando stampa a video 5 pacchetti con il tag “ok” davanti;
ok: 40 | 45000028 00000000 401177c3 01000001 02000002 13691369
Kernelmodule:
▪ [root@deisnetXX click-git]# click-install conf/test.click
ok: 40 | 45000028 00000000 401177c3 01000001 02000002 13691369
Questo comando (se l'installazione del driver kernel module è andata a buon
fine altrimenti il comando click-install non è presente nel sistema!!!) stampa
su un file (/proc/click/messages) 5 pacchetti con il tag “ok” davanti;
10.3 Installazione Interfaccia Grafica Clicky (Opzionale)
10.4 Installazione e Compilazione di un Kernel per
Click!
Come annunciato l'installazione del driver kernelmodule per l'esecuzione delle configurazioni
a livello kernel dipende dalla presenza o meno nel sistema di un kernel specifico e in grado di
interfacciarsi con il click.
N.B: E' possibile trovare una guida dettagliata nel file INSTALL in CLICKDIR.
10.4.1 Download dei sorgenti
Installare (file INSTALL sotto click-git/):
•
Archiviare il kernel linux attualmente funzionante per ripristinare il sistema in
caso di errore (non necessario nel nostro caso in quanto il core FC12 precompilato installato in fase di installazione è già salvato)
•
Ottenere un Kernel Vanilla:
◦ Scaricare un kernel vanilla da www.kernel.org ed in particolare una delle
versioni supportate dal Click! (We supply patches for Linux 2.4.18-32,
2.6.16.13, 2.6.19.2, and 2.6.24.7.). La scelta del kernel ricade sull'ultima versione su cui è disponibile la patch degli headers del software Click! Infatti,
solo con un kernel patchato è possibile eseguire una configurazione Click
come modulo kernel. Presa come riferimento la versione 1.8.0 di Click Modular Router è possibile verificare le versioni di kernel per cui esiste la patch
esaminando il sito di riferimento o la cartella CLICKDIR/etc/ al suo interno
si troveranno tanti file del tipo linux-2.X.X.X-patch che indicano le varie
patch per le rispettive versioni del kernel. La più recente versione del kernel
linux supportata al momento della stesura di questa relazione è la 2.6.24.7
che sarà quella in uso nel nostro caso e da ora in poi faremo riferimento a
tale release. La versione del kernel installato di default dalla distribuzione
Fedora è la più recente 2.6.31. Occorre dunque scaricare il kernel 2.6.24.7 ed
installarlo prima di proseguire. N.B: Una nota presente nel file recita “Get a
vanilla Linux kernel source distribution from www.kernel.org or one of its
mirrors. (Patched kernels, such as Red Hat kernels, usually do not work.)
Unpack this distribution into /usr/src/linux. (Save the old kernel source tree,
if you had one.)” occorre quindi scaricare la versione vanilla 2.6.24.7 del
86
11 novembre 2010
Guide per l'installazione
•
Versione 1
kernel (ovvero la versione 2.6.24.7 originale, non patchata e personalizzata
da parte del fornitore della distribuzione come Red Hat per Fedora) dal sito
www.kernel.org.
Scompattare i sorgenti in “/usr/src/kernels/”
10.4.2 Installazione delle Patch
Occorre ora installare le patch per il kernel scaricato:
•
Andare in:
◦ [root@deisnetXX / ]# cd /usr/src/linux/LINUXSRCDIR/
•
Eseguire:
◦ [root@deisnetXX LINUXSRCDIR ]# patch -p0 -b < CLICKDIR/etc/linuxVERSION-patch
N.B: Le patch sono disponibili per i kernel inclusi nel file INSTALL del click ovvero:
Kernel version
2.6.24.7
2.6.19.2
2.6.16.13
…
Patch
linux-2.6.24.7-patch
linux-2.6.19.2-patch
linux-2.6.16.13-patch
“The patch fixes syntax errors in several header files (the C++ compiler doesn't accept
them), adds several new functions, and changes the 'struct device' kernel data structure.
Therefore, you WILL need to recompile any kernel modules that touch 'struct device'.”
Nell'esperienza diretta dell'installazione DEIS-TLC si è dovuto provvedere a patchare
manualmente (anziché ricorre a path ufficiali che come da nota possono dare problemi)
due dei file sorgenti del kernel 2.6.24.7 per non incappare in errori durante il comando
di compilazione/make. In particolare le modifiche si riferiscono ai files:
•
/usr/src/kernels/linux-2.6.24.7/scripts/unifdef.c: in questo file è presente una funzione chiamata getline() che genera conflitto in fase di make in quanto un'altra
funzione ha lo stesso nome. Occore aprire il file con un editor di testo (gedit per
esempio) e sostituire tutte le istanze di 'getline' con la stringa 'get_line'.
•
/usr/src/kernels/linux-2.6.24.7/arch: rimpiazzare 'm' o 'q' con r. Questo perchè la
lettera da rimpiazzare indica un registro hardware non presente nella architettura.
10.4.3 Configurazione del Nuovo Kernel
Prima di compilare il kernel è necessario editare il suo file di configurazione per inserire
e deselezionare le opzioni che vogliamo includere o escludere dal nostro kerenel:
•
Eseguire:
◦ [root@deisnetXX LINUXSRCDIR ]# make menuconfig
•
Configure the new kernel. The Click patch does not add any configuration options, so you can start from your old configuration, or you can do the usual
'make menuconfig'. Use a minimal set of options.Click is not currently safe for
kernels with involuntary preemption. Make sure that the CONFIG_PREEMPT
option is off. CONFIG_PREEMPT_VOLUNTARY is OK. We welcome patches
to improve Click's preemption behavior.
14 dicembre 2010
87
Guide per l'installazione
Versione 1
Questo passo è molto delicato e dipende fondamentalmente dall'hardware sul quale vogliamo installare il s.o. A parte le raccomandazioni fornite come quella sulla preemption
nel nostro caso in particolare ma anche in generale è consigliabile settare il minor numero di opzioni possibili per ottenere le massime performance in fase di esecuzione, in
particolare ricordarsi di togliere:
•
SYS_DEPRECATED_FS
•
Tutte le periferiche inutilizzate come joystick, tablet, bluetooth etc.
•
Abilitare: Security Options -> Default Linux Capabilities (per poi poter ricompilare Wireshark!!!)
10.4.4 Compilazione ed Installazione
A questo punto è possibile compilare ed installare il kernel:
•
Eseguire il comando per la compilazione dei sorgenti (il parametro -j3 indica di
eseguire make con 3 thread concorrenti per aumentare la velocità di compilazione!):
◦ [root@deisnetXX LINUXSRCDIR ]# make -j3
•
Eseguire:
◦ [root@deisnetXX LINUXSRCDIR ]# make dep
•
Eseguire il comando per la creazione dell'immagine:
◦ [root@deisnetXX LINUXSRCDIR ]# make bzImage
•
Eseguire il comando per la compilazione dei moduli:
◦ [root@deisnetXX LINUXSRCDIR ]# make modules
•
Eseguire il comando per l'installazione dei moduli:
◦ [root@deisnetXX LINUXSRCDIR ]# make mudules_install
•
Eseguire il comando per l'installazione del kernel:
◦ [root@deisnetXX LINUXSRCDIR ]# make install
Il file INSTALL del Click! avverte che “You may get errors in one of these steps, such
as the 'make bzImage' step. This indicates that you turned on too many options when
configuring your kernel. Return to Step 5, turn off the option that seems to be causing a
problem, and try again.”
•
Riavvia la macchina con il nuovo kernel;
10.4.5 Installazione del Click! Con il nuovo Kernel
Ora siamo pronti a ricompilare ed installare il Click! Con il nuovo kernel e quindi con il
driver per l'esecuzione in kernelmodule.
•
Rieseguire configure:
•
dsf
8. Now you are ready to compile and install the Click module. Rerun
1.1.1.1.1
'./configure' to tell the system about your new kernel:
1.1.1.1.2
1.1.1.1.3
rm -f config.cache ; ./configure [OPTIONS]
▪
88
11 novembre 2010
Guide per l'installazione
Versione 1
1.1.1.1.4
1.1.1.1.5
If your Linux source is not in /usr/src/linux, give './configure'
the
1.1.1.1.6
'--with-linux=LINUXDIR' option. If your System.map file is
not in
1.1.1.1.7
LINUXDIR/System.map, give it the '--with-linuxmap=MAPFILE' option.
1.1.1.1.8
1.1.1.1.9
If './configure' reports "Your header files must be patched
before a
1.1.1.1.10
C++ program can include them", check that you applied the
patch in Step
1.1.1.1.11
3, and that you supplied the correct '--with-linux' option to
1.1.1.1.12
'./configure'.
1.1.1.1.13
1.1.1.1.14
9. Then build and install the click module, its companion
proclikefs
1.1.1.1.15
module, and the language tools:
1.1.1.1.16
1.1.1.1.17
gmake install
1.1.1.1.18
1.1.1.1.19
If you get errors while compiling the Linux kernel module
(the
1.1.1.1.20
'linuxmodule' directory), and the errors look like they are in
Linux
1.1.1.1.21
header files, you may have turned on too many options when
configuring
1.1.1.1.22
your kernel. Return to Step 5, turn off the option that seems to
be
1.1.1.1.23
causing a problem (for example, an error involving the
"atalk_iface *"
1.1.1.1.24
type means you should turn off AppleTalk via
CONFIG_ATALK), and try
1.1.1.1.25
again.
1.1.1.1.26
1.1.1.1.27
10. This will create two module object files,
'linuxmodule/click.ko' and
1.1.1.1.28
'linuxmodule/proclikefs.ko', and place them in
'CLICKPREFIX/lib'. (In
1.1.1.1.29
Linux 2.4 and prior versions, the files end in '.o'.) To install
these
1.1.1.1.30
modules and a router configuration, run
1.1.1.1.31
1.1.1.1.32
CLICKPREFIX/sbin/click-install
ROUTERCONFIGFILE
1.1.1.1.33
1.1.1.1.34
Alternatively you could use /sbin/insmod by hand; see
click.o(8)
1.1.1.1.35
14 dicembre 2010
89
Guide per l'installazione
Versione 1
10.5 Installazione di NETCONF (YUMA)
Per installare NETCONF (nella sua implementazione open source YUMA) è necessario riferirsi alle risorse su: http://www.netconfcentral.org/
10.5.1 Installazione dei sorgenti
Primo passo consiste nella installazione dei sorgenti YUMA, operazione che sotto Fedora è semplificata dall'esistenza della versione precompilata .rpm:
•
Scarica yuma-VERSION-DISTRO-PLATFORM.rpm da http://www.netconfcentral.org/ di seguito si farà riferimento alla versione per Fedora 12 (per altre distro
seguire le istruzioni sul sito web).
•
Controllo dipendenze: per installare YUMA è necessario avere installato nel sistema le librerie “libxml2” ed “ncurses”. Per controllare eseguire:
◦ root@localhost> rpm -q libxml ncurses
Se la query ritorna i due risultati nel sistema sono installate le librerie e posso passare al
punto successivo, altrimenti devo installarle con il comando:
◦ root@localhost> yum install libxml ncurses
•
Installo il pacchetto .rpm eseguando il comando:
◦ root@localhost> rpm -Uvh yuma-VERSION-fc12-PLATFORM.rpm
•
Edito il file /etc/ssh/sshd_config inserendovi le righe:
#Netconf-Subsystem
Port 22
Port 830
Subsystem netconf
/usr/sbin/netconf-subsystem
10.5.2 Avvio del Demone NETCONF (netconfd)
Una volta installato posso avviare il demone netconf
•
Avvio il demone netconf eseguendo:
◦
root@localhost> netconfd –log=/home/user69/netconfd_log –superuser=root &
Dove il primo parametro specifica il path del file di log del demone e il secondo indica
che se ci si autentica come root al demone superuser saranno possibili tutte le azioni.
•
N.B: Nel caso si dovesse riavviare il demone netconfd è necessario prima rimuovere il file “/tmp/ncxserver.sock”!!!
•
Riavvio ssh con il comando:
◦ root@localhost> /etc/rc.d/init.d/sshd restart
10.5.3 Avvio del Client NETCONF (yangcli)
Avvio il programma client per verificare la corretta installazione:
•
Eseguo yangcli:
◦ [root@deisnetXX / ]# yangcli
90
11 novembre 2010
Guide per l'installazione
•
•
Versione 1
Mi connetto al server netconf:
◦ yangcli> connect server=localhost user=root password=opticalrouter
Una volta connesso per prova posso lanciare il modulo toaster (Vedi esempio su
slides YUMA).
10.5.4 Realizzazione del Modulo “Optical Router”
Realizzazione del modulo “opticalrouter.yang”:
•
Creo una cartella in “/usr/share/yuma/modules” chiamandola “opticalrouter”
•
Creo all'interno di “/usr/share/yuma/modules/opticalrouter” il file “opticalrouter.yang”
•
Vado in “/usr/share/yuma/src” ed eseguo:
◦ [root@deisnetXX / ]# make_sil_dir opticalrouter
•
Questo crea una cartella con il nome del modulo, “/usr/share/yuma/src/opticalrouter”
•
Vado in “/usr/share/yuma/src/opticalrouter/src” e qui trovo i files:
◦ Makefile
◦ opticalrouter.c
◦ opticalrouter.h
•
Edito il file .c inserendovi il codice che mi interessa.
•
Una volta terminato il passo precedente, eseguo:
◦ [root@deisnetXX / ]# make
•
Ed infine:
◦ [root@deisnetXX / ]# make install
10.5.5 Caricamento del Modulo
Per caricare il modulo:
•
Una volta connessi eseguire:
◦ yangcli> load opticalrouter
•
Poi per avere la disponibilità dei comandi anche in locale (N.B. Il file .yang del
modulo deve essere presente anche sulla macchina che esegue il client yangcli)
eseguire:
◦ yangcli> mgrload opticalrouter
•
E' ora possibile eseguire i comandi definiti nel modulo:
◦ yangcli> add-address address=X.X.X.X
◦ yangcli> remove-address address=X.X.X.X
◦ yangcli> reduce-bandwidth channels=X
14 dicembre 2010
91
Guide per l'installazione
Versione 1
10.6 Installazione del plugin ForCES per Wireshark
Per visualizzare ed avere una testimonianza delle interazioni tra CE ed FE che si scambiano
informazioni e messaggi mediante un protocollo di recente costituzione è necessario disporre
di un tool avanzato per la cattura di tali informazioni.
Come già utilizzato ricorreremo a Wireshark il quale però non è provvisto di un “dissector”
(ovvero un analizzatore di protocollo) nativo per il protocollo ForCES e quindi occorrerà integrarlo con questa potenzialità.
10.6.1 Reperimento del codice dissector
Il codice in grado di analizzare il pacchetto è stato esposto in un lavoro chiamato “Method and Implementation of Building ForCES Protocol Dissector Based on Wireshark ”
ad opera di Feng Luo e Ligang Dong, Fenggen Jia del College of Information and Electronic Engineering della Zhejiang Gongshang University con sede in Hangzhou, P.R.China, 310018.
Scaricando il pacchetto completo di ethereal reso disponibile all'indirizzo http://netcom.zjgsu.edu.cn/netcom_download_eng.html è possibile reperire il file packet-forces.c
dentro la directory /epan/dissectors ed estrarlo per intergrarlo in wireshark.
10.6.2 Installazione di Wireshark
Come primo passo occorre installare l'ultima versione di Wireshark, quindi ottengo dal
sito i sorgenti.
•
Scompatto il file con il comando
10.6.3 Estensione per protocolli aggiuntivi
Per estendere Wireshark con un nuovo analizzatore di protocollo o “dissector” è possibile inserire questo come:
•
Componente Nativo nella cartella epan/dissectors
•
Plugin: maggiori informazioni sono disponibili nel file doc/README.plugins
10.6.4 Installazione del dissector ForCES “nativo”
Asfd
10.6.5 Installazione del dissector ForCES come “plugin”
•
•
•
•
92
N.B: Maggiori informazioni sono disponibili nel file:
WIRESHARKDIR/doc/README.plugins
Posizionarsi in “WIRESHARKDIR/plugins/”
Creare una sottocartella di nome “forces”
Copiare dentro “plugins/forces/” il file sorgente del dissector “packet-forces.c”:
Copiare dalla cartella “plugins/gryphon/” dentro “plugins/forces/” i files:
◦ AUTHORS
11 novembre 2010
Guide per l'installazione
Versione 1
◦
•
•
COPYING
◦ ChangeLog
◦ CmakeLists.txt
◦ Makefile.am
◦ Makefile.common
◦ Makefile.nmake
◦ moduleinfo.h
◦ moduleinfo.nmake
◦ plugin.rc.in
Seguire le istruzioni su WIRESHARKDIR/doc/README.plugins
Andare in WIRESHARKDIR/ ed eseguire
◦ [root@deisnetXX WIRESHARKDIR ]# autogen.sh
◦ [root@deisnetXX WIRESHARKDIR ]# ./configure –prefix=$
{HOME}/build/root/
◦
•
14 dicembre 2010
[root@deisnetXX WIRESHARKDIR ]# cd plugins
◦ [root@deisnetXX plugins ]# cd forces
◦ [root@deisnetXX forces ]# make
◦ [root@deisnetXX forces ]# make install
Ora si può lanciare wireshark eseguendo:
◦ [root@deisnetXX / ]# ./root/build/root/bin/wireshark
93
Scarica

Relazione di attività sulla creazione di un emulatore per router ottico