Routovací protokoly
Úvod
Aplikačních protokolů pro routing vznikla v historii celá řada. Dnes se z nich prakticky využívají jen RIP, OSPF a BGP. Se všemi ostatními se setkáváme jen zřídka.
Routovací protokoly slouží pro automatické plnění routovacích tabulek. Mohou sice běžet na pracovních stanicích, ale nejběžnější jejich použití je na routerech. Na pracovní stanici, která není router, tj. nemá více síťových interfejsů, stačí staticky default na sousední router.
Routovací protokoly se dělí dvěma na sobe nezávislými kritérii. Jednak podle algoritmu, který používají a jednak podle rozsahu jejich použití.
Routovaci protokoly pouzivaji bud Routing vector algoritmus nebo Link state algoritmus. Jsou určeny buď pro práci uvnitř autonomního systému, tj. Interior gateway protocols (IGP) nebo pro výměnu routovacích informací mezi autonomními systémy, tj. Exterior gateway protocols (EGP).
Protokol RIP je Routing vector protocol typu IGP. OSPF je Link state protocol typu IGP. O BGP by se dalo říci, že je Link state, ale je typu EGP. Nyní musíme vysvětlit co jednotlivé termíny znamenají.
Routovaci tabulky
Routovací tabulka je tabulka, kde každý řádek obsahuje IP-adresu cílove sítě, siťovou masku, IP-adresu následujícího routeru, síťový interface, do kterého se bude paket směrovat směrem k následujícímu routeru, metriku (cenu - vybírá se vždy cesta o nejnižší ceně - metrice), protokol kterým byla položka získaná a časové razítko.
Přijde-li paket na router, pak si router z jeho záhlaví zjistí IP-adresu příjemce. Hledá ji v IP-adresách cílové sítě své routovací tabulky. Najde-li cílovou siť v routovací tabulce, pak v záhlaví IP-paketu sníží položku TTL alespoň o jedničku. Pokud má položka TTL po snížení hodnotu 0, pak router paket zahodí a pošle odesílateli protokolem ICMP zprávu, že životnost jeho paketu vypršela. Podle routovací tabulky router zjistí, do kterého síťového interface má paket poslat. Zjistí-li, že je to ten samý interface, kterým paket přišel, pak jej do interfacu pošle, ale odesílateli o tom pošle protokolem ICMP zpravu, aby se vzpamatoval a opravil si routovaci tabulku. Čili i protokolem ICMP se muze dynamicky měnit routovaci tabulka. Protokol ICMP však není aplikačni protokol, je soucasti IP-protokolu.
Nenajde-li router v routovaci tabulce cílovou síť, ale má v tabulce položku default, pak zvolí směr v položce default. Nemá-li ani default, pak paket zahodí a pošle odesílateli protokolem ICMP zprávu, že taková síť je nedosažitelná.
Routing vector protocol
Routing vector protocol (RVP) je velice jednoduchý protokol. Routery vysílají protokolem RVP do svých síťových interfaců obsah své routovací tabulky. Takže sousední routery si mohou přečíst vzájemně své routovací tabulky. Sousední router přijme z určitého síťového interface routovací tabulku svého souseda. V routovací tabulce svého souseda připočte ke všem metrikám cenu (metriku) k sousedovi a začne porovnávat, není-li v takto opravené sousedově routovací tabulce nějaká nová cesta, aby si ji zařadil do své routovací tabulky. Také zjišťuje, neni-li tam cesta k síti, kterou sice v tabulce má, ale s nižší metrikou. Pokud v sousedově routovací tabulce najde lepší cestu, pak původní položku své routovací tabulky nahradí novou.
RVP u rozsáhlejších sítí způsobují oscilaci routovacích tabulek a vůbec mají celou řadu neduhů. Mají však jednu výhodu - nepotřebují žádnou konfiguraci a proto jsou velice oblíbeny - okamžitě chodijou. Jsou určeny pro uzavřené sítě, které mají maximálně kolem deseti LAN.
Link state protocol
Link state protokol (LSP) je určen pro rozsáhlejší sitě - pro sítě do velikosti autonomního systému.
Router pracujicí v protokolu LSP testuje pomoci HALLO paketu, zda-li je sousedni router ziv. V pravidelnych intervalech pak zaplavuje sit obezniky (multicast), ve kterych uvadi jake ma momentalne (zive) sousedy. Takze kazdy router obdrzi informace o vsech routerech v siti a o tom jake maji sousedy. Uklada si tyto informace do databaze. V pripade, ze prijde nejaky paket, ktery ma router routovat, tak si zjisti IP-adresu prijemce. Na databazi spusti algoritmus nejkratsi cesty, za ktereho zjisti nasledujici router k prijemci. Na tento router paket odesle.
Jelikoz zaplavovani pakety by mohlo sit zatezovat, tak se rozsahlejsi site deli na oblasti. Routing se pak vyrizuje na dvou urovnich: uvnitr oblasti a mezi oblastmi.
Routing Information Protocol (RIP)
Routing Information Protocol (RIP) byl jedním z vůbec prvních úspěšných
směrovacích protokolů (vyvinut firmou Xerox v r. 1981). První verze protokolu RIP
pro IP (RFC 1058) je dnes zastaralá, přechází se na normalizovanou verzi 2 (RFC
2453).
Metrika, kterou používá protokol RIP, je počet směrovačů na cestě k cíli. Nejnižší
metrika je pro přímo připojené sítě ke směrovači, nejdelší cesta je 15 skoků
(směrovačů), vyšší metrika (16) označuje neplatnou cestu (nedostupnou síť). RIP
vysílá aktuální směrovací informace na všeobecnou adresu v periodě 30 s.
Nová verze protokolu RIP 2 je plně založena na charakteristikách protokolu RIP
verze 1, které obohacuje o:
- podporu podsíťových masek umožňuje využít RIP i v prostředí s podsíťovými
maskami proměnné délky (VLSM) nebo se směrováním na bázi adresových prefixů
(CIDR),
- možnost vysílat směrovací tabulky nikoli na všeobecnou, ale na skupinovou adresu,
- autentizaci směrovacích informací,
- spolupráci s jinými vnitřními směrovacími protokoly (pomocí odkazu na následující
skok) i vnějšími protokoly (prostřednictvím označení cest mimo autonomní systém).
RIP lze výhodně použít jako vnitřní směrovací protokol v sítích, které jsou homogenní
a mají maximálně střední velikost, neboť jeho jednoduchost i z hlediska konfigurace
tam vyváží pomalou konvergenci a nepříliš vhodnou metriku.
Open Shortest Path First (OSPF)
Protokol Open Shortest Path First (OSPF verze 2, RFC 2328) je v rodině de facto
normalizovaných vnitřních směrovacích protokolů pro IP opačným pólem než RIP.
Používá algoritmus stavu spojů, který umožňuje rychlou konvergenci sítě reagující na
jakékoli topologické změny, jako např. poruchu spoje, a nevede ke směrovacím
smyčkám. Aktuální informace pro směrování se zasílají okamžitě po jakékoli detekci
změny v topologii sítě, nebo minimálně (periodicky) každých 30 min. Každý
směrovač má stejný pohled na topologii sítě (topologická databáze). Směrovací
informace jsou zasílány v paketech o stavu spojů (LSP, Link State Packet), v nichž
se popisuje stav rozhraní směrovače a jeho sousedů, tj. stav připojených sítí. Souhrn
všech LSP tvoří topologickou databázi protokolu.
OSPF využívá hierarchické směrování, kdy sítě a směrovače se v jednom
autonomním systému dělí do tzv. oblastí (area), které konfiguruje správce sítě
(intersíť může být rozdělena do jedné nebo více oblastí). Znalost topologie dané oblasti zůstává skrytá ostatním oblastem, a tak
umožňuje provádět změny topologie v každé oblasti nezávisle na ostatních. Právě
jedna oblast tvoří tzv. OSPF páteř (backbone), k níž musí být (logicky) připojeny
všechny ostatní oblasti. Každá oblast používá individuální kopii algoritmu pro výpočet
nejkratších cest, a proto má svou topologickou databázi, která je u všech směrovačů
v oblasti totožná. Hraniční směrovače oblastí mají tolik databází, kolik oblastí
propojují. Hierarchická struktura intersítě z hlediska OSPF znamená, že směrování
probíhá ve dvou stupních: uvnitř oblasti a mezi oblastmi.
Směrování pomocí OSPF je založeno na jediné bezrozměrové metrice, obecně
označované cena (nejlepší cesta je ta s nejnižší souhrnnou cenou). Cena spojů ve
složené cestě odpovídá propustnosti spojů, nákladů na spoje apod. podle potřeb
správce intersítě. OSPF rychle reaguje na topologické změny sítě a vypočítává
nejkratší cesty do všech dostupných existujících sítí na bázi Dijkstrova algoritmu.
Vnější směrovací protokoly
Pro sítě TCP/IP se vyvinuly dva vnější směrovací protokoly: EGP a BGP, z nichž
pouze BGP došel širokého praktického uplatnění a má naději na rozvoj i v budoucnu,
neboť je v podstatě jediným vnějším směrovacím protokolem používaným v
současném Internetu.
Border Gateway Protocol (BGP) se dnes používá ve verzi 4. Na rozdíl od vnitřních
směrovacích protokolů založených na distančně vektorovém algoritmu, které
používají jednotnou metriku, může mít u BGP každý AS jiný soubor kritérií pro výběr
optimální cesty. Mezi kritéria určující kvalitu (váhu) cesty patří počet AS na cestě k
cílové síti, přítomnost nebo nepřítomnost určitých AS na cestě (např. kvůli
parametrům provozu jako rychlost, velikost AS), původ cesty (cesta plně zjištěná
pomocí BGP má obecně přednost před cestou zjištěnou jinak), nebo stabilita spojů.
Tato kritéria mají přesně specifikované pořadí, v němž se mohou vyskytnout a podle
nějž se výběr cesty nakonec řídí.
GNU Zebra
Zebra je jedním z démonů na správu routovacích protokolů.
Má podporu pro BGP-4 protokol jak je popsán v RFC1771, stejně tak pro RIPv1, RIPv2 a OSPFv2.
Má pro každý protokol jeden proces. Používá multithreadovou technologii.
Zebra má pět routovacích démonů a jeden manager démon. Tyto démony mohou být
spuštěny na jiném stroji než manager démon. Každý z nich poslouchá na particulárních portech pro příchozí VTY spojení. Jsou to:
- ripd, ripngd, ospfd, ospf6d, bgpd
- zebra
Následující sekce hovoří o příkazech běžných pro všechny démony. (jenom výcuc)
Běžné parametry:
- -l
--log-mode
Zapne logging
- -r
--retain
Po ukončení vrátí routy, které byly přidány
Interface Commands
- Command: interface IFNAME
- Interface Command: shutdown
- Interface Command: no shutdown
Spustí nebo vypne interface.
- Interface Command: ip address ADDRESS
Nastaví IP adresu pro interface
- Interface Command: multicast
- Interface Command: no multicast
Zapne nebo vypne multicast flag pro daný interface
- Interface Command: bandwidth <1-10000000>
- Interface Command: no bandwidth <1-10000000>
Nastaví šířku pasma pro interface. Je to pro vypočítání OSPF ceny.
Static Route Commands
- Command: table TABLENO
Vybere primární routovací tabulku.
- Command: ip route NETWORK GATEWAY
zebra Terminal Mode Commands
- Command: show ip route
Zobrazí aktivní routy
Router# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
B - BGP * - FIB route.
K* 0.0.0.0/0 203.181.89.241
S 0.0.0.0/0 203.181.89.1
C* 127.0.0.0/8 lo
C* 203.181.89.240/28 eth0
- Command: show interface
- Command: show ipforward
Zobrazí, která hostitelova IP forwardovací funkce je zapnuta nebo vypnuta
ospfd
Ospfd obstarává ISPF verze 2 routovací protokol jak je popsán v RFC2178.
Configuring ospfd
Ospfd nemá specifická nastavení. Potřebuje informace o interfacech ze Zebry. Takže musí Zebra běžet.
Jako ostatní démony ospfd konfigurace je dělaná v OSPF specifickém konfiguracním souboru ospfd.conf
OSPF router
Ke spuštění OSPFprocesu musíme specifikovat OSPFrouter. Z toho plyne, že ospfd nepodporuje více OSPF procesů.
OSPF area
- OSPF Command: area A.B.C.D range A.B.C.D/M
OSPF Command: area <0-4294967295> range A.B.C.D/M
OSPF Command: no area A.B.C.D range A.B.C.D/M
OSPF Command: no area <0-4294967295> range A.B.C.D/M
- OSPF Command: area A.B.C.D range IPV4_PREFIX suppress
OSPF Command: no area A.B.C.D range IPV4_PREFIX suppress
OSPF Command: area A.B.C.D range IPV4_PREFIX suppress substitute IPV4_PREFIX
OSPF Command: no area A.B.C.D range IPV4_PREFIX suppress substitute IPV4_PREFIX
- OSPF Command: area A.B.C.Dvirtual-link A.B.C.D
OSPF Command: area <0-4294967295> virutal-link A.B.C.D
OSPF Command: no area A.B.C.Dvirtual-link A.B.C.D
OSPF Command: no area <0-4294967295> virutal-link A.B.C.D
- OSPF Command: area A.B.C.D shortcut
OSPF Command: area <0-4294967295> shortcut
OSPF Command: no area A.B.C.D shortcut
OSPF Command: no area <0-4294967295> shortcut
- OSPF Command: area A.B.C.D stub
OSPF Command: area <0-4294967295> stub
OSPF Command: no area A.B.C.D stub
OSPF Command: no area <0-4294967295> stub
- OSPF Command: area A.B.C.D stub no-summary
OSPF Command: area <0-4294967295> stub no-summary
OSPF Command: no area A.B.C.D stub no-summary
OSPF Command: no area <0-4294967295> stub no-summary
- OSPF Command: area A.B.C.D default-cost <0-16777215>
OSPF Command: area <0-4294967295> default-cost <0-16777215>
OSPF Command: no area A.B.C.D default-cost <0-16777215>
OSPF Command: no area <0-4294967295> default-cost <0-16777215>
- OSPF Command: area A.B.C.D export-list NAME
OSPF Command: area <0-4294967295> export-list NAME
OSPF Command: no area A.B.C.D export-list NAME
OSPF Command: no area <0-4294967295> export-list NAME
- OSPF Command: area A.B.C.D import-list NAME
OSPF Command: area <0-4294967295> import-list NAME
OSPF Command: no area A.B.C.D import-list NAME
OSPF Command: no area <0-4294967295> import-list NAME
- OSPF Command: area A.B.C.D authentication
OSPF Command: area <0-4294967295> authentication
OSPF Command: no area A.B.C.D authentication
OSPF Command: no area <0-4294967295> authentication
- OSPF Command: area A.B.C.D authentication message-digest
OSPF Command: area <0-4294967295> authentication message-digest
OSPF interface
- Interface Command: ip ospf authentication-key AUTH_KEY
Interface Command: no ip ospf authentication-key
Nastaví OSPF autentizační klíč pro jednoduché heslo.
- Interface Command: ip ospf message-digest-key KEYID md5 KEY
Interface Command: no ip ospf message-digest-key
Totéž pro kryptografické heslo. (MD5)
- Interface Command: ip ospf cost <0-65535>
Interface Command: no ip ospf cost
Nastaví cenu pro daný interface.
- Interface Command: ip ospf dead-interval <1-65535>
Interface Command: no ip ospf dead-intercal
Nastaví počet sekund pro RouterDeadInterval časovač.
- Interface Command: ip ospf hello-interval <1-65535>
Interface Command: no ip ospf hello-intercal
Počet sekund pro HelloInterval.
- Interface Command: ip ospf network (broadcast|non-broadcast|point-to-multipoint|point-to-point)
Interface Command: no ip ospf network
Nastaví explicitní typ sítě pro daný interface
- Interface Command: ip ospf priority <0-255>
Interface Command: no ip ospf prioirty
Nastaví RouterPriority. Čím větší číslo, tím bude více vhodný Designated Router.
Default je 1.
- Interface Command: ip ospf transmit-delay
Interface Command: no ip ospf transmit-delay
Redistribute routes to OSPF
- OSPF Command: redistribute (kernel|connected|static|rip|bgp)
- OSPF Command: redistribute (kernel|connected|static|rip|bgp) ROUTE-MAP
- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric-type (1|2)
- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) route-map WORD
- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric <0-16777214>
- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric <0-16777214> route-map WORD
- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214>
- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214> route-map WORD
- OSPF Command: no redistribute (kernel|connected|static|rip|bgp)
- OSPF Command: default-information originate
- OSPF Command: default-information originate metric <0-16777214>
- OSPF Command: default-information originate metric <0-16777214> metric-type (1|2)
- OSPF Command: default-information originate metric <0-16777214> metric-type (1|2) route-map WORD
- OSPF Command: default-information originate always
- OSPF Command: default-information originate always metric <0-16777214>
- OSPF Command: default-information originate always metric <0-16777214> metric-type (1|2)
- OSPF Command: default-information originate always metric <0-16777214> metric-type (1|2) route-map WORD
- OSPF Command: no default-information originate
- OSPF Command: distribute-list NAME out (kernel|connected|static|rip|ospf
- OSPF Command: no distribute-list NAME out (kernel|connected|static|rip|ospf
- OSPF Command: default-metric <0-16777214>
- OSPF Command: no default-metric
- OSPF Command: distance <1-255>
- OSPF Command: no distance <1-255>
- OSPF Command: distance ospf (intra-area|inter-area|external) <1-255>
- OSPF Command: no distance ospf
- OSPF Command: router zebra
OSPF Command: no router zebra
Showing OSPF information
- Command: show ip ospf
- Command: show ip ospf interface [INTERFACE]
- Command: show ip ospf neighbor
Command: show ip ospf neighbor INTEFACE
Command: show ip ospf neighbor detail
Command: show ip ospf neighbor INTERFACE detail
- Command: show ip ospf database
- Command: show ip ospf database (asbr-summary|external|network|router|summary)
- Command: show ip ospf database (asbr-summary|external|network|router|summary) LINK-STATE-ID
- Command: show ip ospf database (asbr-summary|external|network|router|summary) LINK-STATE-ID adv-router ADV-ROUTER
- Command: show ip ospf database (asbr-summary|external|network|router|summary) adv-router ADV-ROUTER
- Command: show ip ospf database (asbr-summary|external|network|router|summary) LINK-STATE-ID self-originate
- Command: show ip ospf database (asbr-summary|external|network|router|summary) self-originate
- Command: show ip ospf database max-age
- Command: show ip ospf database self-originate
- Command: show ip ospf refreshser
- Command: show ip ospf route
Debugging OSPF
- Command: debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]
- Command: no debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]
- Command: debug ospf ism
- Command: debug ospf ism (status|events|timers)
- Command: no debug ospf ism
- Command: no debug ospf ism (status|events|timers)
- Command: debug ospf nsm
- Command: debug ospf nsm (status|events|timers)
- Command: no debug ospf nsm
- Command: no debug ospf nsm (status|events|timers)
- Command: debug ospf lsa
- Command: debug ospf lsa (generate|flooding|refresh)
- Command: no debug ospf lsa
- Command: no debug ospf lsa (generate|flooding|refresh)
- Command: debug ospf zebra
- Command: debug ospf zebra (interface|redistribute)
- Command: no debug ospf zebra
- Command: no debug ospf zebra (interface|redistribute)
- Command: show debugging ospf
Nějaky odkazy
Další routovací démony: Bird,
Zebra,
GateD