FORMÁLNÍ ANALÝZA POČÍTAČOVÝCH SÍTÍ A JEJICH MODELOVÁNÍ Ing. Vladimír Veselý Podpora přednášky kurzu Vyspělé technologie
VIRTUALIZACE POČÍTAČOVÝCH SÍTÍ Vladimír VESELÝ ivesely@fit.vutbr.cz
AGENDA 1) Emulace/Simulace směrovačů a přepínačů 2) 3) 4) a jeho rozšíření 5) Cisco IOS over UNIX 2
MOTIVACE Vždy, když nemáme dedikovaný HW, nezbývá, než se uchýlit k SW řešením Co dělat, když si potřebujeme něco ozkoušet? Simulovat Co dělat, když nám chybí patřičný HW? Emulovat 3
EXISTUJÍCÍ NÁSTROJE SW implementace směrovačů Zebra Quagga XORP BIRD Simulátor Cisco zařízení s INETem a rozšířením ANSAINET Emulátor Cisco zařízení (rozšíření a ) (webový front-end IOU-web) 4
ÚVOD Oficiální Cisco simulátor pro podporu výuky na Cisco NetAcad Verze 5.3.3 Systémové požadavky: CPU: Intel Pentium III 500 MHz; OS: Microsoft Windows XP, Microsoft Windows Vista, Microsoft Windows 7, Fedora 11 nebo Ubuntu 8.04 LTS; RAM: 256 MB; Prostor na disku: 250 MB; Rozlišení: 800 x 600; Adobe Flash Player. 5
PODPOROVANÉ TECHNOLOGIE Linkové: DSL, Cable, 802.11a/b/g, Ethernet, PPPoE, STP a RapidSTP, 802.1q, LACP, PAgP; WAN: PPP, Frame Relay, HDLC, NAT, ACLs, SLARP; Směrování: statické, RIPv1, RIPv2, EIGRP, single-area a multiarea OSPF, BGP, inter-vlan routing, redistribuce; Aplikační protkoly: HTTP, HTTPS, DHCP, DHCPv6, Telnet, SSH, TFTP, DNS, TCP, UDP, IPv4, IPv6, ICMP, ICMPv6, ARP, IPv6 ND, FTP, SMTP, POP3, H.323, SCCP; Bezpečnost: IPsec, GRE, ISAKMP, NTP, AAA, RADIUS, TACACS, SNMP, SSH, SYSLOG, CBAC, Zone-based policy firewall, WEP, WPA, EAP. 6
VLASTNOSTI NEVÝHODA, že chybí spousta věcí: ISL zapouzdřování není vůbec HSRP/VRRP i GLBP není vůbec BGP, OSPF, RIP, EIGRP jen očesané verze GRE a jiné tunely dost omezené VÝHODOU je, že je to taková malá výkladní skříň CISCO produktů Je to skvělé na výuku CCNA, ale mizerné na CCNA Security a tragické pro CCNP! 7
UKÁZKA 8
UKÁZKA 9
UKÁZKA 10
PROPOJENÍ LABORATOŘÍ 11
ÚVOD Diskrétní simulátor vymyšlený a naprogramovaný Andresem Vargou počínaje rokem 1993 Framework pro simulaci IP sítí zvaný INET adoptovaný spolu s Rudolgem Hörnigem Rozšíření ANSAINET obhospodařované na FIT VUT výzkumnou skupinou NES@FIT Ve chvíli, kdy chcete dělat vědu 12
ARCHITEKTURA 13
STRUKTURA Simulační modely Topologie a jejich vzájemné propojení popsané jazykem NED Vnitřní logika a implementace chování modulu v jazyce C++ Spojení modulů mezi sebou pomocí vstupních a výstupních hradel, přes které se děje předávání zpráv 14
NED SOUBOR Podobnost s objektovým popisem v jazyce Java 15
ZÁKLADNÍ MYŠLENKA Formal Analysis Running configuration SNMP Create model 16
ANSAROUTER 17
IDE 18
ÚVOD V roce 2005 Christopher Fillot vytvořil na základě zpětného inženýrství projekt k emulování HW C7200 Verze 0.2.8 Emulátor kompletního HW routeru: CPU (MIPS64 a PowerPC) NVRAM a RAM (DRAM a SRAM) Bootflash (Intel) i jeho periferií: PA (port adapter) NM (network module) WIC (WAN interface card) NPE (network processing engine) 19
VLASTNOSTI V současnosti podporuje tyto Cisco sériové řady routerů: platforma C7200 model C7206 platforma C3700 modely 2691, 3725, 3745 platforma C3600 modely 3620, 3640 a 3660 platforma C2600 modely 2610, 2611, 2620, 2621, 2610XM, 2611XM, 2620XM, 2621XM, 2650XM, 2651XM platforma C1700 modely 1710, 1720, 1721, 1750, 1751, 1760 20
PREREKVIZITY IOS pro konkrétní model IOSovský image je v základu zabalen do ZIPu, pokud chceme emulátoru odlehčit, provedeme manuální rozbalení za něj Knihovna (Win/lib)Pcap pro odchytávání síťového provozu, ale i vyvedení laboratoře do reálného prostředí WireShark pro inspekci zachyceného provozu Terminálový klient (PuTTy) VirtualBox pro připojování virtuálních strojů Volitelně JunOS formou Olive a také ASA/PIX image 21
IDLE-PC HODNOTA Motivace: Když spustíme emulaci routeru, CPU našeho počítače ukazuje vytížení na 100% Důvod a řešení: emuluje HW a na něj naroubovává instrukce IOSu V každém IOSu však existují vycpávkové instrukce (obdoba NOOP v assembleru) Klíčem k odstranění nešvaru je říci emulaci jaký kód takové instrukci patří a ona je pak ignorována 22
UKÁZKA $ unzip -p c7200-advipservicesk9-mz.124-9.t.bin > image.bin warning [c7200-advipservicesk9-mz.124-9.t.bin]: 27904 extra bytes at beginning or within zipfile (attempting to process anyway) $ file image.bin image.bin: ELF 32-bit MSB executable, cisco 7200, version 1 (SYSV), statically linked, stripped $./dynamips image.bin -t npe-400 -p 1:PA-A1 -p 2:PA-8T -p 3:PA-4E Cisco 7200 Simulation Platform (version 0.2.5-x86) Copyright (c) 2005,2006 Christophe Fillot. IOS image file: image.bin CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb. NVRAM is empty, setting config register to 0x2142 C7200 instance 'default' (id 0): VM Status : 0 RAM size : 256 Mb IOMEM size : 0 Mb NVRAM size : 128 Kb NPE model : npe-400 Midplane : vxr IOS image : image.bin Loading ELF file 'image.bin'... ELF entry point: 0x80008000 C7200 'default': starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled. ROMMON emulation microcode. 23 Launching IOS image at 0x80008000...
HYPERVISOR Od verze 0.2.5 lze emulovat více routerů naráz, a to dokonce distribuovaně na více počítačích Hypervisor běží implicitně na TCP portu 7200 Přístup na konzole jednotlivých instancí routerů přes telnet na implicitní porty 2000, 2001, 2002, Podpora propojení více instancí routerů přes virtuální jednoduché ATM / Frame Relay / Ethernet switche Perfektní nástroj pro simulování laboratoří!!! Vedlo ke vzniku rozšíření pro snadnou správu a manipulaci s těmito laboratořemi 24
ÚVOD V roce 2006 Greg Anuzelli jakožto pythonovský přídavek umožňující pohodlnější správu: emulovaných routerů spojů mezi zařízeními globální konfigurace celé laboratoře lokálních konfigurací routerů Verze 0.11.0 25
NET SOUBOR Soubor, ve kterém je uložen formální popis celé simulované laboratoře Syntaxe jako INI soubor {<parametr> = <hodnota>}* {[<sekce>] }+ {<parametr> = <hodnota>}* {[[<podsekce>]] }+ {<parametr> = <hodnota>}+ Formální struktura: Obecná sekce Sekce klienta Podsekce modelu Podsekce zařízení 26
NET SOUBOR # Ukázková laborator autostart = false [localhost] [[7200]] image = \Program Files\\images\c7200-jk9o3s-mz.124-7a.image npe = npe-400 ram = 192 idlepc = 0x81237589 [[ROUTER R1]] s0/0 = R2 s1/0 [[router R2]] # Není potřeba definovat spojení z R2 na R1, protože už existuje 27
OBECNÁ SEKCE Parametr Hodnoty Popis autostart true false V případě hodnoty true se ihned po spuštění simulace nastartují všechny instance routerů. model 1700 2610 2611 2620 2621 Implicitní model routeru použitých v této simulaci. 2610XM 2620XM 2621XM 2650XM 2651XM 2691 3620 3640 3660 3725 3745 7200 ghostios true false Redukuje vytížení fyzické paměti způsobem, že tentýž IOS je mezi více routery v paměti nahrán a sdílen pomocí paměťových map sparsemem true false Redukuje vytížení virtuální paměti jednotlivých instancí routeru jen na hodnotu, kterou v dané chvíli opravdu spotřebovávají idlemax unsigned integer Maximální doba uspání routeru v případě detekce čekací smyčky. idlesleep unsigned integer Implicitní doba uspání routeru v případě detekce čekací smyčky. 28
SEKCE KLIENTA Parametr Hodnoty Popis console unsigned integer Základní port pro jednotlivá telnetová konzolová sezení. workingdir string Cesta k adresáři, ve kterém bude uchovávat všechny soubory týkající se spuštěné simulace. udp unsigned integer Základní port pro UDP NIO 29
30 PODSEKCE MODELU Parametr Hodnoty Popis image string Absolutní či relativní cesta k souboru se zvoleným IOSem pro danou modelovou řadu. ram unsigned integer Množství MB virutální paměti alokované pro každou instanci routeru stejné modelové řady. nvram unsigned integer Velikost NVRAM v MB. rom unsigned integer Velikost ROM v MB. disk<i> unsigned integer Velikost PCMCIA ATA disku, v současnosti je k dispozici emulace až dvou takovýchto disků, tzn. <i> = [1,2]. confreg 0x<unsigned integer> Šestnáctková hodnota konfiguračního registru. npe string NPE modul, hodnota řetězce může mít libovolnou hodnotu odpovídající podporovanému HW. midplane std vxr Nainstalovaný druh středové desky. mmap true false Pokud je nastaveno na false využívá se k emulaci virtuální paměti routerů dané modelové řady opravdové fyzické RAM namísto swapování na disk. idlepc 0x<unsigned integer> Šestnáctková hodnota idlepc viz. kapitola o Vytížení HW prostředků. exec_area unsigned integer Velikost spouštěcí oblasti v MB. configuration base64 string Startup konfigurace kódovaná do řetězce ve formátu base64. cnfg string Absolutní nebo relativní cesta k souboru se startup konfigurací uložené ve formátu plain-text. ghostios true false Viz předchozí slidey. sparsemem true false Viz předchozí slidey. idlemax unsigned integer Viz předchozí slidey. idlesleep unsigned integer Viz předchozí slidey.
31 PODSEKCE ZAŘÍZENÍ Parametr Hodnoty Popis model unsigned integer Hodnota udává model konkrétního routeru, a jaká pro něj vyplývají nastavení v sekci modelové řady. console unsigned integer Specifikuje hodnotu konzolového portu přepisujíc tak implicitní nastavení v sekci obecných nastavení. aux unsigned integer Auxiliary port pro daný router. mac MAC-48 (: konvence) Základní MACovská adresa tohoto routeru, přičemž pokud není explicitně specifikována tímto nastavením je generována náhodně automaticky. slot<i> string Řetězec, který specifikuje použitý portový adaptér PA nebo síťový modul NM. Může nabývat hodnot uvedených v kapitole Podporovaný HW. Přičemž parametr <i> může nabýt platných číselných hodnot jednotlivých slotů. wic<j>/<i> string Pro modely routerů, které podporují WIC karty umožňuje ručně definovat, jaké WIC jsou nainstalované. Může nabývat hodnot uvedených v kapitole Podporovaný HW. Přičemž parametry <j>, <i> můžou nabývat číselných hodnot jednotlivých portů. [f s a]<j>/<i> <device> [f s a]<j>/<i> Na levé straně stojí rozhraní, které chceme spojit s na pravé straně stojícím zařízením <device> a jeho rozhráním. Obě rozhraní jsou definována řetězcem skládajícím se z typu rozhraní (s = sériové, f = fastethernetovské, a = ATM) a jeho číselného označení portů <j>/<i>.
OVLÁDACÍ KONZOLE 32
ÚVOD V roce 2007 jakožto grafická nádstavba (jakési GUI) pro řízený em Integrace QEMU a PEMU VirtualBoxí virtuální mašinky Aktuální verze 0.8.3.1 33
GUI 34
NASTAVENÍ 1 35
NASTAVENÍ 2 36
NASTAVENÍ 3 37
NASTAVENÍ 4 38
NASTAVENÍ 5 39
SPRÁVCE IOSŮ Cisco Feature Navigator 40
L3 SWITCH 1 Motivace: Nikde však není emulátor L3 switche, pročpak? Odpověď: Cat3500 mají příliš odlišnou architekturu HW od routerů a jejich emulace (např. TCAM tabulky) je netriviální Řešení: Vždyť ale existuje NM-16ESW! 41
L3 SWITCH 2 42
ÚVOD IOS démon na unixovém systému Posvěcení existence tohoto nástroje: Cisco IOS on Unix is a tool intended for internal use only. Distribution of IOU images to customers or external persons, or discussion of IOU with customers or external persons, is prohibited. DON T DO IT OR WE LL HAVE TO COME AND KILL YOU! Experimentální nástroj určený pro CCIE praktické zkoušky a interní potřeby Cisco (studium technologií bez nutnosti mít IOS nahraný do konkrétního HW) 43
PODPOROVANÉ TECHNOLOGIE Dvě obecné platformy Cisco L2IOU K sehnání následující varianty IOSů pro 12.4 nebo 15.x ipbase ipbase+pagent advancedenterprisek enterprise 44
VLASTNOSTI VÝHODY oproti u: Víc stabilní (není potřeba emulovat HW, čistě SW řešení) Lepší výkon Nehrozí umření jako v případě NEVÝHODOU je absence pomocných provozů: Není podpora capturingu Nejsou rozšiřující moduly (PA, NM, WIC) ani ATM či POS Sehnat aktuální binárku je mnohem těžší než samotný IOS 45
PREREKVIZITY 46 Binárky IOURC soubor s licencí NETMAP soubor s topologií Syntaxe: <ID>:<IFACE#>[/<IFACE#>][@<HOST>] {<ID>:<IFACE#>[/<IFACE#>][@<HOST>]}+ Ukázka 1:0/0 2:0/0 1:0/1 2:0/1 3:0/0 4:0/0 3:0/1 4:0/1 1:0/2 3:0/2 1:0/3 3:0/3 2:0/2 4:0/2 2:0/3 4:0/3 1:1/0 4:1/0 1:1/1 4:1/1 2:1/0 3:1/0 2:1/1 3:1/1
SPUŠTĚNÍ IOU $./i86bi_linux-advententrpreisek9-ms -h Usage: <image> [options] <application id> <image>: unix-js-m unix-is-m unix-i-m... <application id>: instance identifier (0 < id <= 1024) Options: -e <n> Number of Ethernet interfaces (default 2) -s <n> Number of Serial interfaces (default 2) -n <n> Size of nvram in Kb (default 16K) -c <name> Configuration file name -d Generate debug information -t Netio message trace -q Suppress informational messages -h Display this help -C Turn off use of host clock -m <n> Megabytes of router memory (default 64) -L Disable local console, use remote console -u <n> UDP port base for distributed networks $./i86bi_linux-advententrpreisek9-ms s1 e0 1 Instance se ukončuje pomocí CTRL+C 47
WRAPPER Spouštění na pozadí a zpřístupnění konzole přes TCP port $./wrapper Usage:./wrapper [-v] -m<image name> -p<port number> -- [iou options] <ID> where <port number> is in the range <1024-65550> all options after the '--' are passed to iou [-v] Display version $./wrapper -m./i86bi_linux-advententrpreisek9-ms -p 2000 -- -e0 -s1 -m 64 100 Jak ukončit instanci, když používám Wrapper? $ ps -ef grep wrapper awk '{ print $2 }' xargs kill $ killall wrapper 48
IOU-WEB Webový front-end nad laboratořemi využívajícími, který naprogramoval Andrea Dainese Verze 1.2.0-17 Systémové požadavky: OS: Debian, RedHat/Centos/Fedora, FreeBSD Apache 2.22 49
WEB GUI 1 50
WEB GUI 2 51
WEB GUI 3 52
WEB GUI 4 53
WEB GUI 5 54
ZHODNOCENÍ A který nástroj mám tedy začít používat??? 55
KDE ZÍSKAT? http://www.cisco.com/web/learning/netacad/course_catalog/packettrac er.html http://www.omnetpp.org/omnetpp http://inet.omnetpp.org/ https://nes.fit.vutbr.cz/ansa/pmwiki.php?n=main.homepage http://www.gns3.net/download/ http://www.google.com/search?q=ciscou+iou+livecd 56
REFERENCE //: Novinky pro : http://www.ipflow.utc.fr/blog/ Návod k Dynegenu: http://dynagen.org/tutorial.htm Stránky : http://www.gns3.net Fórum komunity: http://7200emu.hacki.at/index.php Videotutoriály: http://www.blindhog.net Návod k použití: http://evilrouters.net/2011/01/18/cisco-iou-faq/ Cracknutí licence: http://freeccnalabs.com/cisco-ios-on-unix-licensing/ Web GUI: http://the1979s.wordpress.com/cisco/cisco-iou-web-interface/ 57