ˇ ´ UCEN ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
´ ´I A SIMULACE NAVRHOV ´ ´ ˚ MODELOVAN YCH VZORU ˇ ´ITACOV ˇ ˇ ´ ´I V POC ´ SMEROV AN YCH S´IT´ICH
ˇ ´ PRACE ´ BAKALA´ RSK A BACHELOR’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2009
´ VERONIKA RYBOVA
ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
´ ´I A SIMULACE NAVRHOV ´ ´ ˚ MODELOVAN YCH VZORU ˇ ´ITACOV ˇ ˇ ´ ´I V POC ´ SMEROV AN YCH S´IT´ICH MODELLING AND SIMULATION OF NETWORK DESIGN GUIDES FOR IP ROUTING
ˇ ´ PRACE ´ BAKALA´ RSK A BACHELOR’S THESIS
´ AUTOR PRACE
´ VERONIKA RYBOVA
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2009
ˇ Ing. PETR MATOUSEK, Ph.D.
Abstrakt Tato bakal´ aˇrsk´ a pr´ ace se zab´ yv´ a modelov´an´ım a simulac´ı s´ıt´ı v n´astroj´ıch Packet Tracer a OMNeT++. Modely s´ıt´ı jsou vytvoˇreny podle n´avrhov´ ych vzor˚ u firmy Cisco a zamˇeˇruj´ı se na smˇerovac´ı protokoly RIP, OSPF a redistribuci. Aby byly modely plnˇe funkˇcn´ı, je pro OMNeT++ implementov´ an protokol RIP a redistribuce z protokolu OSPF do protokolu RIP. Praktick´e vyuˇzit´ı n´ astroj˚ u je uk´az´ano na simulaci dostupnosti a stability s´ıtˇe. Pr´ ace zkoum´ a v´ ysledky simulac´ı a vyuˇzit´ı obou n´astroj˚ u pro simulaci s´ıt´ı. Vyuˇz´ıv´ame n´avrhov´e vzory urˇcen´e pro n´ avrh smˇerov´ an´ı v re´aln´ ych s´ıt´ı a implementujeme protokol podle standardu RFC. Proto pˇredpokl´ ad´ ame praktick´e vyuˇzit´ı pˇri anal´ yze a simulac´ı firemn´ıch a akademick´ ych poˇc´ıtaˇcov´ ych s´ıt´ı.
Abstract This bachelor’s thesis describes simulation of network using tools Packet Tracer and OMNeT++. Models of network are created according to design guides by Cisco company, which use routing protocols RIP, OSPF and redistribution. In order to provide full functionality of models in OMNeT++ it is necessary to implement protocol RIP and redistribution from protocol OSPF to protocol RIP. Practical usage of tools is demonstrated by simulations of accessibility and stability of network. Thesis investigates results of simulations and usage of both tools for simulation of networks. We use design guides, which are destined to design of real networks, and implement protocol according to standard RFC, therefore we suppose that this thesis will have practical usage for analysis and simulation of company’s and academical networks.
Kl´ıˇ cov´ a slova Simulace s´ıt´ı, modelov´ an´ı s´ıt´ı, anal´ yza s´ıt´ı, RIP, OSPF, OMNeT++, Packet Tracer, Cisco
Keywords Simulation of networks, modelling of networks, analysis of networks, RIP, OSPF, OMNeT++, Packet Tracer, Cisco
Citace Veronika Rybov´ a: Modelov´ an´ı a simulace n´avrhov´ ych vzor˚ u smˇerov´an´ı v poˇc´ıtaˇcov´ ych s´ıt´ıch, bakal´ aˇrsk´ a pr´ ace, Brno, FIT VUT v Brnˇe, 2009
Modelov´ an´ı a simulace n´ avrhov´ ych vzor˚ u smˇ erov´ an´ı v poˇ c´ıtaˇ cov´ ych s´ıt´ıch Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´ aˇrskou pr´aci vypracovala samostatnˇe pod veden´ım pana Ing. Matouˇska, Ph.D. ....................... Veronika Rybov´ a 15. kvˇetna 2009
Podˇ ekov´ an´ı Dˇekuji zejm´ena sv´emu vedouc´ımu Ing. Petru Matouˇskovi, PhD. za odbornou pomoc a st´alou ˇcasovou dostupnost. Podˇekov´ an´ı si zaslouˇz´ı i dalˇs´ı kolegov´e z ANSA t´ ymu, kteˇr´ı mi takt´eˇz pˇrispˇeli odborn´ ymi radami. Nakonec bych r´ada podˇekovala sv´e rodinˇe a pˇr´ıteli za psychickou podporu pˇri zpracov´ av´ an´ı bakal´ aˇrsk´e pr´ace.
c Veronika Rybov´
a, 2009. Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ Uvod C´ıl pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Struktura pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Simulaˇ cn´ı n´ astroje 1.1 Modelov´ an´ı a simulace 1.2 N´ astroj Packet Tracer 1.3 N´ astroj OMNeT++ . 1.4 Shrnut´ı kapitoly . . . .
4 4 4
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
6 6 8 12 16
OSPF . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
18 18 19 22 27 29
3 Simulaˇ cn´ı modely 3.1 Simulaˇcn´ı modely v PT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Simulaˇcn´ı modely v OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Shrnut´ı kapitoly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31 31 33 35
4 Implementace 4.1 Implementace protokolu RIP . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Implementace redistribuce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Shrnut´ı kapitoly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36 36 39 39
5 Simulace v prostˇ red´ı Packet Tracer 5.1 Dostupnost . . . . . . . . . . . . . 5.2 Stabilita . . . . . . . . . . . . . . . 5.3 Shrnut´ı kapitoly . . . . . . . . . . .
40 40 45 47
s´ıt´ı . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
2 N´ avrhov´ e vzory se zamˇ eˇ ren´ım na protokoly RIP a 2.1 Smˇerov´ an´ı . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Protokol RIP . . . . . . . . . . . . . . . . . . . . . . 2.3 Protokol OSPF . . . . . . . . . . . . . . . . . . . . . 2.4 N´ avrhov´e vzory Cisco . . . . . . . . . . . . . . . . . 2.5 Shrnut´ı kapitoly . . . . . . . . . . . . . . . . . . . . .
a . . .
. . . .
. . . .
. . . .
. . . .
OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 V´ ysledky simulac´ı v n´ astroj´ıch OMNeT++ a Packet Tracer 6.1 V´ ysledky simulac´ı . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Porovn´ an´ı n´ astroj˚ u OMNeT++ a Packet Tracer . . . . . . . . 6.3 Pˇr´ınos simulace pro praktickou anal´ yzu poˇc´ıtaˇcov´ ych s´ıt´ı . . . . 6.4 Shrnut´ı kapitoly . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
48 48 50 52 52
Z´ avˇ er Vlastn´ı pˇr´ınos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dalˇs´ı v´ yvoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53 53 54
A Obsah DVD
57
B Instalaˇ cn´ı pˇ r´ıruˇ cka B.1 Instalace programu PacketTracer 5.0 . . . . . . . . . . . . . . . . . . . . . . B.2 Instalace n´ astroje OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . B.3 Instalace framework INET . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58 58 59 59
C Implementace RIPRouting
60
D Konfiguraˇ cn´ı soubory D.1 Konfiguraˇcn´ı soubor pro OSPF model . . . . . . . . . . . . . . . . . . . . . D.2 Konfiguraˇcn´ı soubor pro RIP model . . . . . . . . . . . . . . . . . . . . . . D.3 Konfiguraˇcn´ı soubor pro redistribuˇcn´ı model . . . . . . . . . . . . . . . . . .
62 62 63 64
2
Seznam obr´ azk˚ u 1.1
Proces modelov´ an´ı a simulace (Z = znalosti; AM = abstraktn´ı model; SM = simulaˇcn´ı model). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Prostˇred´ı programu PT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Konfiguraˇcn´ı rozhran´ı pˇrep´ınaˇce v PT. . . . . . . . . . . . . . . . . . . . . . 1.4 Rozhran´ı s operaˇcn´ım syst´emem IOS v PT. . . . . . . . . . . . . . . . . . . 1.5 Z´ akladn´ı informace o zaˇr´ızen´ı v PT. . . . . . . . . . . . . . . . . . . . . . . 1.6 Simulaˇcn´ı m´ od. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7 OSI model PDU v PT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.8 Struktura PDU v PT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.9 Hierarchick´ a struktura modul˚ u. . . . . . . . . . . . . . . . . . . . . . . . . . 1.10 Spojen´ı submodul˚ u mezi sebou a propojen´ı rodiˇcovsk´eho modulu se submoduly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.11 Diagram popisuj´ıc´ı vytvoˇren´ı spustiteln´eho souboru v OMNeT++. . . . . . 1.12 Simulaˇcn´ı prostˇred´ı v OMNeT++. . . . . . . . . . . . . . . . . . . . . . . . Struktura zpr´ avy protokolu RIP. . . . . . . OSPF s´ıt’ bez Designated Router. . . . . . . Struktura OSPF Hello paketu. . . . . . . . S´ıt’ se smˇerovac´ım protokolem RIP. . . . . . RIP s´ıt’ se smˇerovac´ım protokolem OSPF ve S´ıt’ rozdˇelen´ a na OSPF oblasti. . . . . . . .
. . . . . .
22 25 26 28 28 29
3.1 3.2
Topologie s´ıtˇe v PT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Topologie s´ıtˇe v OMNeT++. . . . . . . . . . . . . . . . . . . . . . . . . . .
32 35
4.1 4.2
Modul ANSARouter obsahuj´ıc´ı modul RIP. . . . . . . . . . . . . . . . . . . Diagram aktivit zobrazuj´ıc´ı vztahy mezi metodami ve tˇr´ıdˇe RIPRouting. . .
37 38
5.1 5.2
Topologie simulovan´ı s´ıtˇe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 V´ ypis pr˚ uchodu ICMP paketu s´ıt’ov´ ymi zaˇr´ızen´ımi. a) Linky jsou v poˇr´adku. b) Pˇri cestˇe paketu zpˇet doˇslo k p´adu linky. c) Linka mezi R1 a R2 je nefunkˇcn´ı. 41 V´ ypis pr˚ uchodu ICMP paketu s´ıt’ov´ ymi zaˇr´ızen´ımi. ACL na smˇerovaˇci R2 paket zahodil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.1 6.2 6.3
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
14 16 17
2.1 2.2 2.3 2.4 2.5 2.6
5.3
. . . . . . . . . . . . . . . . . . . . stˇredu. . . . . . .
7 9 10 10 11 12 13 13 14
Graf z´ avislosti poˇctu pˇrijat´ ych paket˚ u na ∆t dle tabulky 5.1. . . . . . . . . Graf z´ avislosti pr˚ umˇern´eho poˇctu pˇrijat´ ych paket˚ u na ∆t dle tabulky 5.2. . Model s´ıtˇe, kterou vyuˇz´ıv´ame v simulac´ıch. . . . . . . . . . . . . . . . . . .
3
49 50 51
´ Uvod Tato pr´ ace popisuje moˇznosti simulace s´ıt´ı a to zejm´ena za u ´ˇcelem zjiˇstˇen´ı chov´an´ı s´ıtˇe za r˚ uzn´ ych okolnost´ı. Zamˇeˇruje se pˇredevˇs´ım na simulaci smˇerovac´ıch protokol˚ u a to konkr´etnˇe RIP a OSPF, kter´e se v dneˇsn´ı dobˇe ve firm´ach nejˇcastˇeji vyuˇz´ıvaj´ı. Pro tyto u ´ˇcely vyuˇzijeme simulaˇcn´ı n´ astroje Packet Tracer a OMNeT++ a na vybran´ ych vhodn´ ych topologi´ıch pˇredvedeme simulaci stav˚ u, ke kter´ ym v r´amci smˇerov´an´ı v s´ıt´ıch bˇeˇznˇe doch´az´ı. Rozhodneme-li se vytvoˇrit zcela novou s´ıt’, napˇr. pro vznikaj´ıc´ı firmu ˇci jej´ı poboˇcku, m˚ uˇze b´ yt n´ aroˇcn´e zjiˇst’ovat, jak´e s´ıt’ov´e prvky, jak´e jejich nastaven´ı a jak´a topologie jsou pro ni nejvhodnˇejˇs´ı. Zakoupen´ı r˚ uzn´ ych druh˚ u s´ıt’ov´ ych prvk˚ u a n´asledn´e experimentov´ an´ı s c´ılem dos´ ahnout, co nejv´ yhodnˇejˇs´ı topologie a konfigurace, je finanˇcnˇe i ˇcasovˇe n´aroˇcn´e. Podobnˇe zjiˇst’ov´ an´ı parametr˚ u u jiˇz existuj´ıc´ı s´ıtˇe nen´ı lehk´ y u ´kol. Testovat takovou s´ıt’ za chodu m˚ uˇze zp˚ usobovat probl´emy, obzvl´aˇstˇe pokud se rozhodneme zjiˇst’ovat, jak bude reagovat s´ıt’ pˇri p´ adu nˇekolika smˇerovaˇc˚ u pˇri maxim´aln´ım zat´ıˇzen´ı s´ıtˇe. To sebou nese probl´emy nejen s uˇzivateli t´eto s´ıtˇe, ale firmˇe m˚ uˇze tak´e pˇrin´est nechtˇen´e finanˇcn´ı ztr´aty. Jako nejlevnˇejˇs´ım a nejefektivnˇejˇs´ım ˇreˇsen´ı se jev´ı vyuˇzit´ı simulace s´ıtˇe. V simulaˇcn´ım n´astroji m˚ uˇzeme modelovat aktu´aln´ı nebo zam´ yˇslenou topologii s´ıtˇe a podrobit ji s´erii nejr˚ uznˇejˇs´ıch test˚ u. Dneˇsn´ı simulaˇcn´ı n´astroje vˇetˇsinou podporuj´ı i grafick´e uˇzivatelsk´e rozhran´ı, d´ıky kter´emu je moˇzn´e vizu´alnˇe sledovat chov´an´ı s´ıtˇe.
C´ıl pr´ ace Tato pr´ ace by mˇela b´ yt ucelen´ ym n´avodem, jak prov´adˇet simulov´an´ı s´ıt´ı. Zamˇeˇr´ı se na smˇerovac´ı protokoly RIP a OSPF, kter´e se vyuˇz´ıvaj´ı v s´ıt´ıch nejˇcastˇeji. Povede ˇcten´ aˇre od z´akladn´ıch informac´ı nutn´ ych k pochopen´ı simulac´ı s´ıtˇe aˇz k proveden´ı vlastn´ıch simulac´ıch. Nahl´edne pod pokliˇcku simulaˇcn´ıch n´astroj˚ u Packet Tracer a OMNeT++, na kter´ ych pˇredvede, jak´e rysy jsou pro simulaci podstatn´e. Pop´ıˇse modelov´an´ı nˇekolika vybran´ ych topologi´ı, navrhne, kter´e aspekty je podstatn´e simulovat, a simulaci provede.
Struktura pr´ ace Prvn´ı kapitola se zab´ yv´ a t´ım, co je simulace s´ıt´ı a jak´e prostˇredky je moˇzn´e vyuˇz´ıt. V druh´e kapitole se zab´ yv´ ame smˇerov´an´ım a konkr´etn´ımi smˇerovac´ımi protokoly RIP a OSPF. Zm´ın´ıme se zde tak´e o n´avrhov´ ych vzorech, kter´e pouˇzijeme pro simulaci. V tˇret´ı kapitole je pops´ ana tvorba simulaˇcn´ıch model˚ u na z´akladˇe vybran´ ych n´avrhov´ ych vzor˚ u v n´ astroj´ıch Packet Tracer a OMNeT++. ˇ Ctvrt´ a kapitola se zab´ yv´ a implementac´ı chybˇej´ıc´ıch modul˚ u do n´astroje OMNeT++. V p´ at´e kapitole si pˇredvedeme simulaci vybran´ ych vlastnost´ı s´ıt´ı v n´astroj´ıch Packet Tracer a OMNeT++ s vyuˇzit´ım vytvoˇren´ ych simulaˇcn´ıch model˚ u.
4
ˇ a kapitola se zamˇeˇr´ı na zhodnocen´ı v´ Sest´ ysledk˚ u simulac´ı z pˇredchoz´ı kapitoly a zhodnocen´ı obou simulaˇcn´ıch n´ astroj˚ u. Nakonec shrneme moˇznosti praktick´eho vyuˇzit´ı tˇechto simulac´ı a simulaˇcn´ıch n´ astroj˚ u.
5
Kapitola 1
Simulaˇ cn´ı n´ astroje Smyslem t´eto pr´ ace je popsat simulace s´ıt´ı, proto je podstatn´e si na zaˇc´atku vysvˇetlit, co to vlastnˇe simulace s´ıt´ı je a co vˇsechno zahrnuje. N´aslednˇe pop´ıˇseme, jak se pracuje pˇri simulace s´ıt´ı v simulaˇcn´ıch n´ astroj´ıch Packet Tracer a OMNeT++. Na z´avˇer oba tyto n´astroje srovn´ am a zhodnot´ım jejich simulaˇcn´ı moˇznosti.
1.1
Modelov´ an´ı a simulace s´ıt´ı
V t´eto sekci se kromˇe simulace jako takov´e zamˇeˇr´ıme na popis diskr´etn´ı simulace, kter´ a se pˇri simulac´ıch s´ıt´ı nejˇcastˇeji pouˇz´ıv´a. Velk´a ˇc´ast t´eto sekce se bude zab´ yvat simulac´ı zamˇeˇrenou jiˇz konkr´etnˇe na s´ıtˇe.
1.1.1
Modelov´ an´ı a simulace obecnˇ e
Modelov´ an´ı je proces vytv´ aˇren´ı modelu syst´emu. Pˇredpokl´adejme, ˇze syst´em je soubor element´ arn´ıch ˇc´ ast´ı, kter´e mezi sebou maj´ı urˇcit´e vazby. Model je urˇcitou abstrakc´ı syst´emu. Modelov´ an´ı je z´ asadn´ı a podstatn´ y krok, od kter´eho se vyv´ıj´ı v´ ysledky simulace. Kvalita modelu je z´ avisl´ a na naˇs´ıch znalostech o syst´emu. Simulace je experimentov´an´ı s modelem syst´emu za u ´ˇcelem z´ısk´ av´ an´ı nov´ ych poznatk˚ u o modelovan´em syst´emu. Tvorba modelu a jeho vhodn´ y popis, stejnˇe jako jeho spr´avnost, jsou pro simulaci kl´ıˇcov´e. Nejdˇr´ıve je tˇreba syst´em dobˇre prozkoumat a ujasnit si, kter´e jeho aspekty chceme modelovat. Po t´e vytvoˇr´ıme abstraktn´ı model, kter´ y neobsahuje vˇsechny podrobnosti re´ aln´eho syst´emu, ale jen ty, o kter´ ych jsme rozhodli, ˇze jsou pro simulov´an´ı podstatn´e. T´ım dojde ˇcasto k v´ yrazn´emu zjednoduˇsen´ı a model je pak snadnˇejˇs´ı implementovat. Na z´ akladˇe abstraktn´ıho modelu vytvoˇr´ıme model simulaˇcn´ı. Mezi obˇema modely je homomorfn´ı vztah, takˇze uˇz nedoch´az´ı k ˇz´adn´emu zjednoduˇsen´ı. Simulaˇcn´ı model m´a ale ˇ za u ´kol, narozd´ıl od abstraktn´ıho, slouˇzit k simulac´ım a experimentov´an´ım. Casto je proto simulaˇcn´ı model vlastnˇe programem, kter´ y postihuje abstraktn´ı model v cel´em rozsahu. N´asleduj´ı jiˇz samotn´e simulaˇcn´ı experimenty. V pr˚ ubˇehu simulace sb´ır´ame data. Jejich anal´ yzou z´ısk´ av´ ame nov´e poznatky o syst´emu a t´ım se cel´ y simulaˇcn´ı kruh uzav´ır´a. V analyzaˇcn´ı f´ azi se tak´e zab´ yv´ ame vhodnou prezentac´ı v´ ysledk˚ u v podobˇe graf˚ u, histogram˚ u apod. pro jejich lepˇs´ı zn´ azornˇen´ı. Cel´ y proces je zn´azornˇen na obr´azku 1.1. Podrobnˇejˇs´ı informace se m˚ uˇzete dozvˇedˇet v [11]. Simulace mohou b´ yt spojit´e, diskr´etn´ı nebo kombinovan´e (obsahuje diskr´etn´ı i spojit´e ˇc´asti). Kaˇzd´ a z nich se hod´ı na nˇeco jin´eho. Pˇri simulaci s´ıt´ı se ale nejˇcastˇeji pouˇz´ıv´ a
6
Obr´azek 1.1: Proces modelov´ an´ı a simulace (Z = znalosti; AM = abstraktn´ı model; SM = simulaˇcn´ı model).
diskr´etn´ı simulace, nebot’ jde o zas´ıl´an´ı zpr´av mezi s´ıt’ov´ ymi prvky. Proto se v n´asleduj´ıc´ı ˇc´asti budeme zab´ yvat jen t´ımto typem.
1.1.2
Diskr´ etn´ı simulace
Diskr´etn´ı simulace jsou zaloˇzeny na zmˇenˇe stavu syst´emu v urˇcit´em, pˇredem napl´anovan´em ˇcase. Stavy jsou mˇenˇeny tzv. ud´ alostmi. Pˇredpokl´ad´a se, ˇze ud´alost se vykon´a v nulov´em ˇcasu, a mezi jednotliv´ ymi ud´ alostmi se nic nedˇeje a syst´em se nijak nemˇen´ı. Podstatn´ ym pojmem pro kaˇzdou simulaci je simulaˇcn´ı ˇcas. Ten se podstatnˇe liˇs´ı od ˇcasu re´aln´eho nebo procesorov´eho (jak dlouho trv´a vykon´an´ı programu). Oproti ˇcasu re´aln´emu ho m˚ uˇzeme dle potˇreby zrychlit nebo zpomalit. V diskr´etn´ıch simulac´ıch je se simulaˇcn´ım ˇcase spojen kalend´ aˇr ud´ alost´ı, kter´ y ˇr´ıd´ı pr˚ ubˇeh simulace. Kalend´ aˇr ud´ alost´ı je uspoˇr´ adan´a datov´a struktura, kter´a uchov´av´a z´aznamy o napl´anovan´ ych ud´ alostech a to tak, ˇze jsou v kalend´aˇri seˇrazeny dle ˇcasu ud´alosti od ud´alost´ı s nejbliˇzˇs´ım ˇcasem vykon´ an´ı. Simul´ator pracuje ve smyˇcce. Pokud kalend´aˇr nen´ı pr´azdn´ y, vybere prvn´ı ud´ alost, nastav´ı simulaˇcn´ı ˇcas na dobu, kdy se m´a ud´alost vykonat, a ud´alost provede. Pokud jsou nˇejak´e dvˇe ud´alosti napl´anovan´e na stejn´ y ˇcas, rozhoduje o postupu zpracov´ an´ı jejich priorita. Pokud i ta je shodn´a, rozhodne n´ahodnˇe simul´ator.
1.1.3
Simulace s´ıt´ı
Jak jiˇz bylo zm´ınˇeno v kapitole , pokud navrhujeme novou s´ıt’ nebo rozˇsiˇrujeme s´ıt’ st´avaj´ıc´ı, m˚ uˇze n´ am simulace velmi pomoci. Je vhodn´e navrhnout nˇekolik topologi´ı, ty simulovat, experimentovat s r˚ uzn´ ymi probl´emy a pokusit se o nejlepˇs´ı n´avrh. Zaj´ımavou moˇznost´ı je vyuˇzit´ı emulace. Jde o propojen´ı simulace s re´aln´ ym provozem. Simulace s´ıt´ı se nejˇcastˇeji prov´adˇej´ı z d˚ uvod˚ u abychom zjistili: • Jak´ y dopad bude m´ıt na s´ıt’ vˇetˇs´ı vyt´ıˇzenost urˇcit´ ych linek ˇci zaˇr´ızen´ı oproti ostatn´ım. • Jak´ y dopad na v´ ykon bude m´ıt zmˇena topologie, rozˇs´ıˇren´ı s´ıtˇe nebo v´ ymˇena nˇekter´ ych s´ıt’ov´ ych zaˇr´ızen´ı za novˇejˇs´ı. • Jak se s´ıt’ bude chovat, pokud dojde k chybˇe linky nebo nˇekter´eho s´ıt’ov´eho zaˇr´ızen´ı. • Kter´ a zaˇr´ızen´ı nebo aplikace zp˚ usobuj´ı nejvˇetˇs´ı zpomalen´ı s´ıtˇe. • Kolik uˇzivatel˚ u zvl´ adne s´ıt’ obslouˇzit bez vˇetˇs´ıch zpoˇzdˇen´ı.
7
• Jak dlouho trv´ a s´ıt’ov´ ym aplikac´ım, neˇz odpov´ı na poˇzadavky uˇzivatel˚ u. Existuj´ı tak´e probl´emy, kter´e jsou pomoc´ı simulac´ı t´emˇeˇr neˇreˇsiteln´e, jako je napˇr. zjiˇstˇen´ı, zda jsou zaˇr´ızen´ı propojena korektnˇe, optimalizace n´avrhu a v´ ykonu s´ıtˇe, simulov´ an´ı rozs´ahl´ ych s´ıt´ıch a v neposledn´ı ˇradˇe simulace bezdr´atov´ ych s´ıt´ı, kdy je vliv okoln´ıho prostˇred´ı na tolik v´ yznamn´ y, ˇze ho nen´ı moˇzn´e zanedbat. Typick´ ymi ud´ alostmi pˇri diskr´etn´ıch simulac´ıch s´ıt´ı je vysl´an´ı paketu, pˇrijet´ı paketu a vyprˇsen´ı ˇcasovaˇce (Timeout). Do kalend´aˇre ud´alost´ı jsou ud´alosti vkl´ad´any podle ˇcasu, kdy maj´ı dorazit do sv´eho c´ıle. V´ıce o simulaci s´ıt´ı se lze doˇc´ıst v [12]. Existuje velk´e mnoˇzstv´ı simulaˇcn´ıch n´astroj˚ u, kter´e maj´ı r˚ uzn´e zamˇeˇren´ı. Nˇekter´e z nich vnikly pro v´ yukov´e u ´ˇcely, napˇr. Packet Tracer [24], CNET [19] nebo NetSim [28]. PARSEC [29], GloMoSim [18] nebo QualNet Developer [27] podporuj´ı paraleln´ı simulaci. Pokud bychom r´ adi vyhodnotili v´ ykon naˇs´ı s´ıtˇe, pak jsou vhodn´e n´astroje Performance PROPHET [25] nebo QualNet Developer [27]. Na simulov´an´ı bezdr´atov´ ych s´ıt´ı se zamˇeˇrili produkty GloMoSim a SWANS [22] postaven´ y na JiST. N´astroj Traffic [20] se zab´ yv´a zpoˇzdˇen´ım v s´ıti. Existuje ale i ˇrada obecnˇe zamˇeˇren´ ych n´astroj˚ u jako je OMNeT++ [23], CNET, GTNetS [21] a dalˇs´ı.
1.2
N´ astroj Packet Tracer
V t´eto ˇc´ asti se budeme zab´ yvat simulaˇcn´ım n´astrojem od firmy Cisco – Packet Tracer (d´ ale jen PT). Pro popis jsme zvolili nejnovˇejˇs´ı verzi PT 5.0 [24]. Zjiˇst’ovali jsme, jak´e schopnosti m´a tento program v oblasti modelov´an´ı a simulaci s´ıt´ı. N´avod na instalaci programu je v pˇr´ıloze B. Dalˇs´ı informace m˚ uˇzete nastudovat v struˇcn´em n´avodu [3].
1.2.1
Popis prostˇ red´ı a moˇ znost´ı programu Packet Tracer
PT nab´ız´ı vizualizaˇcn´ı a simulaˇcn´ı n´astroje, n´astroje pro sestaven´ı topologie z model˚ u re´aln´ ych s´ıt’ov´ ych prvk˚ u od firmy Cisco ˇci n´astroje pro vytv´aˇren´ı nejr˚ uznˇejˇs´ıch aktivit a test˚ u pro studenty. D˚ uraz se klade na mnoˇzstv´ı s´ıt’ov´ ych prvk˚ u t´eto firmy, kter´e si m˚ uˇze uˇzivatel sestavit, propojit a nastavit dle vlastn´ıho uv´aˇzen´ı. Vizualizace a animace jsou vhodn´e pˇri simulaci re´aln´eho provozu s´ıtˇe, d´ıky nimˇz m´ a 1 uˇzivatel moˇznost sledovat, v jak´em ˇcase, odkud kam putuj´ı jednotliv´e PDU (Protocol Data Unit), vˇcetnˇe toho jak´e informace nesou. Packet Tracer podporuje protokoly HTTP, Telnet, SSH, TFTP, DHCP, TCP, UDP, IPv4, IPv6, ICMPv4, ICMPv6, RIP, EIGRP, OSPF, statick´e smˇerov´ an´ı, distribuce cest, Ethernet/802.3, 802.11, HDLC, Frame Relay, PPP, ARP, CDP, STP, RSTP, 801.1q, VTP, DTP a PAgP. Prostˇred´ı programu po je zobrazeno na obr´azku 1.2.
1.2.2
Modelov´ an´ı s´ıt´ı
Pro modelov´ an´ı s´ıt´ı obsahuje PT mnoho moˇznost´ı a vcelku vˇernˇe napodobuje skuteˇcn´e vytv´aˇren´ı s´ıt´ı (kabel´ aˇz, konfigurace). Nab´ız´ı nepˇrebern´e mnoˇzstv´ı model˚ u s´ıt’ov´ ych prvk˚ u a kabel˚ u k jejich propojen´ı. M˚ uˇzeme vyb´ırat z nˇekolika druh˚ u smˇerovaˇc˚ u, pˇrep´ınaˇc˚ u, rozboˇcovaˇc˚ u a bezdr´ atov´ ych zaˇr´ızen´ı od firmy Cisco. Podobnˇe u kabel˚ u si je moˇzn´e vybrat, zda pouˇzijeme kˇr´ıˇzen´ y, pˇr´ım´ y, s´eriov´ y, koaxi´aln´ı ˇci optick´ y kabel. 1
Obecn´ y n´ azev pro datovou jednotku zas´ılanou po s´ıti.
8
Obr´ azek 1.2: Prostˇred´ı programu PT.
Vˇetˇsina z nab´ızen´ ych zaˇr´ızen´ı je modul´arn´ıch a tak i v PT je moˇzn´e pˇrid´avat do zaˇr´ızen´ı vybran´e moduly. Napˇr´ıklad z´ akladn´ı smˇerovaˇc Cisco 1841 umoˇzn ˇuje pˇrid´an´ı s´ıt’ov´ ych karet s ethernetov´ ymi porty (RJ-45), telefonn´ımi porty (RJ-11) nebo s´eriov´ ymi porty. Vˇsechna zaˇr´ızen´ı je moˇzn´e konfigurovat tak, jako by se jednalo o zaˇr´ızen´ı re´aln´a. Smˇerovaˇce a pˇrep´ınaˇce lze nastavovat pomoc´ı pˇr´ıkaz˚ u operaˇcn´ıho syst´emu IOS. Zde vˇsak mus´ıme podotknout, ˇze PT neumoˇzn ˇuje pouˇz´ıvat pˇr´ıkazy IOS v pln´e ˇs´ıˇri, ale bˇeˇznˇe uˇz´ıvan´e pˇr´ıkazy zvl´adne. Modelov´ an´ı s´ıt´ı se prov´ ad´ı v logick´em pracovn´ım prostotu. Do nˇej vkl´ad´ame s´ıt’ov´e prvky z nab´ıdky vlevo dole. Pro propojen´ı zaˇr´ızen´ı nejprve vybereme potˇrebn´ y druh kabel˚ u z nab´ıdky. Kliknut´ım na zaˇr´ızen´ı a v´ ybˇerem rozhran´ı, do kter´eho kabel zapoj´ıme, vybereme prvn´ı zaˇr´ızen´ı. Podobnˇe to provedeme s druh´ ym zaˇr´ızen´ım, kter´e chceme k prvn´ımu kabelem pˇripojit. M˚ uˇzeme pokraˇcovat nastaven´ım jednotliv´ ych zaˇr´ızen´ı. Klepnut´ım na zaˇr´ızen´ı se dostaneme do jeho nastaven´ı. Je moˇzn´e pracovat pˇres uˇzivatelsk´e rozhran´ı v z´aloˇzce Config (obr´azek 1.3), kter´e je vhodn´e pˇredevˇs´ım pro zaˇc´ateˇcn´ıky nebo bˇeˇzn´e uˇzivatele. U pˇrep´ınaˇce a smˇerovaˇce m˚ uˇzeme vyuˇz´ıt moˇznosti profesion´aln´ıho nastaven´ı zaˇr´ızen´ı v z´aloˇzce CLI (obr´azek 1.4), kde se simuluje pˇripojen´ı k zaˇr´ızen´ı pˇres konzolov´e rozhran´ı a umoˇzn ˇuje vyuˇz´ıt operaˇcn´ı syst´emu IOS. Zjiˇstˇen´ı nˇekter´ ych z´ akladn´ıch nastaven´ı zaˇr´ızen´ı lze prov´est pouh´ ym um´ıstˇen´ım kurzoru na dan´e zaˇr´ızen´ı. Na obr´ azku 1.5 m˚ uˇzeme vidˇet, ˇze se objev´ı n´apovˇeda obsahuj´ıc´ı nastaven´ı jednotliv´ ych rozhran´ı zaˇr´ızen´ı (Up/Down, VLAN, MAC a IP adresa). V Realtime m´odu lze vˇsechna zaˇr´ızen´ı restartovat pouˇzit´ım tlaˇc´ıtka Power Cycle Devices vyznaˇcen´eho v obr´azku 1.5 ˇcerven´ ym ov´ alem. To je praktick´e chceme-li sledovat chov´an´ı protokolu od momentu jeho spuˇstˇen´ı na zaˇr´ızen´ı.
9
Obr´ azek 1.3: Konfiguraˇcn´ı rozhran´ı pˇrep´ınaˇce v PT.
Obr´ azek 1.4: Rozhran´ı s operaˇcn´ım syst´emem IOS v PT.
10
Obr´ azek 1.5: Z´akladn´ı informace o zaˇr´ızen´ı v PT.
1.2.3
Simulace s´ıt´ı
Simulaˇcn´ı m´ od umoˇzn ˇuje upravit ˇcasovou osu, sledovat zpr´avy, kter´e si v s´ıti zaˇr´ızen´ı zas´ılaj´ı, sledovat jejich trasy, zkoumat podrobnˇe jejich obsah a vys´ılat vlastn´ı zpr´avy. Simulace v PT je diskr´etn´ı, tedy dalˇs´ı akce v ˇcase se prov´adˇej´ı skokovˇe. Popis simulaˇ cn´ıho m´ odu V simulaˇcn´ım m´ odu je pro simulaci pˇripraven simulaˇcn´ı panel. Na obr´azku 1.6 vid´ıme, ˇze se skl´ad´ a ze tˇr´ı ˇc´ ast´ı. V prvn´ı ˇc´ asti s n´azvem Event List se pˇri simulaci bude zobrazovat z´aznam o pos´ılan´ ych paketech. Ke kaˇzd´emu PDU se zde zaznamen´av´a ˇcas, ve kter´ y byl zasl´an, z jak´eho zaˇr´ızen´ı byl zasl´ an, na kter´em zaˇr´ızen´ı se pr´avˇe nach´az´ı a protokol, kter´ y vyuˇz´ıv´ a. Pro lepˇs´ı orientaci jeˇstˇe obsahuje dodatkov´e informace o tom, jestli je PDU pr´ avˇe viditeln´e a jakou barvu m´ a. PDU jsou totiˇz v topologii zobrazov´any jako ob´alky r˚ uzn´ ych barev (obr´ azek 1.6). Dalˇs´ı ˇc´ ast s n´ azvem Play Controls umoˇzn ˇuje simulaci ovl´adat. Pomoc´ı tlaˇc´ıtka Auto Capture/Play m˚ uˇzeme nechat simulaci plynule bˇeˇzet. Pro konkr´etn´ı ˇreˇsen´ı nˇejak´eho probl´emu jsou pak vhodnˇejˇs´ı tlaˇc´ıtka Capture/Forward a Back, kter´e prov´ad´ı v simulaci jeden krok dopˇredu nebo vzad. Na posuvn´ıku m˚ uˇzeme urˇcovat jak rychle se bude simulace prov´adˇet. V posledn´ı ˇc´ asti Event List Filters m˚ uˇzeme filtrovat provoz, kter´ y je v simulaci zobrazov´an. Implicitnˇe jsou povoleny vˇsechny protokoly, kter´e PT um´ı. Pomoc´ı tlaˇc´ıtka Edit Filters lze urˇcit, kter´e protokoly budeme sledovat, a nastavit ACL filtr. Resetov´ an´ım simulace se simulaˇcn´ı ˇcas nastav´ı na 0,000 sekund a vymaˇze se EventList. Resetov´ an´ı simulace provedeme tlaˇc´ıtkem Reset Simulation, restartov´an´ım zaˇr´ızen´ı (tlaˇc´ıtkem Power Cycle Devices) ˇci modifikov´an´ım topologie s´ıtˇe.
11
Obr´azek 1.6: Simulaˇcn´ı m´od.
Studium PDU Kaˇzdou jednotku PDU, kter´ a se zobraz´ı v Event Listu, m˚ uˇzeme d˚ ukladnˇe prozkoumat. PT m´a struktury PDU velmi dobˇre graficky zpracovan´e a tak se v nich lehce vyzn´a i zaˇc´ateˇcn´ık. Po informativn´ı str´ ance jsou plnohodnotn´e, takˇze i odborn´ık v nich najde vˇse potˇrebn´e. PDU informace z´ısk´ ame kliknut´ım na ob´alku v topologii nebo na z´aznam v Event Listu. V z´ aloˇzce OSI Model (obr´ azek 1.7) je n´azornˇe zobrazeno, jak je zpr´ava zpracov´av´ana jednotliv´ ymi vrstvami OSI modelu. Pod obr´azkem zn´azorˇ nuj´ıc´ım OSI model je postup detailnˇe pops´ an. Z´aloˇzka PDU Details (obr´ azek 1.8) zobrazuje obsah PDU. Ten je graficky organizov´ an do tabulek zn´ azorˇ nuj´ıc´ıch r˚ uzn´e typy hlaviˇcek, kter´e PDU obsahuje. Ty jsou d´ale ˇclenˇeny na pole obsahuj´ıc´ı informace.
1.3
N´ astroj OMNeT++
Vzhledem k tomu, ˇze se v t´eto pr´ aci m´ame zab´ yvat moˇznostmi simulaˇcn´ıho n´astroje OMNeT++, bude tato sekce vˇenov´ ana pr´ avˇe jemu. OMNeT++ je pro tuto pr´aci vhodn´ y, protoˇze je volnˇe dostupn´ y a m´ a otevˇren´ y zdrojov´ y k´od. Jeho dalˇs´ı v´ yhody budou uvedeny d´ale. Pro popis jsme zvolili posledn´ı verzi 4.0. Vˇsechny informace byly ˇcerp´any z velmi dobˇre zpracovan´eho manu´alu [17]. Stejnˇe jako u PT jsme zjiˇst’ovali, jak´e schopnosti m´a tento program v oblasti modelov´ an´ı a simulaci s´ıt´ı.
1.3.1
Moˇ znosti programu OMNeT++
OMNeT++ je objektovˇe orientovan´ y modul´arn´ı diskr´etn´ı s´ıt’ov´ y simul´ator. Je zaloˇzen´ y na objektov´em jazyku C++ a vlastn´ım jazyku NED. Existuj´ı verze pro Unix i Windows a obˇe verze jsou pro ˇskoln´ı u ´ˇcely zdarma. Kromˇe simulaˇcn´ıho j´adra obsahuje GUI a IDE. Obsahuje knihovny pro pr´ aci s TCP/IP, Ethernet, FDDI, Token Ring, 802.11 a Peer-to-peer.
12
Obr´ azek 1.7: OSI model PDU v PT.
Obr´ azek 1.8: Struktura PDU v PT.
13
1.3.2
Modelov´ an´ı
Pˇri modelov´ an´ı v OMNeT++ se do sebe vnoˇruj´ı jednotliv´e moduly hierarchicky. Nejv´ yˇse postaven´ y modul se oznaˇcuje jako modul syst´emov´ y, ten se skl´ad´a ze submodul˚ u (obr´azek 1.9). M˚ uˇze se jednat o modely sloˇzen´e, kter´e se skl´adaj´ı z dalˇs´ıch sloˇzen´ ych modul˚ u nebo z modul˚ u jednoduch´ ych. Ty jsou d´ale nedˇeliteln´e.
Obr´ azek 1.9: Hierarchick´a struktura modul˚ u. Topologie s´ıtˇe – propojen´ı jednotliv´ ych modul˚ u – se v OMNeT++ popisuje speci´aln´ım jazykem NED. Jednoduch´e moduly obsahuj´ı algoritmus, kter´ y se zapisuje v jazyce C++. Moduly nen´ı tˇreba ps´ at od zaˇc´ atku. OMNeT++ obsahuje nˇekolik pˇreddefinovan´ ych tˇr´ıd objekt˚ u, u kter´ ych je tˇreba jen redefinovat chov´an´ı. Moduly mezi sebou komunikuj´ı pomoci zas´ıl´an´ı zpr´av. Ty budeme vˇetˇsinou povaˇzovat za model PDU. Zpr´ avy mohou pˇrij´ıt od jin´eho modulu nebo ze stejn´eho (vyuˇz´ıvaj´ı se jako ˇcasovaˇce). Kaˇzd´ y modul obsahuje br´any, kter´e jsou vstupn´ı (In) pro pˇr´ıjem zpr´av a v´ ystupn´ı (Out) pro odes´ıl´ an´ı zpr´ av. Mezi br´anami modul˚ u se vytv´aˇr´ı spojen´ı. Spojen´ı m˚ uˇze existovat mezi moduly na stejn´e u ´rovni hierarchie nebo mezi modulem a jeho sloˇzen´ ym rodiˇcovsk´ ym modulem (obr´ azek 1.10). Pro moˇznost modelov´an´ı pˇrenosu paket˚ u po lince, m´a spojen´ı tˇri voliteln´e parametry – pˇrenosov´e zpoˇzdˇen´ı, bitov´a chybovost a rychlost pˇrenosu dat.
Obr´azek 1.10: Spojen´ı submodul˚ u mezi sebou a propojen´ı rodiˇcovsk´eho modulu se submoduly.
1.3.3
Jazyk NED
Jazyk NED slouˇz´ı pro popis topologii s´ıtˇe. Soubory obsahuj´ıc´ı popis jazykem NED mus´ı m´ıt pˇr´ıponu .ned. Zp˚ usob, kter´ ym se popisuj´ı moduly, je rozd´ıln´ y pro moduly sloˇzen´e a jednoduch´e. Popis jednoduch´eho modelu obsahuje kromˇe povinn´eho n´azvu volitelnˇe parametry a br´ any. Br´ any m˚ uˇzeme zadat pomoc´ı vektoru. simple SimpleModuleName { parametres:
; n´ azev jednoduch´ eho modulu ; deklarace parametr˚ u 14
const example1; string example2; gates: input fromPort, input[]; output toPort, output[];
; deklarace bran ; vstupn´ ı br´ any (pomoc´ ı skal´ aru i vektoru) ; v´ ystupn´ ı br´ any
}
Popis sloˇzen´eho modulu m˚ uˇze volitelnˇe obsahovat parametry, br´any, submoduly a popis spojen´ı. Povinn´ y je jen n´ azev. Parametry a br´any maj´ı stejn´ y v´ yznam jako u jednoduch´ ych modul˚ u. Submoduly jsou moduly, ze kter´ ych se sloˇzen´ y modul skl´ad´a. Spojen´ı jsou kl´ıˇcov´ a pro vytvoˇren´ı topologie a ud´ avaj´ı, kter´a vstupn´ı br´ana se propoj´ı s kterou v´ ystupn´ı br´anou. module CompoundModuleName { parametres: const example1; string example2; gates: input fromPort; output toPort; submodules: node1: Node {}; node2: Node {}; connections: node1.output --> node2.input; node1.input <-- node2.output; }
; n´ azev sloˇ zen´ eho modulu ; deklarace parametr˚ u
; deklarace bran
; deklarace modulu (typ a n´ azev)
; definice propojen´ ı bran
Soubory .ned lze zapisovat textovˇe nebo pomoc´ı jednoduch´eho uˇzivatelsky pˇr´ıvˇetiv´eho n´astroje GNED, kter´ y OMNeT++ nab´ız´ı.
1.3.4
Simulace
Pot´e, co m´ ame napsan´e vˇsechny topologick´e popisy v souborech s pˇr´ıponou .ned, popisy zpr´av v souborech s pˇr´ıponou .msg a popisy chov´an´ı jednoduch´ ych modul˚ u v jazyk˚ u C++ v souborech s pˇr´ıponou .cc, m˚ uˇzeme cel´ y simulaˇcn´ı program sestavit. V´ ysledkem je spustiteln´ y soubor .exe (pod Windows), kter´ y jiˇz nepotˇrebuje knihovnu OMNeT++ a je spustiteln´ y na libovoln´em PC (obr´azek 1.11). Pro nastaven´ı parametr˚ u simulace jeˇstˇe budeme potˇrebovat soubor omnetpp.ini, jinak bychom museli toto nastaven´ı dˇelat pˇri kaˇzd´em spuˇstˇen´ı simulace ruˇcnˇe. Tento soubor m´ a vlastn´ı specifickou syntax, kter´ a je dopodrobna pops´ana v [23]. K dispozici jsou dva druhy uˇzivatelsk´ ych rozhran´ı – pˇr´ıkazov´a ˇr´adka (Cmdenv) a grafick´e (Tkenv zaloˇzen na Tcl/Tk). Pro vˇetˇs´ı n´azornost simulace je vhodn´ y grafick´ y reˇzim, pokud n´ as ale zaj´ımaj´ı pouze v´ ysledky simulace, postaˇc´ı n´am pˇr´ıkazov´a ˇr´adka. V grafick´em reˇzimu m˚ uˇzeme sledovat, jak zpr´ avy putuj´ı mezi zaˇr´ızen´ımi, zrychlovat/zpomalovat simulaci, sledovat grafick´e v´ ystupy statistik (histogramy atd.), restartovat animaci a dalˇs´ı. Bohuˇzel simulaci nejde vracet v ˇcase. 15
Obr´ azek 1.11: Diagram popisuj´ıc´ı vytvoˇren´ı spustiteln´eho souboru v OMNeT++.
Simulaˇcn´ı prostˇred´ı m˚ uˇzeme vidˇet na obr´azku 1.12. Pod panelem n´astroj˚ u se nach´ az´ı ˇcasov´a osa, na kter´e jsou vyznaˇcena ud´alosti uloˇzen´e v kalend´aˇri. Vpravo na obr´azku m˚ uˇzeme vidˇet modul pˇredstavuj´ıc´ı topologii s´ıtˇe a vlevo modul pˇredstavuj´ıc´ı smˇerovaˇc. Zpr´avy jsou symbolizov´ any ˇcervenou teˇckou s n´azvem zpr´avy, kter´e se pohybuj´ı topologi´ı. Vpravo dole je okno s bliˇzˇs´ımi informacemi o zpr´avˇe. V pˇr´ıpadˇe paketu se zde m˚ uˇzeme doˇc´ıst vˇsechny podstatn´e informace - MAC adresy, IP adresy, porty, obsah zpr´avy apod. OMNeT++ je pro simulaci vybaven rozs´ahlou simulaˇcn´ı knihovnou, kter´ y sk´ yt´a mnoho moˇznost´ı. Existuje zde tˇr´ıda pˇredstavuj´ıc´ı zas´ılan´e zpr´avy (cMessage), tˇr´ıda pro pˇr´ıstup k bran´ am a parametr˚ um zadan´ ym v .ned souboru(cModule), funkce pro zas´ıl´an´ı, pˇrij´ım´ an´ı zpr´av a pl´ anov´ an´ı ud´ alost´ı (send(), schedulaAt(), endSimulation()), funkce pro pˇr´ıstup k ostatn´ım modul˚ um (parentModulu(), ownerModule(), toGate()). Statistick´ a knihovna umoˇzn ˇuje zpracov´avat v´ ysledky a vypisovat poˇcet vzork˚ u, pr˚ umˇern´e hodnoty, odchylky, minima, maxima. M´a tak´e nˇekolik moˇznost´ı implementace histogram˚ u. Souˇc´ast´ı OMNeT++ jsou n´ astroje Plove a Scalars, kter´e mohou b´ yt pouˇzity pro zpracov´ an´ı a anal´ yzu v´ ysledk˚ u ve formˇe graf˚ u. Plove pracuje s hodnotami v ˇcase a Scalars s hodnotami skal´arn´ımi.
1.4
Shrnut´ı kapitoly
Tato kapitola popsala, co to je simulace. Bl´ıˇze popsala simulaci diskr´etn´ı a nakonec se zamˇeˇrila na simulov´ an´ı s´ıt´ı. Byly zde tak´e zm´ınˇeny simulaˇcn´ı n´astroje, kter´e m˚ uˇzeme k simulaci pouˇz´ıt. Dva z nich – Packet Tracer a OMNeT++ – byly n´aslednˇe bl´ıˇze pops´any. Oba n´astroje jsou vhodn´e pro simulaci s´ıt´ı, ale kaˇzd´ y m´a sv´e v´ yhody i nev´ yhody. OMNeT++ je univerz´ aln´ı simulaˇcn´ı n´astroj s velk´ ymi moˇznostmi. Pro nekomerˇcn´ı vyuˇzit´ı je zcela zdarma a je moˇzn´e jej d´ale rozˇsiˇrovat o knihovny, kter´e potˇrebujeme ke sv´e pr´aci. M´ a propracovan´ y jazyk pro popis topologie s´ıt´ı a pˇredpˇripraven´e tˇr´ıdy pro popis nejjednoduˇsˇs´ıch stavebn´ıch prvk˚ u topologie. Oproti tomu PT mohou vyuˇz´ıvat pouze studenti a uˇcitel´e Cisco akademie a jeho k´ od nen´ı volnˇe dostupn´ y. Tak´e vˇsechna zaˇr´ızen´ı, ze kter´ ych je moˇzn´e vytv´aˇret s´ıtˇe, jsou pouze znaˇcky Cisco, ani ty zde vˇsak nejsou zastoupeny vˇsechny. Program PT nen´ı moˇzn´e prakticky nijak rozˇs´ıˇrit. Nen´ı moˇzn´e doplˇ novat dalˇs´ı zaˇr´ızen´ı a kabely, upravovat jejich vlastnosti, ani
16
Obr´ azek 1.12: Simulaˇcn´ı prostˇred´ı v OMNeT++.
si doprogramovat chybˇej´ıc´ı protokoly nebo jejich novˇejˇs´ı verze. K modelov´ an´ı se v PT nab´ız´ı ˇsirok´a paleta s´ıt’ov´ ych komponent. Jejich propojov´an´ı je jednoduch´e a intuitivn´ı. Takt´eˇz nastavov´an´ı jednotliv´ ych s´ıt’ov´ ych prvk˚ u je jednoduch´e jak pro zaˇc´ ateˇcn´ıka, tak pro profesion´ ala, kter´ y m˚ uˇze vyuˇz´ıt operaˇcn´ı syst´em IOS. V OMNeT++ je tˇreba mnoho komponent dopsat, proto je v oblasti modelov´an´ı s´ıt´ı PT jednoduˇsˇs´ı a po mnoha str´ ank´ ach lepˇs´ı (re´ aln´e s´ıt’ov´e prvky, IOS). Simulace s´ıt´ı je v PT velmi n´azorn´a a snadn´a. Zkoum´an´ı obsah˚ u PDU je jednoduch´e, srozumiteln´e a pˇrehledn´e. Simulace je ale ponˇekud primitivn´ı a pro naˇse potˇreby nejsou zcela dostaˇcuj´ıc´ı. Neumoˇzn ˇuje simulovat nˇekter´e z´akladn´ı akce jako je p´ad linky ˇci porucha zaˇr´ızen´ı. V´ ysledky simulace nen´ı moˇzn´e nijak vyexportovat. Je tedy vhodnˇejˇs´ı pro ˇskoln´ı v´ yuku neˇz pro simulaci vˇetˇs´ı s´ıtˇe. Simulace v OMNeT++ mohou b´ yt v grafick´em reˇzimu tak´e velmi n´ azorn´e. OMNeT++ je ale naproti PT ryz´ı simulaˇcn´ı n´astroj a tak nab´ız´ı velk´e mnoˇzstv´ı tˇr´ıd vhodn´ ych pro simulaci. OMNeT++ je tedy po simulaˇcn´ı str´ance jednoznaˇcnˇe l´epe vybaven. D´ıky tomu, ˇze se jedn´ a o univerz´aln´ı n´astroj, neobsahuje samotn´ y OMNeT++ mnoho knihoven, kter´e by byly vhodn´e pro simulaci s´ıtˇe, pˇrednˇe zde chyb´ı knihovny pro smˇerovan´ı (RIP i OSPF), kter´e budeme d´ ale potˇrebovat. Tento probl´em se ale d´a ˇreˇsit pouˇzit´ım framework INET, kter´ y pracuje nad OMNeT++ a nab´ız´ı knihovny pro simulace s´ıt´ı. Ale ani v tomto pˇr´ıpadˇe nejsou knihovny dostaˇcuj´ıc´ı a bude tˇreba si nˇekter´e dopsat. Tento probl´em nemus´ıme u PT v˚ ubec ˇreˇsit, podporuje totiˇz vˇsechny bˇeˇzn´e smˇerovac´ı protokoly. Program PT byl urˇcen ke studiu s´ıt´ı. Jeho ovl´ad´an´ı je jednoduch´e a intuitivn´ı i pro laika. Pokud chce uˇzivatel pracovat s OMNeT++, mus´ı umˇet alespoˇ n z´aklady C++ a pˇredpokl´ad´ a se, ˇze se nauˇc´ı i nov´ y jazyk NED. N´astroj je pro zaˇc´ateˇcn´ıka pomˇernˇe sloˇzit´ y a zabere dost ˇcasu, neˇz se v nˇem zorientuje. Naˇstˇest´ı manu´al [23] je velmi dobˇre zpracov´an. 17
Kapitola 2
N´ avrhov´ e vzory se zamˇ eˇ ren´ım na protokoly RIP a OSPF Tato kapitola se zab´ yv´ a pˇredmˇetem simulov´an´ı. Budeme simulovat smˇerovac´ı protokoly RIP a OSPF. Proto se kr´ atce zm´ın´ım o tom, co to vlastnˇe smˇerovan´ı je a pop´ıˇsu zm´ınˇen´e smˇerovac´ı protokoly. Prozkoum´ am n´avrhov´e vzory od firmy Cisco a vyberu nˇekolik z nich, kter´e budou pro simulaci vhodn´e.
2.1
Smˇ erov´ an´ı
Tato kapitola je u ´vodem do smˇerov´an´ı. Uv´ad´ıme zde z´akladn´ı informace o smˇerov´ an´ı a smˇerovac´ı tabulce. Lehce se zm´ın´ıme o statick´em smˇerov´an´ı, dynamick´em smˇerov´an´ı a reˇ distribuci. Cerpali jsme z [2] a [7].
2.1.1
Smˇ erov´ an´ı a smˇ erovac´ı tabulka
Smˇerov´ an´ı je proces, pˇri kter´em smˇerovaˇc zjiˇst’uje cestu do c´ılov´e s´ıtˇe. Tento proces prob´ıh´ a na tˇret´ı vrstvˇe modelu ISO/OSI. K smˇerov´an´ı potˇrebuje smˇerovaˇc m´ıt smˇerovac´ı tabulku. V t´e se nach´ az´ı vˇsechny s´ıtˇe, kter´e zn´a a rozhran´ı, na kter´e m´a poslat paket, pokud smˇeruje nˇekter´e z tˇechto s´ıt´ı. Kam smˇeˇruje, zjist´ı smˇerovaˇc z IP hlaviˇcky paketu, pˇresnˇe z c´ılov´e IP adresy. Informace o s´ıt´ıch se do tabulky mohou dostat r˚ uzn´ ym zp˚ usobem. Z´aleˇz´ı na tom, zda smˇerovaˇc vyuˇz´ıv´ a statick´eho, dynamick´eho smˇerov´an´ı ˇci obou zp˚ usob˚ u.
2.1.2
Statick´ e smˇ erov´ an´ı
Statick´e smˇerov´ an´ı funguje na z´ akladˇe statick´ ych z´aznam˚ u v smˇerovac´ı tabulce. Tyto z´aznamy se musej´ı do tabulky zad´ avat ruˇcnˇe a zvl´aˇst’ pro kaˇzdou s´ıt’, coˇz m˚ uˇze b´ yt n´aroˇcn´e pro velk´e mnoˇzstv´ı okoln´ıch s´ıt´ıch, a tak se ˇcasto v takov´emto pˇr´ıpadˇe nahrazuje smˇerov´an´ım dynamick´ ym. Tyto z´ aznamy se tak´e mohou st´at ˇcasem neaktu´aln´ı a vyˇzaduj´ı znovu z´asah administr´ atora. Nejˇcastˇeji se proto pouˇz´ıvaj´ı pro z´apis, tzv. Default Gateway. Jde o z´aznam v tabulce, kter´ y je vybr´ an vˇzdy, pokud se jin´ y z´aznam v tabulce neshoduje s c´ılovou adresou s´ıtˇe paketu. V´ yhodou staticky zadan´ ych z´aznam˚ u je to, ˇze maj´ı nejniˇzˇs´ı administrativn´ı vzd´alenost ze vˇsech moˇzn´ ych zp˚ usob˚ u smˇerov´an´ı. Administrativn´ı vzd´alenost (Administrative Distance) ud´ av´ a d˚ uvˇeryhodnost zdroje cesty v tabulce. Z´aznamy zadan´e staticky ji
18
maj´ı implicitnˇe nastavenou na jedna. To znamen´a, ˇze tyto z´aznamy jsou povaˇzov´any za nejd˚ uvˇeryhodnˇejˇs´ı a maj´ı prioritu nad ostatn´ımi z´aznamy.
2.1.3
Dynamick´ e smˇ erov´ an´ı
Dynamick´e smˇerov´ an´ı, narozd´ıl od statick´eho, um´ı reagovat na zmˇeny v topologii s´ıtˇe. Pro vytv´aˇren´ı z´ aznam˚ u v tabulce vyuˇz´ıv´a algoritmy, kter´e dok´aˇzou z informac´ı, kter´e pˇrich´azej´ı od sousedn´ıch smˇerovaˇc˚ u, vypoˇc´ıtat tu nejlepˇs´ı cestu k c´ıli. Existuj´ı r˚ uzn´e zp˚ usoby dynamick´eho smˇerov´an´ı, jejichˇz chov´an´ı, funkˇcnost a v´ ymˇena informac´ı mezi smˇerovaˇci je podloˇzena r˚ uzn´ ymi druhy smˇerovac´ıch protokol˚ u. Podstatn´e ale je, ˇze vybran´ y protokol se nastav´ı na smˇerovaˇci a d´ale jiˇz vˇse funguje bez z´asahu administr´atora. To znamen´ a, ˇze smˇerovaˇce si sami zjist´ı okoln´ı s´ıtˇe a dok´aˇzou reagovat na zmˇeny topologie. S´ıtˇe b´ yvaj´ı rozdˇeleny pro u ´ˇcely dynamick´eho smˇerov´an´ı do autonomn´ıch oblast´ı. D˚ uvodem je, aby se informace o smˇerovac´ıch tabulk´ach neˇs´ıˇrily cel´ ym internetem a spr´ava s´ıt´ı byla snazˇs´ı. Podle druhu algoritm˚ u, kter´e smˇerovac´ı protokoly pouˇz´ıvaj´ı, je dˇel´ıme na protokoly vektorovˇe orientovan´e (Distance Vector Routing Protocol) a protokoly stavu linky (Linkstate). Vektorovˇe orientovan´e optimalizuj´ı cestu pouze podle vzd´alenosti od zdroje k c´ıli. Smˇerovaˇc si uchov´ av´ a informaci o smˇeru cesty jako vektor smˇeru (Next hop) a vzd´alenosti (Metric). Mezi takov´eto protokoly patˇr´ı RIP [5] a IGRP [6]. Link-state protokoly jsou typick´e t´ım, ˇze si udrˇzuj´ı kompletn´ı mapu topologie s´ıtˇe v tzv. topologick´e datab´azi (Link State Database). Takov´ ymi protokoly jsou OSPF [9] a IS-IS [10].
2.1.4
Redistribuce
V momentˇe, kdy r˚ uzn´e ˇc´ asti s´ıtˇe vyuˇz´ıvaj´ı r˚ uzn´e smˇerovac´ı protokoly (v naˇsem pˇr´ıpadˇe RIP a OSPF), je tˇreba vyuˇz´ıt redistribuci. Redistribuce je proces v r´amci jednoho smˇerovaˇce, kter´ y umoˇzn ˇuje pˇrekl´ adat smˇerovac´ı informace z jednoho smˇerovac´ıho protokolu na druh´ y. Moˇzn´a v´ as napadne, proˇc pouˇz´ıvat rozd´ıln´e smˇerovac´ı protokoly. Protokol RIP je nejstarˇs´ım dnes uˇz´ıvan´ ym protokolem, proto ho podporuj´ı snad vˇsechny s´ıt’ov´e prvky umoˇzn ˇuj´ıc´ı prov´ adˇet dynamick´e smˇerov´an´ı. Jak se dozv´ıme v n´asleduj´ıc´ı kapitole, nemus´ı RIP vyhovovat poˇzadavk˚ um administr´ator˚ u a ti pak mohou s´ahnout po nˇekter´em z novˇejˇs´ıch protokol˚ u jako je napˇr. OSPF. Proto mohou v m´enˇe kritick´ ych ˇc´astech s´ıtˇe ponechat star´ a nebo m´enˇe dokonal´a zaˇr´ızen´ı, kter´a budou vyuˇz´ıvat protokol RIP a napˇr´ıklad p´ ateˇrn´ı ˇc´ ast s´ıtˇe vybavit prvky, kter´e podporuj´ı OSPF protokol. Hlavn´ım probl´emem pˇri smˇerovan´ı jsou r˚ uzn´e metriky, kter´e smˇerovac´ı protokoly vyuˇz´ıvaj´ı. Hraniˇcn´ı smˇerovaˇce (smˇerovaˇce, kter´e pracuj´ı s dvˇema ˇci v´ıce druhy smˇerovac´ıch protokol˚ u) se pak mus´ı nastavit tak, aby dok´azaly cesty propagovat s vhodnou metrikou.
2.2
Protokol RIP
Prvn´ım protokolem, kter´ ym se budeme zab´ yvat je Routing Information Protocol (d´ale jen RIP). Je jedn´ım ze smˇerovac´ıch protokol˚ u, jejichˇz chov´an´ı m´ame simulovat. Bude uvedeno, jak RIP funguje, jakou metriku vyuˇz´ıv´a a jak vypadaj´ı zpr´avy, kter´e si smˇerovaˇce mezi sebou zas´ılaj´ı. Takt´eˇz se zm´ın´ıme jeho klady a z´apory, kter´e na z´avˇer zhodnot´ıme.
19
2.2.1
Struˇ cn´ y popis
RIP je nejstarˇs´ım a nejpouˇz´ıvanˇejˇs´ım smˇerovac´ım protokolem. Vznikl koncem 70. let a v roce 1988 se doˇckal standardizace v podobˇe RFC 1058 [5]. Protokol RIP vdˇeˇc´ı za svou obl´ıbenost pˇredevˇs´ım jednoduchosti, kter´a pˇredˇc´ı i jeho nˇekter´e nedostatky. Vˇetˇsina z nich pak byla odstranˇena v druh´e verzi tohoto protokolu. My se zamˇeˇr´ım pˇredevˇs´ım na popis protokol RIP verze 1 (RIPv1), protoˇze pˇredevˇs´ım ten budeme pouˇz´ıvat pˇri t´eto pr´aci. Jak uˇz bylo uvedeno v´ yˇse, RIP patˇr´ı mezi vektorovˇe orientovan´e protokoly.
2.2.2
Funkce protokolu RIP
RIP pouˇz´ıv´ a dva druhy zpr´ av – ˇz´adost (Request) a odpovˇed’ (Response) – a vˇzdy zas´ıl´ a vˇsechny zpr´ avy pomoc´ı broadcastu. Po restartu smˇerovaˇce rozeˇsle smˇerovaˇc na vˇsechna sv´ a rozhran´ı ˇz´ adost (Request). Jeho soused´e mu odpov´ı pomoc´ı zpr´avy (Response) obsahuj´ıc´ı jejich smˇerovac´ı tabulky. N´ aslednˇe, pokud nedojde ke zmˇenˇe topologie, uˇz smˇerovaˇc pos´ıl´ a jen aktualizaˇcn´ı zpr´ avy (Update Message). Kdyˇz smˇerovaˇc pˇrijme zpr´ avu obsahuj´ıc´ı smˇerovac´ı tabulku od souseda, kter´a obsahuje zmˇeny, provede aktualizaci sv´e tabulky. Metrika pro cestu se zv´ yˇs´ı o jedna a zap´ıˇse do tabulky. Podobnˇe pokud pˇrijde informace o cestˇe, kterou uˇz smˇerovaˇc v tabulce m´a, ale s lepˇs´ı metriku, aktu´ aln´ı z´ aznam pˇrep´ıˇse t´ımto nov´ ym. Smˇerovaˇc udrˇzuje vˇzdy jen informaci o t´e nejlepˇs´ı cestˇe, tedy cestu s nejniˇzˇs´ı metrikou. Soused, od kter´eho zpr´avu dostal, je oznaˇcen jako smˇer cesty (Next Hop). Po aktualizaci vlastn´ı tabulky, zaˇcne smˇerovaˇc vys´ılat vlastn´ı aktualizaˇcn´ı zpr´ avy, aby informoval o zmˇen´ach sousedn´ı smˇerovaˇce.
2.2.3
Metrika a administrativn´ı vzd´ alenost
Protokol RIP pouˇz´ıv´ a jako metriku pro mˇeˇren´ı vzd´alenosti mezi smˇerovaˇcem a c´ılovou s´ıt´ı poˇcet skok˚ u k c´ıly (Hop Count). Cesta mezi dvˇema soused´ıc´ımi smˇerovaˇci je vˇetˇsinou ohodnocena jedniˇckou. Pokud tedy smˇerovaˇc zas´ıl´a dvou smˇerovac´ı tabulku sv´emu sousedovi, pˇred odesl´ an´ım zpr´ avy nav´ yˇs´ı vˇsem cest´am Hop Count o jedna. Jak jiˇz bylo zm´ınˇeno v´ yˇse, IP adresa souseda je pak pouˇzita jako c´ıl pro nejbliˇzˇs´ı dalˇs´ı skok (Next Hop). RIP m´ a implicitn´ı administrativn´ı vzd´alenost 120, coˇz znamen´a, ˇze je jeden z nejm´enˇe d˚ uvˇeryhodn´ ych smˇerovac´ıch protokol˚ u. Napˇr´ıklad statick´a cesta m´a administrativn´ı vzd´ alenost jedna, protokol EIGRP 90 nebo OSPF 110. V praxi to znamen´a, ˇze pokud smˇerovac´ı tabulka obsahuje stejn´e cesty z r˚ uzn´ ych zdroj˚ u, pak je pro smˇerov´an´ı vybr´ana cesta s nejniˇzˇs´ı administrativn´ı vzd´ alenosti.
2.2.4
Tˇ r´ıdn´ı protokol
Smˇerovaˇce pouˇz´ıvaj´ıc´ı protokol RIP zas´ılaj´ı pouze IP adresy c´ıle, ne masku. RIP je totiˇz tˇr´ıdn´ı (Classful) protokol. Smˇerovaˇc pak pouˇzije masku nakonfigurovanou na lok´aln´ım rozhran´ı nebo implicitn´ı masku na z´akladˇe tˇr´ıdy IP adresy. Toto m˚ uˇze b´ yt, spolu s automatickou sumarizac´ı, z´ avaˇzn´ y probl´em. Uved’me si pˇr´ıklad. Budeme-li uvaˇzovat tˇri budovy firmy, kaˇzd´a bude m´ıt vlastn´ı IP adresu s´ıtˇe, ˇreknˇeme 10.10.0.0/16, 10.11.0.0/16 a 10.12.0.0/16. Smˇerovaˇce v jednotliv´ ych budov´ach budou propojeny s´ıt´ı s IP adresou 192.168.1.0/24. V tomto pˇr´ıpadˇe nelze pouˇz´ıt protokol RIP, nebot’ smˇerovaˇce si budou pos´ılat informace pouze o s´ıt´ıch s IP adresou 10.0.0.0/8 (dojde k sumarizaci podle typu tˇr´ıdy) a tedy nebude moˇzn´e rozeznat jednotliv´e firemn´ı pods´ıtˇe.
20
Ze stejn´eho d˚ uvodu nen´ı moˇzn´e RIP pouˇz´ıt v prostˇred´ı, kde se pracuje s maskami promˇenn´e d´elky (VLSM) nebo se smˇerov´an´ım na b´azi adresov´ ych prefix˚ u (CIDR).
2.2.5
ˇ Casovaˇ ce
ˇ Pro lepˇs´ı ˇr´ızen´ı v´ ykonnosti protokolu, pouˇz´ıv´a RIP tˇri ˇcasovaˇce. Casovaˇ c Routing-update urˇcuje ˇcasov´ y interval mezi zas´ıl´ an´ım periodick´ ych aktualizaˇcn´ıch zpr´av. Implicitnˇe je nastaven na 30 sekund. Po restartu se k nim pˇriˇc´ıt´a jeˇstˇe mal´a prodleva, aby nedoˇslo k ucp´ an´ı linky. ˇ Casovaˇ c Route-timeout ud´ av´ a ˇcas, do jehoˇz uplynut´ı mus´ı smˇerovaˇc zaslat aktualizaˇcn´ı zpr´avu, jinak bude cesta k nˇemu povaˇzov´ana za neplatnou. Tento ˇcasovaˇc je implicitnˇe nastaven na 180 sekund. N´aslednˇe odpoˇc´ıt´ av´ a ˇcasovaˇc Route-flush, po jehoˇz uplynut´ı je neplatn´a cesta z smˇerovac´ı ˇ tabulky vymaz´ ana. Casovaˇ c je implicitnˇe nastaven na 240 sekund.
2.2.6
Stabilita protokolu
I kdyˇz Bellman-Ford˚ uv algoritmus nedok´aˇze pˇredej´ıt vznik˚ um smyˇcek, RIP m´a opatˇren´ı k tomu, aby se to nest´ avalo. V protokolu je zaneseno, ˇze maxim´aln´ı poˇcet skok˚ u (Next Hop) je 15. Pokud m´ a nˇejak´ a cesta metriku 16, coˇz je u RIP povaˇzov´ano za nekoneˇcno, smˇerovaˇc pˇredpokl´ ad´ a, ˇze c´ıl je nedostupn´ y. Na druhou stranu je z tohoto postupu jasnˇe viditeln´ a nev´ yhoda. RIP m´ a omezen´ı na 15 skok˚ u a tud´ıˇz nem˚ uˇze b´ yt pouˇzit v rozs´ahl´ ych s´ıt´ıch. Krom tohoto opatˇren´ı m´ a RIP i dalˇs´ı vlastnosti, kter´e jsou navrˇzen´e pro zajiˇstˇen´ı stability pˇri rychl´ ych zmˇen´ ach topologie, napˇr. Split Horizon. Ten zabraˇ nuje tomu, aby smˇerovaˇc zas´ılal cestu na rozhran´ı, skrz kter´e se tuto informaci dozvˇedˇel. Je tedy jednou z metod, kter´a zabraˇ nuje smˇerovac´ım smyˇck´am.
2.2.7
Form´ at zpr´ avy
Protokol RIP pracuje na aplikaˇcn´ı vrstvˇe. Na obr´azku 2.1 je zn´azornˇena struktura zpr´avy vˇcetnˇe jej´ı souvislost s niˇzˇs´ımi vrstvami. RIP vyuˇz´ıv´a jako transportn´ı vrstvu UDP a m´ a rezervovan´ y UDP port 520. Jak uˇz bylo ˇreˇceno dˇr´ıve, RIP vyuˇz´ıv´a pro zas´ıl´an´ı zpr´av broadcast. Z toho vypl´ yv´ a, ˇze v IP hlaviˇcce je zadan´a c´ılov´a IP adresa 255.255.255.255 a v hlaviˇcce s´ıt’ov´eho rozhran´ı je c´ılov´ a MAC adresa FF- FF- FF- FF- FF- FF. RIP zpr´ ava (2.1) se skl´ ad´ a z tˇechto pol´ıˇcek: • Command – obsahuje 1 nebo 2 podle toho, zda se jedn´a o ˇz´adost (Request) nebo odpovˇed’ (Response). • Version – obsahuje informaci o verzi, v tomto pˇr´ıpadˇe jde o RIPv1. • Address Family Identifier – specifikuje pouˇzitou adresn´ı rodinu. IP m´a identifik´ator 2. • IP Address – obsahuje IP adresu c´ıle cesty. • Metric – ud´ av´ a poˇcet skok˚ u do c´ıle a nab´ yv´a hodnot 1 aˇz 16. Jedna zpr´ ava m˚ uˇze n´est aˇz 25 z´aznam˚ u, tedy 25 opakuj´ıc´ıch se pol´ıˇcek Address Family Identifier, IP Adress a Metric. 21
Obr´ azek 2.1: Struktura zpr´avy protokolu RIP.
2.2.8
N´ astupce RIPv2
V roce 1994 byla vyvinuta novˇejˇs´ı verze protokolu RIP, RIP verze 2 (RIPv2). RIPv2 je specifikov´ ana v RFC 2453 [8], resp. STD 56. Splˇ nuje z´akladn´ı charakteristiky RIPv1, ale ˇreˇs´ı nˇekter´e jeho nedostatky. Spolu s c´ılovou adresou a metrikou se ve zpr´av´ach tak´e zas´ıl´a maska, t´ım p´adem RIPv2 podporuje VLSM i CIDR. Na rozes´ıl´an´ı zpr´av uˇz nepouˇz´ıv´a broadcast, ale multicast s IP adresou 224.0.0.9. D´ıky tomuto vylepˇsen´ı jsou zpr´avy zas´ıl´any jen smˇerovaˇc˚ um, kter´e tak´e vyuˇz´ıvaj´ı smˇerovac´ı protokol RIPv2. D´ale umoˇzn ˇuje autentizaci smˇerovac´ıch informac´ı. RIPv2 tak´e dok´ aˇze spolupracovat s jin´ ymi smˇerovac´ımi protokoly, at’ uˇz vnitˇrn´ımi (pomoc´ı odkazu na n´ asleduj´ıc´ı skok) nebo vnˇejˇs´ımi (prostˇrednictv´ım oznaˇcen´ı cest mimo autonomn´ı syst´em).
2.3
Protokol OSPF
Dalˇs´ım protokolem, kter´ y m´ ame za u ´kol simulovat, je Open Shortest Path First (d´ale jen ’ OSPF). Budeme o nˇej zjiˇst ovat podobn´e informace jako o protokolu RIP. Tato kapitola bude m´ıt proto podobnou strukturu jako ta pˇredeˇsl´a s v´ yjimkou nˇekter´ ych rys˚ u specifick´ ych pro tento protokol.e
2.3.1
Struˇ cn´ y popis
OSPF je pravdˇepodobnˇe nejpouˇz´ıvanˇejˇs´ım protokolem IGP1 (Interior Gateway Protocol) ve velk´ ych podnikov´ ych s´ıt´ıch. OSPF byl vyv´ıjen organizac´ı IETF od 80. let minul´eho stolet´ı. V roce 1991 se doˇckal prvn´ı standardizace, dnes se OSPF bˇeˇznˇe pouˇz´ıv´a v jeho verzi 2 specifikovanou v RFC 2338 [9] z roku 1998. Jedn´a se o protokol typu Link-state.
2.3.2
Typy OSPF zpr´ av
Dˇr´ıve, neˇz se pod´ıv´ ame na to, jak OSPF protokol funguje, je dobr´e udˇelat si poˇr´adek ve zpr´av´ach (resp. paketech), kter´e OSPF pouˇz´ıv´a. Je jich nˇekolik druh˚ u – Hello, Database 1
Smˇerovac´ı protokol pouˇz´ıvan´ y uvnitˇr autonomn´ıho syst´emu (RIP, OSPF, EIGRP atd.).
22
Description (DBD), Link-State Request (LSR), Link-State Update (LSU) a Link-State Acknowledgement (LSAck). Hello pakety se pouˇz´ıvaj´ı k nalezen´ı soused˚ u, ustaven´ı a udrˇzov´an´ı spojen´ı mezi nimi. DBD slouˇz´ı k synchronizaci datab´aze mezi smˇerovaˇci. LSR zpr´ava je ˇz´adost o urˇcit´ y z´aznam Link-state. LSU je pak odpovˇed’ na LSR a obsahuje ˇz´adan´ y z´aznam. LSAck se pouˇz´ıv´ a k potvrzen´ı ostatn´ıch paket˚ u.
2.3.3
Router ID
Pˇri procesu v´ ymˇeny informac´ı mezi smˇerovaˇci v OSPF oblasti je nutn´e jednoznaˇcnˇe identifikovat jednotliv´e smˇerovaˇce. K tomu slouˇz´ı tzv. Router ID. Hodnota Router ID je automaticky nastavena na nejniˇzˇs´ı IP adresu rozhran´ı Loopback2 . Pokud smˇerovaˇc ˇz´adn´e rozhran´ı Loopback nem´ a, je pouˇzita nejniˇzˇs´ı IP adresa ze vˇsech rozhran´ı. Router ID jde samozˇrejmˇe i nastavit ruˇcnˇe v IOS smˇerovaˇce. Volba Router ID se provede na poˇc´atku a uˇz se pozdˇeji nemˇen´ı.
2.3.4
Funkce protokolu OSPF
Po restartu mus´ı smˇerovaˇc ze vˇseho nejdˇr´ıve objevit sv´e sousedn´ı smˇerovaˇce (Neighbor) a ustanovit s nimi spojen´ı. Rozeˇsle tedy multicastovˇe na vˇsechna sv´a rozhran´ı Hello paket. Pˇr´ıjem Hello paketu na nˇekter´em rozhran´ı smˇerovaˇce znamen´a, ˇze je smˇerovaˇc pˇripojen k jin´emu OSPF smˇerovaˇci na t´eto lince. Pˇredt´ım, neˇz m˚ uˇze doj´ıt k spojen´ı, se mus´ı smˇerovaˇce shodnout v tˇrech z´ akladn´ıch bodech – Hello Interval, Dead Interval a Network Types. Pokud sousedn´ı smˇerovaˇc souhlas´ı s tˇemito parametry komunikace, zaˇsle p˚ uvodn´ımu smˇerovaˇci odpovˇed’ obsahuj´ıc´ı jeho Router ID. P˚ uvodn´ı smˇerovaˇc dostane tuto zpr´avu a dojde k ustaven´ı spojen´ı. Pˇrestoˇze na zaˇc´atku se Hello pakety pos´ılaj´ı pomoc´ı multicastu, po ustaven´ı spojen´ı spolu smˇerovaˇce komunikuji pomoc´ı unicastu. Toto ustaven´ı mus´ı probˇehnout v obou smˇerech. Po ustaven´ı spojen´ı je tˇreba naplnit topologickou datab´azi informacemi o topologii s´ıtˇe. Ve v´ ysledku obsahuj´ı datab´ aze vˇsech smˇerovaˇc˚ u v OSPF s´ıti identick´e u ´daje. Rozd´ıly vznikaj´ı aˇz pˇri vytv´ aˇren´ı smˇerovac´ıch tabulek. Smˇerovaˇce si zaˇslou DBD paket, kter´ y obsahuje n´ ahodnˇe vybran´e sekvenˇcn´ı ˇc´ıslo, kter´e budou pouˇz´ıvat k dalˇs´ı komunikaci pˇri v´ ymˇenˇe topologick´ ych informac´ı. Pouˇz´ıv´a se sekvenˇcn´ı ˇc´ıslo, kter´e navrhne smˇerovaˇc s vyˇsˇs´ım Router ID. N´aslednˇe si pos´ılaj´ı dalˇs´ı pakety DBR s informacemi ze sv´ ych topologick´ ych datab´az´ıch. Smˇerovaˇc pak porovn´ av´ a tyto informace ze sousedn´ıho smˇerovaˇce s informacemi, kter´e m´ a ve sv´e vlastn´ı datab´ azi. Pokud zjist´ı, ˇze mu nˇekter´a informace v datab´azi chyb´ı nebo je zastaral´a, vyˇz´ ad´ a si od sv´eho souseda tyto informace pomoc´ı paketu LSR. Sousedn´ı smˇerovaˇc poˇsle tyto informace v paketu LSU. Smˇerovaˇc n´aslednˇe pˇr´ıjem tohoto paketu potvrd´ı pomoc´ı LSAck. Kdyby k tomuto potvrzen´ı nedoˇslo, poslal by soused LSU po nˇejak´em ˇcasu znovu. Uveden´ y postup z´ısk´ av´ an´ı topologick´ ych informac´ı se opakuje i v pˇr´ıpadˇe, ˇze smˇerovaˇc zjist´ı, ˇze nˇekter´ y z jeho sousedu jiˇz nen´ı aktivn´ı. Vyˇsle vˇsem sv´ ym soused˚ um LSU paket s informac´ı o zmˇenˇe topologie. Sousedi pak pos´ılaj´ı tento LSU d´ale po s´ıti aˇz se dostane ke vˇsem smˇerovaˇc˚ um v topologii. 2
Logick´ a smyˇcka, umoˇzn ˇuj´ıc´ı zas´ılat pakety s´ am sobˇe.
23
2.3.5
ˇ Casovaˇ ce
Protokol OSPF pouˇz´ıv´ a nˇekolik ˇcasovaˇc˚ u, kter´e udrˇzuj´ı stav topologick´e datab´aze a t´ım p´adem i smˇerovac´ı tabulky vˇsech smˇerovaˇc˚ u v konzistentn´ım stavu. Z´akladn´ımi kameny jsou ˇcasovaˇce Hello Interval a Dead Interval, na kter´ ych se smˇerovaˇce mus´ı shodnout pˇred zah´ ajen´ım v´ ymˇeny informac´ı. Hello interval ud´av´a, jak ˇcasto si smˇerovaˇce zas´ılaj´ı Hello pakety. Implicitnˇe je to 10 sekund v s´ıt´ıch LAN3 (Local Area Network) a 30 sekund v s´ıt´ıch NBMA4 (Nonbroadcast Multiple Access Network). Pokud Hello paket nepˇriˇsel do uplynut´ı Dead Interval, je soused povaˇzov´an za nefunkˇcn´ıho a je tˇreba o tom informovat zb´ yvaj´ıc´ı sousedy. Dead Interval je implicitnˇe ˇctyˇrn´asobek Hello Intervalu, tedy 40 sekund pro LAN s´ıtˇe a 120 sekund pro NBMA s´ıtˇe. Dalˇs´ım ˇcasovaˇcem je MaxAge. Tento ˇcasovaˇc je propojen s pol´ıˇckem Age, kter´ y je u kaˇzd´eho z´ aznamu v topologick´e datab´azi. Ten se periodicky inkrementuje a pokud dos´ahne hodnoty MaxAge, je informace v topologick´e datab´azi jiˇz povaˇzov´ana za zastaralou a je odstranˇena z datab´ aze. Implicitnˇe je MaxAge nastaven na 1 hodinu. Aby nedoch´ azelo k odstranˇen´ı poloˇzek z datab´aze, tak se s periodou ˇcasovaˇce LSRefreshTime zas´ılaj´ı soused˚ um LSA pakety, kter´e vynuluj´ı pol´ıˇcko Age u z´aznamu. Implicitn´ı hodnota tohoto ˇcasovaˇce je 30 minut.
2.3.6
Metrika a administrativn´ı vzd´ alenost
Metrika, kter´ a se pouˇz´ıv´ a u protokolu OSPF se naz´ yv´a Cost nebo-li cena. RFC ale nespecifikuje, co by mˇelo b´ yt pouˇzito pro urˇcov´an´ı t´eto ceny. Z RFC 2328 [5]: A cost is associated with the output side of each router interface. This ” cost is configurable by the system administrator. The lower the cost, the more likely the interface is to be used to forward data traffic. “ Vzhledem k tomu, ˇze tato pr´ ace se zab´ yv´a Cisco technologiemi, je tˇreba vz´ıt v u ´vahu cenu, tak jak ji definuje firma Cisco. Ta pouˇz´ıv´a jako cenu souˇcet ˇs´ıˇrek p´asma v´ ystupn´ıch rozhran´ı po cestˇe od smˇerovaˇce do c´ılov´e s´ıtˇe. Cena rozhran´ı se vypoˇc´ıt´a jako 108 /bw, kde bw je ˇs´ıˇrka p´ asma v jednotce bps. D´ıky tomuto vzorci dos´ahneme toho, ˇze rozhran´ı s vˇetˇs´ı ˇs´ıˇrkou p´ asma budou m´ıt niˇzˇs´ı cenu. Jak bylo uvedeno v citaci v´ yˇse, ˇc´ım niˇzˇs´ı cena, t´ım je cesta preferovanˇejˇs´ı. Z dan´eho vzorce ale vypl´ yv´ a, ˇze rozhran´ı FastEthernet (100 Mbps) a rychlejˇs´ı budou m´ıt stejnou cenu, tj. jedna. Nˇekter´e implementace proto umoˇzn ˇuj´ı konstantu 108 zv´ yˇsit nebo zadat cenu rozhran´ı ruˇcnˇe, ˇc´ımˇz je moˇzn´e i priorizovat nˇekter´e n´ami vybran´e cesty. Administrativn´ı vzd´ alenost protokolu OSPF je 110. T´ım p´adem jsou cesty zjiˇstˇen´e protokolem OSPF povaˇzov´ any za d˚ uvˇeryhodnˇejˇs´ı a t´ım p´adem i preferovanˇejˇs´ı neˇz cesty zjiˇstˇen´e protokolem RIP nebo tˇreba IS-IS.
2.3.7
Vytv´ aˇ ren´ı smˇ erovac´ı tabulky
Po naplnˇen´ı topologick´e datab´ aze informacemi o topologii s´ıtˇe je tˇreba tyto informace transformovat na smˇerovac´ı tabulku. Tuto transformaci prov´ad´ı algoritmus Dijkstra’s shortest path first (SPF). Tento algoritmus nejprve vytvoˇr´ı z datab´aze graf, pˇresnˇeji strom SPF. Vˇsechny hrany tohoto stromu ohodnot´ı cenami (metrikou). Vrcholem stromu je vˇzdy dan´ y smˇerovaˇc, kter´ y 3
Poˇc´ıtaˇcov´ a s´ıt’, kter´ a pokr´ yv´ a mal´e geografick´e u ´zem´ı, napˇr. dom´ acnost. S´ıt’ propojuj´ıc´ı nˇekolik smˇerovaˇc˚ u, nen´ı vˇsak schopna pos´ılat broadcast, napˇr. s´ıtˇe Frame Relay, ATM nebo X.25. 4
24
si tvoˇr´ı smˇerovac´ı tabulku. SPF pak vytv´aˇr´ı strom takov´ ym zp˚ usobem, ˇze se snaˇz´ı odstranit vˇsechny potenci´ aln´ı smyˇcky a naj´ıt nejlepˇs´ı moˇznou cestu do c´ılov´e s´ıtˇe. Kdyˇz uˇz je v´ ysledn´ y strom hotov´ y, do smˇerovac´ı tabulky se vˇzdy uloˇz´ı IP adresa c´ıle, dalˇs´ı skok (Next Hop) a celkov´ a cena cesty. Pokud SPF algoritmus objev´ı dvˇe cesty do c´ıle, kter´e maj´ı stejnou cenu, vloˇz´ı do smˇerovac´ı tabulky obˇe. N´aslednˇe z´aleˇz´ı na nastaven´ı smˇerovaˇce, zda si vybere jednu z tˇechto cest nebo bude vyuˇz´ıvat obˇe a ˇc´ast paket˚ u zpr´avy poˇsle jednou cestou a druhou ˇca´st druhou cestou. Druh´ y uveden´ y zp˚ usob je praktiˇctˇejˇs´ı vzhledem k rovnomˇern´emu zat´ıˇzen´ı obou linek. Z tohoto popisu m˚ uˇze b´ yt jasn´e, ˇze algoritmus SPF je pro smˇerovaˇc pomˇernˇe n´aroˇcn´ y a nen´ı ˇz´ adouc´ı, aby se v´ ypoˇcet opakoval pˇr´ıliˇs ˇcasto. To m˚ uˇze b´ yt probl´em, pokud se v s´ıti objev´ı nˇejak´ a nestabiln´ı linka, kter´a ˇcasto pad´a. Z tohoto d˚ uvodu byl stanoven minim´aln´ı ˇcas mezi v´ ypoˇcty algoritmu SPF.
2.3.8
Designated Router
Z uveden´eho popisu funkce OSPF protokolu vypl´ yv´a, ˇze pokud mezi smˇerovaˇci nebudou spoje Point-to-point, ale s´ıt’ s v´ıcen´asobn´ ym pˇr´ıstupem (Multiaccess), m˚ uˇze b´ yt komunikace mezi smˇerovaˇci n´ aroˇcn´ a a v nejhorˇs´ım pˇr´ıpadˇe m˚ uˇze zahltit linku. Vezmˇeme si jako pˇr´ıklad topologii z obr´azku 2.2. Zde je propojeno pˇet smˇerovaˇc˚ u. Kaˇzd´ y smˇerovaˇc mus´ı s kaˇzd´ ym dalˇs´ım smˇerovaˇcem s´ıtˇe ustavit spojen´ı a konfrontovat sv´e z´aznamy z datab´ aze. Pokud se stane jeden soused nefunkˇcn´ım, vˇsechny smˇerovaˇce si navz´ajem zaˇcnou pos´ılat informaci o zmˇenˇe topologie.
Obr´ azek 2.2: OSPF s´ıt’ bez Designated Router. Z obr´ azku 2.2 je zˇrejm´e, ˇze pro pˇet smˇerovaˇc˚ u mus´ı doj´ıt k vytvoˇren´ı deseti spojen´ım. Z toho vypl´ yv´ a jednoduch´ y vztah pro v´ ypoˇcet potˇrebn´ ych spojen´ı, pokud m´ame v s´ıti s v´ıcen´ asobn´ ym pˇr´ıstupem n smˇerovaˇc˚ u: n(n − 1) (2.1) 2 Budeme-li m´ıt v t´eto s´ıti napˇr´ıklad 100 smˇerovaˇc˚ u, vyˇsplh´a se celkov´ y poˇcet spojen´ı na 4950! To linku hodnˇe zatˇeˇzuje a proto zde existuje ˇreˇsen´ı v podobˇe volby Designated Routeru a Backup Designated Routeru. 25
Smˇerovaˇce si na poˇc´ atku zvol´ı Designated Router (DR), coˇz je smˇerovaˇc s nejvyˇsˇs´ı prioritou (Router Priority). Backup Designated Router (BDR), nebo-li z´aloˇzn´ı DR, je smˇerovaˇc s druhou nejvyˇsˇs´ı prioritou. Informace o prioritˇe se zas´ıl´a na poˇc´atku v Hello paketu. Smˇerovaˇc pot´e navazuje sousedsk´e vztahy pouze s DR. N´aslednˇe veˇsker´a komunikace mezi smˇerovaˇci prob´ıh´ a tak, ˇze smˇerovaˇc zaˇsle informaci DR a ten ji rozeˇsle vˇsem ostatn´ım smˇerovaˇc˚ um v s´ıti. V s´ıt´ıch Point-to-point se pro komunikaci mezi smˇerovaˇci pouˇz´ıv´a unicast. Zde ale smˇerovaˇc pos´ıl´ a informace, jak DR, tak i BDR, proto se pouˇz´ıv´a multicastov´ a komunikace.
2.3.9
Form´ at zpr´ avy
OSPF, narozd´ıl od protokolu RIP, nepouˇz´ıv´a transportn´ı vrstvu, ale pracuje pˇr´ımo s protokolem IP. OSPF jej´ı funkce nepotˇrebuje, protoˇze si s´am zajiˇst’uje detekci chyb a opravu. Kaˇzd´ a OSPF zpr´ ava je zabalena do IP paketu, jehoˇz hlaviˇcka obsahuje c´ılovou multicastovou adresu 224.0.0.5 nebo 224.0.0.6. V pˇr´ıpadˇe, ˇze v s´ıti pouˇz´ıv´ame DR a BDR, tak komunikace s nimi prob´ıh´ a na IP adrese 224.0.0.6 a komunikace se vˇsemi OSPF smˇerovaˇci pomoc´ı IP adresy 224.0.0.5. Hlaviˇcka Ethernetov´eho r´amce pak nese informaci o c´ılov´e multicastov´e MAC adrese 01-00-5E-00-00-05 nebo 01-00-5E-00-00-06. Z obr´ azku 2.3 je zˇrejm´e, ˇze OSPF zpr´ava se skl´ad´a z hlaviˇcky a tˇela nesouc´ıho data. Zde pop´ıˇsi jen jednu z pˇeti nejˇcastˇeji pouˇz´ıvan´ ych zpr´av – Hello paket. Hlaviˇcka je vˇsak u vˇsech zpr´av stejn´ a a skl´ ad´ a se z tˇechto ˇc´ast´ı:
Obr´ azek 2.3: Struktura OSPF Hello paketu.
• Version – identifikuje verzi OSPF, kter´a je pouˇzita. Nejˇcastˇeji se jedn´a o verzi 2. • Type – ud´ av´ a typ OSPF paketu (Hello, DBD, LSR, LSU nebo LSAck). • Packet length – ud´ av´ a d´elku paketu vˇcetnˇe hlaviˇcky v bytech. 26
• Router ID – identifikuje zdroj paketu, jedn´a se o jednoznaˇcn´ y identifik´ator smˇerovaˇce. • Area ID – identifikuje oblast (Area), ke kter´e paket patˇr´ı. • Checksum – kontroln´ı souˇcet zajiˇst’uje paket proti chybovosti nebo poniˇcen´ı pˇri pˇresunu. • AutType – obsahuje typ autentizace. Vˇsechny OSPF v´ ymˇeny zpr´av jsou autentizov´ any. • Authentication – nese autentifikaˇcn´ı informaci. Datov´ a ˇc´ ast Hello paketu se skl´ad´a z tˇechto ˇc´ast´ı: • Network Mask – s´ıt’ovou masku souvisej´ıc´ı s rozhran´ım, skrz kter´e je zpr´ava zas´ıl´ana. • Hello Interval – ud´ av´ a interval mezi zas´ıl´an´ım Hello paket˚ u v sekund´ach. • Router Dead Interval – ud´ av´a ˇcas v sekund´ach, po jejichˇz uplynut´ı, pokud nepˇrijde Hello paket, je soused odstranˇen z topologick´e datab´aze. • Router Priority – pouˇz´ıv´ a se pˇri volbˇe DR a BDR. • Designated Router (DR) – obsahuje identifikaci (Router ID) DR smˇerovaˇce. • Backup Designated Router (BDR) – obsahuje identifikaci (Router ID) BDR smˇerovaˇce. • List of Neighbor(s) – nese seznam identifikac´ı (Router ID) sousedn´ıch smˇerovaˇc˚ u.
2.4
N´ avrhov´ e vzory Cisco
Aby s´ıt’, kterou budeme vzorovˇe simulovat, byla co nejvˇernˇejˇs´ı a odpov´ıdala vyuˇzit´ı v praxi, pouˇzijeme pro vytvoˇren´ı topologi´ı n´avrhov´e vzory spoleˇcnosti Cisco. V t´eto ˇc´asti se proto budeme zab´ yvat hled´ an´ım a v´ ybˇerem vhodn´ ych n´avrhov´ ych vzor˚ u pro simulaci. N´avrhov´ y vzor je vzorov´ a topologie, kterou Cisco doporuˇcuje vyuˇz´ıt pˇri n´avrhu s´ıt´ı. Na konci se kr´atce zm´ın´ıme o principu a smyslu redistribuce.
2.4.1
V´ ybˇ er vhodn´ ych n´ avrhov´ ych vzor˚ u
C´ılem t´eto pr´ ace je prostudovat n´avrhov´e vzory od firmy Cisco se zamˇeˇren´ım na RIP a OSPF. Pro ide´ aln´ı propojen´ı tˇechto dvou protokol˚ u jsem se pˇri hled´an´ı zamˇeˇrila na n´avrhov´e vzory zab´ yvaj´ıc´ı se redistribuc´ı mezi tˇemito protokoly. Na webov´ ych str´ank´ ach firmy Cisco lze nal´ezt mnoho n´ avrhov´ ych vzor˚ u. M´ ym poˇzadavk˚ um vyhovoval [1]. V tomto dokumentu jsou tˇri n´avrhov´e vzory, kter´e budu modelovat a simulovat. Vˇsechny topologie se skl´adaj´ı z p´ateˇre a okol´ı. P´ateˇr se skl´ad´ a ze tˇr´ı smˇerovaˇc˚ u propojen´ ych mezi sebou. S´ıtˇe LAN, ve kter´ ych se pˇredpokl´adaj´ı uˇzivatel´e a jin´a koncov´ a zaˇr´ızen´ı, se napojuj´ı na tyto p´ateˇrn´ı smˇerovaˇce. V prvn´ım n´ avrhov´em vzoru (obr´azek 2.4) je v s´ıti pouˇzit pouze smˇerovac´ı protokol RIP. RIP je tˇr´ıdn´ı protokol, proto jsou zde pouˇzity IP adresy tˇr´ıdy B. Druh´ y n´ avrhov´ y vzor (obr´ azek 2.5) je dalˇs´ım krokem v pˇrechod z RIP protokolu na OSPF protokol. P´ ateˇr bude provozov´ana na protokolu OSPF a LAN s´ıtˇe na protokolu RIP. Tedy tˇri p´ ateˇrn´ı smˇerovaˇce mus´ı b´ yt hraniˇcn´ımi smˇerovaˇci a je poˇzadov´ano, aby umˇely pracovat s obˇema smˇerovac´ımi protokoly a tak mohly mezi nimi prov´adˇet redistribuci. 27
Obr´ azek 2.4: S´ıt’ se smˇerovac´ım protokolem RIP.
Obr´ azek 2.5: RIP s´ıt’ se smˇerovac´ım protokolem OSPF ve stˇredu.
Tˇret´ı n´ avrhov´ y vzor (obr´ azek 2.6) pˇredstavuje s´ıt’ pouˇz´ıvaj´ıc´ı jiˇz jen smˇerovac´ı protokol OSPF. N´ avrh ale vyuˇz´ıv´ a nˇekolik autonomn´ıch oblast´ı. Autonomn´ı oblast p´ateˇrn´ı ˇc´asti je area0 a kaˇzd´ a ze s´ıt´ı pˇripojen´ ych k p´ateˇrn´ım smˇerovaˇc˚ um tvoˇr´ı dalˇs´ı autonomn´ı oblast´ı area1 – area3. P´ ateˇrn´ı smˇerovaˇce jsou oblastn´ımi hraniˇcn´ımi smˇerovaˇci, kter´e kontroluj´ı v´ ymˇenu smˇerovac´ıch informac´ı mezi oblastmi.
28
Obr´ azek 2.6: S´ıt’ rozdˇelen´a na OSPF oblasti.
2.5
Shrnut´ı kapitoly
Tato kapitola shrnula z´ akladn´ı poznatky o smˇerov´an´ı, smˇerovac´ıch protokolech a redistribuci. D´ ale jsme si popsali smˇerovac´ı protokoly RIP i OSPF, kter´e jsou velmi popul´arn´ı a ˇcasto uˇz´ıvan´e, avˇsak kaˇzd´ y z nich je vhodn´ y pro jin´e u ´ˇcely. Protokol RIP je nejstarˇs´ım a nejobl´ıbenˇejˇs´ım smˇerovac´ım protokolem. Hlavn´ı jeho v´ yhodou je jednoduchost a velmi snadn´a implementace, kter´e ˇcasto vyv´aˇz´ı jeho nedostatky. Hlavn´ı nedostatek je absence masek, d´ıky kter´e RIPv1 nepodporuje VLSM a CIDR. Tyto nev´ yhody jsou zcela odstranˇeny v novˇejˇs´ı verzi RIPv2. Avˇsak z´asadn´ı nev´ yhodou st´ ale z˚ ust´av´ a metrika, kter´ a nab´ yv´ a 1 aˇz 15 skok˚ u a tedy nen´ı moˇzn´e nasadit protokol RIP v rozs´ahl´ ych s´ıt´ıch. Obl´ıbenost protokolu je zˇrejm´a, nebot’ se st´ale vyv´ıj´ı a jiˇz existuje i verze pro IPv6 (RIPng). OSPF je nejpouˇz´ıvanˇejˇs´ım protokol typu Link-state. Oproti protokolu RIP se m˚ uˇze pochlubit rychlejˇs´ı konvergenc´ı, moˇznost´ı zas´ılat masky s´ıtˇe (t´ım p´adem i podpora CIDR a VLSM) a obecnˇe moˇznost´ı pouˇzit´ı ve vˇetˇs´ıch s´ıt´ıch. Po ustaven´ı spojen´ı komunikuj´ı smˇerovaˇce pomoc´ı unicastu (Point-to-point s´ıtˇe) nebo multicastu (Multiaccess s´ıtˇe), coˇz je v´ yhodn´e pro mal´e zat´ıˇzen´ı linky. OSPF tak´e podporuje autentizaci s ˇsifrov´an´ım hesla MD5, kter´a zajiˇst’uje ovˇeˇrov´ an´ı pravosti pˇred´avan´ ych informac´ı. Nem˚ uˇze tedy doj´ıt k podvrˇzen´ı informace a n´ asledn´emu pˇresmˇerov´an´ı provozu. Hlavn´ı nev´ yhodou je n´aroˇcnost algoritmu SPF a t´ım p´ adem neschopnost reagovat na pˇr´ıliˇs ˇcast´e zmˇeny a tak´e vysok´a n´aroˇcnost kladen´ a na smˇerovaˇc pˇri v´ ypoˇctu. Proto jsou zaˇr´ızen´ı podporuj´ıc´ı OSPF draˇzˇs´ı. Vˇetˇs´ı firmy a instituce si ale jistˇe r´ adi pˇriplat´ı a z´ıskaj´ı tak v´ yhody tohoto protokolu. Perspektiva pro’ tokolu je zˇrejm´ a, nebot se st´ ale vyv´ıj´ı a jiˇz existuje i verze pro IPv6 (OSPFv3). K dokreslen´ı pˇrikl´ad´ am srovn´ avac´ı tabulku 2.1. Na str´ ank´ ach firmy Cisco jsem vybrala n´avrhov´e vzory t´ ykaj´ıc´ıch se uˇzit´ı protokol˚ u RIP
29
a OSPF ve vˇetˇs´ıch (firemn´ıch, ˇskoln´ıch) s´ıt´ıch. Pouˇzit´ı obou protokol˚ u v jedn´e s´ıti je pro jejich simulaci ide´ aln´ı a proto jsem se zamˇeˇrila i na jejich vz´ajemnou redistribuci. Popsan´e topologie jsou vhodn´e pro simulaci. Vlastnosti
RIPv1
RIPv2
OSPF
Distance Vector
Distance Vector
Link-state
pomal´a
pomal´a
rychl´a
Metrika
poˇcet skok˚ u
poˇcet skok˚ u
cena cesty
VLSM
ne
ano
ano
CIDR
ne
ano
ano
Zat´ıˇzen´ı smˇerovaˇce
mal´e
mal´e
velk´e
Zat´ıˇzen´ı s´ıtˇe
velk´e
velk´e
mal´e
Typ protokolu Konvergence
Tabulka 2.1: Srovn´an´ı smˇerovac´ıch protokol˚ u RIP a OSPF
30
Kapitola 3
Simulaˇ cn´ı modely Co je to modelov´ an´ı a simulaˇcn´ı model jsme si jiˇz vysvˇetlili v sekci 1.1. Nyn´ı m˚ uˇzeme pˇrev´est teorii do praxe a za pouˇzit´ı n´astroj˚ u PT (sekce 1.2) a OMNeT++ (sekce 1.3) vytvoˇrit simulaˇcn´ı modely topologi´ı s´ıt´ı z vybran´ ych n´avrhov´ ych vzor˚ u (sekce 2.4).
3.1
Simulaˇ cn´ı modely v PT
V t´eto sekci si vysvˇetl´ım, jak jsme vytv´aˇreli dle n´avrh˚ u simulaˇcn´ı modely v programu PT.
3.1.1
Tvorba model˚ u
Pro vytvoˇren´ı modelu jsem pouˇzila Cisco smˇerovaˇce 1841 s modulem WIC-2T a pˇrep´ınaˇce 2960. Smˇerovaˇce jsem mezi sebou propojila s´eriov´ ym kabelem a k smˇerovaˇc˚ um jsem pˇripojila kˇr´ıˇzen´ ym kabelem dalˇs´ı smˇerovaˇce pˇredstavuj´ıc´ı pods´ıtˇe a k nim pˇr´ım´ ym kabelem po jednom pˇrep´ınaˇci. Modelovˇe jsem ke kaˇzd´emu pˇrep´ınaˇci pˇripojila pˇr´ım´ ym kabelem po dvou poˇc´ıtaˇc´ıch. Na obr´ azku 3.1 je vidˇet v´ ysledn´a topologie. N´asledovalo nakonfigurov´ an´ı s´ıtˇe. Ke konfiguraci smˇerovaˇc˚ u jsme pouˇzili IOS. V´ ypis konfiguraˇcn´ıho registru pro prvn´ı model (pouze RIP) na smˇerovaˇci R1 je n´asleduj´ıc´ı: interface FastEthernet0/0 ip address 130.10.8.1 255.255.255.0 duplex auto speed auto ! interface Serial0/1/0 ip address 130.10.62.1 255.255.255.0 clock rate 56000 ! interface Serial0/1/1 ip address 130.10.63.2 255.255.255.0 clock rate 56000 ! router rip network 130.10.0.0
;konfigurace ethernetov´ eho portu ; nastaven´ ı IP adresy a masky
; konfigurace s´ eriov´ eho portu ; nastaven´ ı IP adresy a masky ; kmitoˇ cet (u DCE)
; konfigurace protokolu RIP ; distribuovan´ a s´ ıt’
Nastaven´ı na smˇerovaˇci R1 pro druh´ y model (RIP + OSPF) je: 31
Obr´ azek 3.1: Topologie s´ıtˇe v PT.
interface FastEthernet0/0 ip address 130.10.8.1 255.255.255.0 duplex auto speed auto ! interface Serial0/1/0 ip address 130.10.62.1 255.255.255.0 clock rate 56000 ! interface Serial0/1/1 ip address 130.10.63.2 255.255.255.0 clock rate 56000 ! router ospf 100 log-adjacency-changes redistribute rip subnets network 130.10.62.0 0.0.0.255 area 0 network 130.10.63.0 0.0.0.255 area 0 ! router rip ; redistribute ospf 100 metric 4 ; passive-interface Serial0/1/0 ; passive-interface Serial0/1/1 ; network 130.10.0.0 ;
; konfigurace protokolu OSPF ; redistribuce do RIP ; distribuovan´ e s´ ıtˇ e
konfigurace protokolu RIP redistribuce do OSPF s metrikou 4 rozhran´ ı, na kter´ e se nebudou ... ... zasilat RIP zpr´ avy ’ distribuovan´ a s´ ıt
Nastaven´ı na smˇerovaˇci R1 v tˇret´ım modelu (OSPF oblasti) je:
32
interface FastEthernet0/0 ip address 130.10.8.1 255.255.255.0 duplex auto speed auto ! interface Serial0/1/0 ip address 130.10.62.1 255.255.255.248 clock rate 56000 ! interface Serial0/1/1 ip address 130.10.63.1 255.255.255.248 clock rate 56000 ! router ospf 100 log-adjacency-changes redistribute rip subnets network 130.10.62.0 0.0.0.255 area 0 network 130.10.63.0 0.0.0.255 area 0 network 130.10.8.0 0.0.0.255 area 1
3.2
Simulaˇ cn´ı modely v OMNeT++
V t´eto sekci vysvˇetl´ıme tvorbu simulaˇcn´ıch model˚ u v n´astroji OMNeT++. OMNeT++ jako takov´ y nem´ a t´emˇeˇr ˇz´ adn´e moˇznosti pro smˇerov´an´ı a nepodporuje protokoly RIP a OSPF. Proto pouˇzijeme framework INET, kter´ y m´a podporu OSPF a obsahuje dalˇs´ı d˚ uleˇzit´e im’ plementace pro s´ıt ov´ y provoz. Protokol RIP zcela chyb´ı a bude ho tˇreba doimplementovat.
3.2.1
Modelov´ an´ı n´ avrhov´ ych vzor˚ u
Nejprve si vytvoˇr´ıme sloˇzky pro budouc´ı simulaˇcn´ı modely. Pro kaˇzd´ y n´avrhov´ y vzor vytvoˇr´ıme model s´ıtˇe v jazyce NED. Jedn´ a se o sloˇzen´ y modul. Popis vˇsech tˇr´ı model˚ u je podobn´ y. Pouˇzijeme sloˇzen´ y modul smˇerovaˇce ANSARouter, kter´ y vznikl v r´amci bakal´aˇrsk´e pr´ ace V. Siv´aka [14]. Kromˇe tohoto modulu vyuˇzijeme jednoduch´e moduly s´ıt’ov´ ych prvk˚ u z knihovny INET a to koncov´e zaˇr´ızen´ı typu StandardHost a pˇrep´ınaˇce typu EtherSwitch. ˇ ast RIP.ned souboru Nakonec provedeme propojen´ı jejich bran, resp. s´ıt’ov´ ych rozhran´ı. C´ popisuj´ıc´ı topologii prvn´ıho modelu (viz. obr. 2.4) je: import import import import import import
inet.nodes.ethernet.EtherSwitch; inet.ansa.ANSARouter; inet.nodes.inet.StandardHost; inet.world.ChannelInstaller; inet.world.ScenarioManager; ned.DatarateChannel;
network RIP { <ˇ c´ ast k´ odu vypuˇ stˇ ena>
; vloˇ zen´ e knihovny
; n´ azev modelovan´ e s´ ıtˇ e
33
submodules: ; moduly, ze kter´ ych se skl´ ad´ a <ˇ c´ ast k´ odu vypuˇ stˇ ena> H11: StandardHost { ; PC parameters: ; obr´ azek a jeho um´ ıstˇ en´ ı @display("p=40,52;i=device/pc2"); gates: ethg[1]; ; jedno ethernetov´ e rozhran´ ı } S1: EtherSwitch { ; pˇ rep´ ınaˇ c parameters: @display("p=168,92;i=device/switch"); gates: ethg[3]; ; m´ a tˇ ri ethernetov´ e rozhran´ ı } R1: ANSARouter { ; smˇ erovaˇ c parameters: @display("p=357,93;i=srouter"); gates: ethg[3]; ; m´ a tˇ ri ethernetov´ e rozhran´ ı } <ˇ c´ ast k´ odu vypuˇ stˇ ena> connections: ; propojen´ ı modul˚ u skrz br´ any H11.ethg[0] <--> C <--> S1.ethg[1]; H21.ethg[0] <--> C <--> S2.ethg[1]; S1.ethg[0] <--> C <--> R1A.ethg[0]; S2.ethg[0] <--> C <--> R2B.ethg[0]; R1.ethg[0] <--> C <--> R1A.ethg[1]; R2.ethg[0] <--> C <--> R2B.ethg[1]; <ˇ c´ ast k´ odu vypuˇ stˇ ena> }
Pro kaˇzd´ y model je d´ ale nutn´e vytvoˇrit soubor omnetpp.ini, kter´ y obsahuje parametry pro spuˇstˇen´ı simulace. Nakonec pro modely vytvoˇr´ıme spustiteln´ y soubor run. Do tohoto souboru staˇc´ı napsat: #!/bin/sh ../../../../src/run_inet $* Soubor se odkazuje na pˇreloˇzenou knihovnu INET. Spuˇstˇen´ı souboru zajist´ı naˇcten´ı nastaven´ı ze souboru omnetpp.ini a spuˇstˇen´ı simulaˇcn´ıho prostˇred´ı.
3.2.2
Pˇ r´ıprava model˚ u pro simulaci
Plnˇe funkˇcn´ı vytvoˇr´ıme zat´ım pouze tˇret´ı model (viz. obr. 2.6), kter´ y vyuˇz´ıv´a smˇerovac´ı protokol OSPF a smˇerov´ an´ı mezi ˇctyˇrmi oblastmi (Area 0 - 3). Pˇrestoˇze INET obsahuje implementaci protokolu OSPF, pouˇzijeme upravenou verzi OSPF, kter´a vznikla v r´amci bakal´aˇrsk´e pr´ ace [4]. 34
V pˇredchoz´ı sekci jsme si vytvoˇrili soubor popisuj´ıc´ı topologii s´ıtˇe ospfAreas.ned. V´ yslednou topologii je moˇzn´e vidˇet na obr´azku 3.2.
Obr´ azek 3.2: Topologie s´ıtˇe v OMNeT++.
Pro konfiguraci s´ıtˇe vyuˇz´ıv´ ame XML soubor RoutersConfig, jehoˇz struktura byla navrˇzena v r´amci bakal´ aˇrsk´e pr´ ace P. Scherfela [13]. V nˇem pˇriˇrad´ıme jednotliv´ ym rozhran´ım smˇerovaˇc˚ u IP adresy a masky a provedeme jejich rozdˇelen´e do oblast´ı OSPF. D´ale vytvoˇr´ıme pro zaˇr´ızen´ı pracuj´ıc´ı se smˇerovac´ı tabulkou (PC, smˇerovaˇc) soubory obsahuj´ıc´ı konfiguraci s´ıt’ov´ ych rozhran´ı a statick´e cesty. Tyto informace se nach´azej´ı v souborech .irt. N´ azev souboru je pro kaˇzd´e zaˇr´ızen´ı uloˇzeno v inicializaˇcn´ım souboru omnetpp.ini v parametru routingFileName. U kaˇzd´em s´ıt’ov´eho rozhran´ı nap´ıˇseme jm´eno rozhran´ı, IP adresu, masku, multicastov´e skupiny, MTU a metriku. Pot´e, co naimplementujeme protokol RIP a redistribuci, dopln´ıme zb´ yvaj´ıc´ı dva modely pro OMNeT++ podobn´ ym zp˚ usobem, jak´ y byl v t´eto sekci uveden. Konfiguraˇcn´ı soubory k jednotliv´ ym model˚ um jsou uvedeny v pˇr´ıloze D.
3.3
Shrnut´ı kapitoly
V t´eto kapitole jsme vytvoˇrili modely v programu PT. Vyv´aˇren´e modely jsme nakonfigurovali v IOS stejnˇe jako v na re´aln´em zaˇr´ızen´ı, coˇz je velk´a v´ yhoda programu PT. Vytv´aˇren´ı model˚ u bylo velmi lehk´e a rychl´e. Vznikli n´am tak tˇri soubory .pkt, kter´e jsou pˇripraveny pro simulaci. V OMNeT++ se simulaˇcn´ı modely vytv´aˇrely h˚ uˇr a to pˇredevˇs´ım kv˚ uli nutnosti popsat modely v m´ alo zn´ am´em jazyku NED. Plnˇe funkˇcn´ı je pouze model vyuˇz´ıvaj´ıc´ı protokol OSPF. Pro ostatn´ı n´ avrhov´e vzory bude tˇreba doimplementovat ˇc´asti umoˇzn ˇuj´ıc´ı smˇerovan´ı pomoc´ı protokolu RIP a umoˇzn ˇuj´ıc´ı redistribuci mezi RIP a OSPF.
35
Kapitola 4
Implementace Tato kapitola se zab´ yv´ a implementac´ı jednoduch´ ych modul˚ u do framework INET pro smˇerovac´ı protokol RIP a pro redistribuci smˇerovac´ıch informac´ı mezi protokoly RIP a OSPF.
4.1
Implementace protokolu RIP
V t´eto sekci bude pops´ ana postupn´a implementace smˇerovac´ıho protokolu RIP v jeho prvn´ı verzi. Bude se zab´ yvat popisem jednotliv´ ych tˇr´ıd, ze kter´ ych se jeho implementace skl´ad´ a. Pˇri implementaci jsme vych´ azeli z RFC 1058 [5].
4.1.1
RIPPacket
Pro spr´ avnou funkˇcnost smˇerovac´ıho protokolu si nejprve vytvoˇr´ıme zpr´avu, kter´a ponese vˇsechny informace, kter´e nese i re´aln´a zpr´ava RIP. Zpr´ava RIPPacket.msg plnˇe koresponduje se standardem (obr´ azek 2.1). Po pˇrekladu se automaticky vygeneruje pˇr´ısluˇsn´ y zdrojov´ y (.cc) a hlaviˇckov´ y soubor. RIPPacket.msg vypad´a n´asledovnˇe: struct RouteEntry { short addressID; short mustBeZero2 = 0; IPAddress ipAdress; long mustBeZero3 = 0; long mustBeZero4 = 0; long metric; }
; z´ aznamy o cest´ ach ; typ adresy (2 pro IP) ; adresa
; metrika
message RIPPacket { char command enum(RIPCommand); char version = 1; short mustBeZero1 = 0; RouteEntry routeEntry[]; }
36
; typ zpr´ avy (Req/Resp) ; verze protokolu RIP ; z´ aznamy o cest´ ach
4.1.2
RIPTimer
Jak jsme si uvedli v podsekci 4.1.2, protokol RIP vyuˇz´ıv´a tˇri ˇcasovaˇce. V diskr´etn´ı simulaci se ˇcasovaˇce modeluj´ı jako zpr´ avy, kter´e objekt zas´ıl´a s´am sobˇe se zpoˇzdˇen´ım. Proto jsme pro nˇe vytvoˇrili zpr´ avu RIPTimer.msg. Struktura zpr´avy je: enum RIPTimerType { hello = 1; timeout = 2; garbage = 3; trigger = 4; };
; typ ˇ casovaˇ ce ; ; ; ;
ˇasovaˇ c c casovaˇ ˇ c casovaˇ ˇ c odpoˇ cet
Update Timeout Garbage pˇ red rozesl´ an´ ım zmˇ en
message RIPTimer extends cMessage { char timerKind enum(RIPTimerType) = hello; };
; typ ˇ casovaˇ ce
ˇ V´ yznam ˇcasovaˇc˚ u Update, Timeout a Garbage byl pops´an v podsekci . Casovaˇ c Trigger se vyuˇz´ıv´ a pro rozes´ıl´ an´ı aktualizac´ı pˇri v´ yznamn´e zmˇenˇe (p´ad/obnoven´ı linky, zmˇena cesty).
4.1.3
RIPRouting
Pro jednoduch´ y modul RIPRouting jsme vytvoˇrili popis v souboru RIPRouting.ned a provedli jeho implementaci v jazyce C++. Jedn´a se o tˇr´ıdu, kter´a je odvozena od tˇr´ıdy UDPAppBase. Ta n´ am poskytuje prostˇredky transportn´ıho protokolu UDP, kter´ y RIP vyuˇz´ıv´ a. Jak m˚ uˇzeme vidˇet na obr´ azku 4.1, RIP modul je pˇripojen na UDP modul. Hlaviˇckov´ y soubor tˇr´ıdy je uveden v pˇr´ıloze C.
Obr´ azek 4.1: Modul ANSARouter obsahuj´ıc´ı modul RIP.
37
Metoda handleMessage() pˇr´ıjme zpr´avu a rozpozn´a, zda jde o zpr´avu odeslanou z tohoto (nˇekter´ y z ˇcasovaˇc˚ u RIP) nebo jin´eho procesu. V pˇr´ıpadˇe, ˇze se jedn´a o ˇcasovaˇc, provede poˇzadovan´e akce (odesl´ an´ı zpr´avy, smaz´an´ı cesty ze smˇerovac´ı tabulky, restartov´ an´ı ˇcasovaˇce). V pˇr´ıpadˇe, ˇze se jedn´ a o ciz´ı zpr´avu, pˇrepoˇsle ji metodˇe processPacket(). Ta zkontroluje IP adresu, verzi protokolu, strukturu zpr´avy a zjist´ı, zda se jedn´a o ˇz´adost (Request) nebo odpovˇed’ (Response). Podle toho zpr´avu d´ale zpracov´av´a metoda processRequest() nebo processResponse().
Obr´azek 4.2: Diagram aktivit zobrazuj´ıc´ı vztahy mezi metodami ve tˇr´ıdˇe RIPRouting.
Metoda processRequest() zkontroluje poˇcet z´aznamu v ˇz´adosti. Pokud je jen jedna, ˇz´ad´a odes´ılatel o vˇsechny z´ aznamy z smˇerovac´ı tabulky. Zavol´a metodu sendPacket(), kter´ a se postar´ a o sestavn´ı a zasl´ an´ı v´ ysledn´e zpr´avy sousedovi. Tato metoda vyuˇz´ıv´a metodu createPacket() pro vytvoˇren´ı zpr´avy a naplnˇen´ı zpr´avy smˇerovac´ımi informacemi. Metoda processResponse zpracov´av´a zpr´avy se smˇerovac´ımi informacemi, kter´e pˇrich´azej´ı od sousedn´ıch smˇerovaˇc˚ u. Nejprve zkontroluje, jestli je kaˇzd´ y z´aznam leg´aln´ı, tedy jestli se nejedn´ a o IP adresu smyˇcky (Loopback), adresy tˇr´ıdy E nebo D apod. N´aslednˇe dojde k porovn´ an´ı adresy s adresami v smˇerovac´ı tabulce. Pokud se v n´ı takov´a adresa jeˇstˇe nevyskytuje, vytvoˇr´ı se nov´ y z´ aznam a nastav´ı se mu ˇcasovaˇc Timout. Pokud jiˇz adresa s´ıtˇe v tabulce existuje, zkontroluje se metrika. V pˇr´ıpadˇe, ˇze z´aznam m´a menˇs´ı metriku, neˇz z´aznam v tabulce, dojde k aktualizaci z´aznamu. Nakonec dojde k restartov´an´ı ˇcasovaˇce Timeout. 38
Cel´ y postup zobrazuje diagram aktivit na obr´azku 4.2. Pˇr´ıklad konfigurace je uveden v pˇr´ıloze D.
4.2
Implementace redistribuce
V r´amci t´eto pr´ ace byla naprogramov´ana redistribuce cest z protokolu OSPF do protokolu RIP. Tuto ˇcinnost prov´ ad´ı metoda getOSPFRoutes(). Pro jej´ı spr´avnou ˇcinnost byla vytvoˇrena struktura RIPRedistribution: struct RIPRedistribution { bool redistrinute; char * protocol; int metric; };
; je nastavena redistribuce? ; redistribuovan´ y protokol ; metrika redistribuovan´ ych cest
Pˇri inicializaci se do struktury naˇctou z konfiguraˇcn´ıho souboru informace o redistribuci. Zaznamen´ av´ a, jestli v˚ ubec bude redistribuce prob´ıhat, s jak´ ym protokolem bude redistribuce prob´ıhat (v naˇsem pˇr´ıpadˇe pouze OSPF), a jakou metriku budou m´ıt nov´e RIP z´aznamy po redistribuci. Metoda getOSPFRoutes() zkontroluje, jestli poloˇzka protocol je nastavena na ospf. Pokud ano zaˇcne proch´ azet z´ aznamy smˇerovac´ı tabulky a kontrolovat jejich zdroj na hodnotu OSPF. Takov´e cesty zaznamen´ a do struktury RouteEntry zm´ınˇen´e u zpr´av RIPPacket a metriku dopln´ı na hodnotu uloˇzenou ve struktuˇre RIPRedistribution. Takto vytvoˇren´e z´aznamy se pak pˇred´ avaj´ı k dalˇs´ımu zpracov´an´ı, zaˇclenˇen´ı do RIP zpr´avy a odesl´an´ı soused˚ um. Pˇr´ıklad konfigurace redistribuce pro jeden smˇerovaˇc je:
ospf <Metric>4
4.3
; redistribuovan´ y protokol ; RIP metrika redistribuovan´ ych cest
Shrnut´ı kapitoly
Tato kapitola nast´ınila implementaci protokolu RIP a redistribuce. Protokol RIP byl implementov´ an dle RFC 1058 [5]. Implementace splnila vˇsechny jeho poˇzadavky aˇz na autosumarizaci. Ta by pˇr´ıpadnˇe mohla b´ yt v budoucnu doimplementov´ana. Pro naˇse potˇreby simulace bychom ji ale nevyuˇzili a aktu´aln´ı implementace n´am bude plnˇe dostaˇcovat. D´ ale byl naimplementov´ an Split Horizon. V budoucnu by bylo moˇzn´e implementaci rozˇs´ıˇrit tak´e o dalˇs´ı ochrann´ y prostˇredek Poison Reverse. V r´ amci t´eto pr´ ace byla naimplementov´ana redistribuce z protokolu RIP do protokolu OSPF. Pro pln´e vyuˇzit´ı redistribuce se poˇc´ıt´a s vyuˇzit´ım implementace redistribuce z protokolu RIP do protokolu OSPF, kter´a je souˇc´ast´ı jin´e bakal´aˇrsk´e pr´ace [4], a implementace z bakal´ aˇrsk´e pr´ ace [14], kter´ a zajist´ı zas´ıl´an´ı informac´ı o zmˇenˇe v smˇerovac´ı tabulce. 39
Kapitola 5
Simulace v prostˇ red´ı Packet Tracer a OMNeT++ V t´eto kapitole prakticky vyuˇzijeme naimplementovan´e tˇr´ıdy a simulaˇcn´ı modely. Nejprve si definujeme vlastnosti, kter´e chceme ovˇeˇrit simulac´ı: dostupnost a stabilita s´ıtˇe. N´aslednˇe provedeme simulaci v obou zmiˇ novan´ ych n´astroj´ıch – Packet Tracer a OMNeT++. Pro popis simulaci tˇechto vlastnost´ı pouˇzijeme referenˇcn´ı obr´azek 5.1.
Obr´ azek 5.1: Topologie simulovan´ı s´ıtˇe.
5.1
Dostupnost
Z´akladn´ım poˇzadavkem pro kaˇzdou s´ıt’ je dostupnost. Abychom mohli s´ıt’ plnˇe vyuˇz´ıvat, mus´ıme si b´ yt jisti, ˇze za jak´ ychkoliv podm´ınek jsou vˇsechny segmenty s´ıtˇe odkudkoliv dostupn´e. Proto je vhodn´e vyuˇz´ıvat z´aloˇzn´ı linky a podobn´a opatˇren´ı. V n´asleduj´ıc´ıch simulac´ıch budeme uvaˇzovat, ˇze dojde k p´adu linky mezi smˇerovaˇci R1 a R2. Dostupnost mezi s´ıtˇemi 192.168.8.0/24 a 192.168.17.0/24 by mˇel z´aloˇznˇe zajistit smˇerovaˇc R3. Ovˇeˇrovat ji budeme zas´ıl´ an´ım ICMP1 paket˚ u mezi obˇema s´ıtˇemi.
5.1.1
Simulace dostupnosti v n´ astroji Packet Tracer
V PT jsme si vytvoˇrili pomoc´ı funkce Add Complex PDU sc´en´aˇr, ve kter´em bude poˇc´ıtaˇc PC4 periodicky (35 sekund) zas´ılat ICMP pakety poˇc´ıtaˇci PC0, viz. obr´azek 5.1. Spustili 1 Anglicky Internet Control Message Protocol, pouˇz´ıv´ a se pro odes´ıl´ an´ı chybov´ ych zpr´ av (poˇzadovan´ a sluˇzba/host/s´ıt’ nen´ı dostupn´ a apod.).
40
jsme simulaci a sledovali pr˚ ubˇeh cesty paketu. Podle oˇcek´av´an´ı byl paket smˇerov´an pˇres smˇerovaˇce R1 a R2 (obr´ azek 5.2a). V simulaˇcn´ım ˇcase 35.011 jsme zastavili simulaci, pˇreˇsli jsme do CLI2 smˇerovaˇce R2 a pomoc´ı pˇr´ıkaz˚ u R2(config)#int s0/1/0 R2(config-if)#shutdown
Obr´azek 5.2: V´ ypis pr˚ uchodu ICMP paketu s´ıt’ov´ ymi zaˇr´ızen´ımi. a) Linky jsou v poˇr´adku. b) Pˇri cestˇe paketu zpˇet doˇslo k p´adu linky. c) Linka mezi R1 a R2 je nefunkˇcn´ı.
jsme vypnuli rozhran´ı s0/1/0 vedouc´ı k smˇerovaˇci R1. ICMP paket se v t´e dobˇe nach´azel v poˇc´ıtaˇci PC0. Pˇri cestˇe zpˇet k PC4 smˇerovaˇc R2 jeˇstˇe neznal novou cestu do s´ıtˇe 192.168.8.0 /24, proto smˇerovaˇc vr´ atil poˇc´ıtaˇci PC0 ICMP paket typu Destination Unreachable (obr´azek 5.2b). Dalˇs´ı ICMP paket, kter´ y byl vysl´an v ˇcase 70 sekund, byl smˇerov´an novou cestou, kter´a se mezit´ım ustanovila, tedy pˇres smˇerovaˇce R1, R3 a R2 (obr´azek 5.2, c). Simulaci jsme znovu zopakovali. Tentokr´at jsme um´ıstili na rozhran´ı s0/1/1 (ve smˇeru od R3) smˇerovaˇce R2 ACL. Zadali jsme ho v CLI takto: R2(config)#access-list 101 deny icmp any 192.168.17.0 0.0.0.255 R2(config)#access-list 101 permit ip any any R2(config)# R2(config)#int s0/1/1 R2(config-if)#ip access-group 101 in
Po t´e co byla simulace spuˇstˇena se vˇsemi funkˇcn´ımi linkami, se s´ıt’ chovala jako pˇri pˇredchoz´ım testu. Po t´e jsme znovu vypnuli rozhran´ı mezi smˇerovaˇci R1 a R2. Tentokr´at se s´ıt’ 192.168.17.0/24 stala nedostupnou (obr´azek 5.3). Pˇrestoˇze paket byl pˇred´an ze smˇerovaˇce R1 na R3, tak n´ asleduj´ıc´ı smˇerovaˇc R2 dle nastaven´eho ACL paket zahodil. 2
Rozhran´ı s pˇr´ıkazovou ˇra ´dkou urˇcen´e pro konfiguraci Cisco zaˇr´ızen´ı, zejm´ena smˇerovaˇc˚ u a pˇrep´ınaˇc˚ u.
41
Obr´azek 5.3: V´ ypis pr˚ uchodu ICMP paketu s´ıt’ov´ ymi zaˇr´ızen´ımi. ACL na smˇerovaˇci R2 paket zahodil.
5.1.2
Simulace dostupnosti v n´ astroji OMNeT++
Pro simulace v OMNeT++ vyuˇzijeme manaˇzer stav˚ u linek (tˇr´ıda InterfaceStateManager), kter´ y vznikl v r´ amci bakal´ aˇrsk´e pr´ace M. Danka [4]. Tato tˇr´ıda umoˇzn ˇuje vytvoˇren´ı sc´en´ aˇre simulace pomoc´ı XML souboru. Zde je uk´azka XML souboru, kter´ y vyuˇzijeme pro tuto simulaci: <scenario>
V souboru uv´ ad´ıme, ˇze v simulaˇcn´ım ˇcase 200 sekund dojde k vypnut´ı rozhran´ı eth1 na smˇerovaˇci R2. V simulaˇcn´ım ˇcase 300 sekund dojde k jeho opˇetovn´emu zapnut´ı. Pro zas´ıl´ an´ı ICMP paket˚ u jsme vyuˇzili aplikaci Ping (tˇr´ıda pingApp) na poˇc´ıtaˇci H11. Ten v pravideln´ ych intervalech zas´ıl´a ICMP pakety typu Echo poˇc´ıtaˇci H21 (obr´azek 5.1). Simulace vypisovala trasy, kter´ ymi putoval ICMP paket: -----------------------------------------------Time = 19.208472580648 H11 : Ping 0 to 192.168.17.21 Path: H11 - DROP -----------------------------------------------
-----------------------------------------------Time = 89.208472580648 42
H11 : Ping 2 to 192.168.17.21 Path: H11 - R1A - R1 - R2 - R2B - H21 - H21 - R2B - R2 ----------------------------------------------- -----------------------------------------------Time = 194.208472580648 H11 : Ping 5 to 192.168.17.21 Path: H11 - R1A - R1 - R2 - R2B - H21 - H21 - R2B - R2 - ICMP ERROR -----------------------------------------------Time = 229.208472580648 H11 : Ping 6 to 192.168.17.21 Path: H11 - R1A - R1 - R3 - R2 - R2B - H21 - H21 - R2B - R1A - H11 ----------------------------------------------- -----------------------------------------------Time = 299.208472580648 H11 : Ping 8 to 192.168.17.21 Path: H11 - R1A - R1 - R3 - R2 - R2B - H21 - H21 - R2B - H11 -----------------------------------------------Time = 334.208472580648 H11 : Ping 9 to 192.168.17.21 Path: H11 - R1A - R1 - R2 - R2B - H21 - H21 - R2B - R2 ------------------------------------------------
- R1 - R1A - H11
- R2 - R2B - H21 -
- R2 - R3 - R1 -
- R2 - R1 - R1A -
- R1 - R1A - H11
V simulaˇcn´ım ˇcase 19 sekund jeˇstˇe smˇerovaˇce nemˇely naplnˇen´e smˇerovac´ı tabulky, smˇerovaˇc R1A neznal cestu k poˇc´ıtaˇci H21 (192.168.17.21), a proto byl ICMP paket zahozen. V simulaˇcn´ım ˇcase 89 sekund jsou vˇsechny linky funkˇcn´ı. ICMP paket je zasl´an nejkratˇs´ı cestou ze smˇerovaˇce R1A, pˇres smˇerovaˇce R1, R2, R2B, aˇz k c´ılov´emu poˇc´ıtaˇc H21. Cesta zpˇet je totoˇzn´ a. ICMP paket zaslan´ y v ˇcase 194 sekund se dostal stejnou cestou k poˇc´ıtaˇci H21. V ˇcase 200 sekund dojde p´ adu linky mezi smˇerovaˇci R1 a R2. ICMP paket Echo-Reply je smˇerov´ an zpˇet z H21 na smˇerovaˇc R2. Smˇerovaˇc R2 jeˇstˇe nedostal novou informaci o s´ıti 192.168.8.0/24. Tuto s´ıt’ nezn´ a a proto poˇsle poˇc´ıtaˇci H21 nazpˇet ICMP paket typu Destination Unreachable (c´ıl nen´ı dostupn´ y). V ˇcase 229 sekund je jiˇz ustanovena nov´a cesta. ICMP paket je ze smˇerovaˇce R1 pˇreposl´ an na smˇerovaˇc R3, n´ aslednˇe na smˇerovaˇc R2. V ˇcase 299 sekund je linka mezi smˇerovaˇci R1 a R2 st´ ale nefunkˇcn´ı, proto ICMP paket putuje pˇres smˇerovaˇc R3. V ˇcase 300 sekund dojde k obnoven´ı funkˇcnosti linky a zpˇet jiˇz putuje paket p˚ uvodn´ı cestou, tedy ze smˇerovaˇce R2 na smˇerovaˇc R1. Dalˇs´ı test provedeme za pouˇzit´ı ACL um´ıstˇen´eho na smˇerovaˇci R2. Modul ACL byl vytvoˇren v r´ amci bakal´ aˇrsk´e pr´ ace T. Suchomela [15]. ACL 110 je nastaven na portu eth2 smˇerovaˇce R2 (ve smˇeru od R3). Z´apis v konfiguraˇcn´ım souboru: <entry seq_no="15"> 43
deny 0.0.0.0 192.168.17.0 <WC_src>255.255.255.255 <WC_dst>0.0.0.255 <protocol>icmp <entry seq_no="20"> permit 0.0.0.0 0.0.0.0 <WC_src>255.255.255.255 <WC_dst>255.255.255.255 <protocol>ip eth2
V´ ystup simulace je: -----------------------------------------------Time = 159.208472580648 H11 : Ping 4 to 192.168.17.21 Path: H11 - R1A - R1 - R2 - R2B - H21 - H21 - R2B - R2 - R1 - R1A - H11 -----------------------------------------------Time = 194.208472580648 H11 : Ping 5 to 192.168.17.21 Path: H11 - R1A - R1 - R2 - R2B - H21 - H21 - R2B - R2 - R2 - R2B - H21 - ICMP ERROR -----------------------------------------------Time = 229.208472580648 H11 : Ping 6 to 192.168.17.21 Path: H11 - R1A - R1 - R3 -----------------------------------------------Time = 264.208472580648 H11 : Ping 7 to 192.168.17.21 Path: H11 - R1A - R1 - R3 -----------------------------------------------Time = 299.208472580648 H11 : Ping 8 to 192.168.17.21 Path: H11 - R1A - R1 - R3 -----------------------------------------------Time = 334.208472580648 H11 : Ping 9 to 192.168.17.21 Path: H11 - R1A - R1 - R2 - R2B - H21 - H21 - R2B - R2 - R1 - R1A - H11 44
Poˇc´ ateˇcn´ı a koneˇcn´ y stav v´ ypisu je podobn´ y jako pˇri prvn´ı simulaci. V ˇcase 229 sekund, kdy je nefunkˇcn´ı linka mezi R1 a R2, je paket posl´an pˇres smˇerovaˇc R3. Ten pˇred´a paket smˇerovaˇci R2, kter´ y ale paket d´ıky ACL zahod´ı. Z´avˇereˇcn´ y v´ ypis statistiky pouˇzit´eho ACL (simulaˇcn´ı ˇcas 474 sekund): IP IP IP IP -
datagrams received: 142 packets permitted without ACL action: 122 packets permitted by ACL action: 17 packets denied by an ACL action: 3 rule has been used: 3x rule has been used: 17x Z v´ ypisu je zˇrejm´e, ˇze pravidlo zakazuj´ıc´ı vstup ICMP paket˚ u bylo aplikov´ano tˇrikr´ at.
5.2
Stabilita
N´asleduj´ıc´ı simulace se zamˇeˇr´ı na stabilitu linky. I v t´eto kapitole se zamˇeˇr´ıme na linku mezi smˇerovaˇci R1 a R2. Budeme vyb´ırat r˚ uzn´e ˇcasov´e intervaly mezi zap´ın´an´ım a vyp´ın´an´ım rozhran´ı eth1 (d´ ale jen ∆t) na smˇerovaˇci R2 (ve smˇeru k R1), ˇc´ımˇz budeme mˇenit stupeˇ n nestability linky a sledovat chov´an´ı s´ıtˇe. C´ılem simulace je zjistit, zda m˚ uˇze nestabilita ovlivnit dostupnost s´ıtˇe, i kdyˇz m´ame z´aloˇzn´ı linky.
5.2.1
Simulace stability v n´ astroji Packet Tracer
Simulace t´eto vlastnosti v PT by byla velmi n´aroˇcn´a. Museli bychom vˇzdy mˇeˇrit ˇcas, po kter´em je tˇreba zmˇenit stav linky, v tento ˇcas zastavit simulaci a v CLI smˇerovaˇce R2 vˇzdy ruˇcnˇe vypnout ˇci zapnout potˇrebn´e rozhran´ı. Avˇsak ani tato moˇznost nen´ı zcela provediteln´ a, protoˇze PT je diskr´etn´ı simul´ator. D´ıky tomu, ˇze doch´az´ı ke krokov´ ym zmˇen´ am v ˇcase pˇri ud´ alostech, nelze prov´est zastaven´ı simulace v n´ami poˇzadovan´ y ˇcas. Z tohoto d˚ uvodu jsme simulaci stability v PT neprov´adˇeli.
5.2.2
Simulace stability v n´ astroji OMNeT++
Pro tuto simulaci jsme pouˇzili manaˇzer stav˚ u linek [4]. Do souboru XML jsme zapsali ˇcasov´e odstupy mezi zap´ın´ an´ım a vyp´ın´ an´ım rozhran´ı eth1 na smˇerovaˇci R2. Postupnˇe jsme volili ∆t rovno 250, 100, 50, 25, 20, 10, 5 a 1 sekunda. Zat´ımco bude linka mezi smˇerovaˇci R1 a R2 nestabiln´ı, budeme testovat dostupnost mezi s´ıtˇemi 192.168.8.0/24 a 192.168.17.0/24 pomoc´ı zas´ıl´ an´ı ICMP paket˚ u. Oproti simulaci dostupnosti jsme sn´ıˇzili ˇcas mezi zas´ıl´an´ım ICMP paket˚ u na 15 sekund, abychom mohli preciznˇeji sledovat zmˇeny v dostupnosti s´ıtˇe. Tento ˇcas byl vybr´an z toho d˚ uvodu, ˇze odesl´ an´ı ICMP Echo a pˇr´ıjem ICMP Echo-Reply trv´a pˇres 10 sekund. Kdybychom pouˇzili kratˇs´ı ˇcasovou prodlevu, v´ ypisy simulace by byly chaotick´e a nepouˇziteln´e. V prvn´ı s´erii test˚ u jsme nechali RIP konvergovat do ˇcasu 100 sekund. V tomto ˇcase jsou smˇerovac´ı tabulky vˇsech smˇerovaˇc˚ u v s´ıti naplnˇeny vˇsemi cestami a s´ıt’ je plnˇe funkˇcn´ı. Po tomto ˇcase doˇslo k vyp´ın´ an´ı a zap´ın´an´ı rozhran´ı ve v´ yˇse uveden´ ych intervalech. Simulace byla prov´ adˇena od ˇcasu 0 po 250 sekund. Protoˇze namˇeˇren´e hodnoty byly pro vˇsechny pokusy v rozmez´ı od 0 do 100 sekund stejn´e, tabulka 5.1 uv´ad´ı hodnoty namˇeˇren´e aˇz od simulaˇcn´ıho ˇcasu 100 sekund. P´ısmeno X v t´eto i n´asleduj´ıc´ıch tabulk´ach zastupuje simulaci s´ıtˇe bez padaj´ıc´ıch linek. 45
Doba mezi zmˇenami stavu linky (∆t) [s]
X
250
100
50
25
20
15
5
1
Poˇcet zmˇen stavu linky v ˇcase 100 - 250 s
0
0
2
3
6
7
10
30
150
Poˇcet doruˇcen´ ych paket˚ u
10
10
8
8
6
4
2
2
0
Poˇcet nedoruˇcen´ ych paket˚ u
0
0
2
2
4
6
8
8
10
Paket jde bˇeˇznou cestu
10
10
3
3
3
2
2
2
0
Paket jde z´ aloˇzn´ı cestou (pˇres R3)
0
0
5
5
3
2
0
0
0
Tabulka 5.1: V´ ysledky prvn´ıho mˇeˇren´ı v ˇcase 100 - 250 sekund (posl´ano 10 paket˚ u).
D´ale jsme testovali, jak se v´ ysledky zmˇen´ı pokud se nezaˇcnou pos´ılat ICMP pakety od ˇcasu 0 sekund, ale pozdˇeji. Jako startovn´ı ˇcas pro pravideln´e odes´ıl´an´ı ICMP paket˚ u jsme zvolili 3, 6, 9 a 12 sekund. Tabulka 5.2 ukazuje, jak se pˇri tˇechto ˇcasov´ ych posunech mˇenil poˇcet doruˇcen´ ych paket˚ u. Doba mezi zmˇenami stavu linky (∆t) [s]
100
50
25
20
15
5
1
Startovn´ı ˇcas v nula sekund
8
8
6
4
2
2
0
Startovn´ı ˇcas v tˇrech sekund´ ach
8
7
7
5
0
0
0
Startovn´ı ˇcas v ˇsesti sekund´ ach
8
7
7
5
0
0
0
Startovn´ı ˇcas v dev´ıti sekund´ ach
8
6
6
3
2
2
0
Startovn´ı ˇcas v dvan´ acti sekund´ach
8
6
5
5
3
0
0
Pr˚ umˇern´ y poˇcet pˇrijat´ ych paket˚ u
8
6,8
6,2
4,4
1,4
0,4
0
Tabulka 5.2: Poˇcet doruˇcen´ ych paket˚ u v z´avislosti na startovn´ım ˇcase periodick´eho zas´ıl´ an´ı ICMP paket˚ u (simulaˇcn´ı ˇcas 100 - 250 sekund). ˇ Casovaˇ c Trigger je zapnut v pˇr´ıpadˇe, ˇze doˇslo k p´adu nˇekter´e linky nebo zmˇenˇe cesty. Po jeho uplynut´ı zaˇsle smˇerovaˇc informace o cel´e svoj´ı smˇerovac´ı tabulce vˇsem sv´ ym soused˚ um. D´elka tohoto intervalu se vol´ı n´ ahodnˇe v rozmez´ı nula aˇz pˇet sekund pro pˇr´ıpad, ˇze by v brzk´e dobˇe doˇslo k dalˇs´ı zmˇenˇe. Zabr´ an´ı se tak lavinov´emu zas´ıl´an´ı zpr´av v pˇr´ıpadˇe mnoha zmˇen, kter´e pˇrich´ azej´ı rychle za sebou. V pˇr´ıpadˇe, ˇze je linka vysoce nestabiln´ı (interval mezi zmˇenami je pod 10 sekund), hraje tento ˇcasovaˇc v´ yznamnou roli pˇri informov´an´ı soused˚ u o zmˇen´ ach smˇerovac´ıch tabulek a t´ım p´adem i v mnoˇzstv´ı doruˇcen´ ych paket˚ u. Stejnˇe tak ovlivˇ nuje mnoˇzstv´ı doruˇcen´ ych paket˚ u v pˇr´ıpadˇe, ˇze posouv´ame startovn´ı ˇcas odes´ıl´ an´ı ICMP paket˚ u. V pˇr´ıpadˇe ∆t = 5 je to nejzˇretelnˇejˇs´ı (tabulka 5.2). Uvaˇzujme, ˇze v ˇcase nula by byly naplnˇeny smˇerovac´ı tabulky. Kdyby v ˇcase pˇet sekund spadla linka, do ˇcasu ˇsest sekund, tj. do jedn´e sekundy po p´adu linky, se s nejvˇetˇs´ı pravdˇepodobnost´ı nestihnou zaslat aktualizace (ˇcasovaˇc Trigger by musel b´ yt nastaven na ˇcas menˇs´ı neˇz jedna sekunda). V ˇcase devˇet sekund, tj. ˇctyˇri sekundy po p´adu linky, jsou aktualizace rozesl´any s mnohem vˇetˇs´ı pravdˇepodobnost´ı (Trigger by musel b´ yt nastaven v rozmez´ı nula aˇz ˇctyˇri sekundy), proto pˇri tomto posunu doˇslo k pˇr´ıjmu nejv´ıce, tj. dvou, paket˚ u. Po t´e jsme provedli podobnou s´erii simulac´ı, s t´ım rozd´ılem, ˇze linka byla nestabiln´ı uˇz od zah´ ajen´ı simulace, tedy od simulaˇcn´ıho ˇcasu 0 + ∆t. ∆t nab´ yvala postupnˇe hodnot 50, 25, 20, 10, 5 a 1 sekunda. ∆t = 100 a 250 sekund jsme vynechali, protoˇze pro tyto ˇcasy by byla situace stejn´ a jako v pˇredeˇsl´e s´erii simulac´ı. Frekvence zas´ıl´an´ı ICMP paket˚ u z˚ ustala 46
stejn´a. Tabulka 5.3 uv´ ad´ı hodnoty namˇeˇren´e simulac´ı od simulaˇcn´ıho ˇcasu 0 po 250 sekund. Doba mezi zmˇenami stavu linky (∆t) [s]
X
50
25
20
10
5
1
Poˇcet zmˇen stavu linky v ˇcase 0 - 250 s
0
5
10
12
25
50
250
Poˇcet u ´spˇeˇsnˇe doruˇcen´ ych paket˚ u
12
12
9
8
6
2
0
Poˇcet nedoruˇcen´ ych paket˚ u
4
4
7
8
10
14
16
Paket jde bˇeˇznou cestu
12
6
5
5
2
2
0
Paket jde z´ aloˇzn´ı cestou (pˇres R3)
0
6
4
3
4
0
0
Tabulka 5.3: V´ ysledky druh´eho mˇeˇren´ı v ˇcase 0 - 250 sekund (posl´ano 16 paket˚ u). I kdyˇz je s´ıt’ stabiln´ı (X), dojde ke ztr´atˇe ˇctyˇr paket˚ u. Tato ztr´ata je zp˚ usobena t´ım, ˇze na poˇc´ atku simulace smˇerovaˇc R1A nezn´a cestu do s´ıtˇe 192.168.17.0/24, a proto pakety zahod´ı. N´asleduj´ıc´ı tabulka 5.4 uv´ ad´ı ˇcasy, ve kter´ ych doˇslo k naplnˇen´ı smˇerovac´ı tabulky smˇerovaˇce R1A cestou do s´ıtˇe 192.168.17.0/24 a t´ım p´adem z´ısk´an´ı potenci´aln´ı moˇznosti smˇerovat ICMP pakety. Mˇeˇren´ı jsme prov´adˇeli prost´ ym sledov´an´ım smˇerovac´ıch tabulek pˇri simulaci. Ve chv´ıli, kdy se objevila cesta v tabulce smˇerovaˇce R1A, zaznamenali jsme ˇcas do tabulky. Doba mezi zmˇenami stavu linky (∆t) [s]
X
50
25
20
10
5
1
Simulaˇcn´ı ˇcas z´ısk´ an´ı cesty k c´ılov´e s´ıti [s]
60
60
30
30
30
22
12
Tabulka 5.4: Simulaˇcn´ı ˇcasy, ve kter´ ych byla z´ısk´ana cesta do s´ıtˇe 192.168.17.0/24.
5.3
Shrnut´ı kapitoly
V t´eto kapitole jsme si pˇredvedli, jak jde simulaˇcn´ı modely vytvoˇren´e podle n´avrhov´ ych vzor˚ u firmy Cisco vyuˇz´ıt k simulaci dostupnosti a stability linek. Vybrali jsme typick´e vlastnosti s´ıtˇe, kter´e se v praxi ovˇeˇruj´ı, nebot’ jsou kl´ıˇcov´e pro spr´avnou funkˇcnost s´ıtˇe. Pokud to bylo moˇzn´e, provedli jsme simulaci vybran´ ych vlastnost´ı v n´astroj´ıch OMNeT++ a PT. V´ ysledky jsme si pˇredvedli na v´ ypisech simul´ator˚ u. V pˇr´ıpadˇe simulace stability by se jednalo o mnoho dlouh´ ych v´ ypis˚ u, proto jsme v´ ysledky shrnuli v pˇrehledn´ ych tabulk´ach.
47
Kapitola 6
V´ ysledky simulac´ı v n´ astroj´ıch OMNeT++ a Packet Tracer V t´eto kapitole porovn´ ame v´ ysledky simulac´ı v n´astroj´ıch OMNeT++ a Packet Tracer. Zhodnot´ıme simulaˇcn´ı moˇznosti obou n´astroj˚ u a nakonec se zamˇeˇr´ıme na pˇr´ınos simulace pro praktickou anal´ yzu poˇc´ıtaˇcov´ ych s´ıt´ı.
6.1 6.1.1
V´ ysledky simulac´ı V´ ysledky simulace dostupnosti
Pˇri simulaci dostupnosti jsme provedli dvˇe simulace. Nejprve jsme zjiˇst’ovali, co se stane, pokud spadne linka mezi R1 a R2. Dle pˇredpoklad˚ u byla vyuˇzita z´aloˇzn´ı cesta pˇres smˇerovaˇc R3. Uk´ azalo se, ˇze smˇerovaˇce nebyly schopn´e okamˇzitˇe pˇresunout provoz na z´aloˇzn´ı linku. V nejhorˇs´ım pˇr´ıpadˇe mus´ıme vyˇckat pˇribliˇznˇe 30 sekund, coˇz je implicitn´ı d´elka ˇcasovaˇce Update. To je pˇr´ıpad, kdy se aktualizaˇcn´ı zpr´avy pos´ılaly tˇesnˇe pˇred p´adem linky. Obvykle je ale tento ˇcas niˇzˇs´ı. Dok´ azali jsme t´ım, ˇze protokol RIP konverguje pomalu. Pˇri druh´e simulaci jsme vyuˇzili ACL na rozhran´ı eth2 smˇerovaˇce R2, kter´e blokovalo vˇsechny ICMP pakety smˇeˇruj´ıc´ı do s´ıtˇe 192.168.17.0/24. Po p´adu linky pˇresmˇerovali smˇerovaˇce znovu provoz na smˇerovaˇc R3. Ten odeslal ICMP pakety na smˇerovaˇc R2 stejnˇe jako v pˇredchoz´ı simulaci. ACL na smˇerovaˇci R2 ale tyto pakety zahazoval. S´ıt’ 192.168.17.0 /24 se stala nedostupnou. Touto simulaci jsme chtˇeli uk´ azat, ˇze i kdyˇz m´ame pro provoz mezi s´ıtˇemi LAN z´aloˇzn´ı linku a pˇredpokl´ ad´ ame, ˇze bude vyuˇzita v pˇr´ıpadˇe poruchy hlavn´ı linky, nemus´ı to b´ yt vˇzdy pravda. M˚ uˇze se st´ at, ˇze vlivem dalˇs´ıch parametr˚ u, kter´e jsme si neuvˇedomili (jako je nastaven´e ACL), se mohou st´at s´ıtˇe nedostupn´e. Z tohoto d˚ uvodu je vhodn´e prov´est ’ podobnou simulaci pro vlastn´ı s´ıt . V´ ysledky simulace dostupnosti v n´astroj´ıch OMNeT++ a Packet Tracer byly shodn´e.
6.1.2
V´ ysledky simulace stability
Pˇri simulace stability s´ıtˇe jsme se zamˇeˇrili na zkoum´an´ı mnoˇzstv´ı ICMP paket˚ u, kter´e byly v poˇr´adku doruˇceny zpˇet poˇc´ıtaˇci H11. Namˇeˇren´e hodnoty z tabulky 5.1 jsou zn´azornˇeny v grafu 6.1. S´ıt’ divergovala. Se zvyˇsuj´ıc´ı stabilitou linky se zvyˇsoval poˇcet doruˇcen´ ych paket˚ u ’ aˇz dos´ahl poˇctu vˇsech odeslan´ ych paket˚ u. Porovn´an´ım tabulek 5.1 a 5.3 zjist´ıme, ˇze s´ıt se chovala obdobnˇe, at’ uˇz byla linka nestabiln´ı od poˇc´atku, nebo aˇz po naplnˇen´ı smˇerovac´ıch 48
tabulek. Pˇri nestabilitˇe linky se z´ atˇeˇz bˇeˇzn´e a z´aloˇzn´ı linky rozdˇelila pˇribliˇznˇe na polovinu. Pr˚ umˇern´e hodnoty z tabulky 5.2 m˚ uˇzeme vidˇet v grafu 6.2. Z tohoto grafu je zˇrejm´e, ˇze pˇri ∆t menˇs´ım neˇz 25 sekund se poˇcet doruˇcen´ ych paket˚ u rapidnˇe sniˇzoval. Smˇerovaˇce si totiˇz nemohli korektnˇe zas´ılat aktualizace, kter´e se zas´ılaj´ı jednou za 30 sekund.
Obr´ azek 6.1: Graf z´ avislosti poˇctu pˇrijat´ ych paket˚ u na ∆t dle tabulky 5.1.
Nastaven´ı ˇcasovaˇce Trigger m´ a tak´e vliv na poˇcet doruˇcen´ ych paket˚ u zm´ınˇen´ y v pˇredchoz´ı kapitole, viz tabulka 5.2. Tento ˇcasovaˇc se ale podle RFC 1058 [5] ned´a nastavit napevno, n´ ybrˇz se nastavuje n´ ahodnˇe. Proto, pokud se data nebudou pos´ılat pravidelnˇe jako v naˇs´ı simulaci, je poˇcet pˇrenesen´ ych paket˚ u za ˇcas v´ıcem´enˇe vˇec´ı n´ahody. D´ale jsme doˇsli k zaj´ımav´emu zjiˇstˇen´ı, ˇze se zvyˇsuj´ıc´ı se nestabilitou (zmenˇsuj´ıc´ım se ˇcasem mezi zmˇenami stavu linky) s´ıtˇe se sniˇzuje ˇcas, ve kter´em smˇerovaˇc R1A z´ısk´a cestu do s´ıtˇe 192.168.17.0/24 (tabulka 5.4). Nast´ın´ıme si situaci u stabiln´ı s´ıtˇe. V ˇcase 0 sekund rozeˇslou smˇerovaˇce soused˚ um informace o pˇr´ımo pˇripojen´ ych s´ıt´ıch. Pˇri dalˇs´ım zas´ıl´an´ı aktualizac´ı v ˇcase 30 sekund uˇz zas´ılaj´ı smˇerovaˇce nejen sv´e pˇr´ımo pˇripojen´e s´ıtˇe, ale i cesty od sv´ ych soused˚ u, proto se v tomto ˇcase dozv´ı smˇerovaˇce R1 o s´ıti 192.168.17.0/24. Smˇerovaˇci R1A tuto informaci pˇred´ a aˇz pˇri dalˇs´ı aktualizaci v ˇcase 60 sekund. ˇ Casovaˇc Update nen´ı nastaven pˇresnˇe na 30 sekund, ale k tomuto ˇcasu se pˇrid´ av´ a kr´atk´a prodleva (je souˇc´ ast´ı implementace) v rozmez´ı nula aˇz jedna sekunda, aby vˇsechny smˇerovaˇce nezas´ılaly aktualizace ve stejn´ y ˇcas. T´ım p´adem nen´ı pˇredem jasn´e, kter´ y smˇerovaˇc dˇr´ıve zaˇsle informaci sousedovi. Pokud by v simulaˇcn´ım ˇcase 30 sekund nejprve z´ıskal smˇerovaˇc R1 informaci o cestˇe do s´ıtˇe 192.168.17.0/24 a aˇz n´aslednˇe zaslal smˇerovac´ı informace smˇerovaˇci R1A, mohly by smˇerovaˇc R1A zn´at cesty do vˇsech s´ıt´ı jiˇz v tomto ˇcase. Takov´ yto stav by mohl ale nastat aˇz pozdˇeji pˇri simulaci, kdy se rozestupy mezi zas´ıl´an´ım aktualizac´ı jednotliv´ ymi smˇerovaˇci zvˇetˇs´ı. Na poˇc´atku simulace odeˇsle smˇerovaˇc R1 smˇerovaˇci R1A aktualizace dˇr´ıve, neˇz zpracuje pˇr´ıchoz´ı informace. Podobnˇe jako v pˇr´ıpadˇe stabiln´ı s´ıtˇe se s´ıt’ chov´a i tehdy, je-li ∆t vˇetˇs´ı neˇz 30 sekund. Je-li ale tento ˇcas niˇzˇs´ı, situace se mˇen´ı. Vezmˇeme si jako pˇr´ıklad ∆t = 20 sekund. V ˇcase nula se smˇerovaˇc R3 dozv´ı pˇr´ım´e s´ıtˇe od smˇerovaˇc˚ u R2 a R1, s´ıt’ 192.168.17.0/24 nezn´ a. V ˇcase 20 sekund dojde k v´ ypadku linky mezi R1 a R2. Oba smˇerovaˇce zaˇcnou zas´ılat sv´ ym 49
Obr´azek 6.2: Graf z´ avislosti pr˚ umˇern´eho poˇctu pˇrijat´ ych paket˚ u na ∆t dle tabulky 5.2.
soused˚ um sv´e aktualizace. Smˇerovaˇc R3 se tak dozv´ı od R2 o s´ıti 192.168.17.0/24. V ˇcase 30 sekund dojde k zas´ıl´ an´ı pravideln´ ych aktualizac´ı vˇsem sv´ ym soused˚ um a tak se smˇerovaˇc R1, n´aslednˇe i R1A, dozv´ı od smˇerovaˇce R3 o existenci s´ıtˇe 192.168.17.0/24. Jeˇstˇe zaj´ımavˇejˇs´ı situace nast´ av´a pˇri intervalu ∆t = 5 sekund. V ˇcase nula se smˇerovaˇce dozv´ı pˇr´ım´e s´ıtˇe sv´ ych soused˚ u. Smˇerovaˇc R2 se dozv´ı o s´ıti 192.168.17.0/24. V ˇcase 5 sekund dojde k p´ adu linky. V ˇcase 10 sekund dojde k zprovoznˇen´ı linky. Pˇri t´eto zmˇenˇe smˇerovaˇce zaˇcnou zas´ılat cel´e sv´e tabulky vˇsem sv´ ym soused˚ um, R2 vˇsak nestihne zaslat informaci smˇerovaˇci R1 z d˚ uvodu delˇs´ıho intervalu ˇcasovaˇce Trigger. V ˇcase 20 sekund, kdy dojde znovu k obnovˇe linky, jiˇz R2 zaˇsle smˇerovaˇci R1 informaci o s´ıti 192.168.17.0/24. R1 zaˇsle zpr´ avu o t´eto cestˇe ihned smˇerovaˇci R1A.
6.2
Porovn´ an´ı n´ astroj˚ u OMNeT++ a Packet Tracer
Pro simulace jsme pouˇzili n´ astroje OMNeT++ i PT. Simulov´an´ım jsme ovˇeˇrili, ˇze oba n´astroje neposkytuj´ı stejn´e simulaˇcn´ı moˇznosti. V praxi se uk´azalo, ˇze Packet Tracer je vhodnˇejˇs´ı jako n´ astroj pro modelov´an´ı s´ıt´ı neˇz pro jejich simulaci. Za to n´astroj OMNeT++ prok´azal, ˇze je ryz´ım simulaˇcn´ım n´astrojem. Simulace v OMNeT++ byla jednoduch´a hlavnˇe d´ıky manaˇzeru stav˚ u linek [4]. Do XML souboru jsme popsali, jak chceme aby simulace prob´ıhala. D´ıky manaˇzeru bylo moˇzn´e prov´est simulaci p´ adu linek v jak´emkoliv simulaˇcn´ım ˇcase, s jakoukoliv frekvenc´ı a hlavnˇe v jak´emkoliv mnoˇzstv´ı. Pˇri simulaci stability s´ıtˇe jsme mohli simulovat vˇsechny stupnˇe nestability (vˇsechny ∆t) pˇri jedn´e simulaci. Pro vˇetˇs´ı pˇrehlednost jsme ale t´eto moˇznosti nevyuˇzili. Abychom z´ıskali vhodn´ y v´ ystup, ukazuj´ıc´ı jakou cestou byl paket smˇerov´an, bylo tˇreba dopsat p´ ar ˇr´ adk˚ u k´ odu do jednoduch´ ych modul˚ u pˇredstavuj´ıc´ıch s´ıt’ovou vrstvu (Network Layer). Informace o pr˚ ubˇehu simulace se pak vypisovaly do konzolov´eho okna, ze kter´eho se daly jednoduˇse pˇrekop´ırovat a uchovat pro dalˇs´ı pouˇzit´ı. Pˇri simulaci v PT se informace o pr˚ ubˇehu simulace vypisuj´ı do okna Even List (obr´azek 1.6) a nen´ı moˇzn´e je nijak exportovat, coˇz je velmi nepraktick´e. Proto jsme museli vyuˇz´ıt 50
sn´ım´an´ı obrazovky (Print Screen) a do t´eto pr´ace vloˇzit v´ ysledky jako obr´azek. Hlavn´ı nev´ yhoda PT ale tkv´ı v tom, ˇze nen´ı moˇzn´e nijak napl´anovat simulaci. Narozd´ıl od OMNeT++ nen´ı ani moˇzn´e doprogramovat modul, kter´ y by simulaci ovl´adal. V pˇr´ıpadˇe, ˇze chceme simulovat p´ ady a obnoven´ı linky, je nutn´e vˇzdy simulaci zastavit a ruˇcnˇe zapsat pˇr´ıkaz pro zapnut´ı/vypnut´ı rozhran´ı pro kaˇzd´ y smˇerovaˇc a rozhran´ı zvl´aˇst’. Simulov´ an´ı nestability linky je proto v tomto n´astroji nemoˇzn´e.
Obr´ azek 6.3: Model s´ıtˇe, kterou vyuˇz´ıv´ame v simulac´ıch. Pˇrepokl´ adejme, ˇze bychom chtˇeli simulovat dostupnost z jedno PC na vˇsechna dalˇs´ı PC v s´ıti. V naˇs´ı s´ıti (obr´ azek 6.3) m´ame ˇsest PC (n = 6), kaˇzd´e PC by zas´ılalo pakety dalˇs´ım pˇeti PC. To znamen´ a, ˇze bychom museli prov´est 5 x 6 simulaci. Pro obecn´ y poˇcet PC je to (n − 1)n = n2 − n,
(6.1)
coˇz vede na kvadratickou sloˇzitost O(N 2 ). D´ale bychom zkoumali, jak se bude s´ıt’ chovat v pˇr´ıpadˇe p´ adu jak´ekoliv jedn´e linky po cestˇe mezi dvˇema PC. V naˇs´ı topologii to znamen´ a sedm linek ke kaˇzd´emu ze ˇctyˇr poˇc´ıtaˇc˚ u v jin´e s´ıti LAN a dvˇe linky k poˇc´ıtaˇci ve stejn´e s´ıti LAN. To je v pr˚ umˇeru ˇsest linek. Tuto hodnotu oznaˇc´ıme jako r. V naˇsem pˇr´ıpadˇe r = 6, tedy r = n. Hodnotou r mus´ıme vyn´asobit poˇcet simulac´ı dostupnosti mezi dvˇema PC: (n2 − n)r
(6.2)
Sloˇzitost simulace m˚ uˇzeme vypoˇc´ıtat n´asledovnˇe: (n2 − n)n = n3 − n2
(6.3) O(N 3 ).
Simulace dostupnosti vˇsech s´ıt´ı v PT vede na kubickou sloˇzitost Pouˇzijemeli vzorec 6.2 m˚ uˇzeme vypoˇc´ıtat, ˇze pro naˇs´ı topologii bychom museli prov´est celkem 180 simulac´ı. V pˇr´ıpadˇe, ˇze bychom se rozhodli simulovat nefunkˇcnost vˇsech moˇzn´ ych variac´ı linek po cestˇe (kromˇe situace, kdy by byly nefunkˇcn´ı vˇsechny linky na trase), mus´ıme prov´est 2n − 1
(6.4)
simulac´ı pro jednu dvojici poˇc´ıtaˇc˚ u. V pˇr´ıpadˇe, ˇze bychom simulovali tak´e dostupnost mezi vˇsemi poˇc´ıtaˇci v s´ıti, bylo by tˇreba prov´est 51
(n2 − n)(2n − 1)
(6.5)
simulac´ı. T´ım p´ adem se dost´ av´ame k exponenci´aln´ı sloˇzitosti O(2N ). Pro naˇs´ı topologii bychom museli prov´est 1890 simulac´ı. Z tohoto d˚ uvodu m˚ uˇzeme prohl´asit PT za nevhodn´ y n´astroj pro praktickou simulaci poˇc´ıtaˇcov´ ych s´ıt´ı. V n´astroji OMNeT++ je pouze nutn´e zopakovat simulaci pro kaˇzdou dvojici poˇc´ıtaˇc˚ u, tedy prov´est 30 simulac´ı (podle vzorce 6.1).
6.3
Pˇ r´ınos simulace pro praktickou anal´ yzu poˇ c´ıtaˇ cov´ ych s´ıt´ı
Jak jsme si v pˇredchoz´ı sekci dok´ azali, n´astroj PT nelze pro praktickou anal´ yzu poˇc´ıtaˇcov´ ych s´ıt´ı pouˇz´ıt. N´ astroj OMNeT++ m´a v tomto smˇeru mnohem lepˇs´ı vyhl´ıdky. Implementac´ı protokolu RIP a redistribuce jsme v´ yraznˇe rozˇs´ıˇrili moˇznosti tohoto n´ astroje. Spoleˇcnˇe s OSPF [4], EIGRP [16], ACL [15], manaˇzeru linek [4] a Cisco smˇerovaˇce [14] se z obecn´eho diskr´etn´ıho simul´atoru stal plnohodnotn´ y simul´ator poˇc´ıtaˇcov´ ych s´ıt´ı. D´ıky konfiguraˇcn´ımu souboru [13] podobn´emu CLI je simul´ator pˇripraven na modelov´ an´ı a simulaci s´ıt´ı sloˇzen´ ych z Cisco smˇerovaˇc˚ u. Rozhodneme-li se otestovat r˚ uzn´e vlastnosti s´ıtˇe, je vyuˇzit´ı simul´atoru OMNeT++ se vˇsemi v´ yˇse jmenovan´ ymi doplˇ nkov´ ymi modely rozhodnˇe dobr´ ym ˇreˇsen´ım. Nen´ı nutn´e naruˇsovat chod velk´e s´ıtˇe testovac´ımi ACL ˇci p´ady linek. Nˇekter´e vlastnosti se na re´aln´e s´ıti testuj´ı jen velmi tˇeˇzce. Rozhodneme-li se testovat stabilitu s´ıtˇe, neexistuje jednoduch´ y zp˚ usob, kter´ ym bychom nasimulovali nestabilitu na re´aln´e s´ıti. Pˇri pouˇzit´ı simul´atoru se nem˚ uˇze nic pokazit ani zniˇcit, m˚ uˇzeme tedy simul´ator povaˇzovat za nejlevnˇejˇs´ı variantu pro testov´an´ı s´ıtˇe. Vˇetˇsina simul´ ator˚ u uveden´ ych v sekci 1.1 se pouˇz´ıv´a k simulov´an´ı r˚ uzn´ ych vˇeci, nejen s´ıt´ı, proto m´ a vˇetˇsina tˇechto simul´ator˚ u omezen´e nebo ˇz´adn´e moˇznosti smˇerov´an´ı. Naopak OMNeT++ je pˇripraven na simulaci bˇeˇzn´ ych Cisco s´ıt´ı. Protokol RIP byl naimplementov´an podle pˇr´ısluˇsn´eho RFC a tak je plnˇe kompatibiln´ı s implementaci nejen v bˇeˇzn´ ych smˇerovaˇc´ıch. S´ıtˇe v OMNeT++ se chovaj´ı podobnˇe jako s´ıtˇe re´aln´e.
6.4
Shrnut´ı kapitoly
V t´eto kapitole jsme si shrnuli a od˚ uvodnili v´ ysledky, ke kter´ ym jsme doˇsli pˇri simulaci v pˇredeˇsl´e kapitole. V pˇr´ıpadˇe dostupnosti jsme uk´azali, ˇze pouˇzit´ım simulace je moˇzn´e odhalit nˇekter´e parametry, kter´e mohou ovlivnit dostupnost s´ıtˇe. Prok´azali jsme, ˇze dostupnost s´ıtˇe tak´e z´ avis´ı na stabilitˇe linek. Pˇrestoˇze pˇri v´ ypadku linky se nab´ızelo pouˇz´ıt´ı z´aloˇzn´ı linky, protokol RIP ji nedok´ azal vyuˇz´ıt. Tento protokol totiˇz konverguje pˇr´ıliˇs pomalu, a tak po v´ ypadu linky nedok´ azal ihned pˇresmˇerovat data na z´aloˇzn´ı linku. T´ımto jsme dok´azali, ˇze z´aloˇzn´ı linka nen´ı vˇzdy z´ arukou dostupnosti s´ıt´ı a protokol RIP nen´ı vhodn´ ym smˇerovac´ım protokolem pro nestabiln´ı s´ıtˇe. Dok´azali jsme tak´e, ˇze se sniˇzuj´ıc´ım se ˇcasem mezi zmˇenami stavu linek se zkracuje ˇcas z´ısk´ an´ı smˇerovac´ıch informac´ı o vˇsech s´ıt´ıch. Porovnali jsme n´ astroje PT a OMNeT++ z hlediska moˇznost´ı pˇri simulac´ıch s´ıt´ı. Uk´azalo se, ˇze pouˇzit´ı n´ astroje PT pro hlubˇs´ı simulace n´ami namodelovan´ ych topologi´ı, je prakticky nemoˇzn´e. Simulovat v nˇem nestabiln´ı linky je neprovediteln´e. Pˇri simulaci dostupnosti v PT se m˚ uˇzeme pˇri prov´ adˇen´ı simulac´ı pro jednotliv´e situace dostat ke kubick´e nebo aˇz exponenci´aln´ı sloˇzitosti. Na z´ avˇer jsme zhodnotili moˇznosti n´astroje OMNeT++ pro praktickou anal´ yzu poˇc´ıtaˇcov´ ych s´ıt´ı. Uk´ azalo se, ˇze implementac´ı protokolu RIP, jsme v´ yraznˇe obohatili n´ astroj v oblasti simulace smˇerov´an´ı s´ıt´ı. 52
Z´ avˇ er V r´amci t´eto pr´ ace jsme detailnˇe prostudovali smˇerovac´ı protokoly RIP a OSPF, nalezli n´avrhov´e vzory firmy Cisco, kter´e pracuj´ı s tˇemito protokoly, sezn´amili se s n´astroji PT a OMNeT++ a jejich moˇznostmi na poli modelov´an´ı a simulace. C´ılem t´eto pr´ ace bylo vytvoˇrit simulaˇcn´ı modely v praxi pouˇziteln´ ych s´ıt´ı v tˇechto n´astroj´ıch a simulov´an´ım model˚ u pˇredv´est moˇznosti n´ astroj˚ u pro praktickou anal´ yzu poˇc´ıtaˇcov´ ych s´ıt´ı.
Vlastn´ı pˇ r´ınos Nejprve jsem se sezn´ amila s modelovac´ımi a simulaˇcn´ımi moˇznostmi n´astroj˚ u PT, OMNeT++ a framework INET proˇcten´ım dostupn´ ych manu´alu a vyzkouˇsen´ım ˇrady simulac´ı. Uk´azalo se, ˇze pro modelov´ an´ı s´ıt´ı vyuˇz´ıvaj´ıc´ıch Cisco zaˇr´ızen´ı je vhodnˇejˇs´ı PT od t´eˇze firmy. Modelov´ an´ı v OMNeT++ je n´aroˇcnˇejˇs´ı d´ıky nutnosti nauˇcit se programovac´ı jazyk NED a C++ a pˇredevˇs´ım d´ıky nedostateˇcn´ ym informac´ım k framework INET. Na z´ akladˇe n´ avrhov´ ych vzor˚ u pro smˇerov´an´ı firmy Cisco jsem vytvoˇrila simulaˇcn´ı modely v n´ astroji PT. Abych mohla vytvoˇrit stejn´e modely i pro n´astroj OMNeT++, bylo nejdˇr´ıve nutn´e naimplementovat moduly, kter´e se nenach´azely v knihovnˇe OMNeT++ ani v framework INET. Jednalo se protokol RIP a redistribuci mezi protokolem OSPF a protokolem RIP. Po peˇcliv´em nastudov´ an´ı RFC 1058 jsem naimplementovala v jazyce C++ chov´ an´ı modulu RIPRouting, kter´ y zajiˇst’uje smˇerov´an´ı na z´akladˇe protokolu RIP. Podobnˇe jsem doimplementovala i redistribuci z protokolu OSPF do protokolu RIP. Pro modul jsem tak´e vytvoˇrila popis v jazyce NED. Pot´e, co jsem chybˇej´ıc´ı vlastnosti naimplementovala, vytvoˇrila jsem v jazyce NED simulaˇcn´ı modely tak´e pro n´astroj OMNeT++ a provedla jsem nastaven´ı vˇsech smˇerovaˇc˚ u v XML konfiguraˇcn´ıch souborech. Kdyˇz jsem mˇela pˇripraveny vˇsechny simulaˇcn´ı modely, definovala jsem si vlastnosti, kter´e budu simulovat. Nˇekter´e tˇr´ıdy z framework INET jsem doplnila o k´od, kter´ y umoˇzn ˇuje vypisovat trasy ICMP paketu. Vybrala jsem si simulaˇcn´ı model vyuˇz´ıvaj´ıc´ı smˇerovac´ı protokol RIP a provedla jsem simulace dostupnosti a stability v obou simulaˇcn´ıch n´astroj´ıch. Pro simulace v OMNeT++ jsou vytvoˇrila ˇradu simulaˇcn´ıch sc´en´aˇr˚ u v jazyce XML. V´ ysledky simulac´ı jsou zaznamen´ any v pˇr´ısluˇsn´e kapitole. Zhodnotila jsem v´ ysledky simulac´ı. Uk´azala jsem, ˇze pˇri zkoum´an´ı dostupnosti se mohou naskytnout jevy, se kter´ ymi jsme na poˇc´atku nepoˇc´ıtali (ACL). D´ale jsem uk´azala, ˇze nestabilita linky m´ a negativn´ı vliv na dostupnost linky a pozitivn´ı vliv na rychlost z´ısk´an´ı poˇc´ ateˇcn´ıch smˇerovac´ıch informac´ı. Pˇri tˇechto simulac´ıch se n´astroj PT uk´azal jako nevhodn´ y simulaˇcn´ı n´ astroj. Simulaci je totiˇz tˇreba pro kaˇzd´ y p´ad linky opakovat, tento postup dosahoval aˇz exponenci´ aln´ı sloˇzitosti. Naopak OMNeT++ obohacen´ y o mou implementaci dok´aˇze plnohodnotnˇe simulovat s´ıtˇe vyuˇz´ıvaj´ıc´ı smˇerovac´ı protokoly RIP a OSPF. M˚ uˇze tak pomoci pˇri praktick´e anal´ yze 53
s´ıt´ı a v pˇr´ıpadˇe nestabiln´ıch linek se m˚ uˇze st´at jednou z m´ala moˇznost´ı, jak s´ıt’ otestovat.
Dalˇ s´ı v´ yvoj Tato pr´ ace vznikla v r´ amci projektu ANSA [26], kter´ y se zamˇeˇruje na automatizovan´e metody verifikace s´ıt´ı zaloˇzen´e na konfiguraci s´ıt’ov´ ych zaˇr´ızen´ı a s´ıt’ov´e topologie. Tato pr´ace se m˚ uˇze v tomto smˇeru d´ ale rozv´ıjet a projektu nab´ıdnout dalˇs´ı funkce a moduly pro automatizovanou simulac´ı s´ıtˇe. V pˇr´ıpadˇe protokolu RIP by bylo moˇzn´e implementaci rozˇs´ıˇrit o autosumarizaci, kter´ a pro uv´ adˇen´e simulace nebyla potˇreba, a tak´e o Poison Reverse, kter´ y by se mohl volitelnˇe pouˇz´ıt m´ısto implementovan´eho Split Horizon. V r´amci t´eto pr´ace byl naimplementov´ an pouze protokol RIP verze jedna, d´ale by se implementace mohla rozˇs´ıˇrit o verzi dvˇe. Pro simulaci jako takovou by bylo vhodn´e napsat tˇr´ıdu, kter´a by dok´azala vypisovat informace, o tom, co se v s´ıti komu zas´ıl´a. Bylo by to vhodnˇejˇs´ı, neˇz z´asah do existuj´ıc´ıch tˇr´ıd z framework INET, kter´ y jsem kv˚ uli simulaˇcn´ım v´ ypis˚ um provedla j´a.
54
Literatura [1] Internetwork Design Guide: RIP and OSPF Redistribution [online]. [cit. 2009-02-13]. URL http://www.cisco.com/en/US/docs/internetworking/design/guide/nd2014.pdf [2] CCNA Exploration 4.0: Routing Protocols and Concepts [online]. 2007, Pˇr´ıstupn´ y pro studenty a vyuˇcuj´ıc´ı kurzu CCNA2 po pˇrihl´aˇsen´ı na. URL http://www.cisco.com/web/learning/netacad/index.html [3] Packet Tracer 5.0 Help. 2008, souˇc´ast instalace programu Packet Tracer 5.0. [4] Danko, M.: Modelov´ an´ı smˇerovac´ıch protokol˚ u OSPF v simul´ atoru OMNeT++. Bakal´ aˇrsk´ a pr´ ace, FIT VUT v Brnˇe, 2009. [5] Hedrick, C.: RFC 1058: Routing Information Protocol. 1988. URL http://tools.ietf.org/html/rfc1058 [6] Hedrick, C.: An Introduction to IGRP. 1991. URL http://www.cisco.com/en/US/tech/tk365/technologies_white_ paper09186a00800c8ae1.shtml [7] Lomnick´ y, M.; Vesel´ y, V.: Smˇerov´an´ı a smˇerovac´ı protokoly [online]. 2007, [cit. 2008-11-20]. URL http://netacad.fit.vutbr.cz/texty/ccna-moduly/ccna2-6.pdf [8] Malkin, G.: RFC 2453: RIP Version 2. 1998. URL http://tools.ietf.org/html/rfc2453 [9] Moy, J.: RFC 2328: OSPF Version 2. 1998. URL http://tools.ietf.org/html/rfc2328 [10] Oran, D.: RFC 1142: OSI IS-IS Intra-domain Routing Protocol. 1990. URL http://tools.ietf.org/html/rfc1142 [11] Peringer, P.: Modelov´ an´ı a simulace IMS, studijn´ı opora. 2006. [12] Ryˇsav´ y, O.: Network Modeling and Simulation [online]. 2008, [cit. 2008-11-20]. URL https://wis.fit.vutbr.cz/FIT/st/course-files-st.php/course/ISA-IT/ lectures/isa11-simulace.pdf [13] Scherfel, P.: Simulace chov´ an´ı s´ıtˇe na z´ akladˇe anal´yzy konfiguraˇcn´ıch soubor˚ u aktivn´ıch s´ıt’ov´ych zaˇr´ızen´ı. Bakal´aˇrsk´a pr´ace, FIT VUT v Brnˇe, 2009.
55
[14] Siv´ ak, V.: Model Cisco smˇerovaˇce v simulaˇcn´ım n´ astroji OMNeT++. Bakal´aˇrsk´a pr´ ace, FIT VUT v Brnˇe, 2009. [15] Suchomel, T.: Rozˇs´ıˇren´ı simul´ atoru OMNeT++ o filtrovac´ı pravidla ACL. Bakal´aˇrsk´ a pr´ ace, FIT VUT v Brnˇe, 2009. [16] Tlolka, M.: Simulace EIGRP protokolu v prostˇred´ı OMNeT++. Bakal´aˇrsk´a pr´ace, FIT VUT v Brnˇe, 2009. [17] Varga, A.: OMNeT++ Descrete Event Simulation System. User manual version 4.0. 2008. [18] WWW str´ anky: About GloMoSim. [cit. 2009-04-25]. URL http://pcl.cs.ucla.edu/projects/glomosim/ [19] WWW str´ anky: The CNET network simulator. [cit. 2009-04-25]. URL http://www.csse.uwa.edu.au/cnet/ [20] WWW str´ anky: Erlang Traffic and Queuing Software. [cit. 2009-04-25]. URL http://members.iinet.net.au/~clark/ [21] WWW str´ anky: GTNetS. [cit. 2009-04-25]. URL http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/ [22] WWW str´ anky: JiST - Java in Simulation Time / SWANS. [cit. 2009-04-25]. URL http://jist.ece.cornell.edu/ [23] WWW str´ anky: OMNeT++ Community Site. [cit. 2009-04-25]. URL http://www.omnetpp.org/ [24] WWW str´ anky: Packet Tracer. [cit. 2009-04-25]. URL http: //www.cisco.com/web/learning/netacad/course_catalog/PacketTracer.html [25] WWW str´ anky: Performance Prophet - A Performance Modeling and Prediction System for Cluster and Grid Computing. [cit. 2009-04-25]. URL http://www.dps.uibk.ac.at/projects/prophet/ [26] WWW str´ anky: Project ANSA, Brno University of Technology. [cit. 2009-05-10]. URL https://nes.fit.vutbr.cz/ansa/pmwiki.php [27] WWW str´ anky: Scalable Network Technologies: Creators of QualNet Simulator. [cit. 2009-04-25]. URL http://www.scalable-networks.com/ [28] WWW str´ anky: Tetcos software - NetSim. [cit. 2009-04-25]. URL http://www.tetcos.com/software.html [29] WWW str´ anky: UCLA Parsec Programming Language. [cit. 2009-04-25]. URL http://pcl.cs.ucla.edu/projects/parsec/
56
Pˇ r´ıloha A
Obsah DVD V n´asleduj´ıc´ı tabulce A.1 je uveden obsah pˇriloˇzen´eho DVD. doc\
Programov´ a dokumentace v form´atu HTML vygenerovan´a programem Doxygen.
INET\
Rozbalen´ a a pˇreloˇzen´a knihovna INET i s upraven´ ymi soubory, doimplementovan´ ymi knihovny a vlastn´ımi pˇr´ıklady simulac´ı. V tomto stavu se vyuˇz´ıvala pro tuto pr´aci.
instalation\
Instalaˇcn´ı soubory pro PT, OMNeT++ a INET.
models omnet\
Simulaˇcn´ı modely pro OMNeT++. Jsou tak´e vloˇzeny ve struktuˇre sloˇzky INET.
models PT\
Simulaˇcn´ı modely pro PT.
rip\
Tˇr´ıdy implementuj´ıc´ı protokol RIP a redistribuci. Jsou tak´e vloˇzeny ve struktuˇre sloˇzky INET.
tex\
Zdrojov´e soubory t´eto pr´ace psan´e v LATEX.
doc.chm
Programov´ a dokumentace v form´atu CHM vygenerovan´a programem Doxygen.
projekt.pdf
Elektronick´ a verze t´eto pr´ace v form´atu PDF.
readme.txt
Obsah DVD. Tabulka A.1: Obsah pˇriloˇzen´eho DVD.
57
Pˇ r´ıloha B
Instalaˇ cn´ı pˇ r´ıruˇ cka Tato instalaˇcn´ı pˇr´ıruˇcka by v´ am mˇela pomoci s instalac´ı simulaˇcn´ıch n´astroj˚ u, kter´e se vyuˇz´ıvali v r´ amci t´eto pr´ ace. Vˇsechny simulace byly prov´adˇeny pod operaˇcn´ım syst´emem Windows XP, proto jsou zde uvedeny jen instalaˇcn´ı postupy pouˇz´ıvan´e pod t´ımto operaˇcn´ım syst´emem.
B.1
Instalace programu PacketTracer 5.0
Packet Tracer je simulaˇcn´ı n´ astroj od firmy Cisco volnˇe dostupn´ y pro studenty a instruktory Cisco Networking Academy. Ti si mohou po pˇrihl´aˇsen´ı na str´ank´ach firmy Cisco st´ahnout instal´ator nejnovˇejˇs´ı verze Packet Tracer 5.0 [24] (d´ale jen PT). Na v´ ybˇer je instal´ator obsahuj´ıc´ı pouze samotn´ y program, verze s mnoha demo pˇr´ıklady, kter´a je vhodn´a pˇredevˇs´ım pro zaˇc´ınaj´ıc´ı uˇzivatele, ˇci verze obsahuj´ıc´ı instal´ator spoleˇcnˇe s tutori´aly. Je zde dostupn´ ych i nˇekolik dokument˚ u ve form´ atu .pdf, kter´e ale maj´ı pouze obecn´ y seznamovac´ı charakter a uˇzivatel se s v nich nedozv´ı ˇz´adnou podstatnou informaci, kter´a by mu zjednoduˇsila uˇz´ıv´an´ı programu. Nejnovˇejˇs´ı verze PT je distribuov´ana jak pro operaˇcn´ı syst´em Windows, tak pro Linux. Verze pro Linux jsou ke staˇzen´ı tˇri – konkr´etnˇe pro Ubuntu 7.10, Fedoru 7 a pro Linux s j´adrem verze 2.6 a vyˇsˇs´ı. Postup instalace: 1. Spust´ıme soubor PacketTracer5_setup.exe. 2. Pˇreˇcteme si licenˇcn´ı ujedn´ an´ı (EULA) a odsouhlas´ıme jej. 3. Vybereme c´ıl instalace. Implicitnˇe je nastaveno na sloˇzku C:\Program Files\ Packet Tracer 5.0. 4. N´ aslednˇe jsme dot´ az´ an´ı, jestli si pˇrejeme vytvoˇrit sloˇzku v Start menu. 5. Nakonec se n´ as program zept´a, jestli si pˇrejeme vytvoˇrit ikonu na ploˇse (desktop icon) nebo ikonu v panelu snadn´eho spuˇstˇen´ı (quick lunch icon). 6. N´ asleduje samotn´ a instalace.
58
B.2
Instalace n´ astroje OMNeT++
Instalaˇcn´ı soubor pro Windows nebo bal´ık pro syst´emy UNIX lze st´ahnout, ze str´anek OMNeT++ [23]. Pro Windows st´ahnˇete archiv omnetpp-4.0-src-windows.zip (161 MB) a rozbalte ho. Instalace obsahuje kromˇe knihovny OMNeT++ tak´e IDE a MinGW, kter´ y umoˇzn´ı instalaci pod OS Windows. Postup instalace: 1. Spust´ıme instalaˇcn´ı prostˇred´ı s bash shell mingwenv.cmd. 2. Provedeme kontrolu nastaven´ı pomoc´ı configure. 3. Pˇr´ıkazem make provedeme pˇreklad. 4. Zkontrolujeme funkˇcnost spuˇstˇen´ım vzorov´ ych uk´azek. Pˇrejdeme do sloˇzky s pˇr´ıklady pomoc´ı cd samples/dyna a spust´ıme je pˇr´ıkazem ./dyna. 5. IDE m˚ uˇzeme spustit z pˇr´ıkazov´e ˇr´adky pˇr´ıkazem omnetpp.
B.3
Instalace framework INET
Nejnovˇejˇs´ı verze framework INET m´a n´azev INETMANE 20080920. Pro jeho spr´avnou funkˇcnost je nutn´e m´ıt nainstalovan´ y OMNeT++ 4.0. Ze str´anek OMNeT++ st´ahnˇete soubor INETMANET-20080920.tbz2 a rozbalte jej. Import do IDE: 1. Otevˇreme IDE. 2. V menu vyberte poloˇzku File -> Import... 3. V oknˇe se nal´ez´ a stromov´ a struktura. V n´ı vyberte General -> Existing Projects into Workspace a stisknˇete tlaˇc´ıtko Next. 4. V n´ asleduj´ıc´ım oknˇe ponechte zatrˇzenou moˇznost Select Root Directory a pomoc´ı volby Browse... naleznˇete sloˇzku, do kter´e jste rozbalili INET. Zatrhnˇete INET project a stisknˇete tlaˇc´ıtko Finish. 5. INET je nyn´ı souˇc´ asti nov´eho projektu.
59
Pˇ r´ıloha C
Implementace RIPRouting V t´eto pˇr´ıloze uv´ ad´ıme kompletn´ı hlaviˇckov´ y soubor k tˇr´ıdˇe RIPRouting (bez vloˇzen´ ych knihoven). // Struktura pˇ redstavuje intern´ ı tabulku rozhran´ ı. struct RIPinterface { int intID; // Identifik´ ator rozhran´ ı. IPvXAddress addr; // IP adresa na rozhran´ ı. IPvXAddress mask; // Maska na rozhran´ ı. bool broadcast; // Umoˇ zˇ nuje broadcast? bool loopback; // Jde o loopback? bool passive; // M˚ uˇ zou se na rozhran´ ı zas´ ılat RIP zpr´ avy ? InterfaceEntry*entry; // Struktura popisuj´ ıc´ ı rozhran´ ı. }; // Struktura spojuje cestu ze smˇ erovac´ ı tabulky s ˇ casovaˇ cem protokolu RIP. struct RIPRouteTimer { IPRoute * route; // Cesta ze smˇ erovac´ ı tabulky. ˇ RIPTimer * timer; // Casovaˇ c pˇ riˇ razen´ y k cestˇ e. }; // Struktura zaznamen´ av´ a dvˇ e r˚ uzn´ e cesty do jedn´ e s´ ıtˇ e. struct RIPRouteTwins { IPRoute * route1; IPRoute * route2; }; // Struktura nese podstatn´ e informace o redistribuci. struct RIPRedistribution { char * protocol; // Redistribuovan´ y protokol (napˇ r. OSPF). int metric; // Metrika nov´ ych RIP cest. bool redistrinute; // Je zapnuta redistribuce? 60
}; class RIPRouting: public UDPAppBase, protected INotifiable { private: std::vectorrouteTimer; std::vector network; std::vector ripIft; std::vectorintDown; std::vector routeTwins; RIPTimer * triggerTimer; IRoutingTable *rt; IInterfaceTable *ift; NotificationBoard *nb; UDPControlInfo *udpCtrl; int localPort; int destPort; const char * hostname; RIPRedistribution redistr; // zpracovan´ ı RIP zpr´ av void processPacket(cMessage *msg); void processRequest(RIPPacket *msg); void processResponse(RIPPacket *msg); // odes´ ıl´ an´ ı a tvorba RIP zpr´ av void sendPacket(int command, IPAddress destAddr); RIPPacket* createPacket(int command, InterfaceEntry * entry); std::vector fillNetworks(InterfaceEntry * entry); // nacteni konfigurace, redistribuce, notifikace bool LoadConfigFromXML(const char * filename); std::vector getOSPFRoutes(); void receiveChangeNotification(int category, const cPolymorphic *details); // pomocn´ e metody void sendTrigger(); bool checkTwin(IPRoute * entryRT); RIPTimer * updateTimer(int type, RIPRouteTimer * entry); int getRouteRT (RIPTimer *timer); int getTimerRT (IPRoute *route); void insertIft(InterfaceEntry * entryIFT); protected: virtual virtual virtual public: virtual
int numInitStages() const {return 4;} void handleMessage(cMessage *msg); void initialize(int stage); ~RIPRouting();
}; 61
Pˇ r´ıloha D
Konfiguraˇ cn´ı soubory D.1
Konfiguraˇ cn´ı soubor pro OSPF model
Uveden´ y model je pouˇzit u simulaˇcn´ıho modelu, kter´ y vyuˇz´ıv´a smˇerovac´ı protokol OSPF a rozdˇelen´ı s´ıtˇe do ˇctyˇr OSPF oblast´ı. Uv´ad´ıme jen konfiguraci pro smˇerovaˇc R1. 130.10.8.1 <Mask>255.255.255.0 point-to-point 1 10 40 5 1 Null 0x00 130.10.62.1 <Mask>255.255.255.248 point-to-point 1 10 40 5 1 Null 0x00 130.10.63.1 <Mask>255.255.255.248 point-to-point 62
1 10 40 5 1 Null 0x00 130.10.63.0 <Wildcard>0.0.0.255 130.10.62.0 <Wildcard>0.0.0.255 130.10.8.0 <Wildcard>0.0.0.255
D.2
Konfiguraˇ cn´ı soubor pro RIP model
Uveden´ y model je pouˇzit u simulaˇcn´ıho modelu, kter´ y vyuˇz´ıv´a smˇerovac´ı protokol RIP. Uv´ad´ıme jen konfiguraci pro smˇerovaˇc R1. 130.10.8.1 63
<Mask>255.255.255.0 130.10.62.1 <Mask>255.255.255.0 130.10.63.1 <Mask>255.255.255.0 130.10.0.0
D.3
Konfiguraˇ cn´ı soubor pro redistribuˇ cn´ı model
Uveden´ y model je pouˇzit u simulaˇcn´ıho modelu, kter´ y vyuˇz´ıv´a smˇerovac´ı protokoly RIP a OSPF a vz´ ajemnou redistribuci cest. Uv´ad´ıme jen konfiguraci pro smˇerovaˇc R1. 130.10.8.1 <Mask>255.255.255.0 130.10.62.1 <Mask>255.255.255.0 broadcast 1 1 10 40 5 1 Null 0x00 130.10.63.1 <Mask>255.255.255.0 broadcast 1 64
1 10 40 5 1 Null 0x00 130.10.62.0 <Wildcard>0.0.0.255 130.10.63.0 <Wildcard>0.0.0.255 130.10.0.0 <Passive-interface>eth1 <Passive-interface>eth2 ospf <Metric>4
65