Elaborato Polito Mariano N46001001

Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Elaborato finale in Reti di calcolatori I
Analisi del sistema di gestione di rete
nella piattaforma di cloud computing
OpenStack
Anno Accademico 2012/2013
Candidato:
Mariano Polito
matr. N46001001
Ai miei genitori che mi hanno costruito questo percorso.
A mia sorella che mi ha sostenuto nel percorrerlo.
A Tania che mi ha indirizzato su di esso.
A mia nonna che sarà luce nei miei prossimi passi.
Al mio miglior compagno di studi da sempre,
nonché fratello gemello.
Indice
Introduzione
5
Capitolo 1. Cloud computing
7
1.1
1.2
1.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4
1.4.1
1.4.2
1.4.3
1.4.4
Principali caratteristiche
Architettura e principali attori
Modelli di servizio
Software as a Service
Platform as a Service
Infrastructure as a Service
Hardware as a Service
Data as a Service
Modelli di distribuzione
Public Cloud
Private Cloud
Community Cloud
Hybrid Cloud
8
9
11
11
12
13
13
14
15
15
16
16
16
Capitolo 2. OpenStack
2.1
2.2
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6
2.2.7
2.2.8
2.2.9
17
Storia di OpenStack
Progetti di OpenStack
OpenStack Dashboard (“ Horizon”)
OpenStack Compute ( “Nova”)
OpenStack Networking (“Neutron”)
OpenStack Object Storage (“Swift”)
OpenStack Block Storage (code-name Cinder)
OpenStack Identity (“Keystone”)
OpenStack Image Service (“Glance”)
OpenStack Telemetry (“Ceilometer”)
OpenStack Orchestration (“Heat”)
18
20
21
21
22
23
23
24
26
27
28
Capitolo 3. Gestione della rete
3.1
30
Nova Network
30
III
3.1.1
3.1.2
3.1.3
3.2
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
Flat Network
FlatDHCP Network
Vlan Network
Openstack Networking( “Neutron”)
Componenti
Plug-in
Architettura
Casi d’uso
Namespaces
FWaaS
32
34
35
36
36
38
39
41
45
46
Conclusioni
Bibliografia
48
49
IV
Introduzione
L’evoluzione delle tecnologie informatiche e dei mezzi di comunicazione è inarrestabile e
ogni giorno vengono messi a disposizione degli utenti nuovi strumenti e soluzioni sempre
più sofisticate e integrate con la rete Internet, che consentono di soddisfare crescenti
esigenze di informatizzazione e di comunicazione.
In tale scenario risulta rilevante il concetto di cloud computing ovvero un modello che
offre risorse e servizi accessibili mediante la rete.
Anche se il termine cloud computing risulta d’uso frequente negli ultimi anni, esso è stato
introdotto negli anni ’60 quando la tecnologia dominante dell’epoca risiedeva nei vecchi
mainframe, da John McCarthy affermando che il metodo time-sharing avrebbe condotto
ad un futuro dove la potenza dei calcolatori e delle applicazioni sarebbe stata venduta
secondo il modello economico della utilità, come per l’acqua e l’elettricità.
Il cloud computing, porta quindi ad un nuovo concetto di rete, che oltre a garantire
l’instradamento di pacchetti, sia in grado di scegliere la risorsa disponibile più adatta al
contesto d’utilizzo in modo da fornire all’utente finale ciò che vuole nel migliore dei modi.
Uno dei principali progetti nati per offrire quanto su descritto è OpenStack, un progetto di
cloud computing open source lanciato nel 2010 , che negli ultimi anni ha fatto della rete
uno dei principali oggetti di studio, offrendo sempre di più la rete come un servizio,
ovvero gestibile dinamicamente dall’utente.
Il primo capitolo di questo elaborato introdurrà quelli che sono gli aspetti più importanti
5
per il cloud computing, dopodiché nel secondo capitolo verrà introdotto il progetto
OpenStack fornendo una panoramica della sua architettura e dei suoi componenti.
Infine, nel terzo e ultimo capitolo, verrà trattato la gestione della rete all’interno di
OpenStack.
6
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Capitolo 1
Cloud Computing
Il cloud computing è un nuovo paradigma informatico, in base al quale si ha la possibilità
di usufruire di un accesso conveniente e su richiesta a risorse computazionali condivise (ad
esempio reti, server, memoria di massa, applicazioni e servizi), secondo una modalità tale
da non richiedere la conoscenza della locazione fisica e della configurazione del sistema
che fornisce il servizio in questione da parte dell'utente finale.
Il modello si basa sul concetto di pay-per-use, ovvero si possono utilizzare tutte le
applicazioni che risiedono nella “nuvola” pagando l’effettivo utilizzo.
Una definizione standard del cloud computing è fornita dal NIST:
“Cloud computing is a model for enabling convenient, on-demand network access to a
shared pool of configurable computing resources (e.g., networks, servers, storage,
applications, and services) that can be rapidly provisioned and released with minimal
management effort or service provider interaction”[2]
“Il cloud computing è un modello abilitante, tramite la rete, un accesso comodo ed ondemand ad un pool condiviso di risorse di calcolo configurabili (ad esempio reti, server,
memoria, applicazioni e servizi) che possono essere velocemente ottenute e rilasciate con
minimo sforzo di gestione o di interazione con il fornitore di servizi”
7
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Il cloud computing nasce per ridurre e contenere i costi dell’IT1 migliorando i servizi.
Quest’ultimi sono indipendenti dalla piattaforma e possono essere pubblicati oppure si
possono comporre ottenendo applicazioni distribuite. L'applicazione così ottenuta diventa
a sua volta un servizio disponibile sulla rete. Quindi si mettono a disposizione online
risorse che possono essere risorse software nonché risorse hardware(CPU,dischi fissi).
Tale caratteristica del cloud computing è indicata con l’espressione “XaaS” acronimo di
“ X as a service”.
Fig. 1.1 Cloud Computing
1.1 Principali Caratteristiche
Secondo la definizione standard fornita dal NIST il modello presenta cinque caratteristiche
essenziali:
 On-demand self-service (Self-service su richiesta): il cliente deve poter utilizzare
il servizio su richiesta in base alle sue necessità e nel momento in cui lo ritiene
opportuno, senza richiedere interazione umana con alcun fornitore del servizio.
1
L'IT, acronimo di Information Technology, indica l'uso della tecnologia nella gestione e nel trattamento
dell'informazione, specie nelle grandi organizzazioni.
8
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
 Broad network access (Ampio accesso in rete): i servizi sono presenti in rete
accessibili e utilizzabili in qualsiasi momento attraverso piattaforme eterogenee
(telefoni mobili, tablet, laptops e workstations) secondo meccanismi standard.
 Resource pooling (Condivisione delle risorse): le risorse di servizio del fornitore
sono raccolte per servire molteplici consumatori utilizzando un modello condiviso,
il modello multi-tenant, con le diverse risorse fisiche e virtuali assegnate e
riassegnate dinamicamente in base alla domanda. L’utente generalmente non ha
controllo o conoscenza dell’esatta ubicazione delle risorse fornite, ma può essere in
grado di specificare la posizione ad un livello superiore di astrazione (ad esempio,
paese, stato o data center).
 Rapid elasticity (Elasticità rapida): le risorse possono essere acquisite e rilasciate
elasticamente, in alcuni casi anche automaticamente. Al consumatore, le risorse
disponibili spesso appaiono illimitate e disponibili in qualsiasi quantità, in
qualsiasi momento. L'illusione di infinite risorse di calcolo disponibili on-demand,
elimina la necessità per gli utenti di pianificare sulle necessità di calcolo, evitando
così di sottodimensionarle/sovradimensionarle.
 Measured service (Servizio misurato): i sistemi cloud controllano ed ottimizzano
automaticamente l’uso delle risorse, basandosi su un modello tariffario pay-peruse. L’utilizzo delle risorse può essere monitorato, controllato e segnalato,
fornendo trasparenza sia per il fornitore che per l’utilizzatore del servizio.
1.2 Architettura e principali attori
Il sistema del cloud computing può essere suddiviso in due macro parti: il frontend e il
backend. Entrambi sono connessi tra di loro attraverso la rete, solitamente Internet. Il
frontend è ciò che l'utente vede e con cui interagisce e accede al cloud, il backend è
invece il cloud vero e proprio, quindi composto da tutti quei dispositivi come computer,
9
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
server e dispositivi di memorizzazione dei dati.
Analizzando i principali attori, nel cloud computing è possibile individuare cinque ruoli
principali:
Il cloud provider (o cloud service provider): è il soggetto responsabile di rendere il
servizio utilizzabile alle terze parti.
Il cloud consumer (o cloud service consumer): è il principale soggetto che utilizza i
servizi di cloud computing. Può
essere una persona od organizzazione che ha una
relazione di business con uno o più cloud provider
Il cloud broker è il soggetto che gestisce l’impiego, le prestazioni e l’erogazione dei
servizi cloud e cura le relazioni tra cloud provider e cloud consumer.
Il cloud auditor è il soggetto che può eseguire un esame sui controlli effettuati sui servizi
con il fine di esprimere un parere: può valutare i servizi erogati da un cloud provider come
ad esempio i controlli per la sicurezza, l’impatto sulla privacy e sulle prestazioni.
Il cloud carrier agisce come un intermediario che fornisce connettività e trasporto di
servizi cloud tra il cloud consumer e il cloud provider; permette l’accesso al cloud
consumer attraverso le reti e i dispositivi di accesso (come computer desktop, computer
portatili, smartphone e altri dispositivi internet mobile).
10
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Fig.1.2 Principali attori del cloud computing
1.3 Modelli di servizio
Il cloud computing offe vari modelli di servizio , che determinano come il servizio viene
erogato. Tra i modelli si distinguono tre principali quali:
 Software as a Service (SaaS)
 Platform as a Service (PaaS)
 Infrastructure as a Service (IaaS)
Conosciuti anche come “modello SPI”. A questi tre modelli principali vengono integrati
dei secondari quali:
 Data as a Service (DaaS)
 Hardware as a Service (HaaS)
1.3.1 Software as a Service
Software as a Service (SaaS) è un modello di distribuzione del software in cui le
11
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
applicazioni sono ospitate da un fornitore o cloud provider e resi disponibili ai clienti
attraverso una rete, in genere Internet. Il termine SaaS è diventato il termine di riferimento,
rimpiazzando il precedente modello ASP2. La differenza sostanziale tra i due è che nel
modello ASP il provider acquista il software dal produttore e lo rende disponibile online a
differenza del modello SaaS in cui il software viene distribuito dal produttore stesso o da
una terza parte in stretta relazione con il produttore. Inoltre, nel modello ASP le
applicazioni distribuite spesso sono fruibili in modalità client/server o con interfaccia
utente
a
carattere,
adattate
solo
successivamente
per
l'utilizzo
remoto.
Nel modello SaaS, viceversa, entrano in gioco applicazioni nuove, nate e sviluppate per
essere fruite tramite un browser e quindi che risultano native nel mondo web.
In questo modello il consumatore non controlla server, sistemi operativi, rete memoria ,
ma può configurare delle opzioni per le applicazioni a lui destinate.
Esempi di questo modello sono: Oracle, IBM, Microsoft, SalesForce e Google Apps;
1.3.2 Platform as a Service
Platform as a Service è un modello che offre delle piattaforme di elaborazione, che
permettono all’utente di creare applicazioni attraverso linguaggi di programmazione,
librerie, servizi e strumenti supportati dal fornitore. La piattaforma è vista come un
servizio che esporta tool e API per lo sviluppo della propria applicazione e l’utente che
sceglie un servizio è quindi uno sviluppatore. Lo sviluppo può venire effettuato in
modalità on-line o in modalità off-line. In quest'ultimo caso lo sviluppatore dopo aver
effettuato il download di una parte della piattaforma, potranno sviluppare il software
all'interno
della
propria
infrastruttura.
Dopodiché
effettua
l'upload
mediante
sincronizzazione nella piattaforma pubblica. In questo modello il consumatore non
controlla rete, server, sistemi operativi, memoria, ma ha il controllo sulle applicazioni ed
eventualmente sulle configurazioni dell’ambiente che le ospita.
2
ASP, acronimo di application service provider è un modello architetturale per l'erogazione di servizi informatici che
prevede una spinta remotizzazione elaborativa ed applicativa.
12
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Esempi di questo modello sono: Google AppEngine, Microsoft Azure e Force.com.
1.3.3 Infrastructure as a Service
Infrastructure as a Service è un modello che offre come suggerisce il nome l’infrastruttura
come servizio,ovvero offre al consumatore capacità di CPU, storage, network e altre
risorse fondamentali utilizzando la tecnica di virtualizzazione3.
In particolare si creano delle Virtual Machines indipendenti chiamate anche istanze che
vengono gestite dall’hypervisor,che ridimensionano i servizi a seconda dei requisiti del
cliente. In questo modello
il consumatore
controlla sistemi operativi, memoria,
applicazioni ed eventualmente, in modo limitato, alcuni componenti di rete (esempio
firewalls4).
Esempi di questo modello sono: GoGrid,Felixscale,Joyent, Amazon's EC2, Eucalyptus,
OpenStack.
Fig.1.3 Modello SPI
1.3.4 Hardware as a Service
Hardware as a Service è un modello che offre ai clienti l’hardware come servizio,ovvero il
cliente invia i dati al provider insieme alle istruzioni su come dovrebbe essere elaborati,
3
In informatica il termine virtualizzazione si riferisce alla possibilità di astrarre le componenti hardware, cioè fisiche,
degli elaboratori al fine di renderle disponibili al software in forma di risorsa virtuale.
4
Il firewall è un apparato di rete hardware o software che filtra i pacchetti entranti ed uscenti da una rete, per
contribuire alla sicurezza della stessa.
13
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
dopodiché i server/sistemi del fornitore di HaaS forniscono all’utente l’elaborazione di
tali dati.
Un esempio di modello HaaS: Lanchpad.
1.3.5 Data as a Service
Data as a Service è un modello in cui i dati rappresentano il servizio, ovvero il fornitore
offre spazio all’utente per memorizzare i dati online. I dati possono essere di diversi
formati e sono disponibili come se fossero presenti nel disco locale del computer.
Alcuni esempi di modello DaaS: Amazon S3, Google BigTable, Apache HBase.
1.4 Modelli di distribuzione
Il cloud computing ( riferendoci sempre alla definizione fornita dal NIST) presenta quattro
modelli di distribuzione:
 Public Cloud
 Private Cloud
 Hybrid Cloud
 Community Cloud
1.4.1 Public Cloud
Un modello di distribuzione in cui il cloud provider rende disponibili le risorse attraverso
dei servizi pubblici accessibili attraverso internet generalmente con un modello pay-peruse. Tra i principali benefici di questo modello vi è l’abbattimento dei costi per
l’investimento iniziale e una
distribuzione
in genere molto più veloce e con
maggiore scalabilità.
Tuttavia tale modello presenta il problema della sicurezza e della privacy dei dati, in
quanto l’utente perde il controllo degli stessi affidandoli a terze parti per la loro gestione.
14
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
1.4.2 Private Cloud
I cloud privati chiamati anche “nuvola aziendale ” sono progettati per l’uso esclusivo per
un’unica organizzazione, gestiti internamente oppure ospitati esternamente da terze parti.
Tale modello fornisce servizi di hosting ad un numero limitato di persone dietro
un firewall.
Il punto di forza di questo modello riguarda principalmente la sicurezza e la riservatezza
poiché solamente gli utenti dell'organizzazione hanno accesso al cloud privato.
Tuttavia in tale modello non si è più indipendenti dalla costruzione e manutenzione di una
nuova infrastruttura di computing , infatti la creazione di un cloud privato significa
investimenti significativi e non può essere paragonato alle economie ottenute con il cloud
pubblico.
1.4.3 Community Cloud
Il community cloud è un modello in cui le infrastrutture sono condivise tra diverse
organizzazioni di una specifica comunità con interessi comuni (ad esempio missione,
requisiti di sicurezza, vincoli di condotta e di conformità), può essere gestita internamente
da una o più organizzazioni della comunità o da terze parti. I costi sono ripartiti su un
minor numero di utenti di un cloud pubblico ma più di un cloud privato.
1.4.4 Hybrid Cloud
Come suggerisce il nome stesso, il cloud ibrido è costituito da due o più cloud, privati,
community o pubblici per offrire i benefici dei vari modelli, restando tuttavia entità
uniche, ovvero ognuna mantiene la propria identità nonostante venga unita assieme alle
altre. In tale modello l’organizzazione gestisce alcune risorse in-house ed altre fornite
esternamente. Generalmente un’azienda può eseguire un’applicazione inizialmente su un
cloud privato e affidarsi a un cloud pubblico durante i picchi di utilizzo.
Passo fondamentale di tale modello è l’ analisi sulla distribuzione dei carichi elaborativi,
fra i diversi cloud.
15
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Capitolo 2
OpenStack
OpenStack è un progetto di cloud computing open source, rilasciato sotto licenza Apache 5,
per tutti i tipi di cloud, che mira ad essere semplice da implementare, altamente scalabile e
ricco di funzionalità.
Fornisce un infrastruttura come servizio (IaaS), ogni servizio offre un API che ne facilita
l’integrazione. Quindi a seconda dell’esigenza dell’utente è possibile installare alcuni o
tutti i servizi.
La crescita di tale progetto è dovuta alla grande comunità di sviluppatori che partecipano,
infatti ad oggi più di 200 aziende aderiscono al progetto tra cui: IBM, Intel, Oracle, Cisco,
Dell.
Tutto il software è sviluppato principalmente in Python seguendo un'architettura di tipo
modulare, dove ogni componente è un software indipendente, sviluppato secondo le linee
guida definite dalla OpenStack Foundation.
La tecnologia consiste in una serie di progetti interconnessi che controllano grandi insiemi
di risorse computazionali, la conservazione, e le risorse di rete, presenti in tutto il data
center, il tutto gestito attraverso una dashboard che fornisce agli amministratori un
controllo e che consente loro di allocare risorse, oppure attraverso delle API specifiche di
ogni servizio.
5
Licenza Apache: è una licenza di software libero scritta dalla Apache Software Foundation(ASF) che obbliga gli utenti
a preservare l'informativa di diritto d'autore e d'esclusione di responsabilità nelle versioni modificate.
16
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Fig.2.1 Modello generale di OpenStack
2.1 Storia di OpenStack
OpenStasck è stato lanciato per la prima volta il 19 luglio 2010. Fino ad allora, l'unica
possibilità di avere un servizio della stessa portata era affidarsi ad Amazon e al suo Elastic
Compute Cloud (EC2).
La paternità di tale progetto è sia della NASA sia dell'azienda di hosting Rackspace grazie
alla collaborazione delle due iniziata nell’estate del 2010, quando Joshua McKenty,
consulente della NASA, scrisse nel suo blog il seguente post:
“Launched Nova. Apache-Licensed Cloud Computing, in Python. It’s live, it’s buggy, it’s
beta. Check it out.”
“ Lanciato Nova. Apache-Licensed Cloud Computing, in Python. È vivo, è pieno di bug, è
beta. Date un’occhiata”
Tale post suscitò l’attenzione di Rick Clark della Rockspace, che in quel periodo stava
lavorando anche lui all’interno della compagnia per lo sviluppo di un’applicazione open
source, per costruire piattaforme di cloud computing. Così gli esecutivi di Rackspace
chiesero di poter vedere il lavoro della NASA, preoccupati per una concorrenza così
17
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
importante che andava nella loro stessa direzione e grazie a Jim Curry, vice presidente di
corporate development di Rackspace e figlio di un ingegnere della NASA, ci fu un
colloquio con il team della NASA. In questo colloquio scoprirono increduli che tra i due
progetti più che una somiglianza esisteva una vera e propria identità: avevano usato gli
stessi strumenti, le stesse scelte di linguaggio. Così decisero di fondere i due team e andare
avanti nello stesso progetto.
I due codici per quanto simili erano complementari: la NASA aveva creato il server
virtuale Nova e Rackspace aveva creato Swift, uno storage, quindi l’uno era una specie di
Amazon EC2, mentre l’altro era il suo Simple Storage Service (S3). A fine colloquio i due
team decisero che avrebbero unito i due codici in un solo progetto open source, che si
sarebbe chiamato OpenStack.
La primissima versione di OpenStack denominata Austin è stata rilasciata nell’ottobre
2010, dopodiché la comunità di sviluppo rilasciava nuove versioni ogni tre mesi. Dalla
release Diablo il ciclo di rilascio passò dai tre ai sei mesi, arrivando all’attuale release
Havana, rilasciata nell’ottobre 2013.
In Fig. 2.2 si riportano tutte le release rilasciate negli anni.
18
Fig.2.2 Release di OpenStack
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
2.2 Progetti di Openstack
Come precedentemente affermato OpenStack ha un architettura di tipo modulare, che
consiste in una serie di progetti interconnessi ognuno dei quali fornisce ulteriori
funzionalità. Le relazioni tra i vari progetti vengono descritte attraverso l’architettura
concettuale mostrata in Fig.3.2.
Facendo riferimento alla release attuale, ovvero Havana, vi sono ben nove progetti quali:
 OpenStack Compute (code-name Nova) – integrato dalla release Austin
 OpenStack Networking (code-name Neutron) - integrato dalla release Folsom
 OpenStack Object Storage (code-name Swift) - integrato dalla release Austin
 OpenStack Block Storage (code-name Cinder) - integrato dalla release Folsom
 OpenStack Identity (code-name Keystone) - integrato dalla release Essex
 OpenStack Image Service (code-name Glance) - integrato dalla release Bexar
 OpenStack Dashboard (code-name Horizon) - integrato dalla release Essex
 OpenStack Telemetry (code-name Ceilometer) - integrato dalla release Havana
 OpenStack Orchestration (code-name Heat) - integrato dalla release Havana
Fig.2.3 Architettura concettuale
19
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
2.2.1OpenStack Dashboard (“ Horizon”)
OpenStack Dashboard fornisce agli amministratori e agli utenti un interfaccia grafica selfservice web-based per interagire con i servizi di OpenStack, ad esempio, lanciare un
istanza di macchina virtuale, configurare i controlli di accesso, configurare la rete.
Il design estensibile rende facile da collegare ed esporre prodotti e servizi di terze parti.
Agli amministratori offre la visione complessiva sulla dimensione e sullo stato del cloud,
permettendo loro di creare utenti e progetti, assegnare gli utenti ai progetti e fissare un
limite alle risorse utilizzabili per un dato progetto.
Per usufruire delle funzionalità degli amministratori è necessario una connettività
attraverso le Admin API, che non sono accessibili dai normali utenti.
Inoltre Horzion fornisce supporto per i nuovi servizi introdotti nell’ultima release Havana,
in particolare per OpenStack Orchestration fornisce supporto per la generazione di forme
dinamiche supportate da Heat template, e per OpenStack Telemetry fornisce un supporto
iniziale agli amministratori in modo che possono interrogare il cloud per capire meglio
come il sistema sta funzionando e come il sistema deve essere utilizzato.
2.2.2OpenStack Compute ( “Nova”)
Il servizio OpenStack Compute è la parte principale di un sistema IaaS, usato per ospitare
e gestire un sistema di cloud computing.
In particolare gestisce il ciclo di vita delle istanze delle risorse virtuali nell’ambiente
OpenStack. Tra le principali responsabilità troviamo la creazione, schedulazione e
distruzione delle macchine su richiesta.
La virtualizzazione è alla base dei servizi offerti da OpenStack Compute, configurando i
driver che interagiscono con i meccanismi di virtualizzazione del sistema operativo che
gira sul particolare host e utilizzando le API per interagire con gli hypervisor. Esempi di
hypervisor supportati sono: KVM , Xen-based e VMware.
20
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Tra i principali componenti troviamo:
 nova-api: intercetta e risponde alle chiamate API dell’utente. Supporta l'API
OpenStack Compute, l'API di Amazon EC2, e una speciale API Admin per gli
utenti privilegiati che permette di eseguire azioni amministrative.
 nova-compute: crea e termina le istanze di macchine virtuali comunicando, tramite
delle API, con l’hypervisor ( per esempio XenAPI per XenServer/XCP, libvirt per
KVM or QEMU, VMwareAPI per VMware).
 nova-scheduler: prende una richiesta di istanza di macchina virtuale dalla coda
determinando a quale server fisico assegnare l’istanza.
 nova-conductor: gestisce le interazioni tra nova-compute e il database, per evitare
gli accessi diretti al database da parte del nova-compute.
 nova-network: molto simile al nova-compute estrae le attività di networking dalla
coda, svolgendo funzioni per manipolare la rete.
 queue: componente centrale per lo scambio di messaggi, di solito è implementata
con RabbitMQ, ma potrebbe essere implementata da qualsiasi altro sistema di
messaggistica che implementa AMPQ6, come Apache Qpid or Zero MQ.
 Sql-database: mantiene i tipi di istanze che sono disponibili per l’uso, l’istanze in
uso nonché reti e progetti disponibili. Tra i database ampiamente utilizzati vi sono:
sqlite3, MySQL e PostgreSQL.
2.2.3 OpenStack Networking (“Neutron”)
OpenStack Networking permette di gestire
la rete come un
servizio(Network as a
Service) tra le varie interfacce dei dispositivi, interagendo con gli altri servizi di
OpenStack, di solito Openstack Compute.
Fornisce delle API agli utenti per creare le interfacce di rete e collegarsi alla stesse.
Openstack Networking è altamente configurabile grazie alla sua architettura plug-in che
6
AMPQ: acronimo di Advanced Message Queuing Protocol è un protocollo standard di rete orientato allo scambio di
messaggi.
21
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
permette di ospitare diversi software e apparecchiature di rete, di conseguenza
l’architettura e l’implementazione variano dinamicamente.
Tale componente sarà oggetto di studio nel prossimo capitolo.
2.2.4 OpenStack Object Storage (“Swift”)
Si tratta di un sistema di storage a lungo termine per memorizzare petabyte di dati che
possono essere recuperati e aggiornati, tramite delle API.
Risulta altamente fault tolerant grazie alla sua architettura altamente distribuita che
permette la ridondanza dei dati e una maggiore scalabilità.
Gli oggetti sono scritti su hardware multipli e il software si occupa della replicazione e
dell’integrità dei dati, in particolare OpenStack Object Storage esegue la manutenzione dei
dati attraverso un certo numero di processi.
Tra i principali componenti vi sono:
 swift-proxy-server: intercetta le richieste, tramite le OpenStack Object API oppure
attraverso il protocollo HTTP, per caricare file, modificare i metadati o creare
contenitori( liste di oggetti). Per migliorare le prestazioni può opzionalmente usare
una cache (memcache).
 swift-account-server: gestisce gli account definiti all’interno del servizio di
OpenStack Object Storage, in particolare ogni account viene salvato all’interno di
un database sql è ad esso viene associato la lista di contenitori per quell’account.
 swift-container-server: simile all’account server, gestisce i contenitori all’interno
del servizio OpenStack Object Storage, in particolare tiene traccia di quali oggetti
appartengono al contenitore salvando queste informazioni nel database.
 swift-object-server: si occupa di gestire gli oggetti reali, come i file, sul particolare
nodo di storage (ad esempio l’esecuzione dell’operazione di modifica).
2.2.5OpenStack Block Storage (code-name Cinder)
OpenStack Block storage, inizialmente componente di Nova chiamato nova-volume,
22
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
fornisce lo storage di volumi persistenti per le istanze di macchine in esecuzione. Presenta
un architettura “pluggabile”, che facilita la creazione e la gestione dei dispositivi.
L’implementazione del servizio di default è una soluzione iSCSI7 che utilizza LVM8 di
linux.
OpenStack Block Storage implementa multiple-storage back end, introdotta nella release
Grizzly, consente la creazione di diverse soluzioni di storage che servono la stessa
configurazione Openstack Compute, in sostanza si istanzia un cinder-volume per ogni backend. Una novità introdotta nella release Havana è la funzione Migrate volume che
introduce di migrare volume tra i back-end, ovvero si crea un volume di storage e si copia
in maniera trasparente i dati dall’originale al nuovo.
Tra i componenti principali troviamo:

cinder-api: accetta le richieste API dell’utente e le invia al cinder-volume.

cinder-volume: elabora le richieste di scrittura o lettura di volumi di storage
interagendo con altri processi (es. cinder-scheduler) attraverso una coda di
messaggi.

cinder-scheduler: come nova-scheduler, sceglie il miglior nodo al su cui creare il
volume di storage.
Tra le varie piattaforme di storage supportate troviamo: Ceph, NetApp, Nexenta, SolidFire,
e Zadara.
2.2.6OpenStack Identity (“Keystone”)
OpenStack Identity Service fornisce un servizio di autenticazione e autorizzazione agli altri
servizi di OpenStack e può integrarsi con i servizi di directory back-end esistenti, come
LDAP9.
7
iSCSI: acronimo di Internet Small Computer System Interface è un protocollo che permette di inviare comandi a
dispositivi di memoria SCSI fisicamente collegati a server e/o altri dispositivi remoti
8
LVM: acronimo logical volume manager gestisce i dispositivi di archiviazione di massa in Linux
9
LDAP: acronimo di Lightweight Directory Access Protocol è un protocollo standard per l'interrogazione e la modifica
dei servizi di directory come un elenco aziendale di email o una rubrica telefonica o più in generale qualsiasi
raggruppamento di informazioni che può essere espresso come record di dati ed organizzato in modo gerarchico.
23
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Tale servizio svolge due funzioni principali:

Gestione degli utenti: tiene traccia degli utenti e delle autorizzazioni associate agli
stessi, ovvero quali tipi di operazioni possono compiere.

Gestione dei servizi: offre un catalogo dei servizi, disponibili attraverso gli
endpoint.
Basandosi sui seguenti componenti:

User: rappresentazione digitale di un utente, un sistema o un servizio che utilizza un
servizio.

Credentials: dati utilizzati dall’utente per autenticarsi (username e password,
username e API key, token di autenticazione fornito da OpenStack Identity Service).

Authentication: l’atto di verifica dell’identità di un utente. OpenStack Identity
Service conferma la richiesta in arrivo, convalidando le credenziali fornite
dall’utente. In risposta a queste credenziali, OpenStack Identity Service emette un
token di autenticazione per l'utente, che l'utente fornisce in richieste successive.

Token: una stringa alfanumerica arbitraria che viene utilizzata dall’utente per
accedere alle risorse di cui può disporre. Il token può essere revocato in qualsiasi
momento e ha una durata limitata.

Tenant: collezione di risorse condivise tra utenti di un medesimo gruppo progetto o
organizzazione.

Service: rappresenta un servizio di OpenStack, come OpeStack Compute (Nova),
OpeStack Object Storage (Swift), oppure OpeStack Image Service (Glance),
fornendo uno o più endpoint attraverso il quale l’utente può accedere alle risorse e
effettuare le operazioni.

Endpoint: Un indirizzo di rete accessibile, di solito descritto da un URL, da cui si
accede a un servizio.

Role: proprietà assunta da un utente che serve a definire le operazioni che esso può
svolgere e i servizi che può richiedere. Un ruolo quindi comprende un insieme di
diritti e privilegi, questi ultimi vengono ereditati dagli utenti che assumono quel
24
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
ruolo. Un utente può assumere diversi ruoli in differenti tenants nonché assumere
molteplici ruoli all’interno di uno stesso tenant .
2.2.7OpenStack Image Service (“Glance”)
OpeStack Image Service fornisce agli utenti servizi di ricerca, recupero e registrazione
delle immagini delle macchine virtuali.
Il servizio comprende API che permette all'utente di interrogare metadati dell'immagine
e recuperare l'immagine attraverso un interfaccia di tipo REST10.
Tra le principali novità introdotte nella release Havana vi è, sia la possibilità di
memorizzare le immagini in locazioni multiple favorendo, un consumo efficiente
dell’immagini e la possibilità di usare immagini di backup, sia la possibilità di associare
delle proprietà alle immagini, che possono essere di due tipi: Core Properties (specificate
all’interno dell’ image schema), Meta Properties(coppie arbitrarie chiave/valore che sono
associate all’immagini), limitando gli utenti che possono effettuare operazioni CRUD sulle
immagini in base al ruolo che essi assumono. La prima delle precedenti funzionalità è
chiamata Multiple Image, mentre la seconda Property Protections.
Le immagini delle VMs , che possono essere di vari formarti(es. Raw, VHD, OVF,
VMDK) possono essere memorizzati su diversi sistemi di memorizzazione tra cui:
 File-system: archivia, cancella e recupera immagini dalla directory di un file-system
specificato nel file di configurazione.
 S3: elimina o recupera le immagini utilizzando il sistema di storage proprio di
Amazon Web Services (AWS).
 HTTP: recupera le immagini attraverso il protocollo HTTP, tratta le immagini in
sola lettura.
 Swift: utilizza il servizio Openstack Object storage per la memorizzazione e il
10
REST: acronimo di Representational State Transfer si riferisce ad un insieme di principi di architetture di rete, i quali
delineano come le risorse sono definite e indirizzate.
25
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
recupero delle immagini.
 Sheepdog(introdotto nella nuova realese): le immagini vengono memorizzate
utilizzando il sistema di storage distribuito Sheepdog.
 Cinder (introdotto nella nuova realese): Openstack Cinder può essere usato come
block-storage dall’Image Service.
 GridFS( introdotto nella nuova realese): utilizza il file system distribuito di GridFS
per lo storage delle immagini.
Tra i principali componenti vi sono:

glance-api: accetta le richieste API e collabora con gli altri componenti per
caricare, recuperare, ricercare o eliminare le immagini.

glance-registry: archivia e recupera i metadati relativi alle immagini dal database
(i più usati sono: MySQL or SQlite).

store-adapter: slega la richiesta dal particolare store, per poter interagire con
diversi sitemi di storage.
2.2.8OpenStack Telemetry (“Ceilometer”)
OpenStack Telemetry, introdotto nella release Havana, è un servizio che tiene traccia di
ciò che sta succedendo nel cluster OpenStack, valutando i dati di utilizzo e le prestazioni
di tutti i servizi distribuiti in OpenStack. Quindi questa potente funzionalità offre visibilità
e comprensione sull’uso del cloud, consentendo agli operatori di visualizzare le metriche a
livello globale o a livello delle singole risorse impiegate.
I dati possono essere raccolti attraverso le notifiche inviate dai servizi o attraverso un
meccanismo di polling. Inoltre il servizio permette la configurazione dei tipi per i dati
raccolti in modo da soddisfare le varie esigenze operative.
OpenStack Telemetry si basa principalmente sullo scambio di messaggi trasmessi tra i vari
componenti, attraverso il bus di messaggistica standard di OpenStack , tra i principali vi
sono quelli di notifica e quelli di misurazione dei dati.
Tra i principali componenti vi sono:
26
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
 ceilometer-agent-compute: funziona su ogni nodo di calcolo ed effettua sondaggi
per ricavare le statistiche di utilizzo delle risorse relative alle istanze.
 ceilometer-agent-central: eseguito su un server di gestione centrale, effettua
statistiche sull’utilizzo delle risorse che non sono visibili,ovvero non sono legate a
istanze.
 ceilometer-collector: gira su uno o più server di gestione centrale per monitorare le
code di messaggi, i messaggi di notifica vengono elaborati e trasformati in
messaggi di misura, tali messaggi vengono poi salvati nell’archivio di OpenStack
Telemetry.
 ceilometer-alarm-notifier: eseguito su uno o più server di gestione centrale
consente di settare allarmi sulla base di una soglia stabilita su insieme di campioni,
 ceilometer-api: un server API che consente l’accesso all’archivio per accedere ai
dati.
 archivio dati: un database capace di, gestire scritture contemporanee da uno o più
istanze del collettore e leggere i dati dal server API.
2.2.9OpenStack Orchestration (“Heat”)
Il servizio OpenStack Orchestration, servizio introdotto nella release Havana, offre un
orchestrazione template-based agli sviluppatori di applicazioni per descrivere e
automatizzare l’implementazione di infrastrutture. I modelli consentono di creare la
maggior parte dei tipi di risorse di OpenStack come istanze, floating IP, volumi, utenti e
cosi via; quindi permette di specificare le configurazioni di elaborazione, storage e di rete,
nonché attività di post-distribuzione per automatizzare il provisioning completo di
infrastrutture.
In particolare tale servizio orchestra molteplici applicazioni utilizzando il formato nativo
HOT(Heat Orchestration Template), oppure utilizzando il template di
AWS
CloudFormation.
Inoltre, attraverso l’integrazione con altri servizi, si possono ottenere funzionalità più
avanzate; per esempio attraverso l’integrazione con OpenStack Telemetry si può effettuare
27
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
l’auto-scaling di alcuni elementi infrastrutturali.
Tra i principali componenti vi sono:
 heat-command-line: un interfaccia a riga di comando (CLI) che comunica con
l’heat-api per eseguire le API AWS CloudFormation. Bisogna ricordare che per
usare tale servizio si può interagire direttamente tramite le API REST.
 heat-api: elabora le richieste API inviandole all’heat-engine mediante una RPC.
 heat-api-cfn: fornisce un AWS Query API che è compatibile con AWS
CloudFormation ed elabora le richieste API inviandole all’heat-engine mediante
una RPC.
 heat-engine: fornisce gli eventi richiesti dagli utenti se si verifica una chiamata API
e orchestra il lancio dei modelli.
.
28
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Capitolo 3
Gestione della rete
Uno degli aspetti più importanti del progetto OpenStack riguarda la gestione della rete,
che è diventato uno dei principali oggetti di studio nelle ultime release.
Originariamente la gestione della rete era affidata al servizio Openstack Compute, in
particolare al componente nova-network; tuttavia tale modo di gestire la rete risulta
troppo limitativo in quanto non permette una configurazione dinamica e personalizzabile
della rete da parte dell’utente e non vi è possibilità di includere all’interno del componente
Nova le nuove tecnologie emergenti(SDN,QoS).
Per ovviare a tale limitazioni nella release Folsom si è introdotto il progetto Quantum,
rinominato Neutron nell’ultima release Havana, che permette di gestire la rete offrendola
come un servizio quindi implementando il cosiddetto NaaS (network as a Service),
offrendo un architettura basata sul concetto di plug-in che permette di interfacciarsi con
tecnologie già esistenti e con quelle future.
3.1 Nova-Network
Nova-network permette di gestire la rete estraendo dalla coda le attività richieste, fornendo
reti virtuali per consentire ai
nodi di interagire tra loro e con la rete pubblica. In
particolare per ogni istanza di macchina virtuale creata OpenStack Compute assegna un
indirizzo IP privato e il componente nova-network fornisce loro connettività.
Attualmente Compute con nova-network supporta solo Linux Bridge, per connettere le
29
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
interfacce virtuali alla rete esterna attraverso le interfacce fisiche.
Un importante distinzione fornita all’interno del servizio OpenStack Compute riguarda gli
indirizzi che vengono assegnati alle istanze di macchine virtuali, in particolare si parla di :
 fixed IPs: sono indirizzi assegnati all’ atto della creazione dell’istanza, tale indirizzo
rimane lo stesso fin quando l’istanza non viene esplicitamente terminata.
 floating IPs: sono indirizzi che vengono associati dinamicamente alle istanze,
quindi possono essere disassociati da un’ istanza e associati ad un'altra in qualsiasi
momento.
Nova-network supporta tre tipologie di configurazioni di rete, realizzate in diversi tipi di
“Network manager”:
 Flat Network Manager
 Flat DHCP Network Manager
 VLAN Network Manager
Tutti e tre tipi di network manager configurano la rete utilizzando i driver di rete (per
esempio il driver Linux L3 che si avvale di iptables, route e altri servizi di gestione della
rete). I driver non sono legati alla particolare tipologia di configurazione, bensì vengono
utilizzati gli stessi driver per qualsiasi tipologia di configurazione.
Inoltre essi, la maggior parte delle volte, vengono inizializzati(creano bridges e cosi via)
solo quando si istanzia la prima VM sul particolare nodo.
Un altro aspetto importante che vale per tutte le tipologie di configurazioni di rete riguarda
la modalità con la quale esse operano, in particolare vi sono due modalità:
 Single Host: un singolo servizio nova-network fornisce un default gateway per le
macchine virtuali e ospita un singolo DHCP server (dnsmasq).
 Multiple Host: ogni nodo compute gestisce un proprio servizio nova-network, ogni
nodo, quindi, potrà comportarsi da NAT, gestire un proprio server DHCP in
30
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
maniera autonoma e comportarsi da gateway per la rete pubblica per tutte le
macchine che ospita.
3.1.1 Flat Network
Il tipo di configurazione Flat fornisce un set primitivo di operazioni, il suo ruolo si riduce
nel collegare l’istanza al bridge (tipicamente chiamato br100), precisamente in questa
modalità tutte le istanze sono collegate allo stesso bridge che
viene configurato
manualmente dall ‘amministratore di rete.
Alle istanze di macchine virtuali viene assegnato un indirizzo IP fixed preso da un pool di
indirizzi disponibili per la subnet specificata dall’amministratore di rete.
FlatNetworking utilizza interfacce ethernet configurate come bridge per consentire il
traffico della rete tra i vari nodi, in particolare esistono due modalità quali: single adapters
oppure multiple adapters.
Il più semplice e comune modello di installazione è il cosidetto All-in-one dove si utilizza
una modalità single node in cui è presente un’unica interfaccia di rete .
Fig. 3.1 Modello All-in-one
Ad esso si affianca un ulteriore scenario che riguarda il caso in cui vi è sempre un'unica
interfaccia ma si utilizza una modalità multi node.
31
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
In questa scenario se un macchina virtuale invia traffico verso la rete pubblica, lo invia
prima al suo gateway predefinito, dopodiché l’host su cui è configurato nova-network
agisce come router inviando il traffico verso internet, tutto ciò funziona a patto che venga
settata la modalità promiscua a causa dell’ unica interfaccia presente.
Fig. 3.2 Multiple nodes whit a single adapters
Il caso più comune e quello raccomandato da OpenStack è quello in cui si ha una modalità
multi-node in cui sono presenti almeno due interfacce, dedicando un interfaccia al bridge e
l’altra dedicandola al traffico di managment della rete.
In questo scenario se una macchina virtuale invia traffico destinato alla rete pubblica, lo
invia prima al nodo su cui è configurato nova-network che agirà come router inviando il
traffico sulla seconda interfaccia che è stata configurata appositamente.
Fig. 3.3 Multiple nodes and multiple adapters
32
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
3.1.2 FlatDHCP Network
Come il modello di configurazione Flat Network, anche il modello Flat DHCP collega le
istanze tutte allo stesso bridge, assegnando loro un indirizzo IP preso dal pool di indirizzi
della subnet configurata dall’amministratore di rete, con la differenza che tale indirizzo
viene assegnato alle istanze tramite la procedura DHCPDISCOVER inviata al dhcp locale.
Quando si utilizza la
modalità multi-host, ad ogni compute node viene fornito un
indirizzo IP privato dal pool di indirizzi, dopodiché viene lanciato un server DHCP
(dnsmasq), che si mette in ascolto sul bridge, che a sua volta lavorerà come gateway di
dafault per tutte le istanze in esecuzione su quel nodo.
Una delle particolari differenze da non trascurare riguarda la modalità che si utilizza in
quanto se si utilizza una modalità multi-host si ha la necessità di assegnare un indirizzo
diverso al bridge per ogni nodo, nel caso contrario ciò non è necessario.
Per garantire lo stesso indirizzo IP alle istanze nel tempo, FlatDHCPManager crea un file
statico in cui inserisce tutti i vari lease per ogni nodo, basandosi sui dati delle varie
istanze(MAC,IP, NOME-HOST) che si trovano all’interno del database di Nova.
Fig. 3.4 Modalità FlatDHCP Network in modalità multi-host
33
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
3.1.3 Vlan Network
La gestione della rete secondo le due modalità precedentemente discusse presenta delle
limitazioni, in quanto il pool di indirizzi è condiviso tra i vari tenant e inoltre tutte le
istanze condividono un singolo dominio di broadcast di livello 2 della pila ISO/OSI.
Per risolvere tale problematiche si può utilizzare la modalità VLAN Network, che risulta il
modalità di default per Openstack Compute.
In questo modello il Compute crea una VLAN e un bridge per ogni progetto, quest’ultimo
ottiene un intervallo di indirizzi privati che sono accessibili solo all’interno della VLAN.
Per permettere agli utenti di accedere alle istanze del proprio progetto si deve creare una
speciale istanza di VPN chiamata cloudpipe , dopodiché sarà compito di OpenStack
Compute generare un certificato e una chiave per l’accesso alla VPN, fornendo un
segmento di rete privata per ciascun istanza del progetto, a cui si può accedere tramite una
connessione VPN dedicata alla connessione ad Internet.
Con il modello di configurazione VLAN Network un server DHCP viene avviato per ogni
VLAN assegnando alle istanze di macchine virtuali gli indirizzi presi tra quelli disponibili
all’interno della sottorete. Queste ultime vengono specificate dall’amministratore di rete e
assegnate dinamicamente ad un progetto quando richiesto.
Una condizione molto importante per questo tipo di modalità riguarda, gli switch di rete
che devono supportare il “VLAN tagging” (802.1Q), che consente ai dispositivi di
condividere lo stesso dominio di broadcast di livello 2 solo nel caso in cui le frame che
trasmettono contengono lo stesso Vlan ID (VID), quest’ultimo viene inserito con ulteriori
4 byte nelle frame ethernet.
In conclusione possiamo affermare che il modello VLAN Network è un ottimo modello
per la gestione della rete in quanto fornisce un ottima scalabilità di livello 2 e l’isolamento
tra i vari tenant, tuttavia anch’esso soffre di alcune problematiche. Per esempio non è
possibile avere due differenti tenant in due differenti domini di broadcast di livello 2 che
usano lo stesso schema di indirizzamento; un ulteriore problematica riguarda la
dimensione del campo VID in quanto essendo 4 byte si possono avere al massimo 4096
VLAN e ciò può essere un problema per sistemi cloud di grandi dimensioni.
34
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Fig. 3.4 Modalità Vlan Network
3.2 Openstack Networking( “Neutron”)
OpenStack Networking, il cui progetto prende il nome di Neutron (ex Quantum), fornisce
agli operatori la possibilità di sfruttare tecnologie di rete differenti per gestire la propria
rete all’interno del cloud.
In particolare OpenStack Networking è un servizio di rete virtuale che fornisce delle API
per definire la connettività della rete e l’indirizzamento IP nel cloud che viene usato dagli
altri servizi di Openstack, come Openstack Compute.
3.2.1 Componenti
Per descrivere le risorse di rete le API di Openstack Networking si basano su un modello
semplice costituito dai seguenti componenti:
Network: dominio di rete isolata di livello 2, strettamente analogo alla VLAN nel dominio
delle reti fisiche. Più specificamente è un dominio di broadcast riservato al tenant che l’ha
creato oppure può essere condiviso se esplicitamente configurato. Esso rappresenta
l’elemento fondamentale per il modello in quanto sia i port che le subnet sono assegnate
ad una specifica network.
35
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Subnet: è un blocco di indirizzi IP di versione 4 o 6 con uno stato di configurazione
associato. In pratica si tratta di un pool di indirizzi da cui OpenStack è in grado di
assegnare gli indirizzi IP alle macchine virtuali. Ogni subnet è associata ad una rete ed è
specificata da un Classless Inter-Domain Routing (CIDR). Un tenant può opzionalmente
configurare per una particolare subnet, un gatway, la lista di name sever (DNS); le istanze
di macchine virtuali su questa subnet erediteranno automaticamente la configurazione.
Port: è un punto di connessione per collegare un singolo dispositivo, come la Network
Interface Controller (NIC) di un server virtuale ad una rete virtuale. Un’istanza di
macchina virtuale può collegare un adattatore di rete ad una rete virtuale attraverso un
port. Quando un port viene creato esso riceve un indirizzo IP fixed di una delle subnet
disegnate, in particolare tale indirizzo può essere uno specifico indirizzo presente nel pool
assegnato dall’utente su richiesta, oppure un indirizzo disponibile assegnato da Neutron.
Oltre ad assegnare indirizzi IP al particolare port, OpenStack permette anche di assegnare
uno specifico indirizzo MAC.
Grazie a questo modello quindi è possibile configurare ricche topologie di reti attraverso la
creazione di networks e subnets, permettendo agli altri servizi di OpenStack di interagire
con esse, per esempio il collegamento di dispositivi virtuali alle porte di una specifica rete
svolto dal servizio Openstack Compute.
OpenStack Networking inoltre fornisce ad ogni tenant la possibilità di avere più reti
private e di far scegliere agli stessi tenant lo schema di indirizzamento IP consentendo la
sovrapposizione con quelli usati dagli altri tenant presenti nel sistema. Così facendo
OpenStack Networking consente l’utilizzo del cloud networking in casi d’uso avanzati
come la costruzione di applicazioni web multi-tiered oppure di eseguire la migrazione di
VM, senza cambiare indirizzo IP, da una rete a un’altra.
36
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
3.2.2 Plug-in
L'API Neutron espone l'interfaccia del servizio di rete virtuale per gli utenti e altri servizi,
ma l'effettiva implementazione di tali servizi di rete risiede in un plug-in che fornisce
isolate reti virtuali ai tenants e altri servizi come la gestione degli indirizzi.
OpenStack Networking introduce il concetto di un plug-in , che è una implementazione
back-end della API OpenStack Networking. Un plug-in può utilizzare una varietà di
tecnologie per attuare le richieste API.
Alcuni plug-in di Openstack Networking possono utilizzare i concetti usati nel modello di
gestione di rete attraverso il servizio OpenStack Compute (VLANS,e IP tables), tuttavia
questi sono in genere sufficienti per le reti piccole e semplici, ma non per casi d’uso più
avanzati, quindi ad essi si affiancheranno altri plug-in che fanno uso di tecnologie più
avanzate quali L2-in-L3 tunneling o OpenFlow.
L'architettura plug-in quindi offre una grande flessibilità di personalizzare le funzionalità
della rete all’amministratore del cloud.
I plug-in possono avere proprietà differenti per requisiti hardware, caratteristiche,
prestazioni o dimensioni, quindi grazie alla grande quantità di plug-in offerti,
l’amministratore del cloud può valutare tra le varie opzioni per decidere la giusta
tecnologia di rete.
Nell’ultima release Havana è stato introdotto un nuovo plug-in ML2,
acronimo di
modular layer 2 è un framework che permette ad OpenStack Networking di utilizzare
contemporaneamente la varietà di tecnologie di rete di livello 2 che si trovano in
complessi data centers del mondo reale. Attualmente collabora con gli esistenti gli agenti
di livello 2 di Open vSwitch, Linux Bridge, e Hyper-v , ed è destinato a deprecare e
sostituire i plug-in monolitici associati a tali agenti.
Infatti dalla prossima release Icehouse Open vSwitch, Linux Bridge verranno rimossi in
quanto essi faranno parte di ML2 sottoforma di meccanismi driver.
ML2 plug-in quindi è destinato a semplificare notevolmente l’aggiunta di un supporto per
le nuove tecnologie di livello 2, richiedendo meno sforzo iniziale e continuo di quanto
sarebbe necessario per aggiungere un nuovo plug-in monolitico.
37
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
In Fig.3.5 si possono notare tutti l’insieme dei plug-in attualmente utilizzabili in Neutron
con la relativa compatibilità ai driver di Compute.
Fig. 3.5 Plug-in supportati con relative compatibilità
3.2.3 Architettura
Come gli altri servizi di OpenStack anche OpenStack Networking spesso si avvale di
diversi processi distribuiti su una vari host.
Il processo principale di OpenStack Networking è neutron-server, un demone scritto in
Pyton che espone le OpenStack Networking API e passa le richieste degli utenti al plug-in
configurato, per ulteriori elaborazioni.
Oltre al processo principale OpeStack Networking prevede agenti aggiuntivi quali:
 plug-in agent (neutron-*-agent): esegue su ogni hypervisor per la configurazione
locale degli switch virtuali, l’agente che viene eseguito dipende dal plug-in che si
utilizza, inoltre alcuni plug-in non richiedono alcun agente.
 dhcp agent (neutron-dhcp-agent): fornisce servizi DHCP.
 l3 agent (neutron-l3-agent): fornisce l’instradamento L3/NAT per fornire l’accesso
alla rete esterna alle macchine virtuali.
38
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
 l3 metering agent (neutron-metering-agent): fornisce le misurazioni del traffico di
livello 3.
Questi agenti interagiscono con il processo principale (neutron-server) attraverso la coda
di messaggi per esempio RabbitMQ o Qpid, oppure attraverso le standard API
Networking.
Inoltre questo servizio consente agli amministratori del cloud di eseguire uno o più
servizi su uno o più dispositivi fisici.
Quindi l’amministratore del cloud può eseguire tutti i demoni di servizio su un singolo
host per una fase di valutazione, in alternativa però l’amministratore può eseguire ogni
servizio su un proprio host fisico e in alcuni casi può replicare i servizi tra più host per
effettuare ridondanza.
Un architettura standard include un cloud controller host, un network gateway host e una
serie di hypervisor che eseguono le macchine virtuali. Il cloud controller e il network
gateway possono essere sullo stesso host, tuttavia se si vuole evitare la contesa della CPU
da parte di neutron-l3-agent e gli altri servizi di OpenStack che inoltrano i pacchetti
quando utilizzano macchine virtuali per inviare traffico per/da Internet, viene utilizzato
un network gateway dedicato.
Per implementare un architettura del genere OpenStack Networking offe più reti quali :
 Management network: fornisce una comunicazione interna tra i componenti di
OpenStack . Gli indirizzi IP all’interno su questa rete sono raggiungibili solo
all’interno del data center.
 Data network: fornisce una connettività tra le varie istanze di macchine virtuali,
consentendo uno scambio di dati tra esse. I requisiti sugli indirizzi IP in questa
rete dipendono dal plug-in utilizzato.
 External network: fornisce alle macchine virtuali una connettività ad internet. In
questa rete chiunque su Internet può raggiungere gli indirizzi IP.
39
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
 API network: fornisce ai tenant tutte le API OpenStack , tra cui l’API Networking
. Gli indirizzi IP su questa rete sono raggiungibili da chiunque su Internet.
Fig. 3.6 Connetività di rete per gli host fisici
3.2.4 Casi d’uso
Tra i principali scenari di OpenStack Networking vi sono:
Single Flat Network:
Rappresenta il caso più semplice di utilizzo, in cui vi è una sola
subnet per tutti i tenant, detta Shared Network, visibile attraverso le API Networking.
In particolare le macchine virtuali hanno una sola interfaccia di rete e ricevono un
indirizzo IP fixed dalla subnet associata a quella rete. Praticamente si mappano i modelli
FlatManager e FlatDHCPManager forniti da Openstack Compute.
Tale scenario è anche conosciuto come “provider network” , poichè si mappa la shared
network su una rete fisica già esistente, consentendo di raggiungere il mondo esterno alle
macchine virtuali utilizzando un ruoter fisico come gateway.
40
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Fig. 3.7 Single Flat Network
Multiple Flat Network: Questo caso di utilizzo è molto simile al precedente (Single Flat
Network), con la differenza che vi sono più shared network per i tenant visibili attraverso
le API Networking, e ogni tenant può scegliere una o più shared network da utilizzare.
Fig. 3.8 Multiple Flat Network
41
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Mixed Flat and Private Network: In questo caso d’uso vi sono una o più shared
network per tutti i tenant, in cui questi ultimi hanno la possibilità di definire una rete
virtuale privata ad uso esclusivo. Inoltre in tale scenario le macchine virtuali possono
avere più interfacce su una qualsiasi delle shared network e/o una qualsiasi rete privata.
Ciò consente la creazione di topologie “mult-tier” e inoltre permette di fornire servizi quali
NAT o load balancer attraveso una macchina virtuale che agisce come gateway.
Fig. 3.9 Mixed Flat and Private Network
Provider Router with Private Networks : Questo caso d’uso permette ad ogni tenant di
collegarsi con le loro reti private al mondo esterno attraverso un router creato e gestito
dall’amministratore. Al router viene assegnato un indirizzo IP che verrà utilizzato come
gateway_ip per la subnet external network, quindi un default router per il traffico Internet.
Il router fornisce connettività di livello 3 tra le reti private , il che significa che si possono
mettere in comunicazione le VM di tenants differenti.
Inoltre poiché vi è un solo router in questo caso d’uso non vi è possibilità di utilizzare IP
sovrapposti.
42
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Fig. 3.10 Provider Router with Private Networks
Per-tenant Routers with Private Networks: Uno scenario più avanzato in cui ogni tenant
riceve almeno un router a cui si associa un uplink e un floating IP presi dalla External
Network, e può crearne altri accedendo alle API Networking.
L’accesso alla rete esterna avviene mediante SNAT o IP floating, inoltre poiché ci sono più
router, più subnet possono essere sovrapposte senza entrare in conflitto ovvero è possibile
l’overlap degli indirizzi IP. Con tale scenario è possibile definire applicazioni multi-tier
separando i livelli di rete tramite i routers.
Fig. 3.11 Per-tenant Routers with Private Networks
43
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
3.2.5 Namespaces
Uno dei concetti fondamentali in Openstack Networking è il concetto di namespaces, in
quanto esso si pongono come una delle migliori soluzioni per la sicurezza per ogni tenant
all’interno della rete. Infatti con i namspaces il traffico di rete e le varie interfacce sono
completamente isolate tra i vari tenants come si può notare dalla Fig. 3.12.
Fig. 3.12 Namespaces
Uno dei principali vantaggi offerti dai namespaces è quello di poter creare indirizzi IP
sovrapposti, fornendo così all’utente piena libertà, creando subnet senza alcun timore che si
può verificare un conflitto.
Se il Kernel non supporta i namespaces si avranno le seguenti limitazioni in Neutron:
 Neutron-l3-agent è limitato a fornire un unico router virtuale per ogni compute
node.
 Per ogni neutron-l3-agent è necessario configurare Universally Unique ID (UUID)
che identifica univocamente l’istanza di router che ospita. Ciò rende impraticabile
la configurazione self-service.
 neutron-l3-agent and neutron-dhcp-agent devono essere eseguiti su host diversi in
quanto non vi è alcun isolamento tra gli indirizzi IP creati dai due agenti. Quindi un
utente manipolando le tabelle di routing può avere accesso ad un'altra rete.
44
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
3.2.6 FWaaS
Uno dei principali servizi introdotti nella release Havana è FWaaS, acronimo di firewallas-a-service, che consente la creazione di una o più istanze logiche di firewall ai tenants.
Il firewall logico non è altro che un’istanza del modello Firewall Policy ovvero un modello
in cui vi è un elenco ordinato di regole firewall e può essere creato sia dai tenants sia dagli
amministratori.
Quindi quando si creano delle regole firewall esse non vengono applicate direttamente al
firewall virtuale, ma vengono aggiunte al Firewall Policy, dopodiché il Firewall Policy
riapplica tali regole per avere effetto. Questo processo in due fasi consente di effettuare
controllare il Firewall Policy dopo che le regole sono state inserite e prima che esse
vengono applicate.
Fig. 3.13 Relazioni tra le varie entità
Grazie a tale servizio è possibile definire zone di sicurezza, ovvero un insieme di risorse che
sono soggette ad una stessa serie di regole firewall(es. definire le regole di accesso per un
singolo nodo di destinazione).
Quindi un’aggiunta o una modifica di una regola in una zona di sicurezza, provoca la
modifica su tutti i nodi e firewall nella zona.
Un tipico scenario in cui risulta utile definire zone di sicurezza può essere un data center
multiple tenants, definendo l’accessibilità attraverso un insieme di regole, ovvero attraverso
il firewall esterno o perimetrale si stabilisce chi da fuori può raggiungere i tenants.
Un possibile modello di funzionamento è rappresentato in Figura 3.14
45
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Fig. 3.14 Modello FWaaS
Il FWaaS L3 Agent fornisce l’interfaccia tra il plug-in e il Driver. L’agente estrae le
specifiche per il driver dal plug-in gestendo le seguenti API:

create_firewall()

update_firewall()

delete_firewall()
L’agente processa queste richieste API, elaborando in primo luogo le informazioni richieste
al Driver (es namespaces), dopodiché inizia la relativa azione del Driver. Una volta
completata l’azione il Driver restituisce il risultato, dopodiché l’agente passa le
informazioni sullo stato al Plug-in.
46
Analisi del sistema di gestione di rete nella piattaforma di cloud computing OpenStack
Conclusioni
Dal lavoro svolto in questo elaborato si può notare quanto la rete rappresenti il principale
fattore per il cloud computing, in quanto con essa si riesce ad abilitare l’accesso ai vari
servizi del cloud, garantendo flessibilità, scalabilità, dinamismo e sicurezza di accesso.
In particolare si è visto la gestione della rete all’interno della piattaforma OpenStack,
presentando quello che è stato il primo e unico modo di gestirla per poi passare allo studio
di quello che è stato una vera e propria rivoluzione per la gestione della rete, ovvero lo
studio del servizio OpenStack Networking (“Neutron”).
Dallo studio è emerso che le gestione attraverso il componente nova-network porta ad una
serie di limitazioni, in quanto esso rappresenta un processo monolitico che rende
complicato l’inclusione delle ultime e avanzate tecnologie di rete.
Dallo studio di OpenStack Networking (“Neutron”), si possono notare i componenti,
l’architettura e le varie funzionalità offerte, notando come l’architettura a plug-in sia il vero
punto di forza di tale servizio.
Grazie a Neutron, nato come progetto sperimentale nella release Folsom , si possono
eliminare le principali limitazioni presenti in nova-network.
Nell’attuale release Havana, OpenStack Networking è diventato parte fondamentale di
OpenStack e dalla prossima release Icehouse si potrebbe assistere alla deprecazione del
componente nova-network in favore di Neutron.
47
Bibliografia
[1]
https://www.wikipedia.org - Wikipedia
[2]
http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf - The NIST
Definition of Cloud Computing
[3]
http://www.hspi.it/files/Cloud%20Computing%20Reference%20Architecture.pdf –
Cloud Computing Reference Architecture
[4]
http://docs.openstack.org/admin-guide-cloud/content//ch_getting-started-with-
openstack.html – Documentazione OpenStack
[5]
https://wiki.openstack.org/wiki/ReleaseNotes/Havana - OpenStack Release Havana
Notes
[6]
http://docs.openstack.org/training-guides/content/module002-ch001-networking-in-
openstack.html - Networking in Openstack
[7]
http://www.mirantis.com/blog/openstack-networking-flatmanager-and-
flatdhcpmanager/ - OpenStack Networking – FlatManager and FlatDHCPManager
[8]
http://www.mirantis.com/blog/openstack-networking-vlanmanager/
-
OpenStack
Networking – FlatManager and FlatDHCPManager
48