Számítógépe Hálózatok 00 9. Hálózati réteg Packet orwarding, Link-State-Routing, itance- Vector-Routing hálózati réteg Lokáli hálózatokat özeköthetünk hub-okkal, witch-ekkel, bridgeekkel az alaconyabb retegekben Hub(fizikai réteg): kollíziók záma nagyon gyoran növekzik Switch (datkapcolati réteg): z útvonalakról a forgalom megfigyeléével győjt információt Imeretlen célcím eetén a broadcat problémákat okoz z Internet kb.0 Mio. lokáli hálózatot tartalmaz... Nagy hálózatokban a comagok továbbítáához útvonal információk zükégeek. hálózati réteg feladatai z útvonal információk felépítée (route detection) comagok továbbítáa (packet forwarding) z Internet-Protokoll lényegében hálózati réteg protokoll
Routing-tábla é comag továbbítá (packet forwarding) IP-Routing-tábla Tartalmazza cél címekhez (detination) a következı zámítógép (gateway) címét a hozzá vezetı úton cél meghatározhat egy zámítógépet vagy egy egéz ub-net-et zen kívül tartalmaz egy default-gateway-t Packet forwarding (korábban packet routing-nak nevezték) IP comag (datagram) tartalmazza a küldı IP címét é a cél IP címét mikor egy IP comag megérkezik egy routerhez: Ha a cél IP cím = aját IP cím, akkor a comagot kizállítja Ha a cél IP cím a routing-táblában van, továbbítja a megadott gateway-hez Ha a cél IP-ubnet a routing-táblában van, továbbítja a megadott gatewaynek gyébként továbbítja a default-gateway-nek Internet Protocol IP z adatok a küldıtıl a cél-állomáig IP-comagokban kerülnek átvitelre comagok fejléce tartalmazza a cél IP-címét IPv: it-címek IPv: 8 it-címek 0 octet 0 8 Ver HL ToS Total Length Identification - M ragment Offet TTL Protocol Source ddre etination ddre Option (max. 0 octet) Header ata IPv comag
omag továbbítá az Internet Protokollban IP-comag (datagram) tartalmazza TTL (Time-to-Live): hop-ok zámát Küldı IP címét él IP címét gy comag kezelée a routerben TTL = TTL - Ha TTL 0 akkor packet-forwarding a routing-tábla alapján Ha TTL = 0 vagy probléma lép fel a packet-forwarding-nél: Töröljük a comagot Ha a comag nem IMP-comag (Internet ontrol Meage Protocol), akkor Küldjünk IMP-comagot (TTL equal 0 during tranit), melyben Küldı IP címe = aktuáli IP cím él IP címe = az eredeti küldı IP címe 0 8 Ver HL ToS Total Length Identification - M ragment Offet TTL Protocol Source ddre etination ddre Option (max. 0 octet) ata Statiku é dinamiku routing orwarding: omagok továbbítáa Routing: Útvonalak meghatározáa, azaz routing-tábla felépítée (rute detection) Statiku routing routing-táblát manuálian építjük fel Ki é tatiku LN-ok eetén értelme inamiku routing routing-tábla felépítée é aktualizáláa automatizált entalizált algoritmu, pl. Link State gy/minden állomának imerni kell minden információt ecentráli algoritmu, pl. itance Vector minden routeren lokálian dolgozik, lokáli információkkal
Legrövidebb utak fája ingle ource hortet path dott: gy irányított gráf G = (V,), w : R 0 nem negatív élúlyokkal Kezdı comópont V Legyen P útvonal úlya w(p) := e P w(e) az élek úlyainak özege P-ben u é v távolága G-ben, u,v V, egy legrövidebb út úlya G-ben u é v között : d(u,v) := min{ w(p) : P egy út u-tól v-hez G-ben}. Kereük: egy legrövidebb utat kezdı comóponttól minden má v V \ {} comóponthoz G-ben eltezük, hogy minden v V \ {} elérhetı -bıl. Nem elérhetı comóponthoz nem létezhet legrövidebb út em Megoldá: gy fa, melynek gyökere é minden v V \ {} comóponthoz tartalmaz egy legrövidebb utat -tıl v-hez G-ben 7 ijktra algoritmua Ötlet: legrövidebb utakat hozuk zerint növekvı orrendben zámítjuk ki. Minden v V comóponthoz kizámítjuk a következı értékeket: d[v]: egy legrövidebb út hoza -tıl v-hez, pred[v]: a v-t megelızı comópont egy legrövidebb úton -tıl v-hez. z algoritmu végrehajtáa után az élhalmaz { (pred[v],v) : v V \ {} } megadja egy legrövidebb utak fáját gyökérrel G-ben. gy v comópontot kéz -nek jelölünk: ready[v] = true, ha már meghatároztunk egy legrövidebb utat -tıl v-hez (röv. legrövidebb -v utat). nem kéz comópontok halmazát, amelyeket egy kéz comópontból egy éllel elérünk, horizont-nak nevezzük. ource node 0 ready horizon current ditance d[v] 8
ijktra algoritmua Invariánok: Minden horizont beli comópontot egy Q priority-queue-ban tárolunk, úgy hogy minden v Q comópontra a következı érvénye: d[v] egy legrövidebb -v út hoza mindazon utak között, melyek v-n kívül cak kéz comópontokat tartalmaznak, pred[v] a v-t megelızı comópont egy ilyen úton, v prioritáa Q-ban d[v] Inicializálá d[]:=0, ready[]:=true, minden v zomzédjára: d[v]:=w(,v), pred[v]:=, ready[v]:=fale, Q.Inert(v,d[v] ). Minden v V \ {} comópontra: d[v]:=, ready[v]:=fale. 0 9 ijktra algoritmua z invariánok megırzée egy iteráció után Minden lépében egy új comópont lez kéz, egy comópont v minimáli prioritáal. d[v] már tartalmazza a helye értéket. Mivel v minimáli prioritáú comópont, minden olyan -v út úlya, amely nem kéz comópontot i tartalmaz, legalább olyan nagy, mint annak az útnak a hoza, amit már megtaláltunk a cak kéz comópontokat tartalmazó utak között. Legyen dj[v] := { u : (v,u) }, v V, a v-hez adjacen comópontok halmaza minden u dj[v], ha u Q, meg kell vizgálni, hogy -tıl u-hoz direkt v-bıl egy rövidebb út vezet-e, mint azok az utak, amik cak v-tıl különbözı kéz comópontot tartalmaznak. Ha igen, akkor aktualizáljuk pred[u] := v é d[u] := d[v] + w(v,u), cökkentük u prioritáát Q-ban. minden u dj[v], ha u Q é u nem kéz : pred[u] := v, d[u] := d[v] + w(v,u), u-t be kell zúrni Q-ba d[u] prioritáal. 0 0
ijktra algoritmua ijktra(g,,w) Output: egy legrövidebb utak fája T=(V, ) G-ben gyökérrel 0 := Ø; 0 ready[] := true; 0 ready[v] := fale; v V \ {}; 0 d[] := 0; 0 d[v] :=; v V \ {}; 0 priority_queue Q; 07 forall v dj[] do 08 pred[v] := ; 09 d[v] := w(,v); 0 Q.Inert(v,d[v]); od while Q Ø do v := Q.eleteMin(); := U {(pred[v],v)}; ready[v] := true; forall u dj[v] do 7 if u Q and d[v] + w(v,u) < d[u]) then 8 pred[u] := v; 9 d[u] := d[v] + w(v,u); 0 Q.ecreaePriority(u,d[u]); ele if u Q and not ready[u] then pred[u] := v; d[u] := d[v] + w(v,u); Q.Inert(u,d[u]); fi od 7 od ijktra algoritmua utái idı (ibonacci Heap-pel): # Q.Inert(): n (comópontonként ) -- O(n) idı # Q.eleteMin(): n (comópontonként ) -- O(n log n) idı # Q.ecreaePriority(): m (élenként ) -- O(m) idı # tezt a 7. é. orban: m (élenként ) -- O(m) idı Inicializálá: O(n) idı Özeen: O(n log n + m) idı Tárigény: O(n+m)
ijktra: Példa zimmetrikuan irányított élek ellman-ord algoritmu Negatív élúlyok eetén ijktra algoritmua nem mőködik ellman-ord algoritmu (97) megoldja a problémát O( V ) idı alatt. inamiku programozá: a k-adik iteráció után, k=,, V -, minden v V: ha d[v], akkor d[v] egy -v út P v úlya é d[v] nem nagyobb mint egy legrövidebb -v út úlya, amely k élt tartalmaz pred[v] = ha d[v] =, egyébként pedig (pred[v],v) az utoló él a P v úton ellman-ord(g,,w) 0 forall v V do 0 d[v] := ; pred[v] := 0 d[] := 0 0 for k := to V do 0 forall (u,v) do 0 if d[u] + w(u,v) < d[v] then 07 d[v] := d[u] + w(u,v) 08 pred[v] := u 09 forall (u,v) do 0 if d[u] + w(u,v) < d[v] then error negatív úlyú ciklut találtunk"
ellman-ord: Példa ügg az élek feldolgozáának orrendjétıl - - 7 - - - - itance Vector Routing Protokoll ellman-ord algoritmunak az eloztott változatát haználja, azaz minden comópont cak a direkt zomzédjaival kommunikál zinkron mőködé comópontoknak nem ugyanabban a körben kell információkat cerélniük Minden router nyilvántart egy táblát minden lehetége célhoz egy bejegyzéel (ditance vector) egy bejegyzé tartalmazza a legrövidebb út (becült) költégét (delay, vagy #hop) a következı comópont címét ezen az úton (next hop) minden router imeri a költéget a direkt zomzédaihoz Periodikuan elküldi a tábláját minden zomzédjának mikor egy router megkapja a zomzéd tábláját aktualizálja a aját tábláját Initial ditance vector of cot next hop - - - vector after received vector cot next hop - Initial ditance vector of cot next hop - - final ditance vector cot next hop
ount to Infinity Probléma Jó hír gyoran terjed Új kapcolat létrejöttekor gyoran aktualizálódnak a táblák itance vector of cot next hop - itance table of cot next hop itance vector of Röviddel utánna itance table of cot next hop cot next hop Roz hír laan terjed Kapcolat kieik zomzédok felváltva növelik a távolágokat ount to Infinity Probléma é nem tudja, hogy nem elérhetı (amíg a távolág el nem ér egy limitet, amit -nek tekintenek) ikluok keletkezhetnek itance table of 7 cot next hop cot next hop cot next hop 7 itance table of cot next hop cot next hop cot next hop 9 7 ount to Infinity Probléma Módoítáok a itance-vector routing protokollokban a ping-pong-cikluokat (count to infinity) megakadályozáához plit horizon: olyan utakat nem küld viza a comópont annak a zomzédjának, amit tıle tanult a példában nem küldi a (,,) ornak megfelelı utat viza -nek, mert azt -tıl kellett tanulnia plit horizon with poion revere: negatív információt küld viza pl. (,) utat küldi viza -nek Mindkét módzer cak két comópontból álló ciklut kerül el itance table of cot next hop itance table of cot next hop - 8
Link State Protokoll Minden Link State router tárolja a hálózat topológiáját egy nem-eloztott legrövidebb utak algoritmut haznál routerek Link State Packet (LSP) által cerélnek ki információkat LSP tartalmazza az LSP-t létrehozó r router IP címét a költégét r minden direkt zomzédjához orozatzámot (SQNO) TTL (time to live) mezıt Megbízható eláraztá (Reliable looding) minden comópont aktuáli LSP-jét tároljuk továbbítjuk az LSP-ket minden zomzédo comóponthoz azon comópont kivételével, amely az LSP-t felénk továbbította továbbítánál cökkentjük a TTL értékét periodikuan létrehozunk egy új aját LSP-t növekvı SQNO-val 9