Formální analýza počítačových sítí a jejich modelování Ing. Vladimír Veselý
studijní materiál ke kurzu Vyspělé technologie
Fakulta informatiky a managementu Univerzity Hradec Králové
Projekt Informační, kognitivní a interdisciplinární podpora výzkumu je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
VIRTUALIZACE POČÍTAČOVÝCH SÍTÍ VIRTUALIZATION OF COMPUTER NETWORKS
TECHNICKÁ ZPRÁVA TECHNICAL REPORT
AUTOR PRÁCE AUTHOR
BRNO 2012
Ing. Vladimír VESELÝ
Abstrakt Tato práce slouží jako výukový materiál k přednášce o Virtualizování počítačových sítí. Kromě počáteční motivace jsou v ní rozebrány detailně existující nástroje zabývající se simulováním či emulováním Cisco aktivních síťových prvků spolu s jednoduchými ukázkami jak dané nástroje použít.
Klíčová slova PacketTracer, OMNeT++, INET framework, ANSAINET rozšíření, Dynamips, Dynagen, GNS3, Cisco IOU.
Abstract This paper serves as supporting documentation for the lecture called “Virtualizace počítačových sítí”. Apart from basic motivation and main ideas why to virtualize real network is provided also detail description of existing tools and examples how to use them.
Keywords PacketTracer, OMNeT++, INET framework, ANSAINET extension, Dynamips, Dynagen, GNS3, Cisco IOU.
1
Obsah 1
Úvod ............................................................................................................................ 4 1.1
Motivace .............................................................................................................................4
1.2
Existující nástroje ................................................................................................................5
1.3
Struktura práce ....................................................................................................................5 Demonstrační úloha ...................................................................................................... 6
2 2.1
Topologie ............................................................................................................................6
2.2
Adresní plány ......................................................................................................................7
2.2.1
Síťová vrstva ...............................................................................................................7
2.2.2
Linková vrstva lokality A .............................................................................................2
2.3
Zadání .................................................................................................................................2
3
Softwarové implementace ............................................................................................. 2 3.1
Quagga ................................................................................................................................2
3.2
XORP..................................................................................................................................2
3.3
BIRD...................................................................................................................................3
4
PacketTracer ................................................................................................................. 4 4.1
Prerekvizity a instalace ........................................................................................................4
4.2
Podporované technologie .....................................................................................................4
4.3
Demonstrační úloha .............................................................................................................5
5
OMNeT++.................................................................................................................... 6 5.1
Prerekvizity a instalace ........................................................................................................7
5.2
Podporované technologie .....................................................................................................7
5.3
Demonstrační úloha .............................................................................................................8
6
Dynamips ..................................................................................................................... 9 6.1
Prerekvizity a instalace ........................................................................................................9
6.2
Podporované technologie ................................................................................................... 10
6.3
Konfigurace sítě ................................................................................................................ 11
6.3.1
Parametry obecných nastavení ................................................................................... 12
6.3.2
Parametry sekce klienta.............................................................................................. 12 2
6.3.3
Parametry podsekce modelu ....................................................................................... 13
6.3.4
Parametry podsekce zařízení ...................................................................................... 14
6.3.5
Parametry podsekce specifického zařízení – Switch ................................................... 15
6.3.6
Propojení s reálným síťovým rozhraním ..................................................................... 15
6.3.7
Triviální příklad NET souboru ................................................................................... 15
6.4
Vytížení prostředků ........................................................................................................... 16
6.4.1
Optimalizace paměti .................................................................................................. 16
6.4.2
Optimalizace procesoru .............................................................................................. 17
6.5
Ovládání ............................................................................................................................ 18
6.5.1
Konsole Dynagenu ..................................................................................................... 18
6.5.2
GUI GNS3 ................................................................................................................. 20
6.6
Demonstrační úloha ........................................................................................................... 22
7
Cisco IOU .................................................................................................................. 23 7.1
Prerekvizity a instalace ...................................................................................................... 23
7.2
Podporované technologie ................................................................................................... 24
7.3
Konfigurace sítě ................................................................................................................ 24
7.3.1 7.4
Triviální příklad NETMAP souboru ........................................................................... 24
Ovládání ............................................................................................................................ 25
7.4.1
CLI ovládání .............................................................................................................. 26
7.4.2
Web GUI ovládání ..................................................................................................... 27
7.5
Demonstrační úloha ........................................................................................................... 28
8
Závěr .......................................................................................................................... 29
9
Bibliografie ................................................................................................................ 30
10
Seznamy ..................................................................................................................... 32 10.1
Obrázky............................................................................................................................. 32
10.2
Tabulky ............................................................................................................................. 32
3
1
Úvod
1.1
Motivace
Počítačové sítě jsou obvykle heterogenní komunikační systémy určené ke sdílení kontextu mezi dvěma či více síťovými zařízeními. Spolu s rozvojem Internetu došlo i k rapidnímu nárustu složitosti sítí jako celku. Ty se nyní sestávají nejen z koncových stanic, ale i aktivních prvků, přičemž samotné sdílení kontextu mezi nimi v současnosti zajišťuje celá plejáda protokolů, bez kterých si bezproblémovou funkčnost celé sítě již nelze představit. Mezi nimi jsou protokoly pro mapování adres mezi vrstvami dominantního TCP/IP síťového zásobníku jako ARP, IP, DNS, dálepak protokoly zajišťující transportní služby jako TCP či UDP, mezi dalšími FHRP protokoly pro redundanci výchozí brány, dynamické směrovací protokoly zajišťující soudržnost směrování (RIP, OSPF, EIGRP, IS-IS či BGP) a přepínání (TRILL či STP) a v neposlední řadě protokoly související s managementem sítí jako NetFlow, SNMP, CDP, LLDP a ICMP. Kromě těchto „několika“ neopomenutelných jsou zde i protokoly vrstvy nejvyšší, a to aplikační, kterých existuje tolik, jako je různých aplikací: poštovní služby SMTP, IMAP, POP; webové služby HTTP, HTTPS; instant messaging skrz XMPP, OSCAR, MSN, YMSG a mnoho dalších. V tak komplexním prostředí, kterým počítačové sítě v současnosti jsou, síťový administrátoři a relevantní techničtí pracovníci obvykle baží po možnosti testovat a zkoumat chování jejich počítačové sítě v bezpečném prostředí. I díky tomu získají lepší představu o možných dopadech plánovaných konfiguračních změn, či co jim přinese adoptování nových technologií do stávající sítě, nebo se soustředit na odhalení existujících chyb a slabých míst. Virtualizace počítačových sítí neboli transformace reálné sítě na síť virtuální, která obvykle existuje fiktivně v rámci nějakého umělého prostředí, je právě oním bezpečným prostředkem. V rámci takovéto virtualizace je nutné rozlišovat dva termíny, a to simulaci a emulaci:
Simulování počítačové sítě: Zahrnuje nahrazení reálné sítě jejím modelem, nad nímž jsme schopni provádět simulaci chování sítě reálné. Korektnost tohoto chování se odvíjí od kvality modelů – to jak věrně jsou reálné součásti sítě odráženy v jim příslušejících modelech. V rámci simulace nás zajímají především projevy chování činnosti jednotlivých prvků, a to generování a reakce na zprávy, pro chování nedůležité nižší či vyšší vrstvy jsou obvykle abstrahovány.
Emulování počítačové sítě: Oproti simulování vyššího chování prvků zahrnuje emulace i nízkoúrovňové projevy tohoto chování – činnost samotného hardwaru, ze kterého je prvek sestaven. Emulace tedy začíná na nejnižších možných vrstvách a věrně tak napodobuje činnost daného prvku. Na rozdíl od simulace vyžaduje obvykle 4
větší výpočetní prostředky, ovšem na oplátku nabízí výsledky, které jsou svou povahou bližší chování reálné sítě. Tato práce si klade za cíl seznámit čtenáře s některými existujícími nástroji určenými k simulování nebo emulování prvků počítačových sítí (především směrovačů a přepínačů), které pomáhají vytvářet virtuální počítačové sítě. V následujících kapitolách bude vždy představen konkrétní nástroj a ukázány v ném jeden-dva demonstrační příklady. Další zkoumání nástrojů je posléze necháno na čtenářově zvědavosti.
1.2
Existující nástroje
Některé z existujících nástrojů a druh jsou přehledně shrnuty v následující tabulce, ovšem v této práci budou detailněji představeny jen některé z nich: Tabulka 1: Přehled existujících simulátorů a emulátorů
1.3
Název
Druh
PacketTracer
simulátor
OMNeT++ NS2/3 NetSim Dynamips Cisco IOU
simulátor simulátor simulátor emulátor emulátor
URL http://www.cisco.com/web/learning/netacad/ course_catalog/PacketTracer.html http://www.omnetpp.org/ http://www.nsnam.org/ http://tetcos.com/ http://www.gns3.net/dynamips/ N/A
Struktura práce
Po nutném úvodu v Kapitole 1, následuje Kapitolou 2 představení demonstrační úlohy. V Kapitole 3 budou letmo zmíněny existující softwarové implementace směrovačů, které jsou svým chováním adekvátní reálným zařízením, jejich výkon je však typicky možnostmi hardwaru daného počítače. Kapitola 4 představí Cisco simulátor PacketTracer. Kapitola 5 se bude podrobněji zabývat diskrétním simulátorem OMNeT++ a jeho nádstavbami pro simulace počítačových sítí. V Kapitole 6 se detailněji popíší možnosti emulátoru Dynamips s jeho nádstavbou Dynagen pro správu komplexních sítí a grafickým rozhraním GNS3. Kapitola 7 se zmiňuje o oficiálním nástroji Cisco IOU používaném během praktických CCIE certifikačních zkoušek. Celá práce se uzavírá a bilancuje v Kapitole 8, po které následuje už jen soupis použité literatury v Kapitole 9.
5
Demonstrační úloha
2
V této kapitole bude představena demonstrační úloha, která bude následně implementována v nástrojích PacketTracer, Dynamips a Cisco IOU a částečně i v OMNeT++. Jedná se o fiktivní půlsemestrální zkoušku pro kurz CCNP TSHOOT. Tento se primárně zabývá laděním a diagnostikou problémů v sítích založených na zařízeních od firmy Cisco. Jde nám tedy o sestavení virtuální sítě, která svým nastavením bude odpovídat následující specifikaci.
2.1
Topologie BGP 65200
ISP
192 .168 .0.0 /30
BGP 65100
EIGRP 65100
RIPv2
EdgeB 10.66.0.0/30 10.66.0.4/30
192.168.12.0/30
Core1
.0/ .13 68 2.1 19
OSPF area 0
30
PC5
AccessC 10.67.1.0/24
Core2 30
10.66.1.0/24
EdgeC 10.67.0.0/30 10.67.0.4/30
19 2.1 68 .23 .0/
AccessB
PC4
Core3
0 4/3
10 .65 .0
.0. .65 10
.0/ 30
OSPF area 65
LACP
PC1 VLAN10
EdgeA1
dot1Q trunks native VLAN 9
PAgP
PC2 VLAN20
EdgeA2
PC3 VLAN30
PAgP
AccessA
Obrázek 1: Topologie zapojení zařízení v demonstrační úloze
6
2.2
Adresní plány
V obrázku topologie záměrně chybí vyznačení identifikátorů propojovaných rozhraní. Jak se ukáže níže, každý z programů, se kterým bude čtenář seznámen, nabízí trochu jinou filozofii práce s nimi, a proto se nedá rigidně dbát na jednom konkrétním identifikátoru. Níže uvedené tabulky tak slouží pouze jako startovní reference, přičemž rozdíly od ní budou diskutovány vždy v patřičné podkapitole věnující se stvrárnění této demonstrační úlohy v daném nástroji.
2.2.1
Síťová vrstva Zařízení ISP
Rozhraní Serial0/0 Loopback 0
Core1
FastEthernet0/0 FastEthernet0/1 Serial0/0 Serial0/1 Serial0/2 FastEthernet0/0 FastEthernet0/1 Serial0/0 Serial0/1 FastEthernet0/0 FastEthernet0/1 Serial0/0 Serial0/1 FastEhternet0/0 Vlan10 Vlan20 Vlan30 Vlan99 FastEhternet0/0 Vlan10 Vlan20 Vlan30 Vlan99 Vlan99 FastEthernet0/0 FastEthernet0/1 FastEthernet1/0 FastEthernet0/0 FastEthernet0/1 FastEthernet1/0
Core2
Core3
EdgeA1
EdgeA2
AccessA EdgeB
EdgeC
Adresa 192.0.2.1/30 200.1.1.1/32 200.2.1.1/32 200.3.1.1/32 10.66.0.1/30 10.66.0.5/30 192.168.13.1/30 192.168.12.1/30 192.0.2.2/30 10.67.0.1/30 10.67.0.5/30 192.168.23.1/30 192.168.12.2/30 10.65.0.1/30 10.65.0.5/30 192.168.13.2/30 192.168.23.2/30 10.65.0.2/30 10.65.10.1/24 10.65.20.1/24 10.65.30.1/24 10.65.99.1/24 10.65.0.6/30 10.65.10.2/24 10.65.20.2/24 10.65.30.2/24 10.65.99.2/24 10.65.99.3/24 10.66.0.2/30 10.66.0.6/30 10.66.1.1/24 10.67.0.2/30 10.67.0.6/30 10.67.1.1/24
7
2.2.2 Zařízení EdgeA1
EdgeA2
AccessA
2.3
Linková vrstva lokality A Rozhraní FastEthernet1/1 FastEthernet1/2 FastEthernet1/3 FastEthernet1/4 FastEthernet1/11 FastEthernet1/12 FastEthernet1/13 zbývající FastEthernet1/1 FastEthernet1/2 FastEthernet1/5 FastEthernet1/6 FastEthernet1/11 FastEthernet1/12 FastEthernet1/13 zbývající FastEthernet1/3 FastEthernet1/4 FastEthernet1/5 FastEthernet1/6 FastEthernet1/11 FastEthernet1/12 FastEthernet1/13 zbývající
Vlan Trunk, native vlan 9 Trunk, native vlan 9 Access, vlan 10 Access, vlan 20 Access, vlan 30 Access, vlan 999 Trunk, native vlan 9 Trunk, native vlan 9 Access, vlan 10 Access, vlan 20 Access, vlan 30 Access, vlan 999 Trunk, native vlan 9 Trunk, native vlan 9 Access, vlan 10 Access, vlan 20 Access, vlan 30 Access, vlan 999
Id Vlan 10 Vlan 20 Vlan 30 Vlan 9 Vlan 99 Vlan 999
Jméno Marketing Sales IT _Native _Mgmt _ParkingLot
Zadání
2
3
Softwarové implementace
Trochu mimo nástroje, které byly zmíněny v Kapitole 1, existují ještě softwarové implementace síťových směrovačů. Jejich instance mohou být nasazeny v klasických virtualizačních prostředích jako VMWare [1], VirtualBox [2] či Xen [3], přičemž jejich vzájemným propojením lze také následně vytvořit model virtuální počítačové sítě. V reálné praxi se používají zejména softwarové implementace směrovačů, a to ve chvílích kdy koncový uživatel nemá prostředky na zakoupení dedikovaného hardwaru, popřípadě mu nevadí výkonnostní limity, která čistě softwarová řešení mají. Typicky se tedy nasazují softwarové směrovače jakožto démoni do serverů, které leži na hranicích sítě a poskytují konektivitu s vnějším světem. Implementace L2 či L3 přepínačů jsou taktéž k dispozici, ovšem jejich nasazení brání limity na množství síťových karet, které lze do obvyklého serveru nainstalovat – nesmíme zapomínat, že přepínače jsou typicky osmi, šestnácti či více portová zařízení.
3.1
Quagga
Komunitní opensourcový projekt GNU Zebra [4] se nastartoval v roce 1996 v Japonsku jako jedno z vůbec prvních řešení pro softwarové směrování. V roce 2005 vývoj na něm ustal a neoficiálním pokračovatelem se stal fork původního projektu jménem Quagga [5]. Aktuální implementace v sobě zahrnuje následující směrovací démony pro protokoly OSPFv2, OSPFv3, RIPv2, RIPng, BGP4, tedy většina majoritně nasazovaných směrovacích protokolů pro unicastové směrování. Konfigurace každého démona se nachází v separátním souboru, přičemž kromě editace těchto souborů lze celou Quaggu konfigurovat pomocí CLI rozhraní, které využívá velice podobných příkazů jako Cisco IOS.
3.2
XORP
Extensible open routing platform (XORP) [6] vznikl v roce 2000 jako iniciativa konsorcia Intelu, Microsoftu a National Science Foundation k vytvoření modulárního softwarového směrovače. Taktéž je primárně určen pro na unixu založené systémy, ale oproti Quagga existuje jeho mutace i pro prostředí Windows. Díky větší komerční oblibě (a zejména externím dotacím) nabízí větší škálu funkcí a jsou tak podporovány jak unicastové směrovací protokoly jako RIPv2, RIPng, OSPFv2, OSPFv3, BGP4, tak i multicastové protkoly IGMP, MLD a PIM-SM, ale i filtrování provozu pomocí ACL a redundance výchozí brány pomocí VRRP. Konfigurace XORPu se děje přes jeden konfigurační soubor, který má syntaxi podobnou Junipeřím konfiguracím (tedy pseudo vnořovaný zápis pomocí složených závorek a na řádku vždy pak dvojice parametr : hodnota). 2
3.3
BIRD
Bird Internet routing deamon (BIRD) [7] vzniknl jako školní projekt Univerzity Karlovy nad jehož následným vývojem převzal záštitu CZ.NICu. I díky této podpoře se dočkal zejména v Evropě oblibě a je hojně nasazován v internetových peeringových centrech. Aktuálně podporuje směrovací protokoly jako BGP4, RIP, OSPFv2 a OSPFv3 a lze ho konfigurovat i vzdáleně přes CLI, které zpracovává syntakticky podobné příkazy jako Cisco IOS.
3
4
PacketTracer
PacketTracer [8] je společností Cisco oficiálně podporovaný nástroj k výuce kurzů CCNE a CCNA, a některým kapitolám kurzů CCNA Security, CCNA Voice a CCNP. Naneštěstí obzváště u tří posledně zmíněných kurzů je podpora některých technologií v PacketTraceru omezená (viz přehled [9]).
4.1
Prerekvizity a instalace
Ze stránek Cisco NetAcademy [10] lze stáhnout dva instalátory – jeden, který obsahuje i spoustu testovacích laboratoří a tutoriálů, a druhý, jenž obsahuje jen aplikaci samotnou. Ke dni sepisování této práce je aktuální verze 5.3.3 a mezi podporovanými hostitelskými systémy jsou jak Windows, tak na Linuxu založené systémy. Minimální systémové požadavky pro provoz PacketTraceru 5.3.3 jsou:
CPU: Intel Pentium III 500 MHz;
OS: Microsoft Windows XP, Microsoft Windows Vista, Microsoft Windows 7, Fedora 11 nebo Ubuntu 8.04 LTS;
4.2
RAM: 256 MB;
Prostor na disku: 250 MB;
Rozlišení: 800 x 600;
Adobe Flash Player.
Podporované technologie
Mezi hlavní přednosti PacketTraceru patří: simulace chování Cisco IOSu (řídící software pro směrování a přepínání, který běží v low-endových modelech Cisco zažízení), vizualizace toku síťového provozu a kolaborační prvky (možnost více uživatelů pracovat v rámci téže simulace, popřípadě plnění předpřipravených scénářů). Následuje zevrubný soupis technologií, které jsou aktuální verzí PacketTraceru podporovány:
Linkové: DSL, Cable, 802.11a/b/g, Ethernet, PPPoE, STP a RapidSTP, 802.1q, LACP, PAgP;
Směrování: statické, RIPv1, RIPv2, EIGRP, single-area a multi-area OSPF, BGP, inter-VLAN routing, redistribuce.
4
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;
WAN: PPP, Frame Relay, HDLC, NAT, ACLs, SLARP;
Bezpečnost: IPsec, GRE, ISAKMP, NTP, AAA, RADIUS, TACACS, SNMP, SSH, SYSLOG, CBAC, Zone-based policy firewall, WEP, WPA, EAP.
Jak již bylo zmíněno, tak PacketTracer je uzpůsoben kolaborační práci ve více lidech. De facto to znamená, že jednotlivé simulace mohou být propojeny mezi sebou a různé instance PacketTracerů, tak mohou vzájemné komunikovat. K tomu je určen i dedikovaný protokol Packet Tracer Messaging Protoco (PTMP) běžící nad TCP, který přenáší virutální PDU mezi instancemi.
Obrázek 2: Příklad propojení tří simulací běžících v PacketTracerech
I když se předchozí seznam zdá být velký, znovu je potřeba upozornit, že co se týče směrovacích či vybraných aplikačních protokolů, tak jejich implementace a následné chvoání rozhodně nejsou referenční a neodrážejí reálné chování zařízení v síti – například konvergence bez časových prodlev, okamžité detekce nosné, ap. Navíc oproti jiným simulátorům, je vývoj PacketTraceru naprosto uzavřený a uživatelům je dodáván jako konečný produkt.
4.3
Demonstrační úloha
5
5
OMNeT++
OMNeT++ [11] je objektově orientovaný modulární diskrétní síťový simulátor. Existují verze pro Unix i Windows a obě jsou pro školní účely zdarma. Kromě simulačního jádra obsahuje GUI a IDE. Díky rozšířením a frameworku INET obsahuje knihovny pro práci s TCP/IP, Ethernet, FDDI, Token Ring, 802.11 a Peer-to-peer. Komerční verze tohoto simulátoru se jmenuje OMNeST. Při modelování v OMNeT++ se do sebe vnořují jednotlivé moduly hierarchicky. Nejvýše postavený modul se označuje jako modul systémový, ten se skládá ze submodulů. Může se jednat o modely složené (compound models), které se skládají z daších dílčích modulů nebo z modulů jednoduchých. Ty jsou dále nedělitelné.
Obrázek 3: Hierarchie modulů
Topologie simulačníc sítě – propojení jednotlivých modulů – se v OMNeT++ popisuje speciálním jazykem NED. Logika jednoduchých modulů (jejich chování) se zapisuje v jazyce C++. Moduly není třeba psát od začátku. OMNeT++ obsahuje nìkolik předdefinovaných tříd objektů, ze kterých se dá podědit chování a nová funkcionalita snadno dodefinovat. Moduly mezi sebou komunikují pomoci zasílání zpráv. Ty můžeme z hlediska sítí považovat za abstrakce PDU. Zprávy mohou přijít od jiného modulu nebo ze stejného (využívají se jako časovače). Každý modul obsahuje brány, které jsou vstupní (In) pro příjem zpráv a výstupní (Out) pro odesílání zpráv. Mezi bránami modulů se vytváří spojení. Spojení může existovat mezi moduly na stejné úrovni hierarchie nebo mezi modulem a jeho složeným rodičovským modulem. Pro možnost modelování přenosu paketů po lince, má spojení tři volitelné parametry – přenosové zpoždění, bitová chybovost a rychlost přenosu dat.
Obrázek 4: Spojení modulů
Framework INET [12] je volně dostupná knihovna pro simulační prostředí OMNeT++. Rozšiřuje tak základní schopnosti o některé drátové i bezdrátové síťové protokoly a techologie. Mimo
6
jiné obsahuje protokoly UDP, TCP, SCTP, IP, IPv6, Ethernet, PPP, 802.11, MPLS, OSPF a další. V rámci projektu ANSA [13] dochází k rozšřování této knihovny, které se označuje jako ANSAINET.
5.1
Prerekvizity a instalace
Detailně je instalace popsána na webu [14], takdy ji shrneme do několika dílčích kroků: 1) Stáhnutí a překlad zdrojových kódů OMNeT++ na naši platformu (aktuální je verze 4.2.2) 2) Stáhnutí a import frameworku INET (aktuální je verze 2.0) 3) Stáhnutí a import ANSAINETu (dostupný na GIT repozitáři) Co se týče vývoje simulačních modelů, bylo by dobré na tomto místě zmírnit nešvar v podobě špatné zpětné kompatibility hotových či starších modulů ANSAINETu na aktuálním INETu. Na řešení se v současnosti usilovně pracuje.
5.2
Podporované technologie
Nad rámec knihovny INET obsahuje moduly pro protokoly RIP, OSPF a IGMP, modul pro ACL filtrování, schopnost načítat konfiguraci sítí z externích souborů, model přepínače, podporu VLAN a protokolu STP, podpora dual-stack architektury směrovače i hosta, protokol OSPFv3, atd. Následující tabulka shrnuje ke dni vzniku práce podporované technologie ANSAINETu, spolu s jejich popisem, jejich autory a odkazy na jejich kvalifikační práce. Tabulka 2: Přehled technologií v rozšíření ANSAINET
Technologie
Autor
ANSATranslator
Vladimír Kojecký
ANSADiscover
Jakub Smekal
ANSARouter
Vladimír Sivák
ANSASwitch
Zdeněk Kraus
ANSAConfig
Marek černý
QoS
Martin Danko
RIPv2 RIPng OSPFv3
Veronika Rybová Jiří Trhlík Jakub Mrázek
IS-IS
Matěj Hrnčiřík
TRILL
Marcel Marek
Popis Univerzální překladaš running-configů různých výrobců do XML ekvivalentu. Objevovač fyzické topologie postavený na extrakce informací z CDP/LLDP a SNMP. Původní koncepce Cisco směrovače. Model L3 switche s technologiemi pro InterVLAN směrování a podporou STP. Obecný konfigurátor pro simulační modely a topologii. Kvalita služeb na rozhraních s podporou různých frontovacích algoritmů a řízení jejich zahlcení. Unicastový distance-vector směrovací protokol. Ekvivalent RIPv2 pro IPv6. Ekvivalent OSPFv2 pro IPv6 Unicastový link-state směrovací protokol založený na CLNS adresování. Protokol vycházející z IS-IS pro zajištění bezsmyškovosti na vrstvě L2.
Link [15] [16] [17] [18] [19] [20] [21] N/A N/A [22] N/A 7
IGMP
Petr Mateleško
MLD
Adam Malik
PIM-DM
Veronika Rybová
PIM-SM
Tomáš Procházka
FHRP
Petr Vítek
Multicastový signalizační protokol mezi směrovači a koncovými stanicemi. Ekvivalent IGMP pro IPv6 Multicastový směrovací protokol pracující v inkluzivní režimu doručování dat. Multicastový směrovací protokol pracující v exkluzivním režimu doručování dat. Protokoly pro zajištění redundance výchozí brány – HSRP, VRRP a GLBP.
[23] N/A [24] N/A N/A
Model ANSARouteru, jakožto vyvrcholení snah o integraci technologií do sebe vypadal k březnu 2012 následovně:
Obrázek 5: Struktura ANSARouteru na nejvyšší úrovni abstrakce
5.3
Demonstrační úloha
V OMNeT++ jsme schopni sestavit topologii demonstrační úlohy a reálná zařízení nahradit adekvátními modely. Vzhledem však k neustálé práci na simulátoru a jeho rozšířeních nejsme v současnosti schopni simulovat technologie jako HSRP či BGP. Dalším omezením je, že v po spuštění simulace nejsme přímo schopni konfiguračně interagovat s použitými modely, tzn. místo interaktivního řešení zkoušky, jako nabízí předchozí nástroje, se musíme spokojit se zkoumáním simulace, která obsahuje již opravenou komunikaci. 8
6
Dynamips
Nyní se odchýlíme od simulátorů a představíme si „dostupné“ emulátory Cisco zařízení. V této kapitole bude představen nástroj Dynamips, jeho rozšíření pro správu virtuálních laboratoří jménem Dynagen a GUI na obou aplikacích jménem GNS3, které přidává i podporu o propojení s laboratořemi ve VirtualBoxu či QEMU a emulátor Cisco ASA a PIXu. Jaká je souvztažnost trojice Dynamips – Dynagen – GNS3? Dynamips [25] je samotný emulátor hardwaru routeru a zároveň mezivrstvou mezi touto emulací a běžícím IOSem. Dynagen [26] je správcem virtuálních laboratoří, ve kterých běží jednotlivé instance Dynamipsu – umožňuje snadno definovat propoje mezi nimi a zastavovat/spouštět instance, popřípadě ukládat jak výslednou topologii, tak nastavení jednotlivých zařízení. GNS3 [27] je grafickou nádstavbou nad Dynagenem, která přidává možnost do virutální sítě zakomponovat kromě Cisco routerů i zařízení jako ASA, PIX, routery od Juniperu s JunOSem a připojit i virtuální mašiny z VirtualBoxu.
Obrázek 6: Souvztažnost komponent
6.1
Prerekvizity a instalace
Jak již bylo řečeno, tak Nejvýhodnější je provozovat všechny programy dohromady, proto nejideálnější je stáhnout si kompletní instalační balíček ze stránek GNS3 [28] či v případě na unixu postaveného systému zvolit instalaci z portů nebo repozitářů, kde aktuální verze je 0.8.3.1. Kromě programů Dynamips, Dynagen a GNS3 je součástí instalace i Qemu/Pemu emulátor, terminálový klient Putty [29], VPCS, wrapper pro VirtualBox, knihovna WinPCAP [30] a nástroj pro inspekci síťového provozu WireShark. Kromě samotného programu je mít potřeba k dispozici i soubor s Cisco IOSem a zde je asi největší úskalí použití tohoto nástroje. Bez autorizovaného přístupu ke stahování IOSů z portálu Cisca, tedy bez platného CCO účtu, se neobejtdete. Jedinou alternativou je stažení IOSů ze stránek, na kterých je tento produkt umístěn a poskytován nelegálně zadarmo, což je ekvivalentem nákupu „za pět prstů“ a jeho následného nelicencovaného použití.
9
6.2
Podporované technologie
Od roku 2005 je k dispozici volně dostupný emulátor Dynamips routerů firmy Cisco. Jedná se o konzolovou aplikaci pro platformu PC, která je schopna napodobit chování specifického HW (procesoru, RAM, NVRAM, konzolových portů ale i dalších periferií). V současnosti program bez větších obtíží zvládá routery řady:
Cisco 7200 (konkrétně model 7206);
Cisco 1700 (konkrétně modely 1710, 1720, 1721, 1750, 1751, 1760)
Cisco 3600 (konkrétně modely 3620, 3640 a 3660);
Cisco 3700 (konkrétně modely 2691, 3725, 3745);
Cisco 2600 (konkrétně modely 2610, 2611, 2620, 2621, 2610XM, 2611XM, 2620XM, 2621XM, 2650XM, 2651XM). Mimoto dovoluje propojit rozhraní více routerů i ke zjednodušeným virtuálním přepínačům
pro linkové technologie Ethernet (zapouzdření pomocí 802.1q), Frame Relay (DLCI statické mapování) a ATM (PVI/PVC). Samotný Dynamips vytváří zapouzdřovací vrstvu na Cisco IOSem, která pro jeho běh emuluje činnost hardwaru. Každá podporovaná platforma má automaticky nebo volitelně osazené následující primární sloty: Tabulka 3: Přehled základních rozhraní emulovaného routeru
Identifikátor Leopard-2FE GT96100-FE
Model 3620, 3640, 3660 2691, 3725, 3745
CISCO1710-MB-1FE-1E
1710
C1700-MB-1ETH CISCO2600-MB-1E CISCO2600-MB-2E CISCO2600-MB-1FE CISCO2600-MB-2FE C7200-IO-FE C7200-IO-2FE C7200-IO-GE
1720, 1721, 1750, 1751, 1760 2610 2611 2620, 2610XM, 2620XM, 2650XM 2621, 2611XM, 2621XM, 2651XM 7206 7206 7206
Rozhraní 2× FastEthernet 2× FastEthernet 1× FastEthernet 1× Ethernet
Přítomnost Automatická Automatická
1× FastEthernet
Automatická
1× Ethernet 2× Ethernet
Automatická Automatická
1× FastEthernet
Automatická
2× FastEthernet
Automatická
1× FastEthernet 2× FastEthernet 1× GigabitEthernet
Volitelná Volitelná Volitelná
Automatická
Zajímavou možností je i podpora různých portových adaptérů (PA) [31], síťových modulů (NM) [32] a WAN karet (WIC) [33] např.:
10
Tabulka 4: Přehled PA, NM a WIC rozšíření do slotů
Identifikátor PA-FE-TX PA-2FE-TX PA-4E PA-8E PA-A1 PA-4T+ PA-8T PA-POS-OC3 PA-GE NM-1FE-TX NM-4T NM-16ESW NM-NAM NM-IDS NM-1E NM-4E WIC-1ENET WIC-1T WIC-2T
Druh PA PA PA PA PA PA PA NM NM NM NM NM NM NM WIC WIC WIC
Rozhraní 1× FastEthernet 2× FastEthernet 4× FastEthernet 8× FastEthernet 1× ATM 4× Seriál 8× Serial 1× POS 1× GigabitEthernet 1× FastEthernet 4× Seriál 16× FastEthernet
Popis DEC21140 Intel i8254x AMD Am79c97x TI Tneta1570
Switchovací modul Network Analyzer Intrusion Detection System
1× FastEthernet 4× FastEthernet 1× FastEthernet 1× Serial 2× Serial
Počáteční úspěch celého Dynamipsu tkvěl i v tom, že Cisco se svými subdodavateli hardwaru nemělo právní doložku o utajování driverů k jednotlivým periferiím. Toto v současnosti už neplatí, a tak bohužel celý projekt s přechodem na nové generace směrovačů, které mají už drivery veřejně nedostupné, pravděpodobně skončí.
6.3
Konfigurace sítě
Dynagen přináší do Dynamipsu vhodnou nádstavbu pro vytvoření čitelné a přenositelné konfigurace síťových topologií a ve spojení s Hypervisorem, což je správce běžících instancí Dynamips routerů pak umožňuje pohodlnou správu celévirtuální síťové laboratoře. K popisu sítě se využívá plain-textový soubor s příponou NET, ve kterém jsou uloženy veškeré konfigurace síťových prvků, jejich vzájemných propojení a dalších parametrů simulace. Tento soubor má syntaxi velmi podobnou INI souborům s MS-DOS systému, přičemž se skládá:
řádek komentáře v souboru je uvozen znakem mřížky # a může se vyskytovat kdekoli;
obecná nastavení;
sekce vztahující se ke klientovi (simulaci je možné rozšířit i na více PC v rámci sítě);
podsekce vztahující se k modelové řadě;
podsekce vztahující se ke konkrétnímu zařízení [[<device>]];
11
Obrázek 7: Diagram syntaxe NET souboru
Řetězce nastavení jsou necitlivé na malá a velká písmenka. Syntakticky musí být splněna následující pravidla při tvorbě NET souboru:
Konfigurační soubor musí obsahovat alespoň jednu sekci klienta;
Další sekce mohou následovat až po platné definici sekce;
Podsekce obecných nastavení modelové řady musí předcházet sekci pro konkrétní zařízení.
6.3.1
Parametry obecných nastavení
Následující parametry mají rozsah vlivu na všechny klienty v dané simulaci. Tabulka 5: Některé z parametrů obecné sekce
Parametr
Hodnoty
autostart
true | false
2610|2611|2620|2621| 2610XM|2620XM|2621XM| model 2650XM|2651XM|2691|3620| 3640|3660|3725|3745|7200 ghostios true | false sparsemem true | false idlemax
unsigned integer
idlesleep
unsigned integer
6.3.2
Popis V případě hodnoty true se ihned po spuštění simulace nastartují všechny instance routerů. Implicitní model routeru použitých v této simulaci. Viz. podkapitola o Vytížení prostředků Viz. podkapitola o Vytížení prostředků Maximální doba uspání routeru v případě detekce čekací smyčky. Implicitní doba uspání routeru v případě detekce čekací smyčky.
Parametry sekce klienta
Sekce je vždy uvozena povinným začátkem[
:<port>], za kterým následují jednotlivé příkazy. Typicky v NET souboru existuje sekce klienta za každý model Cisco router, která se ve virtuální síti vyskytuje. Tyto příkazy mají vliv jen na konkrétního klienta, resp. jeho část. Pokud není parametr port explicitně určen, je pro TCP komunikaci použit port 7200. Parametr hostname může nabývat hodnot:
127.0.0.1 – v případě označení aktuálního PC; IP adresa daného PC; jakéhokoli doménového jména definovaného v souboru etc/hosts OS; 12
Tabulka 6: Některé z parametrů sekce klienta
Parametr
Hodnoty
console
unsigned integer
workingdir
string
udp
unsigned integer
6.3.3
Popis Základní port pro jednotlivá telnetová konzolová sezení. Cesta k adresáři, ve kterém bude Dynamips uchovávat všechny soubory týkající se spuštěné simulace. Základní port pro UDP NIO.
Parametry podsekce modelu
Podsekce začíná vždy [[<model>]], přičemž parametr <model> může nabývat stejných hodnot jako příkaz stejného jména obecných nastavení. Rozsah má na všechny routery dané klientské části simulace, které mají totožnou modelovou řadu. Tabulka 7: Některé z parametrů podsekce modelu
Parametr
Hodnoty
image
string
ram
unsigned integer
nvram rom
unsigned integer unsigned integer
disk
unsigned integer
confreg
0x(unsigned integer)
npe
string
midplane
std | vxr
mmap
true | false
idlepc
0x(unsigned integer)
exec_area
unsigned integer
configuration
base64 string
cnfg
string
ghostios
true | false
Popis Absolutní či relativní cesta k souboru se zvoleným IOSem pro danou modelovou řadu. Množství MB virutální paměti alokované pro každou instanci routeru stejné modelové řady. Velikost NVRAM v MB. Velikost ROM v MB. Velikost PCMCIA ATA disku, v současnosti je k dispozici emulace až dvou takovýchto disků, tzn. = [1,2]. Šestnáctková hodnota konfiguračního registru. NPE modul, hodnota řetězce může mít libovolnou hodnotu odpovídající podporovanému HW. Nainstalovaný druh středové desky. 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. Šestnáctková hodnota IdlePC viz. podkapitola o Vytížení prostředků. Velikost spouštěcí oblasti v MB. Startup konfigurace kódovaná do řetězce ve formátu base64. Absolutní nebo relativní cesta k souboru se startup konfigurací uložené ve formátu plain-text. Viz. podkapitola o Vytížení prostředků. 13
sparsemem
true | false
idlemax
unsigned integer
idlesleep
unsigned integer
Viz. podkapitola o Vytížení prostředků. Maximální doba uspání routeru v případě detekce čekací smyčky. Implicitní doba uspání routeru v případě detekce čekací smyčky.
Parametry podsekce zařízení
6.3.4
Podsekce začíná vždy [[]], kde parametr je jedinečný identifikátor tohoto konkrétního routeru v rámci celé simulace. Rozsah následující soupisky příkazů je pouze na tento konkrétní router. Tabulka 8: Některé z parametrů podsekce konkrétního zařízení
Parametr
Hodnoty
model
unsigned integer
console
unsigned integer
aux
unsigned integer
mac
MAC-48 (colons)
slot
string
wic<j>/
string
[f|s|a]<j>/
<device> [f|s|a]<j>/
Popis Hodnota udává model konkrétního routeru, a jaká pro něj vyplývají nastavení v sekci modelové řady. Specifikuje hodnotu konzolového portu přepisujíc tak implicitní nastavení v sekci obecných nastavení. Auxiliary port pro daný router. Základní MACovská adresa tohoto routeru, přičemž pokud není explicitně specifikována tímto nastavením je generována náhodně automaticky. Ř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 může nabýt platných číselných hodnot jednotlivých slotů. 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>, můžou nabývat číselných hodnot jednotlivých portů. 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>/.
14
6.3.5
Parametry podsekce specifického zařízení – Switch
Dynamips umožňuje simulovat i poměrně jednoduché přepínače různých linkových technologií Ethernet, Frame-Relay, ATM. V praxi vypadají definice těchto switchů v NET souboru takto: Tabulka 9: Parametrická konfigurace přepínačů
Ethernetovský switch [[ETHSW <switch>]] <port> = {trunk|access} Frame-Relayový switch [[FRSW <switch>]] <port> : = <port> : ATM switch [[ATMSW <switch>]] <port> : = <port> :
6.3.6
Propojení s reálným síťovým rozhraním
Díky knihovně WinPCAP je možné vytvářet síťové spoje v rámci simulace i s reálnými rozhraními hostitelských PC. V NET souboru stačí místo virtuálních rozhraní použít název závislý na operačním systému, který získáme spuštěním aplikace network
device
list.cmd nacházející se
v adresáři instalace Dynamipsu/Dynagenu/GNS3.
6.3.7
Triviální příklad NET souboru
Uvažujme síť, kde jsou dva routery – R1 a R2 – propojené vzájemně sériovou linkou:
Obrázek 8: Triviální topologie
Případný NET soubor popisující tuto topologii pak může vypadat třeba takto:
15
# Ukázková laborator autostart = false [localhost] [[7200]] image = \Program Files\Dynamips\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 Obrázek 9: Ukázkový NET soubor pro GNS3
6.4
Vytížení prostředků
Je nutné si uvědomit, že Dynamips je náročný na paměť a procesor tím víc, čím více instancí routerů emulujete a máte zapojených do virtuální sítě, a čím větší jsou jejich IOSy k nahrání do paměti.
6.4.1
Optimalizace paměti
Využíváme-li IOS, který zabere 128MB paměti, je mu v případě spuštění alokováno v naší fyzické paměti opravdu 128MB prostoru. Pokud to vynásobíme počtem instancí routerů, můžeme se dostat k dosti depresivnímu číslu ohledně HW nároků. Proto jsou k dispozici v Dynamipsu dva parametry, upravující možnosti využití paměti:
ghostios – redukuje vytížení fyzické paměti tím způsobem, že pokud je jeden tentýž IOS nahrán v X routerech, pak místo X alokování prostoru (který zabírá), se do paměti načte pouze jednou do sdílené paměti, kterou si jednotlivé instance obhospodařují pomocí paměťových map;
spersmem – redukuje vytížení virtuální paměti jednotlivých instancí routeru jen na hodnotu, kterou v dané chvíli opravdu spotřebovávají, což hraje roli pro paměťová omezení, které na spuštěné procesy klade operační systém (2GB pro Windows XP, 3GB pro Linux).
Jaký je tedy důvod, proč nemít implicitně tyto dva parametry stále nastavené na true? Co se totiž ušetří na spotřebě paměti, se projeví zvýšenou zátěží na procesor (např. indexování pro mnoho instancí využívajících sdílenou paměť, atd.) a sníženou odezvou simulace. Ve zkratce se dá říci, že pokud máme nedostatek fyzické paměti a pracujeme-li s rozsáhlou síť se spoustou routerů, je výhodné mít
16
zapnutou volbu ghostios, ovšem musíme počítat s tím, že výkon simulace bude nižší (zpracované kbps, responsibilita jednotlivých routerů).
6.4.2
Optimalizace procesoru
Protože Dynamips emuluje i procesorovou sadu každého routeru, tak sám od sebe neví, kdy je router ve stavu nic nedělání (idle) a kdy se zabývá nějakými užitečnými výpočty. Je tedy nutné explicitně určit kód instrukce, jež pravděpodobně odpovídá čekací smyčce či assemblerovské operaci NOOP, kterou má prostě ignorovat a po čas jejího emulování router „uspat“. Ovšem jak tento kód zjistit? Buď můžeme využít již ověřenou hodnotu, kterou můžeme zjistit na Internetu [34] a nastavit ji jako parametr Idle-PC v konfiguračním souboru simulace. Nebo užít Dyngen či GNS3 k analýze chodu specifického routeru a na základě této analýzy se pak můžeme empiricky rozhodnout mezi výslednými hodnotami, která instrukce je žhavým kandidátem. Samotnou analýzu spustíme v rozhraní Dynagenu příkazem idlepc get , jejímž výstupem je pak deset „nejvhodnějších“ kandidátů. Poté, co jednoho zvolíme, je pro daný router tato hodnota aplikován a operace je při emulaci ignorována. Další možností je kód globálně uložit a pro daný model routeru se do budoucna bude tato hodnota používat stále. K tomuto slouží příkaz idlepc
save
db,
která
hodnotu uloží
do sdíleného souboru
dynagenidledb.ini v domovském adresáři. Tento parametr je typicky naprosto opomíjen začátečníky bez patříčných znalostí, kteří si obvykle stěžují, že GNS3 mají sice nainstalovanou a nakonfigurovanou, ovšem jen co spustí byť jen jednu instanci routeru, tak jim vyskočí vytížení CPU na 100%. V takovémto případě stačí z kontextové nabídky (RMB nad prvkem na plátně) nechat přepočítat hodnotu Idle-PC, aplikovat ji a rázem lez dosáhnout viditelného zlepšení.
Obrázek 10: Ilustrace nastavení Idle-PC hodnoty
17
6.5
Ovládání
6.5.1
Konsole Dynagenu
Příkazy se zadávají do příkazové řádky management konzole a jsou citlivé na velikost písmen: Tabulka 10: Tabulka syntaxe a významu příkazů akceptovaných konzolí Dynagenu
Příkaz s popisem capture [{HDLC|PPP|ETH|FR}] Do souboru v pracovním adresáři začne ukládat odchycený síťový provoz na rozhraní síťového zařízení . Poslední množina parametrů je kódování na fyzické vrstvě, přičemž implicitně je nastaveno ethernetovské. clear mac <switch> Vymaže CAM tabulku zvoleného switche <switch>. console {/all | } telnet {/all | } Připojí se na konzolový port (inicializuje telnetové sezení) daných routerů, uvedených ve výčtu, a nebo všech routerů (při parametru /all). exit Korektně ukončí Dynagen a zastaví běžící simulaci na Dynamipsu (povypíná všechny instance routerů). disconnect Ukončí Dynagen konzoly, ale nechá běžet simulaci Dynamipsu dále. filter freq_drop {in|out} Aplikuje filtr na vstup nebo výstup (parametry in nebo out) rozhraní zařízení . V současnosti funguje pouze chybový filtr freq_drop, který zahodí každý i-tý paket. help [] ? [] Zobrazí seznam dostupných příkazů pro management konzoly Dynagenu, popřípadě syntaxy a popis použití pro zadaný příkaz . list Zobrazí seznam zařízení v simulaci, který obsahuje údaje o jejich typu, stavu, na kterém serveru běží či jaký je přístupový port na jejich konzoly. idlepc get idlepc show idlepc set <0x_value> idlepc save {Ø|default|db} Příkaz s parametrem get spustí analýzu zřízení na hodnotu idlepc, na jejímž konci si můžete s potencionálních kandidátů vybrat jednoho, jehož hodnota se na všechny routery stejné modelové řady v rámci běžící simulace aplikuje. Příkaz s parametrem show zobrazí poslední výsledek analýzy z možností znovuvolby idlepc hodnoty z potencionálních kandidátů. 18
Příkaz s parametrem set nastaví explicitně pro daný router, jakou hexadecimální hodnotu idlepc <0x_value> má pro tento běh simulace použít. Příkaz s parametrem save uloží aktuálně užívanou idlepc hodnotu pro daný router buď do podsekce konkrétního routeru (bez uvedeného parametru destinace), do podsekce modelové řady (parametr default) nebo do externího souboru uloženého v domovském adresáři (parametr db). hist Zobrazí se historie zadaných příkazů do management konzole. py Spustí Pythonovský příkaz v rámci daného sezení Dynagenu. shell ! V konzolovém okně, ve kterém běží Dynagen spustí příslušný DOSovský a nebo shellovský příkaz a zobrazí jeho výstup v rámci této konzole ver Vypíše verzi Dynagenu a všech Dynamipsových serverů, ke kterým je toto sezení Dynagenu připojeno. send Používá se k posílání speciálních Dynagenových příkazů přímo Dynamipsu. start {/all|} Nastartuje instanci routerů daného výčtem (nebo všech routerů v simulaci při použití parametru /all). stop {/all|} Zastaví instanci routerů daného výčtem (nebo všech routerů v simulaci při použití parametru /all). reload {/all|} Provede sekvenční spuštění příkazů stop a start nad výčtem (nebo nad všemi routery v simulaci při užití parametru /all). suspend{/all|} Uspí instanci routeru ve výčtu (nebo všech routerů v simulaci při použití parametru /all). resume{/all|} Oživí uspanou instanci routeru ve výčtu (nebo všech zařízení v simulaci při použití parametru /all). push {/all|} Načte startup konfigurace routerů daných výčtem a nebo úplně všech při užití parametru /all v base64 formátu přímo do NVRAM specifikovaných zařízení. save {/all|} Uloží startup konfigurace routerů daných výčtem a (nebo úplně všech při užití parametru /all) v base64 formátu přímo do NET souboru simulace. Tímto způsobem je možno 19
celé laby přenášet jen v rámci jednoho souboru. export {/all|}““ Exportuje startup konfigurace routerů ve výčtu simulace (nebo ze všech routerů v simulaci při použití parametru /all) z externích souborů do adresáře specifikovaného . Užití uvozovek “ není povinné, ale usnadňuje rozpoznávání řetězce, ve kterém se vyskytují mezery. import {/all|}““ Importuje startup konfigurace do všech routerů ve výčtu simulace (nebo ze všech routerů v simulaci při použití parametru /all) z externích souborů v adresáři . Užití uvozovek “ není povinné, ale usnadňuje rozpoznávání řetězce, ve kterém se vyskytují mezery. confreg {/all|} <0x_value> Nastaví hodnotu konfiguračního registru zařízení v kolekci (nebo všech při použití parametru /all) na hexadecimální hodnotu <0x_value>.
6.5.2
GUI GNS3
GNS3 nabízí komfortní užitavelské rozhraní skrz které se dají snadno vytvářet, editovat, mazat virtuální laboratoře a odposlouchávat provoz na rozhraních mezi nimi, a to jak instancí Cisco routerů, ale díky integraci s PEMU, QEMU a VirtualBoxem i zařízení ASA, PIX, emulace routerů od Juniperu a virtuálních PC. Bez nějakého detailnějšího popisu je hlavní obrazovka programu rozdělena následovně:
Editace rozhraní
Globální management zařízení
Paletka zařízení
Komentovací nástroje
Soupiska topologie
Kontextová nabídka konkrétního zařízení
Dynagen konzole
Soupiska odposlechů
Obrázek 11: Základní ovládací prvky GNS3
Z plovoucí nabídky Edit jsou nejdůležitější dvě položky, a to Preferences a IOS images and hypervisors. Obsah okna nastavení se skládá z několika karet:
20
General – Obecná nastavení programu, zejména umístění pracovních adresářů, nastavení terminálového klienta a některých vymožeností GUI;
Dynamips – Nastavení samotného Dynamipsu ohledně lepší správy paměti (ghostios, sparsemem a mmap), nastavení implicitních portů a otestování komunikace mezi hypervisorem;
Capture – Nastavení relevantní ohledně aplikace ke zkoumání zachyceného provozu, typicky WireSharku;
Qemu – Konfigurace dalších emulátorů, které GNS3 může s úspěchem využít, jmenovitě ASA, PIXů, Olive od Juniperu a IDS;
VirtualBox – Možnosti zapouzdřovacího wrapperu k VirtualBoxu stojícího za možností propojení virtuálních mašinek s virtuální sítí.
Druhé jmenované okno obsahuje párovač používaných IOSů s platformami v GNS3 a nastevení jejich příslušnosti k hypervisorům. Okno je zevrubně popsáno následujícím obrázkem: Přehled exitujících asociací
Karta s nastavením hypervisoru
Výběr IOSu Nastevení platformy a konkrétního modelu Parametry v rámci emulace Odkaz na Cisco Feature Navigator daného IOSu
Obrázek 12: Prvky okna správce IOSů
21
6.6
Demonstrační úloha
22
7
Cisco IOU
Cisco IOS on UNIX (Cisco IOU) je plnohodnotný nástroj k emulaci směrovačů a přepínačů od firmy Cisco. Je to software, který se využívá během CCIE praktické zkoušky namísto reálných zařízení. Vyvinut byl v samotném Cisco a jedná se defacto o klasický v binární podobě ještě před tím, než je naportován o ohnut pro danou konkrétní hardwarovou platformu. Tento nástroj není volně dostupný, i když už různými místy prosáknul do Internetu a jeho funkčnost byla docela dobře zdokumentována. [35]
7.1
Prerekvizity a instalace
Pokud nejste autorizovaný pracovník nebo partner firmy Cisco je použití Cisco IOU značně diskutabilní z hlediska legálnosti. Ze své podstaty, i když je to nástroj velice stabilní (musí být kvůli průběhu CCIE zkoušek), tak je stále velice experimentální. Na interních Cisco stránkách tohoto projektu se dokonce praví následující: „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.“ Na Internetu je k dispozici několik „prosáklých“ verzí tohoto programu, a to ať už binárek či dokonce předpřipravených LiveCD s předinstalovanými všemi prerekvizitami. V rámci instalace je ponecháno na čtenářových schopnostech pořízení si tohoto nástroje v jakékoli jeho podobě. Pokud se tedy zadařilo si někde obstarat Cisco IOU, tak vězte, že dostupné binárky jsou určeny k použití pro Linuxové či Solarisové systémy, přičemž jedinou mě známou prerekvizitou je mít nainstalovanou knihovnu pro podporu kryptografie libcrypto (která je typicky součástí balíčků jako libssl-dev) a v případě 64-bitových systémů nativní podporu pro 32-bitové aplikace (balíček ia32-libs). Kromě toho je v unixových systémech je nativně přítomen telnetový klient pro komunikaci s instancemi routerů, ale hodí se i něco lepšího, jako např. Putty. Pro některé image je potřeba mít platný licenční soubor IOURC, tento je specifický na hostname a primární IP adresu vašeho systému. Každopádně je stanovené pořadí umístění, které se bude instance Cisco IOU pokoušet ověřit na existenci licenčního souboru, a ta je následující: 1) Soubor jménem iourc umístění v aktuálním pracovním adresáři; 2) Soubor jménem .iourc umístěný v uživatelově domovském adresáři (/home) 3) Soubor, na který je nasměrovaná systémová proměnná IOURC. 23
[license] = <8 bajtová hexadecimální hodnota> Obrázek 13: Syntaxe IOURC licenčního souboru
V případě, že nemáte licenční soubor, tak nezbývá než odkázat na stránky věnující se této problematice. [36]
7.2
Podporované technologie
Ke dni psaní této práce existuje několik binárek, jejichž činnost je naprosto nezávislá na platformě, přičemž existují následující varianty feature setů, funkčností odpovídajících jejich reálným ekvivalentům: ipbase, adventerprisek, enterprise a ipbase se zabudovaným pagentem (traffic generátor) pro směrovače a l2-upk9 pro switche. Obecně lze ke zjištění dostupnosti té či dané technologie v Cisco IOSu použít Cisco Feature Navigator. [37]
7.3
Konfigurace sítě
Obdobně jako v GNS3 byl NET soubor, tak Cisco IOU k definici virtuální sítě používá NETMAP soubor. Podobně jako v případě licenčního souboru se Cisco IOU o jeho hledání pokouší postupně na třech místech: 1) Soubor jménem NETMAP umístění v aktuálním pracovním adresáři; 2) Soubor jménem .NETMAP umístěný v uživatelově domovském adresáři (/home) 3) Soubor, na který je nasměrovaná systémová proměnná NETIO_NETMAP. Syntaxe NETMAP souboru je prostá – na každém řádku je vždy N dvojic :@, jež jsou odděleny bílými znaky a tvoří tak list zařízení, které jsou vzájemně propojeny i v rámci virtuální sítě. Identifikátoru zařízení musá být z rozsahu od 1 do 1024 včetně. Kromě této definice spojnic již NETMAP soubor neobsahuje žádné další parametry. Stejně jako v případě Dynamipsu, se i virtuální Cisco IOU laboratoř dá propojit s reálnou sítí (pomocí aplikace IOUlive) a taktéž rozložit instance emulovaných zařízení na více hostitelských počítačů v síti. [38]
7.3.1
Triviální příklad NETMAP souboru
24
Níže je uvedena klasická CCNP Switch laboratoř, která je sestavena ze dvou distribučních a dvou přístupových přepínačů propojených navzájem redundantními linkami.
Obrázek 14: CCNP Switch laboratoř
Označíme-li v pořadí DLS1, DLS2, ALS1 a ALS2 identifikátory 1, 2, 3 a 4, pak NETMAP soubor, který definuje vzájemné propojení instancí Cisco IOU vypadá následovně: Případný NET soubor popisující tuto topologii pak může vypadat třeba takto:
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
Obrázek 15: Ukázkový NETMAP soubor pro Cisco IOU
7.4
Ovládání
Oproti Dynamipsu s GNS3 nenabízí Cisco IOU žádné pokročilé ovládání. Vzhledem k tomu, že se jedná primárně na CLI založený nástroj, to lidem s aspoň základní znalostí práce v příkazové řádce nemůže vadit. Nicméně existují snahy vytvořit alespoň nějakou nádstavbu pro lepší správu virtuální laboratoře – IOU-web. [39]
25
7.4.1
CLI ovládání Spuštění jedné instance IOU odpovídá spuštění její binárky a předání příslušných parametrů
(minimálně identifikátor zařízení jako odkaz do NETMAP souboru). Obvyklé použití shrnuje následující výňatek z nápovědy:
$ ./i86bi_linux-adventerprisek9_ivs-ms.151-4 -h Usage: [options] : unix-js-m | unix-is-m | unix-i-m | ... : instance identifier (0 < id <= 1024) Options: -e Number of Ethernet interfaces (default 2) -s Number of Serial interfaces (default 2) -n Size of nvram in Kb (default 16K) -c 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 Megabytes of router memory (default 64) -L Disable local console, use remote console -u UDP port base for distributed networks $ ./i86bi_linux-adventerprisek9_ivs-ms.151-4 –e 3 –s 2 1 Obrázek 16: Nápověda k atributům binárky a příklad spuštění Cisco IOU
Po spuštění instance běží na popředí a můžete ihned začít zařízení konfigurovat stejnými přákazy jako klasicý Cisco IOS. Pokud chcete instanci zařízení uzavřít, tak zmáčkněte klávesovou zkratku Ctrl+C. Obvykle chceme provozovat více než jednu Cisco IOU instanci, a proto je přepínání mezi běžícími Cisco IOU a komunikaci mezi nimi dost krkolomná. Zde je vhodné využít při spouštění instance aplikaci wrapper, která spustí Cisco IOU na pozadí a přímé připojení ke konzolovému portu pak vyvede na TCP port. Wrapper tak typicky spouštíme jako součást inicializačního skriptu, který rozběhne všechny instance Cisco IOU a připojí je pro vzdálenou komunikaci na volné porty OS. Chceme-li pak celou emulaci ukončit, jednoduše ukončíme proces wrapperu.
26
$ ./wrapper Usage: ./wrapper [-v] -m -p<port number> -- [iou options] where <port number> is in the range <1024-65550> all options after the '--' are passed to iou [-v] Display version $ ./wrapper -m ./i86bi_linux-adventerprisek9_ivs-ms.151-4 -p 2000 -- 100 $ ps -ef | grep wrapper | awk '{ print $2 }' | xargs kill $ killall wrapper Obrázek 17: Nápověda k programu wrapper, příklad jeho spuštění a ukončení
7.4.2
Web GUI ovládání
Žhavou novinkou do světa používání Cisco IOU je webový frontend, který umožňuje pohodlnou správu virtuálních laboratoří. Tuto aplikaci napsanou v PHP a AJAXu naprogramoval Andrea Dainese a pojmenoval ji IOU-web. K aplikaci se přistupuje jako k webové stránce, která obvykle běží na virtuální mašině, jež hostuje IOU-web a příslušející binárky Cisco IOU. Všechny podstatné informace o laboratořích a nastavení IOSů se ukládají v samostatné SQL databázi, z níž se na disk dočasně vytváří patřičné NETMAP soubory, vlan.dat a soubory se startovacími nastaveními zařízení. Ovládání je rozděleno do několika karet:
Home
–
základní
věci
k
instalaci,
nejaktuálnější verze programu a kde se dočíst další informace;
Laboratory – zde lze vytvářet, mazat, spouštět a editovat virtuální sítě;
Config – datový sklad startup-configuration souborů;
Tools – provozní věci k běhu samotného programu, hlavně správa IOSů a databáze;
Contact – email tvůrci programu.
Obrázek 18: Správa virtuální sítě v IOU-web
27
7.5
Demonstrační úloha
28
8
Závěr
V této práci byly zevrubně představeny nástroje pro virtualizaci počítačových sítí, zejména pak ty, které souvisí s přímou virtualizací dedikovaných zařízení od firmy Cisco. Otázkou na závěr zůstává, jaký s nástrojů tedy používat? Naneštěstí odpověď není jednoduchá v tom smyslu, že jeden z představovaných by byl výrazně lepší než nástroje ostatní. Vždy bude záviset na primárním účelu, proč virutalizujeme. Pokud je to studijní či pedagogický záměr v rámci CCNA kurzů, tak nám bude bohatě stačit PacketTracer. Pokud se snažíme vytvořit experimentální prototypy nových síťových protokolů a zkoumat dopad jejich činnosti na síť, tak jednou z alternativ ve vědeckém světě je bezpochyby OMNeT++. Připravujeme-li se na vyšši certifikační zkoušky ze sítí, nebo chceme-li emulovat konkrétní HW produkty, pak je nasnadě uchýlit se k Dynamipsu a nebo Cisco IOU.
29
9
Bibliografie
[1] VMWare Inc. VMware Virtualization Software for Desktops, Servers & Virtual Machines for Public and Private Cloud Solutions. [Online] 2012. http://www.vmware.com/. [2] Oracle. Oracle VM Virtual Box. [Online] 2012. https://www.virtualbox.org/. [3] Citrix Systems, Inc. . Welcome to xen.org, home of the Xen® hypervisor, the powerful open source industry standard for virtualization. [Online] 2012. http://www.xen.org/. [4] Free Software Foundation (FSF). Zebra - GNU Project. [Online] 11. prosinec 1999. http://www.gnu.org/software/zebra/. [5] Quagga Routing Software Suite. [Online] 1. únor 2011. http://www.nongnu.org/quagga/. [6] XORP Inc. Welcome to XORP. [Online] http://www.xorp.org/. [7] CZ.NIC. The BIRD Internet Routing Deamon Project. [Online] [Citace: 4. duben 2012.] http://bird.network.cz/. [8] Cisco Systems. Cisco Packet Tracer. [Online] 2012. http://www.cisco.com/web/learning/netacad/course_catalog/PacketTracer.html. [9] —. Cisco Packet Tracer v5.3 Support for Networking Academy Curricula. [Online] 2010. http://www.cisco.com/web/learning/netacad/downloads/pdf/PacketTracer53support.pdf. [10] —. Academy Connection | Program Information. [Online] http://cisco.netacad.net/cnams/content/templates/LibraryHome.jsp?#/resource/lcms/cnams_site/english /generic_site_areas/library/course_catalog/PTCacheInclude.html. [11] OpenSim Ltd. OMNeT++ Network Simulation Framework. [Online] 2012. http://www.omnetpp.org/. [12] —. INET Framework | Main / Welcome to the INET Framework! [Online] http://inet.omnetpp.org/. [13] NES@FIT. ANSA - Homepage. [Online] 2012. http://nes.fit.vutbr.cz/ansa. [14] —. ANSAINET for OMNeT++ 4.2.1. [Online] https://nes.fit.vutbr.cz/ansa/pmwiki.php?n=Main.ANSAINET421. [15] Kojecký, Vladimír. Modelování a analýza v počítačové síti VUT. [Online] http://www.fit.vutbr.cz/study/DP/DP.php?id=13433. [16] Smejkal, Jakub. Dynamický stav modelu OMNeT++ pomocí SNMP. [Online] 06 2012. http://www.fit.vutbr.cz/study/DP/DP.php?id=14270. [17] Sivák, Vladimír. Model Cisco směrovače v simulačním nástroji OMNeT++. [Online] červen 2009. http://www.fit.vutbr.cz/study/DP/BP.php?id=7851. [18] Kraus, Zdeněk. Modelování a analýza spolehlivosti počítačové sítě VUT. [Online] červen 2011. http://www.fit.vutbr.cz/study/DP/DP.php?id=9468.
30
[19] černý, Marek. Modelování IPv6 v prostředí OMNeT++. [Online] červen 2011. http://www.fit.vutbr.cz/study/DP/DP.php?id=11892. [20] Danko, Martin. Modelování kvality služeb v počítačových sítích. [Online] červen 2012. http://www.fit.vutbr.cz/study/DP/DP.php?id=10950. [21] Rybová, Veronika. Modelování a simulace návrhových vzorů směrování v počítačových sítích. [Online] červen 2009. http://www.fit.vutbr.cz/study/DP/BP.php?id=8351. [22] Hrčiřík, Matěj. Modelování L2 protokolů zajišťujících bezsmyčkovost. [Online] červen 2012. http://www.fit.vutbr.cz/study/DP/DP.php?id=14268. [23] Mateleško, Petr. Simulování multicastových přenosů v simulátoru OMNeT++. [Online] červen 2010. http://www.fit.vutbr.cz/study/DP/BP.php?id=9485. [24] Rybová, Veronika. Modelování multicastového směrování v prostředí OMNeT++. [Online] červen 2012. http://www.fit.vutbr.cz/study/DP/DP.php?id=14139. [25] Fillot, Christiane. Cisco 7200 Emulator. [Online] 14. říjen 2007. http://www.ipflow.utc.fr/blog/. [26] Dynagen - network configuration generator for Dynamips. [Online] 10. 12 2007. http://www.dynagen.org/. [27] GNS3. Graphical Network Simulator 3. [Online] 2012. http://www.gns3.net/. [28] —. Download - GNS3. [Online] 2012. http://www.gns3.net/download/. [29] PuTTY. [Online] http://www.chiark.greenend.org.uk/~sgtatham/putty/. [30] WinPCap - the packet capture and network monitoring library for windows. [Online] http://www.winpcap.org/. [31] Cisco - Port Adapters. [Online] 10. 12 2007. http://www.chiark.greenend.org.uk/~sgtatham/putty/. [32] Cisco - Network Modules. [Online] 10. 12 2007. http://www.cisco.com/en/US/products/hw/modules/ps2797/prod_module_series_home.html. [33] Cisco - WIC cards. [Online] 10. 12 2007. http://www.usedrouter.com/Cisco_wic_modules.htm. [34] 7200emu Hacki's Forum. [Online] http://7200emu.hacki.at/. [35] Gaddis, Jeremy L. Cisco IOU FAQ. [Online] 18. leden 2011. http://evilrouters.net/2011/01/18/cisco-iou-faq/. [36] —. Cisco IOU Licensing. [Online] 2012. http://freeccnalabs.com/cisco-ios-on-unix-licensing/. [37] Cisco Systems. Cisco Feature Navigator. [Online] 2012. http://tools.cisco.com/ITDIT/CFN/jsp/index.jsp. [38] Gaddis, Jeremy L. Example Cisco IOU Topology. [Online] 21. leden 2011. http://evilrouters.net/2011/01/21/example-cisco-iou-topology/. [39] Dainese, Andrea. Cisco IOU Web Interface. [Online] 2012. http://the1979s.wordpress.com/cisco/cisco-iou-web-interface/.
31
10
Seznamy
10.1
Obrázky
Obrázek 1: Topologie zapojení zařízení v demonstrační úloze .............................................................6 Obrázek 2: Příklad propojení tří simulací běžících v PacketTracerech .................................................5 Obrázek 3: Hierarchie modulů ............................................................................................................6 Obrázek 4: Spojení modulů .................................................................................................................6 Obrázek 5: Struktura ANSARouteru na nejvyšší úrovni abstrakce .......................................................8 Obrázek 6: Souvztažnost komponent ...................................................................................................9 Obrázek 7: Diagram syntaxe NET souboru........................................................................................ 12 Obrázek 8: Triviální topologie .......................................................................................................... 15 Obrázek 9: Ukázkový NET soubor pro GNS3 ................................................................................... 16 Obrázek 10: Ilustrace nastavení Idle-PC hodnoty .............................................................................. 17 Obrázek 11: Základní ovládací prvky GNS3 ..................................................................................... 20 Obrázek 12: Prvky okna správce IOSů .............................................................................................. 21 Obrázek 13: Syntaxe IOURC licenčního souboru .............................................................................. 24 Obrázek 14: CCNP Switch laboratoř ................................................................................................. 25 Obrázek 15: Ukázkový NETMAP soubor pro Cisco IOU .................................................................. 25 Obrázek 16: Nápověda k atributům binárky a příklad spuštění Cisco IOU ......................................... 26 Obrázek 17: Nápověda k programu wrapper, příklad jeho spuštění a ukončení .................................. 27 Obrázek 18: Správa virtuální sítě v IOU-web .................................................................................... 27
10.2
Tabulky
Tabulka 1: Přehled existujících simulátorů a emulátorů .......................................................................5 Tabulka 2: Přehled technologií v rozšíření ANSAINET.......................................................................7 Tabulka 3: Přehled základních rozhraní emulovaného routeru ........................................................... 10 Tabulka 4: Přehled PA, NM a WIC rozšíření do slotů........................................................................ 11 Tabulka 5: Některé z parametrů obecné sekce ................................................................................... 12 Tabulka 6: Některé z parametrů sekce klienta .................................................................................... 13 Tabulka 7: Některé z parametrů podsekce modelu ............................................................................. 13 Tabulka 8: Některé z parametrů podsekce konkrétního zařízení ......................................................... 14 Tabulka 9: Parametrická konfigurace přepínačů ................................................................................ 15 Tabulka 10: Tabulka syntaxe a významu příkazů akceptovaných konzolí Dynagenu.......................... 18 32