VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INFORMA ˇ
CN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
MODELY SM ˇ
EROVAC´ICH PROTOKOL ˚
U PRO S´I ˇ
TOV ´
Y
SIMUL ´
ATOR A ANAL ´
YZU CHOV ´
AN´I S´IT ˇ
E
BAKAL ´
A ˇ
RSK ´
A PR ´
ACE
BACHELOR’S THESIS
AUTOR PR ´
ACE
JAN ˇ
SAF ´
A ˇ
R
AUTHOR
VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INFORMA ˇ
CN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
MODELY SM ˇ
EROVAC´ICH PROTOKOL ˚
U PRO S´I ˇ
TOV ´
Y
SIMUL ´
ATOR A ANAL ´
YZU CHOV ´
AN´I S´IT ˇ
E
MODELS OF ROUTING PROTOCOLS FOR NETWORK SIMULATION AND ANALYZE
BAKAL ´
A ˇ
RSK ´
A PR ´
ACE
BACHELOR’S THESIS
AUTOR PR ´
ACE
JAN ˇ
SAF ´
A ˇ
R
AUTHOR
VEDOUC´I PR ´
ACE
Ing. JAROSLAV R ´
AB
SUPERVISOR
Abstrakt
Pr´ace se zab´yv´a zp˚usobem implementace smˇerovac´ıho protokolu RIP do simul´atoru s´ıtˇe ns-2
Kl´ıˇ
cov´
a slova
NS2, RIP, simulace, implementace smˇerovac´ıho protokolu
Abstract
Thesis describes the way of implementation of new routing protocol for network simulator ns-2
Keywords
NS2, RIP, simulation, routing protocol implementation
Citace
Jan ˇSaf´aˇr: Modely smˇerovac´ıch protokol˚u pro s´ıt’ov´y simul´ator a anal´yzu chov´an´ı s´ıtˇe, ba-kal´aˇrsk´a pr´ace, Brno, FIT VUT v Brnˇe, 2008
Modely smˇ
erovac´ıch protokol˚
u pro s´ıt’ov´
y simul´
ator
a anal´
yzu chov´
an´ı s´ıtˇ
e
Prohl´
aˇ
sen´ı
Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Jaro-slava R´aba
. . . . Jan ˇSaf´aˇr 9. kvˇetna 2008
c
Jan ˇSaf´aˇr, 2008.
Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇ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
1 Uvod´ 3
2 Smˇerovac´ı protokoly 4
2.1 Smˇerov´an´ı. . . 4
2.2 Distance vector protokoly . . . 5
2.2.1 RIP . . . 7
2.3 Protokoly stavu linky . . . 11
2.3.1 OSPF . . . 12
2.4 Path vector protokoly . . . 12
2.4.1 BGP . . . 12
2.5 Konfigurace na zaˇr´ızen´ıch Cisco . . . 13
2.5.1 Konfigurace bez z´avislosti na protokolu . . . 14
2.5.2 RIP . . . 15
3 Simul´ator s´ıtˇe ns-2 18 3.1 Z´akladn´ı prvky . . . 18
3.2 Smˇerovac´ı struktura . . . 19
3.3 Dostupn´e unicastov´e smˇerovac´ı protokoly . . . 21
3.4 Pˇr´ıklad skriptu . . . 21
3.5 Nedostatky v˚uˇci IPv4 . . . 23
4 N´avrh a implementace 24 4.1 Koncept rozˇs´ıˇren´ı . . . 24
4.2 Podp˚urn´e prvky a struktury . . . 24
4.2.1 IPv4 adresy . . . 25
4.2.2 Klasifik´ator . . . 25
4.2.3 Smˇerovac´ı modul . . . 26
4.2.4 Nov´y rtObject . . . 27
4.2.5 Pˇripojen´e s´ıtˇe . . . 28
4.2.6 Statick´e smˇerov´an´ı . . . 29
4.3 Smˇerovac´ı protokol RIP . . . 30
4.3.1 Nov´y typ paket˚u . . . 30
4.3.2 Hlavn´ı tˇr´ıda . . . 32
4.3.3 Seznam rozhran´ı . . . 33
4.3.4 Propojen´ı C++ a OTcl tˇr´ıd . . . 35
4.3.5 Chov´an´ı procesu . . . 35
4.4 Implementace uˇzivatelsk´eho rozhran´ı . . . 36
4.5 Debuggov´an´ı proces˚u . . . 38 4.6 Koneˇcn´e ´upravy. . . 39 5 Testy 40 5.1 N´avrh test˚u . . . 40 5.2 Test ˇc. 1 . . . 40 5.3 Test ˇc. 2 . . . 41 5.4 Test ˇc. 3 . . . 43 6 Z´avˇer 45
Kapitola 1
´
Uvod
Motivace
T´ematem t´eto pr´ace bylo zdokumentovat souˇcasn´e moˇznosti s´ıt’ov´eho simul´atoru ns-2 si-mulovat smˇerov´an´ı v IPv4 s´ıt´ıch. Tyto moˇznosti mˇeli b´yt rozˇs´ıˇreny o skuteˇcn´y smˇerovac´ı protokol RIP spoleˇcnˇe s uˇzivatelsk´ym rozhran´ım podobn´emu tomu na s´ıt’ov´ych prvc´ıch spoleˇcnosti Cisco. Spoleˇcnˇe s implementac´ı by tato pr´ace mˇela b´yt n´avodem pro dalˇs´ı rozˇsiˇrovan´ı s´ıt’ov´eho simul´atoru.
Na tuto pr´aci navazuje implementace pˇr´ıstupov´ych seznam˚u ˇreˇsen´ych v r´amci diplomov´e pr´ace Bc. Jiˇr´ım Mack˚u. Tato pr´ace spoleˇcnˇe s pˇr´ıstupov´ymi seznamy by mˇeli b´yt pouˇzity v r´amci projektu ANSA, Automated Network-wide Security Analysis, kde by mˇely slouˇzit jako souˇc´ast procedury anal´yzy bezpeˇcnosti s´ıtˇe.
Struktura dokumentu
Kapitola ‘Smˇerovac´ı protokoly’ slouˇz´ı jako pˇredstaven´ı r˚uzn´ych smˇerovac´ıch protokol˚u a jejich chov´an´ı. D˚uraz je kladen na distance vector protokoly a konkr´etnˇe na RIP, z d˚uvodu, ˇ
ze byl pˇredmˇetem implementace. D´ale je zde uveden zp˚usob konfigurace RIPu na Cisco zaˇr´ızen´ıch.
V kapitole ‘Simul´ator s´ıtˇe ns-2’ je pops´an simul´ator ns-2, jeho z´akladn´ı prvky, popis implementace smˇerov´an´ı a rozd´ıl v˚uˇci IPv4 prostˇred´ı.
‘N´avrh a implementace’ obsahuje definici vlastnost´ı, kter´e by mˇela implementace ob-sahovat. D´ale pak popisuje samotnou implementaci smˇerovac´ıho protokolu spoleˇcnˇe s jeho integrac´ı do st´avaj´ıc´ı struktury s´ıt’ov´eho simul´atoru ns-2.
Kapitola 2
Smˇ
erovac´ı protokoly
´ Uvod
Pˇred samotnou implementac´ı smˇerovac´ıho protokolu je nutn´e pochopit k ˇcemu vlastnˇe smˇerovac´ı protokoly slouˇz´ı a jak´ym zp˚usobem protokoly pracuj´ı. Stejnˇe tak je nutn´e pro-studovat jejich konfiguraci na Cisco zaˇr´ızen´ıch, jelikoˇz uˇzivatelsk´e rozhran´ı, kter´e se bude implementovat m´a b´yt podobn´e rozhran´ı na Cisco zaˇr´ızen´ı.
2.1
Smˇ
erov´
an´ı
Smˇerov´an´ı je proces v´ybˇeru cesty od zdroje k zadan´emu c´ıli skrz obecnou s´ıt’. Tento do-kument je ale konkr´etnˇe zamˇeˇren na s´ıtˇe poˇc´ıtaˇcov´e. V poˇc´ıtaˇcov´ych s´ıt´ıch se procesu smˇerov´an´ı ´uˇcastn´ı vˇsechny prvky a pˇred´avaj´ı si informace ve formˇe paket˚u. Prvky rozum´ıme smˇerovaˇce, pˇrep´ınaˇce, PC atd. Prvky vˇsak vˇetˇsinou nehledaj´ı celou cestu k c´ıli z d˚uvodu, ˇze m˚uˇze b´yt aˇz pˇr´ıliˇs sloˇzit´a, ale pouze se rozhodnout na z´akladˇe smˇerovac´ı tabulky, kter´emu dalˇs´ımu prvku paket pˇredaj´ı.
Tabulka 2.1: Pˇr´ıklad smˇerovac´ı tabulky Identifik´ator c´ıle Cena Dalˇs´ı uzel
10.0.0.0/8 1 192.168.3.6
10.3.0.0/16 2 192.168.2.1
Smˇerovac´ı tabulka je datov´a struktura jej´ıˇz z´aznamy obsahuj´ı identifik´ator (ip adresu) c´ıle, cenu cesty k dosaˇzen´ı tohoto c´ıle a dalˇs´ı uzel na cestˇe k jeho dosaˇzen´ı. Pˇri vyhled´av´an´ı ve smˇerovac´ı tabulce maj´ı pˇrednost z´aznamy s vˇetˇs´ım s´ıt’ov´ym prefixem, tzn. specifiˇctˇejˇs´ı z´aznamy. S´ıt’ov´y prefix je zkr´acen´y z´apis s´ıt’ov´e masky, pˇresnˇeji souˇcet jedniˇcek v n´ı. S´ıt’ov´a maska vymezuje, kter´a ˇc´ast z adresy je adresa s´ıtˇe a kter´a adresa prvku, pomoc´ı bitov´e operace AND. V tabulce 2.2 je vidˇet pˇr´ıklad pouˇzit´ı tˇechto pojm˚u. Zkr´acenˇe zapisujeme z´aznamy ve tvaru s´ıt’/prefix.
Pokud se pomoc´ı smˇerovac´ı tabulky z obr´azku2.1bude vyhled´avat dalˇs´ı skok pro paket, s c´ılovou adresou prvku 10.3.1.4, bude vybr´an z´aznam 10.3.0.0/16, i kdyˇz by mohl b´yt posl´an do s´ıtˇe 10.0.0.0/8, na z´akladˇe vyˇsˇs´ıho prefixu
Ot´azka je, na z´akladˇe ˇceho si kaˇzd´y prvek vytvoˇr´ı svoj´ı smˇerovac´ı tabulku? M˚uˇze b´yt samozˇrejmˇe vytvoˇrena ruˇcnˇe, u osobn´ıch poˇc´ıtaˇc˚u s jedn´ım s´ıt’ov´ym je to pomˇernˇe
jedno-Tabulka 2.2: Aplikace s´ıt’ov´e masky
IP adresa 00001100.00000010.00000101.00100101
S´ıt’ov´a maska 11111111.11111111.11111100.00000000
S´ıt’ 00001100.00000010.00000100.00000000
Prefix 22
duch´e, staˇc´ı definovat cestu k br´anˇe, na kterou maj´ı smˇerovat vˇsechny pakety, kter´e nejsou urˇcen´e pro pˇripojenou s´ıt’. U zaˇr´ızen´ı s v´ıce rozhran´ımi nen´ı situace tak snadn´a, protoˇze administr´ator mus´ı definovat cesty ke vˇsem s´ıt´ım do kter´ych chce m´ıt pˇr´ıstup. A pokud velikost smˇerovac´ı tabulky pˇres´ahne urˇcitou velikost, m˚uˇze se st´at jej´ı spr´ava n´aroˇcnou. To-muto zp˚usobu se ˇr´ık´a manu´aln´ı smˇerovan´ı, protoˇze m˚uˇze zmˇenit pouze lidsk´ym z´asahem. Je moˇzn´e se setkat i s pojmem statick´e smˇerov´an´ı.
V´ychodiskem pro prvky, kde by ruˇcn´ı definov´an´ı tabulky bylo pˇr´ıliˇs zdlouhav´e nebo nev´yhodn´e, leˇz´ı ve smˇerovac´ıch protokolech. Smˇerovac´ı protokoly slouˇz´ı k v´ymˇenˇe smˇerovac´ıch informac´ı mezi uzly v s´ıt´ı a tedy k propagaci cesty k c´ıl˚um. Jejich v´yhodou oproti manu´aln´ımu smˇerov´an´ı je, ˇze mohou aktivnˇe reagovat na zmˇeny v s´ıt´ı a mˇenit smˇerovac´ı tabulku na z´akladˇe tˇechto zmˇen, napˇr´ıklad v´ypadek prvku nebo linky. Z toho d˚uvodu se smˇerov´an´ı pomoc´ı smˇerovac´ıch protokol˚u naz´yv´a dynamick´e.
Smˇerovac´ı protokoly v prostˇred´ı internetu se daj´ı rozdˇelit, na z´akladˇe parametr˚u, do r˚uzn´ych skupin. Nejˇcastˇeji se rozdˇeluj´ı podle m´ısta pouˇzit´ı a to do 2 skupin. EGP, exterior gateway protocol nebo-li vnˇejˇs´ı smˇerovac´ı protokol, slouˇz´ı ke smˇerovan´ı mezi autonomn´ımi syst´emy, zkr´acenˇe AS. AS je ˇc´ast s´ıtˇe s jednotnou smˇerovac´ı politikou v˚uˇci zbytku internetu, kter´y je vlastnˇe s´ıt´ı autonomn´ıch syst´em˚u. Typicky tuto politiku ˇr´ıd´ı nˇejak´a organizace, napˇr´ıklad poskytovatel internetu, ISP.
Druhou skupinou jsou IGP, interior gateway protocol nebo-li vnitˇrn´ı smˇerovac´ı protokol, kter´y se pouˇz´ıv´a pro smˇerov´an´ı uvnitˇr autonomn´ıho syst´emu.
Tak´e se daj´ı rozdˇelit podle zp˚usobu jak´ym jednotliv´e uzly vymˇeˇnuj´ı smˇerovac´ı informace.
2.2
Distance vector protokoly
Distance vektor protokoly vyuˇz´ıvaj´ı Bellman-Ford˚uv algoritmus pro v´ypoˇcet smˇerovac´ı ta-bulky. Protokoly pracuj´ı na jednoduch´em principu, prvek zn´a nejprve pouze pˇripojen´e s´ıtˇe a cenu cesty k nim. Tyto informace periodicky, po urˇcit´em definovan´em intervalu, rozes´ıl´a sv´ym soused˚um, na kter´ych tak´e bˇeˇz´ı instance tohoto protokolu. Prvky si uchov´avaj´ı in-formaci o nejlepˇs´ı cestˇe k dan´emu c´ıli nebo cenu ke vˇsem c´ıl˚um skrz vˇsechny sv´e sousedy, oba pˇr´ıstupy jsou moˇzn´e. Prvku, kter´emu dojde zpr´ava od procesu na jin´em prvku si zak-tualizuje informace, kter´e m´a ve sv´e datab´azi s´ıt´ı, kter´e se dov´ıd´a prostˇrednictv´ım dan´eho souseda. Pokud si uchov´av´a pouze nejlepˇs´ı cestu, zkontroluje zda cesta ve zpr´avˇe m´a lepˇs´ı, menˇs´ı, metriku. Takto nauˇcen´e informace propaguje d´al, ale pouze nejlepˇs´ı variantu pro dan´y c´ıl. Smˇerovac´ı tabulka obsahuje pouze nejlepˇs´ı varianty.
Kv˚uli takov´emu zp˚usobu uˇcen´ı s´ıt´ı, naz´yv´ame tento typ smˇerov´an´ı jako ’smˇerov´an´ı pomoc´ı zvˇesti’ (routing by rumor), protoˇze uzel d˚uvˇeˇruje informac´ım, kter´e zaslechl od sv´eho souseda. Bohuˇzel to vede k probl´emu poˇc´ıt´an´ı do nekoneˇcna (count-to-infinity problem).
Obr´azek 2.1: Poˇc´ıt´an´ı do nekoneˇcna Poˇc´ıt´an´ı do nekoneˇcna
Probl´em poˇc´ıt´an´ı do nekoneˇcna bude vysvˇetlen pomoc´ı pˇr´ıkladu, v kter´em pouˇzijeme to-pologii z obr´azku2.1.
Cestu k D, popˇr´ıpadˇe do s´ıtˇe mezi C a D, zn´a z poˇc´atku pouze C. Ta propaguje tuto informaci ke sv´ym soused˚um A a B. Pˇredpokl´adejme, ˇze zv´yˇsen´ı ceny za pˇrechod pˇres jednu linku je 1. A a B tedy v´ı, ˇze cesta k D je pˇres C s cenou 2. Tuto informaci d´ale propaguj´ı. V´ysledn´a tabulka informac´ı pro uzel C je vidˇet v tabulce 2.2. Co se ale stane pˇr´ı v´ypadku linky mezi C a D? Uzel C si smaˇze informace o cest´ach skrz D. Od uzlu A nebo B se dozv´ı, ˇ
ze nejlepˇs´ı cena do D je 2 skrz C, protoˇze oni se nemˇeli jak dozvˇedˇet, ˇze linka mezi C a D je nefunkˇcn´ı. C si aktualizuje smˇerovac´ı tabulku, ˇze D je k dispozici skrz A, popˇr´ıpadˇe B, a tuto metriku, 3 (2 + 1 za cenu linky), odes´ıl´a d´al. A a B si pot´e aktualizuj´ı z´aznamy o D skrz A, ta stoupne ze 2 na 4 (3 + 1 za cenu linky), C dostane zase tuto informace zv´yˇs´ı cenu na 5 a propaguje d´al aˇz do nekoneˇcna. Pakety urˇcen´e pro D mezit´ım koluj´ı mezi tˇemito 3 uzly a zbyteˇcnˇe vytˇeˇzuj´ı zdroje.
A B D
skrz A 1 2 2
srkz B 2 1 2
srkz D 3 3 1
Z d˚uvodu, ˇze se s t´ımto probl´emem setk´avali distance vector protokoly jiˇz od sv´eho vzniku, a toto chov´an´ı bylo znaˇcnˇe neˇz´adouc´ı, vzniklo nˇekolik technik, kter´e se snaˇz´ı zabr´anit tomuto ˇskodliv´emu chov´an´ı.
Maxim´aln´ı metrika - maximum count
Pokud cena cesta k s´ıt´ı pˇres´ahne urˇcitou mez, je povaˇzov´ana za nedostupnou a pakety urˇcen´e pro n´ı se zahazuj´ı. V´ıce jak maxim´aln´ı metrika se nikdy nepropaguje.
Rozdˇelen´y horizont - split horizont
Technika, kter´a zabraˇnuje odes´ıl´an´ı informac´ı o cest´ach k s´ıt´ım zpˇet uzlu od kter´eho byli z´ıskan´y. Pokud se tedy vr´at´ıme k obr´azku 2.1, A a B nebudou informovat C o cestˇe k D, protoˇze tuto informaci z´ıskali od C.
Zneplatnˇen´ı zpˇetn´e cesty - poison reverse
Tato technika se pouˇz´ıv´a spoleˇcnˇe s technikou rozdˇelen´eho horizontu. Informace o s´ıt´ıch se znovu propaguj´ı zpˇet k prvku od kter´eho byly z´ısk´any, ale s metrikou, kter´a v dan´em protokolu znaˇc´ı nedostupnost.
Aktualizace nez´avisle na ˇcasovaˇci - triggered updates
Kdykoliv se prvku zmˇen´ı metrika do urˇcit´e s´ıtˇe, informuje okamˇzitˇe o t´eto zmˇenˇe sv´e sou-sedy, bez toho aby ˇcekal na dobu kdy m´a pos´ılat pravidelnou aktualizaci.
Dalˇs´ı ˇcasovaˇce - timers ˇ
Casovaˇc zneplatnˇen´ı cesty (invalid timer), vyprˇs´ı pokud s´ıt’, nebyla dlouho uvedena v ˇz´adn´e aktualizaci. Po vyprˇsen´ı se jej´ı metrika nastav´ı na hodnotu kter´a oznaˇcuje nekoneˇcno. Ale z´aznam z˚ust´av´a st´ale ve smˇerovac´ı tabulce. V pˇr´ıpadˇe ˇze cesta je zneplatnˇena, at’ uˇz ˇ
casovaˇcem nebo aktualizac´ı s nekoneˇcnou metrikou od prvku, od kter´eho jsme informaci o s´ıti z´ıskali, m˚uˇze b´yt aktivov´an ˇcasovaˇc typu holddown, bˇehem kter´eho nejsou pˇrij´ım´any ˇ
z´adn´e aktualizace t´ykaj´ıc´ıho se tohoto c´ıle od jin´ych zdroj˚u neˇz br´any (prvku, kter´y n´am informace o t´eto s´ıt´ı zas´ıl´a.
Jeˇstˇe se pouˇz´ıv´a ˇcasovaˇc expirace (flush timer), kdy je cesta ´uplnˇe odstranˇena ze smˇerovac´ı tabulky.
Pˇri pouˇzit´ı v´yˇse uveden´ych technik se stabilita smˇerovac´ıho protokolu znaˇcnˇe zvyˇsuje, ale i tak byli zdokumentov´any pˇr´ıpady, kdy tento probl´em m˚uˇze nastat.
2.2.1 RIP
RIP, routing information protocol, se pouˇz´ıv´a jako IGP. Komunikuje pomoc´ı UDP paket˚u na portu 520 Jako metriku vyuˇz´ıv´a poˇcet skok˚u, poˇcet uzlu, kter´e jsou mezi n´ım a c´ılovou s´ıt´ı. Maxim´aln´ı hodnota, kterou m˚uˇze metrika nab´ıt je 15, 16 je jiˇz povaˇzov´ano za nekoneˇcno. Pˇr´ımo pˇripojen´e s´ıtˇe maj´ı metriku 0. Aktualizace si mezi sebou uzly vymˇeˇnuj´ı periodicky kaˇzd´ych 30 sekund a pokud s´ıt’ nen´ı uveden v aktualizac´ıch v´ıce jak 180 vteˇrin, 6 kr´at aktualizaˇcn´ı ˇcas, je zneplatnˇena popˇr´ıpadˇe vyhozena ze smˇerovac´ı tabulky. Pouˇz´ıv´a vˇetˇsinu v´yˇse uveden´ych zp˚usob˚u k zabr´anˇen´ı poˇc´ıt´an´ı do nekoneˇcna.
RIP existuje ve dvou verz´ıch, verze 1 a 2, kter´e se mezi sebou liˇs´ı v nˇekolika bodech: • RIPv1 nepodporuje VLSM, RIPv2 ano
• RIPv1 nepodporuje autentizaci, RIPv2 ano
• RIPv1 pos´ıl´a aktualizace na adresu 255.255.255.255, RIPv2 na adresu 224.0.0.9 • RIPv1 nepodporuje znaˇcen´ı z´aznam˚u
Podpora VLSM, variable length subnetmask, tedy masek s r˚uznou d´elkou prefixu,
zna-men´a, ˇze v r´amci 1 tˇr´ıdn´ı s´ıtˇe mohou existovat prefixy r˚uzn´e d´elky. Podpora VLSM je v RIPv2 doc´ılena t´ım, ˇze v aktualizac´ıch jsou uvedeny i prefixy jednotliv´ych s´ıt´ı.
Tabulka 2.3: Paket RIPu verze 1
1 octet 1 octet 2 octet 2 octet 2 octet 4 octet 4 octet 4 octet 4 octet
command version – AFI – IP
address – – metric
Tabulka 2.4: Paket RIPu verze 2
1 octet 1 octet 2 octet 2 octet 2 octet 4 octet 4 octet 4 octet 4 octet
command version – AFI tag IP
address subnet mask next hop metric Form´at paket˚u
V tabulk´ach2.3 a2.4 je vidˇet struktura paket˚u obou verz´ı RIPu. Vysvˇetlen´ı jednotliv´ych pol´ı v paket˚u:
• Command - pˇr´ıkaz - urˇcuje typ paketu, zda se jedn´a o dotaz nebo odpovˇed’ • Version - verze - urˇcuje verzi procesu RIPu, kter´y dan´y paket poslal
• AFI - rodina adres - RIP ma podporu i jak pro Token Ring s´ıtˇe tak pro Ethernet s´ıtˇe • tag - pouze RIPv2, slouˇz´ı pro rozliˇsen´ı s´ıt´ı nauˇcen´ych skrz RIP nebo extern´ıch zdroj˚u • IP address - adresa s´ıtˇe
• subnet mask - maska pods´ıtˇe - pouze RIPv2, toto pole zajiˇst’uje podporu VLSM • next hop - adresa dalˇs´ıho skoku smˇerem k dan´e s´ıt´ı - pouze RIPv2
• metric - metrika - cena cesty k s´ıti
Kromˇe prvn´ıch 3 bunˇek, jsou n´asleduj´ıc´ı buˇnky vlastnˇe z´aznamem smˇerovac´ı tabulky. Tato ˇc´ast, od AFI pole vˇcetnˇe, se m˚uˇze aˇz 25 kr´at opakovat. Jeden paket tak m˚uˇze n´est informaci o v´ıce s´ıt´ıch. Hodnota AFI pro ethernetov´e s´ıtˇe je 0x2.
Pakety jsou v podstatˇe dvou typu, dotaz, hodnota v poli command je 1, a odpovˇed’, hod-nota 2. Pakety typu dotaz jsou pouˇz´ıv´any pro vyˇz´ad´an´ı cel´e smˇerovac´ı tabulky, popˇr´ıpadˇe konkretn´ı s´ıtˇe. Vys´ıl´a se vˇetˇsinou pokud se nˇekter´e ze s´ıt’ov´ych rozhran´ı prvku stalo aktivn´ı. Paket typu odpovˇed’ se pos´ıl´a na vyˇz´ad´an´ı, pomoc´ı paketu dotaz, ale jeho hlavn´ı pouˇzit´ı spoˇc´ıv´a v tom, ˇze je pravidelnˇe zas´ıl´an soused˚um s informacemi o s´ıt´ıch, kter´e uzel m´a ve smˇerovac´ı tabulce.
Pokud je aktivov´ana autentizace, m´ısto prvn´ıho z´aznamu s´ıtˇe jsou uvedeny autentizaˇcn´ı
Obr´azek 2.2: Pˇr´ıklad topologie
Zp˚usob vytv´aˇren´ı odpovˇedi
RIP implementuje nˇekolik technik, kter´e zabraˇnuj´ı poˇc´ıt´an´ı do nekoneˇcna. Ale jejich aktivaci komplikuje rozes´ıl´an´ı aktualizac´ı. Pokud by nebyly tyto techniky aktivov´any, mohly by se ze vˇsech rozhran´ı, ke vˇsem soused˚um pos´ılat stejn´e aktualizace. Pokud jsou ale aktivn´ı je nutn´e vytv´aˇret aktualizace pro kaˇzd´e rozhran´ı zvl´aˇst’ s ohledem na aktivovan´e techniky.
Dalˇs´ım probl´emem je semi-podpora VLSM v RIPv1, alespoˇn na smˇerovaˇc´ıch Cisco. Ta zp˚usobuje, ˇze je moˇzn´e odeslat informaci o s´ıt´ı na rozhran´ı leˇz´ıc´ı ve stejn´e tˇr´ıdn´ı s´ıt´ı a m´a stejn´y prefix jako propagovan´a s´ıt’.
Pr˚ubˇeh rozhodov´an´ı je zachycen n´ıˇze. • S´ıt’ podl´eh´a rozdˇelen´emu horizontu
– tuto s´ıt’ nepˇrid´avej
– pˇridej tuto s´ıt’, ale zmˇen metriku na nekoneˇcnou (pokud je zapnut´e otr´aven´ı cesty)
• S´ıt’ nepodl´eh´a rozdˇelen´emu horizontu
– S´ıt’ bude propagov´ana do s´ıtˇe spadaj´ıc´ı do r˚uzn´e tˇr´ıdn´ı s´ıtˇe ∗ pˇreved’ s´ıt’ na tˇr´ıdn´ı (u RIPv2 se muˇze, ale nemus´ı pˇrev´adˇet) ∗ pˇridej s´ıt’ do aktualizace
– S´ıt’ bude propagov´ana do s´ıtˇe spadaj´ıc´ı do stejn´e tˇr´ıdn´ı s´ıtˇe
∗ S´ıt’ m´a stejn´y prefix, jako s´ıt’ do kter´e se bude pos´ılat aktualizace · pˇridej s´ıt’ do aktualizace
∗ S´ıt’ m´a r˚uzn´y prefix neˇz s´ıt’ do kter´e se bude pos´ılat aktualizace · RIPv1 - nepˇrid´avej s´ıt’ do aktualizace
· RIPv2 - pˇridej s´ıt’ do aktualizace
Pˇr´ıklad
Jednotliv´a pravidla si bl´ıˇz vysvˇetl´ıme na obr´azku 2.2 s pˇr´ıkladem topologie. Smˇerovaˇc ve stˇredu chce zaslat pravidelnou aktualizace do vˇsech pˇripojen´ych s´ıt´ı. Rozebereme vytvoˇren´ı aktualizace pro horn´ı smˇerovaˇc.
Horn´ı smˇerovaˇc leˇz´ı na s´ıt´ı 10.2.0.0/24.
• 10.1.0.0/24 - Bude v aktualizaci, je ve stejn´e tˇr´ıdn´ı s´ıti, ale m´a stejn´y prefix jako s´ıt’ na kterou je zas´ıl´ana aktualizace
• 10.2.0.0/24 - Nebude v aktualizaci nebo bude, ale s nekoneˇcnou metrikou, protoˇze
podl´eh´a rozdˇelen´emu horizontu
• 10.3.0.0/16 - Nebude v aktualizaci, sice je ve stejn´e tˇr´ıdn´ı s´ıti, ale m´a rozd´ıln´y prefix • 192.168.2.128/27 - Bude v aktualizaci, ale bude pˇrevedena na s´ıt’ 192.168.2.0/24 U takto vytvoˇren´e odpovˇedi se uˇz pouze zv´yˇs´ı metrika u vˇsech z´aznam˚u a odpovˇed’ se odeˇsle.
Zp˚usob kontroly autentizace paket˚u
Po aktivac´ı autentizace na rozhran´ı smˇerovaˇc pˇrij´ım´a pouze takov´e smˇerovac´ı informace, kter´e se prok´aˇz´ı platn´ym heslem nebo hashem.
Autentizace nen´ı podporov´ana RIPem verze 1 coˇz m˚uˇze zp˚usobit nestabilitu v s´ıt´ı. RIPv1 prvn´ı z´aznam, ten kter´y obsahuje autentizaˇcn´ı ´udaje, ignoruje a zpracov´av´a dalˇs´ı z´aznamy.
Pokud je aktivn´ı RIP verze 2 bez aktivn´ı autentizace na rozhran´ı a pˇrijde paket s
autentizaˇcn´ım z´aznamem, je paket okamˇzitˇe zahozen. Ostatn´ı pakety, verze 1 a verze 2 bez autentizace, jsou pˇrijaty
Pˇri aktivovan´e autentizaci jsou veˇsker´e neautentizovan´e pakety zahozeny u ostatn´ıch je kontrolov´ana autentizaˇcn´ı hlaviˇcka dle nastaven´ı. Zda jsou hesla nebo vypoˇc´ıtan´e hashe totoˇzn´e.
Zp˚usob zpracov´an´ı odpovˇedi
Paket, kter´y projde autentizaˇcn´ı kontrolou, je d´ale zpracov´av´an. Jednotliv´e z´aznamy se porovn´avaj´ı s aktu´aln´ım stavem datab´aze a pokud jsou nutn´e zmˇeny je datab´aze aktuali-zov´ana. Z´aznamy jsou zpracov´av´any postupnˇe, jak jsou uvedeny v paketu. Jako dalˇs´ı skok je pouˇzita zdrojov´a adresa v ip hlaviˇcce paketu.
Kontrola s datab´azi prob´ıh´a n´asleduj´ıc´ım zp˚usobem: • Z´aznam je jiˇz ve smˇerovac´ı tabulce
– Stejn´a br´ana
∗ V paketu je jin´a metrika
· zmˇen metriku ve smˇerovac´ı tabulce, aby odpov´ıdala metrice v odpovˇedi · poˇsli aktualizaci soused˚um
∗ resetuj ˇcasovaˇc zneplatnˇen´ı ∗ pˇrejdi na dalˇs´ı z´aznam
– Nestejn´a br´ana
∗ Metrika v paketu je lepˇs´ı
· zmˇen informace ve smˇerovac´ı tabulce · resetuj ˇcasovaˇc zneplatnˇen´ı
· poˇsli aktualizaci soused˚um ∗ pˇrejdi na dalˇs´ı z´aznam
• Z´aznam nen´ı ve smˇerovac´ı tabulce – Metrika je nekoneˇcn´a
∗ pˇrejdi na dalˇs´ı z´aznam – Metrika nen´ı nekoneˇcn´a
∗ pˇridej novou s´ıt’ do smˇerovac´ı tabulky ∗ aktivuj ˇc´ıtaˇc zneplatnˇen´ı
∗ pˇrejdi na nov´y z´aznam Zp˚usob zpracov´an´ı dotazu
Pokud dotaz obsahuje pouze 1 z´aznam s hodnotou v poli AFI 0 a s nekoneˇcnou metrikou,
je zasl´ana zpˇet cel´a smˇerovac´ı tabulka. Tento zp˚usob dotazu je v praxi nejpouˇz´ıvanˇejˇs´ı. V pˇr´ıpadˇe, ˇze z´aznam˚u je v´ıc, zpracov´av´an´ı prob´ıh´a t´ım zp˚usobem, ˇze se vytvoˇr´ı od-povˇed’, kter´a obsahuje z´aznamy z dotazu. Pokud z´aznam z dotazu je ve smˇerovac´ı tabulce, tak je v odpovˇedi uveden s metrikou ze smˇerovac´ı tabulky. Pokud ve smˇerovac´ı tabulce nen´ı, je u nˇeho uveden´a nekoneˇcn´a metrika.
2.3
Protokoly stavu linky
Koncept protokol˚u stavu linky spoˇc´ıv´a v tom, ˇze si vˇsechny prvky v s´ıti vytvoˇr´ı stejn´y graf s´ıtˇe, z kter´eho si vypoˇc´ıtaj´ı poˇc´ıtaj´ı cestu ke vˇsem ostatn´ım prvk˚um/s´ıt´ım. Rozd´ıl mezi protokoly stavu linky a distance vektor protokoly, spoˇc´ıv´a v tom, ˇze distance vektor protokoly si vymˇeˇnuj´ı smˇerovac´ı tabulky. Protokoly stavu linky si vymˇeˇnuj´ı pouze informace potˇrebn´e k vytvoˇren´ı onoho grafu s´ıtˇe.
V´yhoda tˇechto protokol˚u je, ˇze jsou pouˇziteln´e i do vˇetˇs´ıch s´ıt´ıch, na rozd´ıl od distance vektor protokol˚u, kter´ym trv´a aˇz pˇr´ıliˇs dlouho neˇz cel´a s´ıt’ zkonverguje, ust´al´ı se do jed-notn´eho stavu. U vˇetˇs´ıch s´ıt´ıch m˚uˇze b´yt i velkou nev´yhodou omezen´ı maxim´aln´ıho poˇctu skok˚u u distance vektor protokol˚u, kdy s´ıt’ bude vˇetˇs´ı neˇz tento maxim´aln´ı poˇcet skok˚u.
Obecn´y protokol stavu linky
Obecn´y protokol stavu linky funguje na n´asleduj´ıc´ım principu:
• Prvek si nejprve zjist´ı pomoc´ı nˇejak´eho protokolu, kter´e prvky leˇz´ı na pˇr´ımo pˇripojen´ych s´ıt´ıch.
• Prvek rozes´ıl´a informace o pˇr´ımo pˇr´ıpojen´ych prvc´ıch do cel´e s´ıtˇe. • Prvek pˇrij´ım´a informace, kter´e pos´ılaj´ı ostatn´ı prvky.
• Aˇz cel´a s´ıt’ zkonverguje, vˇsechny uzly maj´ı stejn´y graf, vypoˇc´ıtaj´ı si prvky nejkratˇs´ı cestu ke vˇsem prvk˚um pomoc´ı Dijkstrova algoritmu. V´ysledky si um´ıst´ı do smˇerovac´ı tabulky
V pˇr´ıpadˇe nˇejak´e zmˇeny v s´ıt´ı, prvek, kter´y tuto zmˇenu zaznamen´a, si zmˇen´ı sv˚uj graf s´ıtˇe a rozeˇsle informaci o zmˇenˇe do cel´e s´ıtˇe. Prvky si pot´e pˇrepoˇc´ıtaj´ı svoji smˇerovac´ı tabulku.
2.3.1 OSPF
Open shortest path first protokol se pouˇz´ıv´a jako IGP. Protokol komunikuje na unicastov´ych IP adres´ach a multicastov´ych adres´ach 224.0.0.5 a 224.0.0.6, nevyuˇz´ıv´a vˇsak sluˇzeb TCP ani UDP, ale pˇr´ımo IP, skrz IP protokol 89. D´ıky tomu si mus´ı, ale zajistit zpracov´an´ı chyb a pˇrepos´ıl´an´ı nedoruˇcen´ych zpr´av.
Obecn´y protokol stavu linky rozˇsiˇruje o oblasti, s´ıt’ pot´e nen´ı ploch´a, tzn. vˇsechny uzly vid´ı vˇsechny ostatn´ı, ale je hierarchicky strukturovan´a. Graf s´ıtˇe se pot´e vytv´aˇr´ı pro kaˇzdou oblast zvl´aˇst’. Na hranic´ıch mezi oblastmi jsou takzvan´e hraniˇcn´ı prvky, kter´e zajiˇst’uj´ı v´ymˇenu informac´ı mezi oblastmi. Existuje nˇekolik speci´aln´ıch typu oblast´ı:
• P´ateˇrn´ı oblast - vˇsechny ostatn´ı oblasti mus´ı b´yt pˇripojeny k t´eto oblasti. Zajiˇst’uje v´ymˇenu smˇerovac´ıch informac´ıch mezi ostatn´ımi oblastmi.
• Pah´yln´ı oblast - Stub oblast - nedost´av´a smˇerovac´ı informace o s´ıt´ıch, kter´e se ospf pro-ces dozvˇedˇel od ostatn´ıch smˇerovac´ıch protokol˚u, ale smˇerovac´ı informace z ostatn´ıch ospf oblast´ı se do t´eto oblasti dostanou.
• Upln´y pah´yl - Totally stubby oblast - Pouze implicitn´ı cesta, smˇer kudy se budou pos´ılat vˇsechny pakety, pro kter´e nen´ı c´ılov´a s´ıt’ ve smˇerovac´ı tabulce, se m˚uˇze propa-govat do t´eto oblasti
• Ne tak pah´yln´ı oblast - Not-so-stubby oblast - Skrz oblast se mohou exportovat do
p´ateˇrn´ı oblasti extern´ı cesty, ale ne z p´ateˇrn´ı s´ıtˇe do n´ı.
Jako metrika se pouˇz´ıv´a souˇcet cen linek mezi zdrojem a c´ılem. Cena linky je rovna pod´ılu 100Mbps dˇeleno rychlost linky.
2.4
Path vector protokoly
Path vector protokoly, neboli protokoly vektoru cesty, se pouˇz´ıvaj´ı zejm´ena jako EGP pro-tokoly. Princip m´a nˇekter´e vlastnosti spoleˇcn´e s distance vektor protokoly. V autonomn´ım syst´emu existuje prvek, mluvˇc´ı, kter´y vytv´aˇr´ı a inzeruje smˇerovac´ı tabulku ostatn´ım prvk˚um. Rozd´ıl je v tom, ˇze pouze mluvˇc´ı maj´ı pr´avo mezi sebou komunikovat. U tohoto typu proto-kol˚u se nepouˇz´ıv´a metrika, nam´ısto n´ı je pouˇzit vektor cesty, vektor autonomn´ıch syst´emu, kter´y popisuje cestu k dan´e koncov´e s´ıti. Preferovanou cestou do s´ıtˇe se st´av´a ta, na n´ıˇz se mus´ı proj´ıt nejmenˇs´ım mnoˇzstv´ı autonomn´ıch syst´em˚u.
2.4.1 BGP
BGP, border gateway protokol, se pouˇz´ıv´a jako smˇerovac´ı protokol v internetu, mezi ISP. Komunikuje na unicastov´ych adres´ach na portu 179 a vyuˇz´ıv´a sluˇzeb TCP. U tohoto pro-tokolu je v´ybˇer cesty k s´ıti, ˇr´ızen na b´az´ı politik, sp´ıˇse neˇz na b´azi metriky, nejkratˇs´ı cesty.
Vzhledem k tomu, ˇze se dan´e smˇerovac´ı politiky aplikuj´ı v kaˇzd´em autonomn´ım syst´emu, m˚uˇze b´yt v´ysledn´a cesta pomˇernˇe vzd´alen´a cestˇe nejkratˇs´ı.
BGP je pomˇernˇe robustn´ı protokol a ne kaˇzd´y prvek ho bude schopn´y provozovat, i kdyˇz tak´e z´aleˇz´ı na velikost´ı smˇerovac´ı tabulky. Pro pˇredstavu, smˇerovac´ı tabulka internetu m´a pˇres 245,000 z´aznam˚u. U velk´ych provozovatel˚u internetu toto ˇc´ıslo m˚uˇze stoupnout i o 50%, kv˚uli smˇerov´an´ı ve vnitˇrn´ı s´ıt´ı a mezi z´akazn´ıky.
2.5
Konfigurace na zaˇ
r´ızen´ıch Cisco
Konfigurace na zaˇr´ızen´ıch Cisco se prov´ad´ı pˇres konzoly, d´a se pouˇz´ıt ´ı webov´e rozhran´ı, ale konfigurace pˇres pˇr´ıkazov´y ˇr´adek je st´ale nejpouˇz´ıvanˇejˇs´ı. Na poˇc´ıtaˇci, z kter´eho se bude prov´adˇet konfigurace s´ıt’ov´eho prvku mus´ı bˇeˇzet program, kter´y um´ı emulovat VT100 ter-min´al. Napˇr´ıklad HyperTerminal nebo PuTty. Program mus´ı nastavit parametry s´eriov´eho portu, skrz kter´y se bude komunikovat se zaˇr´ızen´ım na n´asleduj´ıc´ı hodnoty:
• Rychlost v baudech - 9600 • Poˇcet datov´ych bit˚u - 8 • Parita - ˇz´adn´a
• Poˇcet stop bit˚u - 1 • Kontrola toku - ˇz´adn´a
Propojen´ı prvku se pot´e provede kabelem s koncovkou RJ-45 na stranˇe prvku a DB-9
na stranˇe PC.
Uˇzivatel se pot´e octne v uˇzivatelsk´em modu, indikovan´ym znakem ‘>’ za n´azvem prvku. V tomto modu m´a uˇzivatel k dispozici pouze omezenou sadu pˇr´ıkaz˚u k z´akladn´ı diagnostice smˇerovaˇce.
Router>
Pro vstup do privilegovan´eho reˇzimu, je nutn´e zadat pˇr´ıkaz enable. Po zad´an´ı m˚uˇze b´yt uˇzivatel vyzv´an k zadan´ı hesla. Oproti uˇzivatelsk´emu m´odu je k dispozici detailnˇejˇs´ı diagnostika smˇerovaˇce a moˇznost pˇrej´ıt do konfiguraˇcn´ıho reˇzimu, odkud se d´a mˇenit kon-figurace prvku. Privilegovan´y m´od m´a indikaˇcn´ı znak ‘#’. Pro opuˇstˇen´ı privilegovan´eho reˇzimu m˚uˇzeme pouˇz´ıt pˇr´ıkaz disable
Router> enable Password: Router#
Router# disable Router>
Do konfiguraˇcn´ıho reˇzimu, pˇrejdeme pˇr´ıkazem configure terminal. Pˇr´ıtomnost v kon-figuraˇcn´ım reˇzimu lze t´ım, ˇze mezi n´azvem prvku a znakem ‘#’ je pˇr´ıtomna sekvence znaku (config). Z glob´aln´ıho konfiguraˇcn´ıho reˇzimu se pot´e pˇrech´az´ı do jednotliv´ych spe-cifick´ych m´od˚u, napˇr do konfigurace smˇerovac´ıch protokol˚u, rozhran´ı atd. Pro opuˇstˇen´ı konfiguraˇcn´ıho reˇzimu slouˇz´ı 2 pˇr´ıkazy exit a end. Exit vr´at´ı uˇzivatele o jednu ´uroveˇn zpˇet, napˇr. ze konfigurace smˇerovac´ıho protokolu zpˇet do glob´aln´ıho konfiguraˇcn´ıho reˇzimu nebo z glob´aln´ıho konfiguraˇcn´ıho reˇzimu zpˇet do privilegovan´eho. Pˇr´ıkaz end vr´at´ı uˇzivatele okamˇzitˇe zpˇet do reˇzimu privilegovan´eho
Router# configure terminal Router(config)#
Router(config)# exit Router#
Konfiguraˇcn´ı moˇznosti Cisco zaˇr´ızen´ı jsou velice rozs´ahl´e a podrobn´y popis vˇsech by byl aˇz pˇr´ıliˇs rozs´ahl´y. N´asleduj´ıc´ı ˇc´ast se proto bude vˇenovat pouze konfiguraci smˇerovac´ıho protokolu RIP a nˇekolika moˇznostem, kter´e jsou pouˇziteln´e vˇsemi smˇerovac´ımi protokoly nebo maj´ı v´yznamn´y vliv na smˇerov´an´ı.
2.5.1 Konfigurace bez z´avislosti na protokolu
Statick´e smˇerov´an´ı
Cisco zaˇr´ızen´ı nab´ızej´ı podporu pro manu´aln´ı specifikov´an´ı smˇerovac´ı tabulky. Konfigurace statick´ych cest se prov´ad´ı pˇr´ıkazem n´asleduj´ıc´ım zp˚usobem¨
ip route network net_mask { next_hop_address | interface } [distance] [tag] [permament]
Bˇeˇznˇe se vˇsak posledn´ı 2 voliteln´e parametry nepouˇz´ıvaj´ı. Parametr distance oznaˇcuje administrativn´ı vzd´alenost. Ta jako moc je dan´y zdroj smˇerovac´ıch informac´ı preferov´an.
ˇ
C´ım niˇzˇs´ı vzd´alenost t´ım je zdroj kvalitnˇejˇs´ı. Kaˇzd´y smˇerovac´ı protokol m´a pˇriˇrazenou admi-nistrativn´ı vzd´alenost, kterou je vˇsak moˇzn´e mˇenit. Implicitn´ı nastaven´ı administrativn´ıch vzd´alenost´ı nˇekter´ych protokol˚u je v tabulce 2.5. Maxim´aln´ı hodnota je 255.
Tabulka 2.5: Administrativn´ı vzd´alenosti protokol˚u
Protokol Implicitn´ı adm. vzd´alenost
Pˇripojen´e s´ıtˇe 0 Statick´e cesty 1 BGP 20 OSPF 110 RIP 120 Pˇr´ıklad: Router(config)# ip route 192.168.5.0 255.255.255.0 10.3.4.2 150
Moˇznost specifikovat administrativn´ı vzd´alenost (distance) se vyuˇz´ıv´a hlavnˇe pˇri pouˇz´ıt´ı z´aloˇzn´ıch linek, kdy se vytvoˇr´ı statick´a cesta do urˇcit´e s´ıtˇe s vyˇsˇs´ı vzd´alenost´ı neˇz je pouˇz´ıvan´y dynamick´y smˇerovac´ı protokol. Pokud se d˚usledkem nedostupnosti hlavn´ı linky, smaˇze cesta do s´ıtˇe ze smˇerovac´ı tabulky, je pouˇzita ta s vyˇsˇs´ı vzd´alenosti skrz z´aloˇzn´ı linku. Existuje speci´aln´ı s´ıt’ 0.0.0.0 s prefixem 0, na kterou, pokud je uvedena ve smˇerovac´ı tabulce, se odes´ılaj´ı veˇsker´e pakety jej´ıˇz c´ılov´a s´ıt’ nen´ı ve smˇerovac´ı tabulce.
Kl´ıˇcenky
Kl´ıˇcenky jsou struktury, kter´e jsou vyuˇz´ıv´any na uskladˇnov´an´ı hesel, pouˇz´ıvan´ych pˇri au-tentizaci smˇerovac´ıch informac´ı. Definice kl´ıˇcenky se prov´ad´ı v glob´aln´ım konfiguraˇcn´ım reˇzimu pˇr´ıkazem:
Router(config)# key chain keychain_name Router(config-keychain)#
Po definici kl´ıˇcenky je nutn´e vytvoˇrit jednotliv´e kl´ıˇce pomoc´ı identifik´atoru, ˇc´ısla. Kaˇzd´y kl´ıˇc ma vlastn´ı konfiguraˇcn´ı reˇzim.
Router(config-keychain)# key id Router(config-keychain-key)#
Definov´an´ım kl´ıˇce prvek pˇreˇsel do konfiguraˇcn´ıho reˇzimu kl´ıˇce, kde je moˇzn´e definovat jeho vlastnosti. Hodnotu pomoc´ı pˇr´ıkazu key-string string a ˇcasy platnosti pomoc´ı dvou
pˇr´ıkazu accept-lifetime a send-lifetime.
Ukazka konfigurace:
Router(config)# key chain RIPhesla Router(config-keychain)# key 1
Router(config-keychain-key)# key-string rip
Router(config-keychain-key)# accept-lifetime 12:00:00 Jan 25 2007 infinite
2.5.2 RIP
Konfigurace RIPu se prov´ad´ı v jednom z m´od˚u konfiguraˇcn´ıho reˇzimu Cisco zaˇr´ızen´ı. K pˇrechodu do tohoto m´odu je nutn´e zadat pˇr´ıkaz router rip.
Spuˇstˇen´ı procesu
Router(config)# router rip Router(config-router)#
Pro spuˇstˇen´ı RIP procesu, je nutn´e zadat s´ıtˇe, kter´e budou zahrnuty v aktualizac´ıch a z´aroveˇn do kter´ych se budou vys´ılat aktualizace. S´ıt’ se pˇrid´av´a pomoc´ı pˇr´ıkazu network x.x.x.x, kde x.x.x.x je adresa s´ıtˇe. Pokud je nutn´e odebrat nˇekterou ze s´ıt´ı, slouˇz´ı k tomu z negovan´y pˇr´ıkaz no network x.x.x.x. Pˇrid´an´ı vˇsech okoln´ıch s´ıt´ı z obr´azku2.2do procesu RIPu by vypadalo n´asledovnˇe:
Router(config-router)# network 10.1.0.0 Router(config-router)# network 10.2.0.0 Router(config-router)# network 10.3.0.0 Router(config-router)# network 192.168.2.0
Nastaven´ı verze
Po pˇrid´an´ı s´ıt´ı uˇz RIP proces pos´ıl´a aktualizace verze 1 do zadan´ych s´ıt´ı a pˇrij´ım´a aktuali-zace ve verzi 1 i 2. Pro zmˇenu glob´aln´ı verze je moˇzn´e zadat pˇr´ıkaz version ˇc´ıslo verze. Zmˇena verze ale mˇen´ı p˚uvodn´ı nastaven´ı a proces pˇrij´ım´a pouze zpr´avy zadan´e verze. K z´akladn´ımu nastaven´ı je moˇzn´e se vr´atit zadan´ım pˇr´ıkazu no version
Router(config-router)# version 2 Router(config-router)# no version
Verzi je moˇzn´e mˇenit i na jednotliv´ych rozhran´ıch, kde je k dispozici detailnˇejˇs´ı konfigu-race. Je moˇzn´e specificky nastavit, kter´e verze se maj´ı pˇrij´ımat i odes´ılat. Nejprve je vˇsak nutn´e pˇrej´ıt do konfiguraˇcn´ıho reˇzimu rozhran´ı. To se provede n´asleduj´ıc´ım zp˚usobem:
Router(config-router)# exit
Router(config)# interface FastEthernet 0/0 Router(config-if)#
Pˇr´ıkaz interface n´azev rozhran´ı ˇc´ıslo slotu/ˇc´ıslo portu zpˇr´ıstupnil konfiguraci 0. rozhran´ı FastEthernetu a kartˇe s poˇradov´ym ˇc´ıslem 0. Nyn´ı lze zadat pˇr´ıkazy pro zmˇenu vys´ılan´ych a pˇrij´ıman´ych verz´ı. K tomu slouˇz´ı pˇr´ıkazy ip rip send version ˇc´ıslo verze a ip rip receive version ˇc´ıslo verze, s t´ım ˇze mohou b´yt uvedeny obˇe verze oddˇelen´e mezerou. Obr´acen´e verze pˇr´ıkaz˚u vrac´ı zpˇet implicitn´ı nastaven´ı. Pˇr´ıklad demonstruje zp˚usob jak´ym by se zapsalo implicitn´ı nastaven´ı.
Router(config-if)# ip rip send version 1 Router(config-if)# ip rip receive version 1 2
Rozdˇelen´y horizont
Dalˇs´ı pomˇernˇe d˚uleˇzit´y pˇr´ıkaz, kter´y se konfiguruje v reˇzimu rozhran´ı je ip split-horizont, kter´y aktivuje rozdˇelen´y horizont, naopak pˇr´ıkaz no ip split-horizont ho deaktivuje. Zda je rozdˇelen´y horizont implicitnˇe aktivn´ı/neaktivn´ı je d´ano typem zapouzdˇren´ı na roz-hran´ı, pro s´ıtˇe typu Ethernet je aktivn´ı.
Router(config-if)# no ip split-horizont
Autentizace
Autentizace zajiˇst’uje, ˇze v r´amci s´ıtˇe bude prvek dost´avat smˇerovac´ı informace pouze od prvk˚u se kter´ymi sd´ıl´ı kl´ıˇc. Zabraˇnuje se tak pˇr´ıpadn´ym neautorizovan´ym zmˇen´am do smˇerovac´ıch tabulek prvk˚u, kter´e by mohly b´yt vyuˇzity pˇri nˇejak´em typu ´utoku.
Aby bylo moˇzn´e nakonfigurovat autentizaci pro RIP je nutn´e nejprve definovat kl´ıˇcenku a alespoˇn jeden kl´ıˇc. Zp˚usob vytvoˇren´ı byl jiˇz uveden. Po vytvoˇren´ı je nutn´e kl´ıˇcenku propojit s RIPem a rozhran´ım pomoci pˇr´ıkazu v konfiguraˇcn´ım m´odu rozhran´ı ip rip authentication key-chain keychain name.
RIP tak´e nab´ız´ı podporu v´ıce typ˚u autentizaci. Heslo je bud’ v paketech zas´ılan´e v textov´e podobˇe nebo je nam´ısto nˇeho pouˇzit hash, vytvoˇren´y ze zpr´avy a hesla, z d˚uvodu vˇetˇs´ı bezpeˇcnosti. Zp˚usob zabezpeˇcen´ı se konfiguruje pˇr´ıkazem ip rip authentication mode {text|mode}. Pokud nen´ı m´od autentizace specifikov´an, uvaˇzuje se implicitnˇe textov´e podoba hesla.
Router(config-if)# ip rip authentication key-chain RIPkeys Router(config-if)# ip rip authentication mode md5
Podpora pro autentizaci je pouze u paketu RIPv2. Proto pokud pˇrijde smˇerovac´ı paket verze 1 na rozhran´ı, kde je zapnut´a autentizace, je automaticky zahozen.
Pasivn´ı rozhran´ı
Je nutn´e ale zm´ınit jeˇstˇe nˇekolik pˇr´ıkaz˚u, kter´e se zad´avaj´ı v konfiguraˇcn´ım reˇzimu RIPu. Pokud na pˇripojen´e s´ıt´ı nen´ı ˇz´adn´y dalˇs´ı aktivn´ı prvek, kter´y by potˇreboval aktualizace smˇerovac´ıch informac´ı, lze vypnout zas´ıl´an´ı zpr´av na rozhran´ı pomoc´ı pˇr´ıkazu passive-interface n´azev rozhran´ı ˇc´ıslo slotu/ˇc´ıslo portu. Zpr´avy ale budou nad´ale pˇrij´ım´any. Pokud je m´ısto n´azvu rozhran´ı zad´ano kl´ıˇcov´e slovo default jsou vˇsechna rozhran´ı nastavena jako
pasivn´ı. Jednotliv´a rozhran´ı, kter´a chceme m´ıt aktivn´ı pot´e aktivujeme pomoc´ı obr´acen´eho pˇr´ıkazu no passive-interface n´azev rozhran´ı ˇc´ıslo slotu/ˇc´ıslo portu.
Router(config-router)# passive-interface FastEthernet 0/1
Automatick´a sumarizace
V kapitole o RIPu bylo zm´ınˇeno, ˇze RIPu pˇrev´ad´ı adresy s´ıt´ı na tˇr´ıdn´ı, pokud se pˇrekraˇcuje hranice mezi tˇr´ıdn´ımi s´ıtˇemi, a tak´e ˇze u RIPv2 lze tuto funkci vypnout. K tomu slouˇz´ı funkce no auto-summary. RIPv2 pot´e propaguje s´ıtˇe s nezmˇenˇen´ymi prefixy i pˇres tˇr´ıdn´ı hranice. Na verzi 1 tato funkce nem´a vliv, ta sumarizuje vˇzdy.
Router(config-router)# no auto-summary
ˇ
Casovaˇce
Posledn´ı d˚uleˇzit´a funkce se t´yk´a manipulace s ˇcasovaˇci. V p˚uvodn´ım nastaven´ı maj´ı ˇcasovaˇce tyto hodnoty:
• ˇcas aktualizac´ı - 30 sekund • ˇcas zneplatnˇen´ı - 180 sekund • ˇcas potlaˇcen´ı - 180 sekund • ˇcas vyplaven´ı - 240 sekund
Pˇr´ıkaz pro zmˇenu tˇechto hodnot je timers basic a z p v kde a, z, p, v jsou nov´e hodnoty jednotliv´ych ˇcas˚u. Pˇr´ıkazem no timers basic je obnoveno p˚uvodn´ı nastaven´ı. Podle doporuˇcen´ı by ˇcas zneplatnˇen´ı a potlaˇcen´ı mˇel b´yt alespoˇn 3x vˇetˇs´ı neˇz ˇcas mezi aktualizacemi a ˇcas vyplaven´ı by mˇel alespoˇn stejnˇe dlouh´y jako souˇcet ˇcas˚u aktualizaci a potlaˇcen´ı.
Router(config-router)# timers basic 20 120 120 160
Shrnut´ı
V kapitole byly pˇredstaveny jednotliv´e rodiny smˇerovac´ıch protokol˚u. D˚ukladnˇeji byl pˇredstaven smˇerovac´ı protokol RIP, protoˇze je pˇredmˇetem implementace, a zp˚usob jeho konfigurace na Cisco prvc´ıch.
Kapitola 3
Simul´
ator s´ıtˇ
e ns-2
´ Uvod
Implementovan´y smˇerovac´ı protokol by mˇel b´yt rozˇs´ıˇren´ım s´ıt’ov´eho simul´atoru. Je nutn´e se tedy sezn´amit s jeho strukturou, jak´ym zp˚usobem je ˇreˇseno smˇerov´an´ı, odes´ıl´an´ı paket˚u atd.
Pˇredstaven´ı simul´atoru
NS-2, network simulator, je diskr´etn´ı simul´ator zamˇeˇren´y na v´yzkum s´ıt´ı. NS by mˇel nab´ızet znaˇcnou podporu pro simulaci TCP, UDP, smˇerov´an´ı a multicastov´e protokoly a to jak pro klasick´e dr´atov´e i bezdr´atov´e s´ıtˇe. Jeho ned´ılnou souˇc´ast´ı je NAM, network animator, kter´y slouˇz´ı ke zobrazen´ı v´ysledk˚u simulace v grafick´em reˇzimu. Podporuje zmˇeny rozm´ıstˇen´ı prvk˚u, animov´an´ı jednotliv´ych paket˚u atd. D´ıky spojen´ı tˇechto dvou n´astroj˚u, se m˚uˇzeme obˇcas setkat s n´azvem NSNAM.
Simul´ator je naps´an ve dvou jazyc´ıch, OTcl, coˇz je Tcl rozˇs´ıˇren´e o objekty, a C++. C++ slouˇz´ı jako v´ypoˇcetn´ı ˇc´ast a OTcl jako uˇzivatelsk´e rozhran´ı. Vzhledem k tomu, ˇze oba jazyky jsou objektov´e existuj´ı zde 2 hierarchie objekt˚u, kter´e v nˇekter´ych m´ıstech koresponduj´ı mezi sebou.
Sc´en´aˇr simulace se vytv´aˇr´ı ve formˇe OTcl skriptu. Je moˇzn´e ovlivˇnovat dobu simulace, chovan´ı jednotliv´ych objekt˚u, stav linek atd.
3.1
Z´
akladn´ı prvky
NS poskytuje z´akladn´ı stavebn´ı kameny pro vytv´aˇren´ı topologii a to prvky, linky, kter´e je spojuj´ı a procesy, kter´e na nich bˇeˇz´ı.
Uzly
Uzel je z´akladn´ı stavebn´ı prvek topologie, m˚uˇze reprezentovat kaˇzd´y s´ıt’ov´y prvek. Pˇri vy-tvoˇren´ı je mu pˇridˇeleno jedineˇcn´e ID a adresa. Na uzly jsou nav´az´any dalˇs´ı komponenty, klasifik´atory a agenti.
Linky
Zajiˇst’uj´ı spojen´ı mezi jednotliv´ymi uzly. Skl´ad´a se z komponent poskl´adan´ych do ˇretˇezu, kde kaˇzd´a komponenta m´a jinou funkci, napˇr. fronta, zpoˇzdˇen´ı atd.
Obr´azek 3.1: Network animator Agenti
Agent reprezentuje procesy, kter´e bˇeˇz´ı na jednotliv´ych uzlech. Moˇzn´a jeˇstˇe obecnˇeji se d´a ˇr´ıct, ˇze se jedn´a o m´ısto kde vznikaj´ı, jsou zpracov´av´any a zanikaj´ı pakety. M˚uˇze zastupovat funkce r˚uzn´ych aplikac´ı, smˇerovac´ıch i transportn´ıch protokol˚u
Pakety
Zpr´avy, kter´e si mezi sebou vymˇeˇnuj´ı jednotliv´y agenti. Specifikum ns-2 je, ˇze paket obsa-huje hlaviˇcky vˇsech nadefinovan´ych protokol˚u. Agent, kter´emu takov´y paket pˇrijde muˇze si rovnou pˇreˇc´ıst svoji hlaviˇcku, a na jej´ım z´akladˇe zkoumat zda je to paket, kter´y pˇrij´ım´a. Agent tedy nemus´ı zkoumat bit po bitu dan´y paket.
Nev´yhodou tohoto pˇr´ıstupu je, ˇze pakety jsou velk´e a pˇri velk´ych simulac´ıch zp˚usobuj´ı velk´e vyt´ıˇzen´ı zdroj˚u. Hlaviˇcky se daj´ı, ale selektivnˇe vypnout a ponechat si pouze ty, kter´e pro konkretn´ı simulaci potˇrebujeme.
3.2
Smˇ
erovac´ı struktura
Smˇerovac´ı struktura v ns-2 se skl´ad´a z nˇekolika ˇc´ast´ı. Klasifik´ator
Klasifikuje pakety na z´akladˇe nejr˚uznˇejˇs´ıch informaci a pot´e pˇred´av´a, na z´akladˇe tˇechto informac´ı, pakety d´al. Lze si ho pˇredstavit jako demultiplexor.
Uzel obsahuje vˇetˇsinou minim´alnˇe 2, jeden kter´y klasifikuje na z´akladˇe adresy a pln´ı v podstatˇe funkci smˇerovac´ı tabulky, a druh´y, kter´y klasifikuje podle c´ılov´eho portu, pokud
Obr´azek 3.2: Smˇerovac´ı struktura ns-2
je paket urˇcen pro tento uzel. Krom tˇechto 2 m˚uˇze b´yt napˇr´ıklad pˇr´ıtomen klasifik´ator multicastov´ych paket˚u. Klasifik´atory pot´e tvoˇr´ı stromovou strukuru.
rtModule - smˇerovac´ı modul
Smˇerovac´ı modul ˇr´ıd´ı klasifik´ator, a to jak jeho operace, pˇrid´avan´ı a odeb´ır´an´ı cest, tak jeho vytv´aˇren´ı a instalaci do uzlu. Uzel m˚uˇze obsahovat v´ıce modul˚u, stejnˇe jako klasifik´atoru. Ty potom vytv´aˇrej´ı ˇretˇez, po kter´em se propaguj´ı informace ke vˇsem smˇerovac´ım modul˚um.
Smˇerovac´ı protokoly
Jedn´a se vlastnˇe o agenty, kteˇr´ı si vymˇeˇnuj´ı zpr´avy s ostatn´ımi instancemi protokolu. rtObject
D´av´a dohromady datab´aze smˇerovac´ıch protokol˚u a vytv´aˇr´ı z nich jedinou smˇerovac´ı ta-bulku. Upozorn´ı pot´e uzel, ˇze si m´a zmˇenit cestu k urˇcit´emu c´ıli. Uzel pot´e upozornˇen´ı poˇsle pot´e zpr´avu na ˇretˇez smˇerovac´ıch modul˚u a ty zmˇen´ı informace v klasifik´atoru.
RouteLogic
3.3
Dostupn´
e unicastov´
e smˇ
erovac´ı protokoly
Static
Vyuˇz´ıv´a Dijkstr˚uv algoritmus, cesty k jednotliv´ym uzl˚um se vypoˇc´ıtaj´ı pˇri spuˇstˇen´ı simulace a kaˇzd´y uzel si je pˇrid´a do klasifik´atoru.
Session
Pracuje na podobn´em principu jako Statick´e smˇerov´an´ı, ale s t´ım rozd´ılem, ˇze pˇri kaˇzd´e zmˇenˇe v topologii si uzly zmˇen´ı cesty k jednotliv´ym uzl˚um. ˇS´ıˇren´ı t´eto informace nen´ı nijak zpracov´ano, pˇredpokl´ad´a se, ˇze vˇsechny uzly zaznamenaj´ı jakoukoliv zmˇenu v topologii. DV
Forma distance vektor protokolu. Uzly si pravidelnˇe zas´ılaj´ı svoje smˇerovac´ı tabulky. Zmˇeny se v topologi´ı neˇs´ıˇr´ı okamˇzitˇe, jednotliv´e uzly si mus´ı tyto zmˇeny pˇreposlat. Protokol, ale zjednoduˇsuje pos´ıl´an´ı zpr´av mezi jednotliv´ymi subjekty. Existuje ‘glob´aln´ı’ datab´aze zpr´av, a uzly si mezi sebou pouze vymˇeˇnuj´ı informace o tom, kterou zpr´avu si m´aji vyzvednout.
3.4
Pˇ
r´ıklad skriptu
V pˇr´ıkladu je uvedena jednoduch´a kruhov´a topologie, se zapnut´ym distance vektor smˇerov´an´ım. Prvn´ı ˇr´adek vytvoˇr´ı novou instanci simul´atoru. Ve druh´em a tˇret´ım je urˇceno, kter´e v´ystupy ze simulace se budou ukl´adat a kam.
set ns [new Simulator] #vytvoreni simulatoru
set nf [open DV.nam w] #otevreni trace souboru pro NAM
$ns namtrace-all $nf
Jak jiˇz n´azev procedury napov´ıd´a, spouˇst´ı se na konci simulace a jej´ım ´ukolem je spustit NAM s novˇe z´ıskan´ymi v´ysledky.
proc finish {} { global ns nf $ns flush-trace close $nf
exec nam DV.nam & exit 0
}
N´asleduje vytvoˇren´ı uzl˚u, linek mezi nimi a agent˚u. Poˇrad´ı parametr˚u pˇri vytv´aˇren´ı linek je rychlost, zpoˇzdˇen´ı a typ fronty. Null agent pouze zahazuje veˇsker´e pakety, kter´e mu pˇrijdou.
#Vytvoreni uzlu
for {set i 0} {$i < 5} {incr i} { set n($i) [$ns node] }
#Vytvoreni linek $ns duplex-link $n(0) $n(1) 1Mb 10ms DropTail $ns duplex-link $n(1) $n(2) 1Mb 10ms DropTail $ns duplex-link $n(2) $n(3) 1Mb 10ms DropTail $ns duplex-link $n(3) $n(4) 1Mb 10ms DropTail $ns duplex-link $n(4) $n(0) 1Mb 10ms DropTail #Vytvoreni UDP agentu
for {set i 0} {$i < 5} {incr i} { set udp($i) [new Agent/UDP] $ns attach-agent $n($i) $udp($i) }
#Vytvoreni Null agentu
for {set i 0} {$i < 5} {incr i} { set null($i) [new Agent/Null] $ns attach-agent $n($i) $null($i) }
#Pripojeni aplikace k agentovi
set cbr(13) [new Application/Traffic/CBR] $cbr(13) set packetSize_ 500
$cbr(13) set interval_ 0.005 $cbr(13) attach-agent $udp(1) #Propojeni dvou agentu
$ns connect $udp(1) $null(3)
#Aktivace distance vektor smerovani pro vsechny uzly $ns rtproto DV
Posledn´ı blok pˇr´ıkaz˚u definuje chov´an´ı simulace. Kdy se maj´ı zaˇc´ıt pos´ılat data z jed-notlivych aplikaci, kdy maj´ı b´yt linky neaktivn´ı a kdy ma simulace skonˇcit atd. Nakonec se cel´a simulace pˇr´ıkazem run instance simul´atoru spust´ı.
#zacate behu aplikace
$ns at 0.5 "$cbr(13) start" $ns at 4.5 "$cbr(13) stop" #zmena stavu linky
$ns at 1.5 down $n(1) $n(2) $ns at 2.5 up $n(1) $n(2) #delka simulace $ns at 5.0 "finish" #spusteni simulace $ns run
3.5
Nedostatky v˚
uˇ
ci IPv4
Ns pˇr´ıliˇs nekoresponduje s IPv4 prostˇred´ım. N´asleduje v´yˇcet nedostatk˚u, kter´e m´a ns-2 bez proveden´ı jak´ychkoliv zmˇen:
• Pouze uzly maj´ı adresy, rozhran´ı jsou neadresovateln´a.
• Pakety vch´azej´ı do uzly pouze 1 vstupem, rozhran´ı lze rozliˇsit pouze v´ystupu. • Rozhran´ı na v´ystupu m´a formu pouh´e linky.
• Smˇerov´an´ı neprob´ıh´a nad s´ıtˇemi, ale na uzly. Ve smˇerovac´ı tabulce jsou uvedeny uzly a cesty k nim, nam´ısto s´ıt´ı. Toto tak´e plyne z toho ˇze pouze uzly mohou m´ıt adresu Shrnut´ı
V t´eto kapitole byl pˇredstaven simul´ator s´ıtˇe ns-2 a byli adresov´any jeho nedostatky v˚uˇci IPv4 prostˇred´ı, kter´e budou muset b´yt pˇred implementaci napraveny.
Kapitola 4
N´
avrh a implementace
´ Uvod
V t´eto kapitole jsou uvedeny poˇzadavky na aplikaci spoleˇcnˇe s n´avrhem moˇzn´e implemen-tace. D´ale je tu pops´an zp˚usob implementace jednotliv´ych vlastnost´ı.
4.1
Koncept rozˇ
s´ıˇ
ren´ı
N´avrh
Z´amˇerem t´eto pr´ace je rozˇs´ıˇren´ı st´avaj´ıc´ıch moˇznost´ı ns-2 a ne ´upln´a zmˇena ns-2 a proto by mˇela b´yt implementace koncipov´ana tak, aby ji bylo moˇzn´e selektivnˇe aktivovat ˇci de-aktivovat. A v pˇr´ıpadˇe, ˇze bude deaktivov´ana nijak neovlivˇnovala bˇeh simulace.
Implementace
Soubor: ns-lib.tcl, ns-route.tcl
Aby byla dodrˇzena podm´ınka rozˇs´ıˇren´ı, tedy ˇze implementace nebude ovlivˇnovat p˚uvodn´ı strukturu ns-2, byla zavedena promˇenn´a simul´atoru IPv4 . Na z´akladˇe jeho hodnoty se akti-vuje nov´a IPv4 struktura nebo z˚ustane p˚uvodn´ı. Aktivace nov´e struktury se prov´ad´ı vol´an´ım metody simul´atoru IPv4 s parametry ON. Metoda deaktivuje z´akladn´ı, Base, smˇerovac´ı mo-dul a aktivuje nov´y IPv4 modul. Pro zjiˇstˇen´ı zda je rozˇs´ıˇren´ı aktivov´ano slouˇz´ı metoda simu´altor IPv4?, kter´a vrac´ı hodnotu ON, pokud je rozˇs´ıˇren´ı aktivn´ı.
Pˇr´ıklad zad´an´ı do skriptu:
$ns IPv4 ON
Bylo nutn´e zas´ahnout do st´avaj´ıc´ıch k´od˚u ns-2 a zmˇenit chov´an´ı smˇerovac´ı logiky, Rou-teLogic, tak aby pˇri spuˇstˇen´ı IPv4 rozˇs´ıˇren´ı vytvoˇrila instance nov´ych rtObject˚u na vˇsech uzlech.
4.2
Podp˚
urn´
e prvky a struktury
Protoˇze ns-2 nem´a pro IPv4 prostˇred´ı dostateˇcnou podporu, bylo nutn´e implementovat nov´e prvky smˇerovac´ı struktury, kter´e jiˇz IPv4 podporuj´ı.
4.2.1 IPv4 adresy
N´avrh
Uzly by mˇeli b´yt adresovateln´e v´ıce adresami, ne pouze jednou jako tomu je v p˚uvodn´ı ns-2. Uzly by mˇeli m´ıt strukturu pro uchov´av´an´ı adres rozhran´ı a tak´e by mˇeli pˇrij´ımat pakety, kter´e jsou urˇceny pro tyto adresy. Stejnˇe tak by mˇeli podporovat pˇrij´ım´an´ı broadcastov´ych zpr´av.
Implementace
Soubor: ns-nodeIPv4.tcl
Adresy jednotliv´ych rozhran´ı jsou uloˇzeny v asociativn´ım poli, kde je jako kl´ıˇc pouˇz´ıt sou-sedn´ı uzel. Nev´yhodou tohoto pˇr´ıstupu je moˇznost m´ıt pouze jedno rozhran´ı k jak´emukoliv uzlu, ale vzhledem k uloˇzen´ı linek v samotn´em simul´atoru, pomoc´ı id poˇc´ateˇcn´ıho a kon-cov´eho uzlu, neumoˇzˇnuje ani samotn´a ns-2 podporu pro v´ıce rozhran´ı mezi uzly. V´yhodou je snadn´a orientace v link´ach a pˇri vytv´aˇren´ı skript˚u.
Po zad´ani adresy rozhran´ı je z´aznam pˇreveden na tvar adresa/maska a uloˇzen do asoci-ativn´ıho pole. Nav´ıc je pˇrid´ana informace o s´ıt´ı na kter´e rozhran´ı leˇz´ı, z d˚uvodu ˇze se tato informace ˇcasto vyuˇz´ıv´a. Odpad´a tak nutnost ji znovu poˇc´ıtat pˇri kaˇzd´em jej´ım pouˇzit´ı.
4.2.2 Klasifik´ator
N´avrh
Klasifik´ator s podporou IPv4 mus´ı, pokud mu pˇrijde paket, ze sv´e smˇerovac´ı tabulky vybrat s´ıt’, ve kter´e se nach´az´ı uzel, pro kter´y je paket urˇcen. Klasifik´ator mus´ı udrˇzovat cesty k jednotliv´ym s´ıt´ım, ne uzl˚um jako to je v implicitn´ım klasifik´atoru v ns-2. D´ale by mˇel vyhled´avat ve sv´e smˇerovac´ı tabulce od nejspecifiˇctˇejˇs´ıch z´aznamu, z´aznamu s nejdelˇs´ım prefixem.
Implicitn´ı klasifik´ator v ns-2 mˇel jeˇstˇe jeden nedostatek, pokud nenaˇsel c´ıl pro dan´y paket, volal proceduru no-route, kter´a zastavila simulaci a vypsala na standardn´ı v´ystup zpr´avu o tom, ˇze dan´a cesta neexistuje. Toto chov´an´ı ale nen´ı vhodn´e pro IPv4 s´ıtˇe a je nutn´e ho odstranit. Zaˇr´ızen´ı v re´aln´ych s´ıt´ıch by v tomto pˇr´ıpadˇe odesilateli zaslalo zpr´avu o tom, ˇze dan´a s´ıt’ nen´ı k dispozici.
Implementace
Soubory: classifier-ipv4.{h, cc}, classifier-port.{h, cc}
Klasifik´ator, kter´y smˇeruje na z´akladˇe IP adres do s´ıt´ı byl jiˇz implementov´an pˇri vytv´aˇren´ı modelu BGP pro tento simul´ator. Autory tohoto modelu a i klasifik´atoru jsou Rob Ballatyne a Tony Dongliang Feng. Klasifik´ator vˇsak nepodporuje rozes´ıl´an´ı paketu v´ıce c´ıl˚um nar´az, multicast a broadcast, ale tuto vlastnost nebude potˇreba implementovat. Klasifik´ator se ale choval podobnˇe jako implicitn´ı klasifik´ator v pˇr´ıpadˇe, ˇze pˇrijal paket jehoˇz c´ılovou adresu, nebo alespoˇn s´ıt’ do kter´e spad´a, nemˇel ve smˇerovac´ı tabulce. Tuto vlastnost bylo tˇreba zmˇenit.
Pokud do klasifik´atoru pˇrijde paket je na nˇej vol´ana metoda classify jej´ıˇz n´avratov´a hodnota urˇcuje na kter´y slot v klasifik´atoru se dan´y paket odeˇsle. Jak´ym zp˚usobem se hodnota tohoto slotu z´ısk´a je ˇcistˇe na autorovi klasifik´atoru.
Metoda classify je vol´ana z metody find, kter´a na z´akladˇe slotu vrac´ı objekt na kter´y se m´a paket poslat d´ale. Pokud vˇsak metoda classify vr´atila hodnotu, kter´a znaˇcila, ˇze ˇ
z´adn´y slot nebyl nalezen, byla vol´ana pr´avˇe ona zmiˇnovan´a funkce no-route. Tato vlastnost vˇsak neodpov´ıdala n´avrhu, proto byla zmˇenˇena metoda find zdˇedˇen´a z rodiˇcovsk´e tˇr´ıdy Classifier. A to u obou pouˇz´ıvan´ych klasifik´ator˚u, jak adres tak port˚u.
4.2.3 Smˇerovac´ı modul
N´avrh
Jak jiˇz bylo zm´ınˇeno, ´ulohou smˇerovac´ıho modulu je ˇr´ızen´ı klasifik´atoru. Mˇel by proto poskytovat rozhran´ı uzlu pro pˇrid´av´an´ı cest do jednotliv´ych s´ıt´ıch a z´aroveˇn ˇr´ıdit spr´avu klasifik´atoru.
Implementace
Soubory: rtmodule.{h,cc}
Vzheldem k tomu, ˇze klasifik´ator od Ballatyna a Fenga mˇel k sobˇe jiˇz vytvoˇren´y smˇerovac´ı modul, nebyl implementov´an nov´y modul, pouze byl pouˇzit´y, ten jiˇz naimplementovan´y. V dalˇs´ım textu vˇsak bude pops´an zp˚usob jeho intergrace.
Definice nov´eho smˇerovac´ıho modulu - rtmodule.h:
class IPv4RoutingModule : public RoutingModule { public:
IPv4RoutingModule() : RoutingModule() {}
virtual const char* module_name() const {return "IPv4";} virtual int command (int argc, const char* const * argv); protected:
IPv4Classifier *classifier_; };
Je zde definov´ano zaˇrazen´ı do hieararchie tˇr´ıd a rozhran´ı s OTcl, pomoc´ı funkce command, jej´ı podrobnˇejˇs´ı rozbor je d´ale v textu aˇz pozdˇeji. Protoˇze pouˇz´ıv´ame jinou tˇr´ıdu klasi-fik´atoru je nutn´e zde tuto skuteˇcnost uv´est. Vzhledem k tomu, ˇze je tato tˇr´ıda implemen-tov´ana v obou jazyc´ıch ns-2, je nutn´e tyto dvˇe prostˇred´ı propojit. V n´asleduj´ıc´ım bloku k´odu v souboru rtmodule.cc definujeme, ˇze pokud se v OTcl vytvoˇr´ı objekt tˇr´ıdy RtModule/IPv4 bude vytvoˇren odpov´ıdaj´ıc´ı objekt tˇr´ıdy IPv4RoutingModule, pomoc´ı vol´an´ı funkce create.
Propojen´ı OTcl/C++ - rtmodule.h:
static class IPv4RoutingModuleClass : public TclClass { public:
IPv4RoutingModuleClass() : TclClass("RtModule/IPv4") {} TclObject* create(int, const char*const*) {
return ( new IPv4RoutingModule ); }
} class_ipv4_module;
V t´emˇze souboru je jeˇstˇe potˇreba implementovat funkci command, nejsou nutn´e zvl´aˇstn´ı funkce, takˇze ji m˚uˇzeme implementovat podle vzoru BaseRoutingModule.
OTcl
Soubor: ns-rtModuleIPv4.tcl
Ostatn´ı souˇc´asti ns-2 vyuˇz´ıvaj´ı nˇekolik metod smˇerovac´ıho modulu skrz Otcl. Metodu register, kter´a definuje, kter´e klasifik´atory se maj´ı pˇridat do uzlu, pokud je dan´y mo-dul aktivn´ı. Uzly potˇrebuj´ı rozhran´ı pro pˇrid´av´an´ı a odeb´ır´an´ı cest z klasifik´atoru, toto rozhran´ı je zajiˇstˇeno metodami add-route a delete-route. V tˇechto metod´ach je pot´e jiˇz vol´ano rozhran´ı klasifik´atoru.
4.2.4 Nov´y rtObject
N´avrh
P˚uvodn´ı rtObject byl implementov´an ˇcistˇe v OTcl a skl´adal z nˇekolika asociativn´ıch pol´ı, kde jako kl´ıˇc byli pouˇzity jednotliv´e uzly. Toto ˇreˇsen´ı bylo moˇzn´e vzhledem k tomu, ˇze poˇcet uzl˚u byl pˇredem zn´am. Implementac´ı IPv4 prostˇred´ı a smˇerov´an´ı na b´azi s´ıt´ı se stalo toto ˇreˇsen´ı nepouˇziteln´ym. Musela by se udrˇzovat nˇejak´a centr´aln´ı datab´aze vˇsech pouˇzit´ych s´ıt´ı, ke kter´e by mˇeli pˇr´ıstup vˇsechny prvky.
Dalˇs´ı podstatnou vˇec´ı bylo, ˇze vˇsechny smˇerovac´ı protokoly museli m´ıt jednotnou struk-turu asociativn´ıch pol´ı v OTcl, ze kter´ych si rtObject bral informace cest´ach k r˚uzn´ym uzl˚um. Pokud si tedy smˇerovac´ı protokol udrˇzoval svoji smˇerovac´ı tabulku v C++, musel m´ıt nutnˇe duplicitn´ı v OTcl, kv˚uli rtObjectu.
Tak´e chybˇela moˇznost ovlivnit, ne kter´y port bude smˇerovac´ı protokol pˇripojen. V p˚uvodn´ı implementaci si smˇerovac´ı protokoly museli nejprve zjistit na kter´em portu sou-sedsk´eho uzlu bˇeˇz´ı instance tohoto protokolu, protoˇze bylo moˇzn´e, ˇze jednotliv´ı agenti smˇerovac´ıch protokol˚u byli na r˚uzn´ych portech.
Nov´y rtObject by mˇel poskytnout podporu pro smˇerov´an´ı na z´akladˇe s´ıt´ı, a tak´e od-stranit nutnost m´ıt pevnˇe specifikovanou smˇerovac´ı tabulku v OTcl pro smˇerovac´ı proto-koly. Jako vhodn´y model se zd´al b´yt model typu dotaz/odpovˇed, kdy smˇerovac´ı protokoly informuj´ı rtObject o zmˇen´ach ve sv´ych smˇerovac´ıch tabulk´ach. On si na z´akladˇe tˇechto upozornˇen´ı mˇen´ı vlastn´ı smˇerovac´ı tabulku a informuje uzel, aby si zmˇenil informace v kla-sifik´atoru. Pokud je nutn´e smazat cestu do nˇekter´e s´ıtˇe, mˇel by se zeptat ostatn´ıch protokol˚u zda nemaj´ı cestu do dan´e s´ıtˇe. Mˇel by tak´e umˇet pˇripojit smˇerovac´ı protokol na konkr´etn´ı port.
Z d˚uvodu podobnosti s v´ypisy z Cisco zaˇr´ızen´ı by bylo vhodn´e pˇridat tak´e moˇznost specifikovat identifik´ator smˇerovac´ıho protokolu, napˇr. C pro pˇripojen´e s´ıtˇe, R pro RIP atd. Implementace
Soubor: ns-rtObjectIPv4.tcl
Nov´y model rtObjectu je zaloˇzen na komunikaci formou dotaz/odpovˇed’ mezi rtObjectem a smˇerovac´ımi protokoly, kde odpovˇedi od smˇerovac´ıch protokol˚u nemus´ı b´yt vˇzdy vyˇz´adan´e. Smˇerovac´ı protokoly pomoc´ı odpovˇedi informuj´ı rtObject o zmˇen´ach sv´ych datab´az´ı. Vzhle-dem k tomu, ˇze rtObject nepracuje s pakety, ale pouze se smˇerovac´ımi informacemi, nebyl d˚uvod implementovat jeho ˇc´ast v C++, kter´a je ve vˇetˇsinˇe pˇr´ıpadu urˇcena pro zpracov´av´an´ı jednotliv´ych paket˚u.
S´ıtˇe jsou uloˇzeny v asociativn´ım poli kde jako kl´ıˇc slouˇz´ı s´ıt’/prefix. V dalˇs´ıch pol´ıch jsou uloˇzeny pot´e informace o dalˇs´ım skoku, preference protokolu a jeho metrika.
Metoda smˇerovac´ıho protokolu, kter´a se pouˇz´ıv´a jako dotaz na cestu k s´ıt´ı a kterou mus´ı implementovat kaˇzd´y smˇerovac´ı protokol, m´a tvar volan´ı Protocol notify-about-route s´ıt’ prefix. Jako odpovˇed’ smˇerovac´ıch protokol˚u rtObjectu se pouˇz´ıv´a stejnojmenn´a me-toda, ale v tomto pˇr´ıpadˇe se jedn´a o metodu rtObjectu. Jej´ı parametry jsou vˇsak rozˇs´ıˇren´e.
Jej´ı vol´an´ı m´a tvar rtObject notify-about-route identifik´ator s´ıt’ prefix adresa dalˇs´ıho
skoku preference metrika. Pokud je v odpovˇedi hodnota metriku -1 je to sign´al pro
sma-zan´ı cesty do urˇcen´e s´ıtˇe.
Dalˇs´ı metodou, kterou mus´ı implementovat smˇerovac´ı protokoly je Protocol clear-route s´ıt’ prefix, kterou ˇz´ad´a rtObject o smazan´ı urˇcit´e cesty ze smˇerovac´ı tabulky. Pokud je hodnota parametru s´ıt’ rovna all, je to ˇz´adost o vymaz´an´ı cel´e datab´aze. O smazan´ı jiˇz nemus´ı b´yt rtObject jiˇz informov´an.
Metoda intf-changed z˚ustala v podstatˇe nezmˇenˇena, pouze v n´ı nen´ı explicitnˇe vol´ano compute-routes vˇsech protokol˚u. Nov´e protokoly by mˇeli reagovat na tuto zmˇenu, a ne na vol´an´ı funkce compute-routes
Implementace musela obsahovat funkce, kter´e by slouˇzili jako rozhran´ı pro ostatn´ı kom-ponenty simul´atoru. Ve vˇetˇsinˇe pˇr´ıpad˚u se shoduj´ı se star´ym rtObjectem, pouze metoda add-proto byla rozˇs´ıˇrena o moˇznost pˇripojit smˇerovac´ı protokol na konkr´etn´ı port. Pro ´
uplnou podporu pˇripojen´ı agenta na konkretn´ı port v demultiplexoru port˚u bylo nutn´e jeˇstˇe zmˇenit metodu simul´atoru attach-agent, definovanou v ns-lib.tcl. Metodˇe byl pˇrid´an voliteln´y parametr, kter´y urˇcuje, na kter´y port m´a b´yt agent pˇripojen. Nen´ı-li jeho hodnota specifikov´ana, agent se pˇripoj´ı na prvn´ı moˇzn´y port.
Pokud se smaˇze cesta do nˇekter´e s´ıtˇe rtObject poˇsle dotaz vˇsem protokol˚um na novou cestu do t´eto s´ıtˇe. Je nutn´e si, ale uvˇedomit ˇze toto nast´av´a okamˇzitˇe po obdrˇzen´ı zpr´avy o zmˇenˇe, a ˇze rtObject se dotazuje vˇsech smˇerovac´ıch protokol˚u, i toho kter´y zpr´avu o smazan´ı cesty odeslal. M˚uˇze totiˇz nastat situace, ˇze smˇerovac´ı protokol m´a tuto cestu jeˇstˇe v datab´azi a pˇri dotazu na tuto s´ıt’ odpov´ı pr´avˇe mazanou cestou. To vede k nejr˚uznˇejˇs´ım probl´em˚um.
Pˇrehled funkc´ı, kter´e je nutn´e implementovat do nov´ych smˇerovac´ıch protokol˚u: • intf-changed
• notify-about-route • clear-route
4.2.5 Pˇripojen´e s´ıtˇe
N´avrh
Kaˇzd´y uzel by mˇel zn´at s´ıtˇe, kter´e m´a k sobˇe pˇr´ımo pˇripojen´e. V p˚uvodn´ım ns-2 znal uzel svoje sousedsk´e uzly. To bylo realizov´ano ‘smˇerovac´ım’ protokolem Direct.
Podobn´y princip je nutn´e zaˇr´ıdit i pro pˇr´ımo pˇripojen´e s´ıtˇe a proto je nutn´e implemen-tovat modifikaci smˇerovac´ıho protokolu Direct. Tento protokol by mˇel umˇet nejenom pˇridat pˇripojen´e s´ıtˇe do klasifik´atoru, ale tak´e pˇridat adresy rozhran´ı, tak aby pakety, kter´e jsou smˇerov´any na tyto adresy byly pˇred´any klasifik´atoru port˚u. D´ale by mˇel pˇridat i broadcas-tov´e adresy jednotliv´ych s´ıt´ı.
Implementace
Spr´avu pˇripojen´ych s´ıt´ı zajiˇst’uje nov´a verze protokolu Direct s n´azvem DirectIPv4. Instance tohoto ‘smˇerovac´ıho’ protokolu vznik´a spoleˇcnˇe se vznikem rtObjectu, aby bylo zajiˇstˇeno, ˇze vˇsechny uzly budou zn´at alespoˇn pˇripojen´e s´ıtˇe. Pˇri inicializaci tak´e podle n´avrhu pˇr´ıd´av´a broadcastov´e adresy a adresy rozhran´ı do klasifik´atoru, aby uzel pˇrij´ımal pakety jej´ıˇz c´ılov´a adresa je rovna adrese rozhran´ı.
Pracuje na jednoduch´em principu, kde na z´akladˇe stavu rozhran´ı urˇcuje zda dan´a s´ıt’ m´a b´yt pˇrid´ana, pˇr´ıpadnˇe odebr´ana z rtObjectu. O adres´ach rozhran´ı pˇredpokl´ad´ame ˇze se nemˇen´ı. Na clear-route nereaguje, pˇripojen´e s´ıtˇe jsou zn´amy i pˇri smaz´an´ı smˇerovac´ıch datab´az´ı.
Protokol Direct je implementov´an pouze v OTcl, protoˇze nevyuˇz´ıv´a zas´ıl´an´ı paket˚u. Implementov´any jsou vˇsechny funkce vyˇzadovan´e pro interakci s rtObjectem.
4.2.6 Statick´e smˇerov´an´ı
N´avrh
Statick´e smˇerov´an´ı je oproti RIPu jednoduˇs´ı. Jej´ı instance si nevymˇeˇnuj´ı pakety a pouze uˇzivatel m˚uˇze zmˇenit jeho cesty k s´ıt´ım. Pˇrid´an´ı statick´e cesty k s´ıt´ı by mˇelo b´yt co nej-podobnˇejˇs´ı pˇr´ıkazu Cisco IOS ip route x.x.x.x m.m.m.m n.n.n.n p, kde x znaˇc´ı adresu s´ıtˇe, m jej´ı masku, n dalˇs´ı skok ve smˇeru k s´ıt´ı a p volitelnˇe preferenci. Protokol by mˇe pruˇznˇe reagovat na zmˇeny linek vedouc´ı k uzlu a nepropagovat cesty k s´ıt´ım skrz linky, kter´e jsou nedostupn´e.
Implementace
Soubor: ns-rtProtoStaticIPv4.tcl
Podobnˇe jako Direct ani instance statick´eho smˇerov´an´ı si mezi sebou nevymˇeˇnuj´ı zpr´avy o stavu smˇerovac´ıch tabulek a proto je moˇzn´e i statick´e smˇerov´an´ı implementovat jako OTcl tˇr´ıdu. Mus´ı implementovat, stejnˇe jako Direct a dalˇs´ı smˇerovac´ı protokoly, rozhran´ı s
rtObjectem, konkr´etnˇe funkce notify-about-route, clear-route a intf-changed.
Datab´aze cest se d´a implementovat pomoc´ı asociativn´ıch pol´ı s vhodnˇe zvolen´ym kl´ıˇcem. Kl´ıˇc v podobnˇe s´ıt’/prefix nen´ı bohuˇzel dostateˇcn´y, protoˇze u statick´ych cest je bˇeˇznou prax´ı m´ıt 2 do stejn´e s´ıtˇe, ale s r˚uznou preferenc´ı. Pokud linka ve smˇeru s cesty s niˇzˇs´ı preferenc´ı nen´ı funkˇcn´ı, zvol´ı se druh´a s preferenc´ı vyˇsˇs´ı.
Kl´ıˇc je tedy nutn´e zvolit jako kombinaci s´ıtˇe prefixu a adresy dalˇs´ıho skoku.
Protokol mus´ı sledovat zmˇeny rozhran´ı, aby protokol oznamoval rtObjectu spr´avn´e cesty skrz aktivn´ı rozhran´ı, ne skrz ty, kter´e jsou nefunkˇcn´ı. Na metodu clear-route protokol nereaguje, staticky pˇridan´e cesty, podobnˇe jako pˇr´ımo pˇripojen´e se ze smˇerovac´ı tabulky nemaˇzou, pouze dynamick´y nauˇcen´e cesty.
Pˇrid´an´ı smˇerovac´ıho protokolu do simulace
Na rozd´ıl od protokolu Direct, kter´y je pˇrid´an vˇzdy, statick´e smˇerov´an´ı je moˇzn´e pˇridat selektivnˇe na urˇcit´e uzly pomoc´ı pˇr´ıkazu:
$ns rtproto StaticIPv4 $n(1) $n(2)
Pojmenov´an´ı je zvoleno tak aby se protokol odliˇsil od p˚uvodn´ıho protokolu Static. Kv˚uli zp˚usobu pˇrid´an´ı protokolu, skrz vol´an´ı funkce rtproto, jsou jeho instance vytvoˇreny aˇz po spuˇstˇen´ı simulace a i jeho konfigurace je moˇzn´a aˇz v simulaˇcn´ım ˇcase.
4.3
Smˇ
erovac´ı protokol RIP
N´avrh
Model smˇerovac´ıho protokolu by mˇel odpov´ıdat funkˇcnˇe RFC dokument˚um [2], [4] a tak´e chov´an´ı protokolu na Cisco prvc´ıch. Implementace nemus´ı odraˇzet chov´an´ı ´uplnˇe pˇresnˇe, z d˚uvodu ˇze se jedn´a o model protokolu, z toho d˚uvodu je moˇzn´e si dovolit nˇekter´a zjed-noduˇsen´ı.
Implementace
soubory: rtProtoRIP.h, cc, rtProtoRIP packets.h
Implementace RIPu je naps´ana jak v OTcl tak v C++, z d˚uvodu manipulace s pakety. Z
toho plyne, podobnˇe jako v pˇr´ıpade smˇerovac´ıho modulu, nutnost tyto 2 oddˇelen´e ˇc´asti pro-pojit. Tak´e bylo nutn´e nadefinovat novou hlaviˇcku paketu a zpˇr´ıstupnit nastaven´ı procesu uˇzivatel˚um.
4.3.1 Nov´y typ paket˚u
N´avrh
Aby spolu mohly instance protokolu komunikovat je nutn´e nadefinovat form´at zpr´avy, RIP hlaviˇcku paketu. Z tabulek2.3 a 2.4je patrn´e, ˇze vˇetˇsinu pol´ı maj´ı protokoly spoleˇcn´e. Je tedy moˇzn´e nadefinovat pouze 1 hlaviˇcku, kterou budou vyuˇz´ıvat obˇe verze protokolu. Pole verze protokolu poskytuje dostateˇcn´e rozliˇsen´ı jednotliv´ych verz´ı. Specifick´a pole verze 2, m˚uˇze verze 1 ignorovat.
Implementace
Obsah paketu je stejn´y jako obsah paketu RIPv1 obohacen´y o poloˇzku RIPv2, kter´a urˇcuje d´elku prefixu dan´e s´ıtˇe. Oproti pln´e RIPv2 hlaviˇcce chyb´ı poloˇzka TAG, z d˚uvodu, ˇze v souˇcasn´e dobˇe nen´ı redistribuce z jin´ych protokol˚u implementov´ana, ˇz´adn´e dalˇs´ı nejsou zat´ım k dispozici. Tak´e chyb´ı pole dalˇs´ıho skoku, implicitnˇe se vˇzdy vyuˇz´ıv´a zdrojov´e adresy paketu. Zmˇenou oproti tradiˇcn´ı struktuˇre RIP paket˚u, kde je prvn´ı z´aznam vyuˇzit pro autentizaˇcn´ı ´udaje, je vytvoˇren´ı samostatn´e promˇenn´e, kter´a tyto ´udaje obsahuje.
Struktura paketu - rtProtoRIP packets.h:
int command_; int version_;
const char * authentication_; RIP_route_list routes_;
Promˇen´a routes zastupuje z´aznamy jednotliv´ych s´ıt´ı v paketu. Kaˇzd´y z´aznam m´a n´asleduj´ıc´ı strukturu, kter´a odr´aˇz´ı strukturu z´aznamu RIPu. Jedin´ym rozd´ılem je ukazatel na dalˇs´ı z´aznam.