Obrázek 1 Obecné části Virtuální laboratoře
Obrázek 2 Fyzický a virtuální prvek počítačové sítě
Obrázek 3 Ilustrace nativního běhu simulátorů
Obrázek 4 Potenciální využití emulátorů ve Virtuální laboratoři
Obrázek 5 Ukázka příkladu využití paravirtualizace
Obrázek 6 Ukázka využití plné virtualizace (KVM)
root@virtlab:/#cat /proc/cpuinfo | grep flags flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
root@virtlab:/#virsh –connect qemu+ssh://root@quagga-router/system
root@virtlab:/#virsh create R1-quagga.xml
<domain type='kvm'>
R1-quagga <memory>1048576
1 hvm <devices> <emulator>/usr/bin/kvm
<source file='/usr/virtlab/images/quagga-clone.qcow2'/> <source bridge='br0'/>
bridges
root@virtlab:/#virsh net-define /usr/virtlab/network/network1.xml
root@virtlab:/#virsh net-start bridges
root@virtlab:/#virsh start R1-quagga
Obrázek 7 Ukázka rozhraní simulátoru IOU převzatý z [11]
Obrázek 8 Princip techniky práce s delta-soubory
root@virtlab:/#qemu-img create -f qcow2 quagga-base.qcow2 50M
root@virtlab:/#qemu -m 128 -hda quagga-base.qcow2 -cdrom install_disc.iso -boot d
root@virtlab:/#qemu-img create -b quagga-base.qcow2 -f qcow2 quaggaclone.qcow2
root@virtlab:/#qemu -hda quagga-clone.qcow2 -kernel-kqemu
root@virtlab:/#qemu -m 128 -hda quagga-clone.cow2 -net tap, ifname=tap0
root@virtlab:/#dynamips /usr/ios/C2691.bin –T 2000 –r 256 –c /usr/cfg/rtr-cfg.txt -p 2:PA-2FE-TX
IF:E0:udp:10000:127.0.0.1:10001 IF:E1:udp:10002:127.0.0.1:10003 IF:E2:gen_eth:eth0 TOT1Q:E0:10 ACCESS:E1:4 DOT1Q:E2:20
root@virtlab:/#dynamips /usr/ios/IOS.bin –p 1:PA-S1 –s 1:0:udp:10001:127.0.0.1:10003 –p 2:PA-S1 –s 2:0:udp:10002:127.0.0.1:10004 –f /usr/cfg/fr-cfg.txt
IF:S0:udp:10003:127.0.0.1:10001 IF:S1:udp:10004:127.0.0.1:10002 VC:S0:102:S1:201 VC:S1:201:S0:102
root@virtlab:/#dynamips /usr/ios/IOS.bin –p 1:PA-A1 –s 1:0:udp:10001:127.0.0.1:10003 –p 2:PA-A1 –s 2:0:udp:10002:127.0.0.1:10004 –f /usr/cfg/atm-cfg.txt
IF:A0:udp:10003:127.0.0.1:10001 IF:A1:udp:10004:127.0.0.1:10002 VC:A0:1:100:A1:2:200 VC:A1:2:200:A0:1:100
Obrázek 9 Schéma vnitřní architektury XENu 4.1
Obrázek 10 Logika virtuální sítě v XENu
kernel = “/boot/vmlinuz-2.6-xenU“ memory = 128 name = “quagga-preconfigured“ vif = [ ‘vifname=vif1.0,bridge=br0’, ‘vifname=vif1.1,bridge=br1’ ] dhcp = “no” disk = [‘tap:aio:/home/xen/images/routers/quagga-clone.qcow2, sda1, w’] root = “/dev/sda1 ro”
root@virtlab:/#xm create quagga-xen.cfg
Obrázek 11 Systémová volání procesu UML a ostatních procesů
root@virtlab:/#linux mem=128M sda=quagga-clone.cow
root@virtlab:/#qemu-kvm -m 128 -hda quagga-clone.cow2 -net tap, ifname=tap0
root@virtlab:/#kvm -m 128 -hda quagga-clone.cow2 -net tap, ifname=tap0
Povinně požadované vlastnosti
pomocí nativního Možnosti nástroje automatizace pomocí libvirt qcow2 Formát obrazů qcow cow podpora IPv6 Nepovinné podpora VLAN vlastnosti Možnost využití ve Virtuální laboratoři
Licence
Ano Ano Ano Ano Ano Ano Ano ANO
Ano Ano Ne Ne Ano Ano Ano ANO
Ano Ano Ano Ano Ano Ano Ano ANO
Ano Ano Ano Ano Ano Ano ANO
Ne Ne Ne Ne Ano Ano NE
Ne Ne Ne Ne Ano Ano NE
GNU/GPLv2 GNU/LGPLv2.1
KVM
Ano
GNU/GPL
UML
Ano
GNU/GPLv2
XEN
Ano
QEMU Dynamips IOU Pouze pro GNU/GPLv2 interní potřeby GNU/GPLv2 GNU/LGPLv2.1 Cisco Systems a partnerů
Tabulka 1 Přehled vlastností nástrojů pro virtualizaci
Obrázek 12 Architektura systému Quagga
Obrázek 13 Vnitřní architektura platformy XORP
Ano dle verze
NE
Další zajímavé vlastnosti a protokoly
Vhodnost implementace do Virtuální laboratoře
---
Ne
Možné pokud se podaří zíkat Možné, neužitečné akademickou licenci
---
Ne
routed Ano Ne Nepřímo Ano Ne Ne Ne Ne Ne Ne Ne Ne
gated Ano Ne Ano Ano Ano Ne Ano Ne Ne Ne Ne Ano GateD Komerční GNU/GPL Redistribution License velmi sofistikovaná a ano, omezené těžkopádná komplexní filtrování Ano, není integrován v Unix-like Ano, není uvedeno uvedeno od jaké systému od jaké verze verze Ano Ne Ne
IOS Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano
Interaktivní CLI
Muticast
Podpora linuxu
Možnost debuggingu
Licence
IPv4 IP protokol IPv6 Statické směrování RIPv1 RIPv2 RIPng Dynamické OSPFv2 směrovací OSPFv3 protokoly EIGRP EIGRP pro IPv6 IS-IS BGPv4
ANO - velmi žádoucí
Ne, příslíbeno od verze 2 Ano, IOS-like Autentifikace RIPv2 a OSPF, SNMPv3
od kernelu 2.4
komplexní
GNU/GPL
Quagga Ano Ano Ano Ano Ano Ano Ano Ano Ne Ne Ano Ano
Ano, není uvedeno od jaké verze PIM-SM, IGMP v1 v2 a v3 Ano, JunOS-like Autentifikace RIPv2, SNMPv3
základní
GNU/GPL
XORP Ano Ano Ano Ne Ano Ano Ano Ano Ne Ne Ano Ano
ANO - velmi žádoucí ANO - velmi žádoucí
---
Ano
Ne
od kernelu 2.0
komplexní
GNU/GPL
BIRD Ano Ano Ano Ne Ano Ne Ano Ano Ne Ne Ne Ano
Tabulka 2 Srovnání vybraných směrovacích platforem
root@virtlab:/#brctl addbr br0
root@virtlab:/#brctl addbr addif eth0 root@virtlab:/#brctl addbr addif eth1 root@virtlab:/#brctl addbr addif eth2
root@virtlab:/#brctl brctl stp br0 on
root@virtlab:/#ifconfig br0 up
root@virtlab:/#vconfig add eth0 2
Obrázek 14 Fyzické a virtuální propojení
Obrázek 15 Konkretizace komponenty Image library
Obrázek 16 Konkretizace komponenty Virtual topology
Obrázek 17 Model případu užití virtuální laboratoře
Obrázek 18 Doménový model Virtuální laboratoře
Obrázek 19 Diagram modelu datové vrstvy
1
Spring source comunity [online]. http://www.springsource.org/
2005,
2012
[cit.
2012-04-27].
Dostupné
z:
Obrázek 20 Diagram rozhraní a implementace uživatelské služby
Obrázek 21 Diagram rozhraní a implementace služby pro topologie
Obrázek 22 Diagram rozhraní a implementace služby pro hypervisory
Obrázek 23 Diagram rozhraní a implementace služby pro práci s obrazy
Obrázek 24 Diagram rozhraní a implementace pro konfiguraci
root@virtlab:/#qemu-img create -b quagga-base.qcow2 -f qcow2 quaggaclone.qcow2
ProcessBuilder pb = new ProcessBuilder("qemu-img", "create", "-b quagga-base.qcow2", "-f qcow2 quagga-clone.qcow2"); Process p = pb.start();
Connect conn=null; try{ conn = new Connect("test:///default", true); } catch (LibvirtException e){ System.out.println("exception caught:"+e); System.out.println(e.getError()); } try{ Domain testDomain=conn.domainLookupByName("test"); System.out.println("Domain:" + testDomain.getName()+"id"+ testDomain.getID() + " running " + testDomain.getOSType()); } catch (LibvirtException e){ System.out.println("exception caught:"+e); System.out.println(e.getError()); }
Tabulka 3 Identifikace a popis konfiguračních proměnných
KLÍČ
POPIS PROMĚNNÉ
libraryPath
Umístění knihovny obrazů v souborovém systému.
maxDevices
Číslo, které definuje maximální počet běžících instancí v daný okamžik.
hypervisor
Typ použitého hypervisora, pro tvorbu konfiguračních XML skriptů pro libvirt.
Obrázek 25 Konkretizace Backend Application logic
2 3
Glassfish Project [online]. 2008 [cit. 2012-04-27]. Dostupné z: http://java.net/projects/glassfish JBoss Comunity [online]. 2007 [cit. 2012-04-27]. Dostupné z: http://www.jboss.org/
Obrázek 26 Architektura systému Virtuální laboratoře