Síťová vrstva a směrování J. Peterka, 1996 Počítačové sítě, v.2.0, lekce č. 9
Hlavní úkol síťové vrstvy doručovat data od jejich zdroje až k jejich koncovým adresátům což může obnášet „přeskok“ přes různé mezilehlé uzly linková vrstva se stará jen o doručení „z jednoho konce přenosové cesty na druhý“, a nezabývá se přeskoky „přeskok“ vyžaduje rozhodnutí o dalším směru přenosu - tzv. směrování (routing)
Požadavky na síťovou vrstvu přenosové služby, které poskytuje transportní vrstvě, by měly být: nezávislé na konkrétní topologii sítě transportní vrstva si může myslet, že existuje přímé spojení každého s každým nezávislé na konkrétní přenosové technologii dílčích sítí aby si transportní vrstva nemusela uvědomovat odlišnosti v přenosových technologiích adresování by mělo být jednotné (v rámci LAN i WAN)
Fungování síťové vrstvy možnosti jsou: přepojování okruhů virtuální okruhy přepojování paketů datagramová služba moc to nezapadá do vrstevnatého modelu moc se nepoužívá spojovaná varianta nespojovaná varianta
Velké dilema síťové vrstvy má síťová vrstva fungovat spojovaně, nebo nespojovaně? má zajišťovat spolehlivost, nebo nemusí? má se soustředit jen na přenos, a nezabývat se dalšími věcmi? má být jednoduchá, nebo naopak složitá (vybavená funkcemi a schopnostmi)? kam má být umístěna složitost (inteligence)? Do síťové vrstvy, nebo do transportní?
Přístup „lidí od spojů“ teze: síťová vrstva by měla být spíše bohatší .... měla by zajišťovat spolehlivost přenosu měla by fungovat spojovaně měla by ev. nabízet i další služby garanci kvality možnost rezervace přenosové kapacity znamená to, že přenosová část sítě bude muset mít velkou vlastní inteligenci! bude fungovat méně efektivně někdo to bude muset zaplatit ukazuje se jako důležité pro přenos multimédií virtuální okruhy
Přístup „lidí od Internetu“ síťová vrstva by měla být maximálně rychlá, i za cenu nespolehlivosti měla by být spíše jednoduchá a robustní měla by fungovat nespojovaně „inteligenci“ je výhodnější zabudovat do koncových uzlů, než do přenosové sítě „inteligence“ se týká řešení otázek typu zajišťování spolehlivosti, řízení toku atd. jako datagramová služba
Virtuální okruhy vs. datagramy přenáší se pakety paket je opatřen identifikátorem virtuálního okruhu který může být i dost malý pakety cestují vždy stejnou cestou je zaručeno správné pořadí doručování paketů přenáší se datagramy datagram je opatřen celou adresou svého příjemce která může být dost velká datagramy nemusí ke svému cíli cestovat vždy stejnou cestou není zaručeno pořadí doručování datagramů
Virtuální okruhy vs. datagramy mechanismus přenosu po virtuálních okruzích je stavový navázáním spojení dochází ke změně stavu je nutné explicitně ukončovat spojení při výpadku je nutné podnikat nápravné akce přenos datagramů je bezestavový není navazováno spojení, nemění se stav není nutné jakkoli ukončovat spojení (někomu signalizovat konec) mj. proto, aby si směrovač mohl vyčistit své tabulky
Virtuální okruhy vs. datagramy směrování (rozhodnutí o volbě směru) se provádí jednou, při navazování spojení jednotlivé pakety se pak pouze předávají dále po již zvolené trasy nedokáže to reagovat na dynamické změny v síti datagramy směrování (rozhodování o volbě směru) se provádí pro každý datagram (v každém uzlu) vždy znovu přenos dokáže reagovat na průběžné změny v síti výhodné pro přenosy větších objemů dat výhodné pro menší a „řidší“ přenosy též: session routing
Spolehlivost vs. spojovanost spolehlivý přenos nespolehlivý přenos virtuální okruhy datagramová služba má smysl nemá smysl má smysl v praxi: virtuální okruhy se řeší jako spolehlivé, datagramová služba jako nespolehlivá
Směrování (routing) def: směrování = rozhodování o směru dalšího přenosu musí existovat algoritmus směrování, jeho aplikováním se zjistí nevhodnější směr dalšího přenosu algoritmy směrování mohou být: založeny na různých principech, myšlenkách, .... vycházet z různých předpokladů být vhodné či nevhodné pro různé druhy sítí
Odbočení: algoritmy směrování se snaží hledat optimální cestu co je optimální? nejkratší a v jakém smyslu? V počtu přeskoků, délce kabelu? nejrychlejší co do přenosového zpoždění, co do délky front? nejlacinější co do nákladů, poplatků? obecně: zavede se určitá metrika, a tou se ohodnotí jednotlivé spoje v síti algoritmy hledají optimální cestu podle této metriky metrika může vyjadřovat např. počet přeskoků, celkovou dobu přenosu, nebo kombinaci
Adaptivní vs. neadaptivní algoritmy směrování ne-adaptivní algoritmus: nesnaží se reagovat na průběžné změny v síti (změny ohodnocení hran) dokáže „vypočítat“ optimální trasy předem nepotřebuje přenášet aktualizační informace při výpadcích částí sítě může způsobit nefunkčnost sítě adaptivní algoritmus snaží se reagovat na průběžné změny v síti musí „počítat“ optimální trasy průběžně vyžaduje pravidelný přísun aktualizačních informací záleží také na intenzitě změn v síti
Statické a dynamické směrování jde hlavně o to, zda se mění ohodnocení hran v síti statické se nemění dynamické se mění má smysl: adaptivní algoritmus a dynamické směrování neadaptivní algoritmus a statické směrování
Centralizované směrování počítá s existencí jednoho centrálního subjektu, který: sám vypočítává (jednorázově nebo průběžně) nejvýhodnější cesty výsledky distribuuje všem směrovačům, které se podle nich řídí použitý algoritmus směrování může být adaptivní i neadaptivní s výpadkem centrálního přestává síť fungovat v praxi se moc nepoužívá používají se spíše distribuované (a izolované) varianty bez centrálního prvku
Izolované směrování směrování (rozhodování o volbě směru) provádí jednotlivé směrovače, ale vzájemně přitom nespolupracují každý směrovač se rozhoduje jen podle sebe, proto „izolované“ varianty: záplavové směrování metoda horké brambory metoda zpětného učení obecně: je to méně efektivní než takové metody, při kterých jednotlivé směrovače spolupracují
Záplavové směrování (flooding) v každém mezilehlém uzlu je každý paket rozeslán do všech směrů, které existují (kromě toho, ze kterého přišel) je to maximálně robustní pokud existuje cesta k cíli, je nalezena (dokonce ta optimální) problémy jsou s eliminací nadbytečných paketů řeší se např. vkládáním čítačů do všech paketů, při dočítání k nule je paket eliminován nebo pamatováním již prošlých paketů a eliminací duplikátů využívá se např. ve vojenských sítích
Metoda horké brambory idea: když začíná být zle, je vhodné se paketů zbavovat co možná nejrychleji být zle = když začínají přetékat výstupní fronty co nejrychleji se zbavit = odeslat tím směrem, který je momentálně nejméně vytížen má nejkratší výstupní frontu používá se to jako doplňková metoda pro případ, kdy jiná (základní) metoda směrování vede k přeplnění front
Vector-distance routing idea: každý směrovač si udržuje tabulku svých nejmenších „vzdáleností“ od všech ostatních uzlů směrovače si tyto informace vzájemně vyměňují informace typu: já se dostanu k uzly X za cenu Y ... a průběžně si vypočítávají nové nejkratší vzdálenosti výpočet „nejkratších“ cest se děje podle: Bellman-Fordova algoritmu algoritmu Ford-Fulkersona používá se v protokolu RIP takto fungovalo směrování v původním Internetu (Arpanetu), do roku 1979
Příklad - počáteční stav 3 A A ? ? A - - B - - B 6 B B 3 B C 6 C C - - C ? ? A D ? ? D 2 D D ? ? E ? ? C E ? ? E ? ? 3 F ? ? F ? ? F 2 F 6 G ? ? G ? ? G ? ? B 2 2 A ? ? B ? ? G D A ? ? 2 C ? ? E B ? ? D ? ? 2 C 2 C E ? ? 2 D - - přes který uzel A ? ? F 2 F E 2 E do kterého uzlu B ? ? A 2 A F G - - F ? ? C ? ? B ? ? G ? ? D 2 D C ? ? E - - D ? ? F 2 F E 2 E G ? ? F - - za jakou cenu G 2 G
Příklad - stav po 1. kroku A C 3 6 B 2 2 G D 2 E 2 2 F přes který uzel 9 B A - - B - - B 6 B B 3 B C 6 C C - - C 9 B A D 8 C D 2 D D ? ? E ? ? C E 4 D E 4 F 3 F 5 A F ? ? F 2 F 6 G ? ? G ? ? G 4 F B 2 2 A 4 F B ? ? G D A ? ? 2 C ? ? E B 8 C D ? ? 2 C 2 C E 4 F 2 D - - přes který uzel A 4 F F 2 F E 2 E do kterého uzlu B ? ? A 2 A F G - - F 4 E C 4 D B 5 A G ? ? D 2 D C ? ? E - - D 4 E F 2 F E 2 E G 4 F F - - G 2 G
Příklad - stav po 4. kroku A C 3 6 B 2 2 G D 2 E 2 2 F přes který uzel 8 D A - - B - - B 6 B B 3 B C 6 C C - - C 8 B A D 8 C D 2 D D 6 F E 7 A C E 4 D E 4 F 3 F 5 A F 6 D F 2 F 6 G 7 A G 8 D G 4 F B 2 2 A 4 F B 7 F G D A 6 E 2 C 8 F E B 8 C D 6 F 2 C 2 C E 4 F 2 D - - přes který uzel A 4 F F 2 F E 2 E do kterého uzlu B 7 F A 2 A F G - - F 4 E C 4 D B 5 A G 6 E D 2 D C 6 E E - - D 4 E F 2 F E 2 E G 4 F F - - G 2 G
Nevýhody algoritmů vector-distance objemy přenášených dat (pro potřeby aktualizace) jsou hodně velké není to vhodné pro opravdu velké sítě problémy jsou i s konvergencí: „dobré zprávy“ se šíří rychle to, že někde existuje kratší cesta „špatné zprávy“ se šíří pomalu to, že někde přestala být cesta průchodná problém „count-to-infinity“ hodnota cesty přes neprůchodnou cestu se zvyšuje v každém kroku o 1 trvá to hodně dlouho, než se hodnota zvýší tak aby signalizovala neprůchodnost
Algoritmy „link-state“ idea: každý uzel monitoruje průchodnost spojení ke svým sousedům tuto informaci distribuuje po celé síti každý uzel má úplnou informaci o topologii celé sítě a o průchodnosti všech spojů každý uzel si sám počítá nejkratší cesty modernější, více stabilní než algoritmy vector-distance objemy režijních dat, které je třeba šířit po síti, jsou menší O(k*n), kde n je počet uzlů, k počet sousedů každého uzlu příklady: protokol OSPF, IS-IS (OSI)
Monitorování sousedů po zapnutí si každý uzel zjistí jaké má přímé sousedy pomocí paketů protokolu HELLO uzel průběžně zjišťuje dobu odezvy svých sousedů posílá jim ECHO pakety, které se ihned vrací každý uzel pravidelně sestavuje paket, do kterého dá „naměřené“ hodnoty odezvy svých přímých sousedů (ohodnocení hran) tento paket rozešle všem ostatním uzlům prostřednictvím záplavového směrování pakety generuje např. jen při změně !!!
Výpočet cest když směrovač „naakumuluje“ zprávy o stavu všech spojů v síti, má k dispozici vše potřebné pro výpočet cest zná úplnou topologii sítě výpočet nejkratších cest probíhá lokálně, podle Dijkstrova algoritmu v praxi jsou algoritmy „link-state“ složitější kvůli lepší konvergenci kvůli robustnosti
Hierarchické směrování ani algoritmy „link-state“ nejsou vhodné pro opravdu velké sítě řešení: rozdělit velkou síť na hierarchicky uspořádané části (oblasti), i vícepatrově v rámci oblastí zachovat „úplné“ směrování do každé části vymezit jeden vstupní bod mezi částmi směrovat vždy přes jednotné vstupní body