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'> <name>r1-quagga</name> <memory>1048576</memory> <vcpu>1</vcpu> <os> </os> <type arch='x86' machine='pc'>hvm</type> <boot dev='sda'/> <features> <acpi/> </features> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='file' device='disk'> <source file='/usr/virtlab/images/quagga-clone.qcow2'/> <target dev='sda' bus='ide'/> </disk> </devices> </domain> <interface type='bridge'> <source bridge='br0'/> <target dev='fa0/0'/> </interface>
<network> <name>bridges</name> <bridge name="br0" /> </network> 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 Nepovinné vlastnosti Možnosti automatizace Licence Formát obrazů podpora IPv6 podpora VLAN pomocí nativního nástroje pomocí libvirt Možnost využití ve Virtuální laboratoři IOU Dynamips QEMU XEN UML KVM Pouze pro interní potřeby Cisco Systems a partnerů GNU/GPLv2 GNU/GPLv2 GNU/LGPLv2.1 GNU/GPLv2 GNU/GPL GNU/GPLv2 GNU/LGPLv2.1 Ano Ano Ano Ano Ano Ano Ne Ne Ano Ano Ano Ano qcow2 Ne Ne Ano Ano Ne Ano qcow Ne Ne Ano Ano Ne Ano cow Ne Ne Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano Ano NE NE ANO ANO ANO ANO Tabulka 1 Přehled vlastností nástrojů pro virtualizaci
Obrázek 12 Architektura systému Quagga
Obrázek 13 Vnitřní architektura platformy XORP
Tabulka 2 Srovnání vybraných směrovacích platforem IP protokol Dynamické směrovací protokoly Statické směrování Licence Možnost debuggingu Podpora linuxu Muticast Interaktivní CLI Další zajímavé vlastnosti a protokoly Vhodnost implementace do Virtuální laboratoře IOS routed gated Quagga BIRD XORP IPv4 Ano Ano Ano Ano Ano Ano IPv6 Ano Ne Ne Ano Ano Ano Ano Nepřímo Ano Ano Ano Ano RIPv1 Ano Ano Ano Ano Ne Ne RIPv2 Ano Ne Ano Ano Ano Ano RIPng Ano Ne Ne Ano Ne Ano OSPFv2 Ano Ne Ano Ano Ano Ano OSPFv3 Ano Ne Ne Ano Ano Ano EIGRP Ano Ne Ne Ne Ne Ne EIGRP pro IPv6 Ano Ne Ne Ne Ne Ne IS-IS Ano Ne Ne Ano Ne Ano BGPv4 Ano Ne Ano Ano Ano Ano Komerční GNU/GPL velmi sofistikovaná a komplexní integrován v Unix-like systému těžkopádná Ano, není uvedeno od jaké verze GateD Redistribution License ano, omezené filtrování Ano, není uvedeno od jaké verze Ano Ne Ne GNU/GPL GNU/GPL GNU/GPL komplexní komplexní základní od kernelu 2.4 od kernelu 2.0 Ne, příslíbeno od verze 2 Ne Ano, není uvedeno od jaké verze PIM-SM, IGMP v1 v2 a v3 Ano Ne Ne Ano, IOS-like Ano Ano, JunOS-like dle verze --- --- NE Možné, neužitečné Možné pokud se podaří zíkat akademickou licenci Autentifikace RIPv2 a OSPF, SNMPv3 ANO - velmi žádoucí --- Autentifikace RIPv2, SNMPv3 ANO - velmi žádoucí ANO - velmi žádoucí
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]. 2005, 2012 [cit. 2012-04-27]. Dostupné z: http://www.springsource.org/
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ÍČ librarypath maxdevices hypervisor POPIS PROMĚNNÉ Umístění knihovny obrazů v souborovém systému. Číslo, které definuje maximální počet běžících instancí v daný okamžik. Typ použitého hypervisora, pro tvorbu konfiguračních XML skriptů pro libvirt.
Obrázek 25 Konkretizace Backend Application logic
2 Glassfish Project [online]. 2008 [cit. 2012-04-27]. Dostupné z: http://java.net/projects/glassfish 3 JBoss Comunity [online]. 2007 [cit. 2012-04-27]. Dostupné z: http://www.jboss.org/
Obrázek 26 Architektura systému Virtuální laboratoře