Netkit4TIC
Laboratorio virtuale per lo studio
delle reti
tratto dall’intervento del
prof. Sandro Doro - ZuccanteDay 2005
Gli ambienti virtuali
Da alcuni anni si stanno diffondendo
progetti il cui scopo è quello di simulare
altri sistemi, sia hardware che software.
La virtualizzazione di una intera macchina
apre nuovi scenari nella sperimentazione
con il software.
User Mode Linux
Normalmente un programma che necessita
dell’uso dell’hardware (scheda video,
tastiera, ecc) deve richiedere il servizio al
kernel. Nel caso di utilizzo del sistema UML
la richiesta
viene fatta al
kernel UML.
QEMU processor emulator
È un progetto di Fabrice Bellard. È un
emulatore multipiattaforma che permette di
eseguire del codice Linux compilato per una
particolare CPU su di un processore x86.
Dà la possibilità di usare direttamente le
immagini ISO e quindi senza dover
masterizzare.
Utilizzi dell’emulazione
Negli istituti tecnici a indirizzo informatico,
nell’ultimo anno di corso, si studiano le reti e
le applicazioni web. Sarebbe opportuno:
• mettere a disposizione per ogni studente
un gruppo di calcolatori da configurare e
amministrare
• avere la stessa architettura anche a casa
Cos’è Netkit http://www.netkit.org
Netkit è il risultato del lavoro di alcune
persone del Networks Research Group
dell’Università di Roma 3 e del LUG Roma 3.
Il software è composto da:
• un insieme predefinito di comandi per il
setup di macchine virtuali
• un filesystem con preinstallato il software
necessario per le sperimentazioni
Cos’è Netkit
Netkit è stato concepito come un ambiente a
basso costo per esperimenti di rete.
All’interno del suo ambiente possono essere
creati e interconessi router, switch e host.
Tali apparati sono virtuali ma possono
operare con molte delle caratteristiche
possedute da quelli reali.
Struttura
• Basato su User Mode Linux
• Ogni apparato di rete è una linux box
• Le varie istanze che simulano gli
apparati di rete sono create all’interno
dello stesso host
• Le varie istanze sono interconnesse in
domini di collisione (hub/switch)
• I ruoli dei nodi sono configurabili
Esperienze possibili
• Esperienze base: rete minimale con due host,
tabelle di routing, protocollo ARP, protocollo RIP.
• Esperienze applicative: configurazione di DNS e
Mail server.
• Esperienze avanzate: esperienze su switch e
STP.
• Esperienze sul routing interdomain (bgp): routing
tra Autonomous System.
Struttura del progetto
Live CD: è una distribuzione GNU/Linux in
grado di eseguire le esperienze senza
bisogno di installazione. Contiene:
• una versione di Knoppix elaborata per UML.
• un filesystem e un kernel per UML allineato
alla distribuzione GNU/Linux Debian sarge
• un filesystem per UML per il firewall con
librerie uClibc per sistemi embeded.
• una versione personalizzata di Netkit
Struttura del progetto
Internet: dal sito
http://www.tic.fdns.net/tic/html/lab.html
sono scaricabili le esperienze virtuali
(qualche Kbyte) in formato archivio
compresso (tgz).
UML e QEMU
Uso contemporaneo di due sistemi
di virtualizzazione: UML e QEMU.
In tal modo si possono utilizzare nodi
Linux e Windows
contemporaneamente.
L’ambiente Netkit
• Le macchine virtuali possono essere
controllate utilizzando due interfacce
ltools
vtools
UML kernel
(virtual machine)
uml_switch
(virtual hub)
Comandi Netkit - vtools
vstart
Start a virtual machine with a
given configuration
vconfig Attach a network interface to a
running virtual machine
vlist
List running virtual machines
vhalt
Gracefully shut down a virtual
machine
vcrash Kill a virtual machine
vclean
Panic button
Creazione di una VM
vstart [options] MACHINE_NAME
• Le più comuni opzioni:
– --ethN=dominio_di_collisione
• Interfacce del medesimo dominio di
collisione possono scambiarsi traffico
– -M quantità_di_memoria
Copy-On-Write: tutte le modifiche al filesystem
della VM vengono scritte su pc1.disk
Sparse files: file vuoti non consumano spazio
NetKit …
• …è un insieme di macchine virtuali
preconfigurate che possono essere
attivate/disattivate tutte assieme
• …consiste in una gerarchia di directory
• …permette di impostare esperienze sulle
reti anche molto complesse
• …può essere gestito utilizzando opportuni
strumenti
Comandi Netkit - ltools
lstart
ltest
lhalt
lcrash
linfo
lclean
Start a Netkit lab or just some of
its machines
Start a Netkit lab in test mode
Gracefully shut down (some of) the
virtual machines of a lab
Kill (some of) the virtual machines
of a lab
Display info about a lab without
starting it; sketch the network
topology
Remove temporary files (no panic!)
Esempio di un laboratorio
Disegnare la topologia di rete da studiare
prima di implementarla
LEGENDA
1
eth1
A
9
eth0
B
30.3.3.0/24
10
eth0
11.0.0.8/30
Nome del
B dominio di
collisione
indirizzo
11.0.0.8/30
di rete
9
IP, ultimo byte
eth0 dell’interfaccia
A
*AN
Esempio di un laboratorio
• A lab consists of a hierarchy of directories
• Each (even empty) directory represents a
virtual machine
host machine
[email protected]:~/lab$ ls
as10r1 as10r2 lab.conf
[email protected]:~/lab$ █
A lab consisting of two
virtual machines
(as10r1, as10r2)
Check with linfo
• Link-level connections are described inside
the file lab.conf (in the lab root)
Esempio di un laboratorio
• lab.conf syntax
– vm[if]=cd
• vm: virtual machine name (e.g., as10r1)
• if: interface number (e.g., 0)
• cd: collision domain name (arbitrary string)
– vm[opt]=val
• opt: the name of a vstart option (e.g., mem)
• val: a value for that option
– Other optional items
• Informational: LAB_DESCRIPTION,
LAB_VERSION, LAB_AUTHOR, LAB_EMAIL,
LAB_WEB
• Explicit list of virtual machines (machines)
Esempio di un laboratorio
• Sample lab.conf
1
eth1
host machine
as10r1[0]=B
as10r1[1]=A
as10r2[0]=B
lab.conf
A
9
eth0
B
30.3.3.0/24
10
eth0
11.0.0.8/30
Scarica

1.Introduzione a NetKit