DYNAMIPS DYNAGEN/ Vladimír VESELÝ ivesely@fit.vutbr.cz
AGENDA Emulace/Simulace směrovačů a přepínačů Simulátor Emulátor a jeho rozšíření 2
MOTIVACE Když nemáme železo, 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čů XORP Quagga Zebra Simulátor CISCO zařízení Emulátor CISCO zařízení (rozšíření a ) 4
PACKETTRACER ÚVOD Oficiální CISCO simulátor pro podporu výuky kurzů CCNA bohužel JEN těchto kurzů Verze 5.2 Systémové požadavky: CPU: Intel Pentium 300 MHz or equivalent OS: Microsoft Windows 2000, Fedora 7 nebo Ubuntu 7.10 RAM: 96 MB Disk: 250 MB diskového prostoru Macromedia Flash Player 6.0 http://www.cisco.com/web/learning/netacad/course_catalog/pa ckettracer.html 5
PACKETTRACER VLASTNOSTI NEVÝHODA, že chybí spousta věcí: ISL zapouzdřování není vůbec HSRP/VRRP i GLBP není vůbec OSPF, RIP, EIGRP jen očesané verze BGP není vůbec GRE a jiné tunely dost omezené VÝHODOU je, že je to taková malá výkladní skříň CISCO produktů 6
PACKETTRACER UKÁZKA 7
PACKETTRACER UKÁZKA 8
PACKETTRACER UKÁZKA 9
DYNAMIPS ÚVOD V roce 2005 Christophe 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) 10
DYNAMIPS VLASTNOSTI V současnosti podporuje tyto CISCO sériové řady: platforma/model C7200 platforma C3700 model C3725 model C3745 platforma C3600 model C3620 model C3640 model C3660 platforma C2600 model C2610 model C2650XM model C2691 platforma/model C1700 Jednoduchý Ethernetovský/Frame-Relayový/ATM switch 11
DYNAMIPS PREREKVIZITY Terminálový klient (PuTTy) Knihovna (Win)Pcap pro odchytávání síťového provozu, ale i vyvedení laboratoře do reálného prostředí IOS pro konkrétní model: krást ho z laboratoří C304 a L307 je však zbytečné, ani jedno zde umístěné zařízení není em podporováno IOSovský image je v základu zabalen do ZIPu, pokud chceme emulátoru odlehčit, provedeme manuální rozbalení za něj 12
DYNAMIPS 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) pro synchronozaci Klíčem k odstranění nešvaru je říci emulaci jaký kód takové instrukci patří a ona je pak ignorována 13
DYNAMIPS 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. 14 Launching IOS image at 0x80008000...
DYNAMIPS 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, Perfektní nástroj pro simulování laboratoří!!! Vedlo ke vzniku rozšíření pro snadnou správu a manipulaci s těmito laboratořemi 15
DYNAGEN Ú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 16
DYNAGEN 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í 17
DYNAGEN 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 18
DYNAGEN 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. 19
DYNAGEN 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 20
21 DYNAGEN 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.
DYNAGEN 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ů. 22 [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>.
DYNAGEN OVLÁDACÍ KONZOLE 23
ÚVOD V roce 2007 jakožto grafická nádstavba (jakési GUI) pro řízený em Krom u však do sebe integrovalo ještě emulátory dalších síťových zařízení jako: CISCO PIX CISCO ASA JunOS od Juniperu nad Qemu SW router přes Quaggu 24
GUI 25
NASTAVENÍ 26
NASTAVENÍ 27
NASTAVENÍ 28
SPRÁVCE IOSŮ 29
L3 SWITCH 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í: Tak co kdybychom využili nějakého routeru a zabudovali do něj NM-16ESW! 30
L3 SWITCH 31
CHALLENGE LAB CCNP2 Pomocí správce symbolů (Edit->Symbol Manager) vytvořeny dva vlastní symboly zastupující C3640, a to: Cisco L3 switch Cisco L2 switch 32
33 CHALLENGE LAB CCNP2 autostart = True [localhost:7200] workingdir = D:\\CCNP3_working udp = 10000 [[3640]] image = F:\Install\Cisco IOS\Dekomprimovane\c3640- jk9o3s-mz.124-16.bin chassis = 3640 ghostios = True sparsemem = True [[ROUTER AS2]] model = 3640 console = 2012 cnfg = D:\\CCNP3_configs\AS2.cfg slot0 = NM-16ESW f0/1 = R1 f0/0 f0/7 = DS2 f0/7 f0/8 = DS2 f0/8 f0/9 = DS1 f0/9 f0/10 = DS1 f0/10 symbol = Cisco L2 switch x = 20.5 y = -24.0 [[ROUTER AS1]] model = 3640 console = 2011 cnfg = D:\\CCNP3_configs\AS1.cfg slot0 = NM-16ESW f0/7 = DS1 f0/7 f0/8 = DS1 f0/8 f0/9 = DS2 f0/9 f0/10 = DS2 f0/10 symbol = Cisco L2 switch x = -236.5 y = -20.0 [[ROUTER DS2]] model = 3640 console = 2008 cnfg = D:\\CCNP3_configs\DS2.cfg slot0 = NM-16ESW f0/7 = AS2 f0/7 f0/8 = AS2 f0/8 f0/9 = AS1 f0/9 f0/10 = AS1 f0/10 f0/11 = DS1 f0/11 f0/12 = DS1 f0/12 symbol = Cisco L3 switch x = 30.5 y = -175.5 [[ROUTER R1]] model = 3640 console = 2013 cnfg = D:\\CCNP3_configs\R1.cfg slot0 = NM-1FE-TX f0/0 = AS2 f0/1 x = 24.0 y = 106.0 [[ROUTER DS1]] model = 3640 console = 2007 cnfg = D:\\CCNP3_configs\DS1.cfg slot0 = NM-16ESW f0/7 = AS1 f0/7 f0/8 = AS1 f0/8 f0/9 = AS2 f0/9 f0/10 = AS2 f0/10 f0/11 = DS2 f0/11 f0/12 = DS2 f0/12 symbol = Cisco L3 switch x = -226.5 y = -175.5 [-DATA] configs = CCNP3_configs workdir = CCNP3_working
KDE ZÍSKAT? V podobě kompletního instalačního balíčku se všemi závislostmi Windows: http://downloads.sourceforge.net/gns-3/-0.7- win32-all-in-one.exe?download Linux: sudo apt get install gns3 FreeBSD: pkg_add r gns3 MAC OS: http://downloads.sourceforge.net/gns-3/-0.7- intel-x86_64.dmg?download 34
REFERENCE Oficiální stránka u: http://www.ipflow.utc.fr/index.php/cisco_7200_simulator 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 35