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 foo@host:~/lab$ ls as10r1 as10r2 lab.conf foo@host:~/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