Telekommunikációs hálózatok > Előadás anyag > Hálózati réteg
A hálózati réteg feladatai a csomagtovábbítás, útvonalválasztás, csomagütemezés- és fragmentálás, pufferkezelés.
A hálózati réteg azon része, amely azért a döntésért felelős, hogy a bejövő
csomagokat melyik kimeneten
kerüljenek továbbításra. Két része van: a forgalomirányító táblázat feltöltése és karbantartása,
illetve maga a továbbítás lépése, azaz megnézzük a célállomás címét, majd arra küldjük tovább a
csomagot, amerre ő van.
Fajtái:
Ha I router J-n keresztül éri el optimálisan K-t, akkor J router K-t ugyan azon az útvonalon át éri el optimálisan. A forrásokból egy célba (gyökérbe) tartó optimális utak fáját nyelőfának nevezzük.
Minden router egy táblázatot tart nyilván. Minden célhoz a megfelelő vonalat eltároljuk, amerre küldenünk kell majd tovább a csomagot. A szomszédoktól kapunk információ alapján frissítjük a routing tálbázatokat. Minden állomás periodikusan elküldi a forgalomirányítótábláját a szomszédjainak, akik ezek alapján új táblázatokat állíthatnak elő.
Elosztott Bellman-Ford algoritmus:
A routerek folyamatosan küldözgetik a szomszédjaiknak a távolságvektoraikat (ebben csak a cél és a költség van, a next hop nincs), majd ha valakitől kaptunk kisebb összköltséggel elérhető utat valahova, akkor frissítjük a saját tálvolságvektorunkat a forgalomirányítótáblában és ezentúl őfelé fogjuk küldeni a csomagokat. Ekkor frissíteni kell a belőle elérhető utakat is.
A végtelenig számolás problémája (count to infinity): ha 3 router van sorban és a bal link kiesik, akkor a középső router a jobb router felé küldené a csomagot, hogy eljusson a balba, mivel a jobb még nem tudja, hogy a bal link már nem megy, ilyenkor oda-vissza fog pattogni köztük a csomag és felül is íródik a forgalomirányítótábla is. Egyre csak nőne a költség a végtelenségig. Általában van egy konstans, amit ha ez elér, akkor onnantól úgy vesszük, hogy nem elérhető a hálózat. A "jó hír" gyorsan terjed, de a "rossz hír" lassan terjed.
Erre megoldás lehet, hogy a split horizon with poisoned reverse módszere, azaz egy útvonal next hopjának nem fogjuk átküldeni azokat az irányvektorokat, aminek ő a next hopja.
Mivel a távolságvektor alapú algoritmusok lassúak, ezért kellett egy gyorsabb módszer. A kapcsolatállapot alapú forgalomirányító algoritmusok az eltérő sávszélességeket fogják figyelembe venni.
Általános algoritmusa:
Két implementációja létezik. Az OSPF és az IS-IS.
OSPF:
Cégek számára javasolt. Jobban konfigurálható, mint az IS-IS. IPv4 címekkel dolgozik, de az OSPFv3 már IPv6-os címekkel dolgozik. Átfedő területek köré szerveződik (area). Area 0 lesz a magja ezeknek a területeknek, ő határozza meg a területek közötti kapcsolatot. Minden egyes területen külön OSPF fut.
IS-IS:
ISP-k (internet szolgáltatók) használják. Több eszközt támogat. Nem IP-t használ küldéshez. 2-szintű hierarchia jellemzi, ahol a 2. szint a gerinchálózat, az 1. pedig a rá csatlakozó hálózatok.
Egy címzett van. Két végpont közötti üzenetküldés. A forrásnak és a célnak is 1-1 egyedi IPv4 vagy IPv6-os címe van.
Több féleképpen lehet megvalósítani:
Egy csoportnak szeretnénk küldeni, amely pl. 1000 állomásból áll. Egyszer küldjük el és a routeretknél mindig lemásolódik a csomag (sokszorosítjuk). Szükség van a csoportkezelő műveletekre: létrehozás, megszüntetés, csatlakozás, leválás.
A hálózatok növekedésével a forgalomirányító táblák is nőnek, ezért kisebb hálózatokra bontjuk a hálózatot. A routerek csak annyit tudnak, hogy egy tartományhoz melyik irányba kell menni és nem azt, hogy az ottani egyes hálózatoknak szánt csomagokat hova kell külön-külön irányítani.
Míg a MAC címek nem szervezhetők hierarchiába, az IP címek igen. Az IP címek egy
hálózati és hoszt
azonosítóból állnak. IPv4-es címek 4 byte-ból állnak (32 bit). Egy IP cím oktetjeit pontokkal
választjuk el. Régebben osztályokba sorolták őket.
Osztályok:
Alhálózatok:
A hosztok a külvilág számára ugyanazzal a hálózati címmel látszódnak, de belső felhasználás szempontjából több részre bomlik. Az egyes alhálózatok azonosítása alhálózati maszkkal történik. Ez bonyolítja a forgalomirányító táblát, mert el kell tárolni az IP-maszk párost.
Így viszont gyorsan elfogytak az IP címek, ezért bevezették az osztályok nélküli forgalomirányítást (CIDR). A forgalomirányítás bonyolódik, mert egy 32 bites maszkkal egészül ki minden bejegyzés. Ha érkezik egy új csomag, akkor kimaszkoljuk a célcímet az alhálózati maszkkal. Ha több hálózatra is illeszkedik a csomag célcíme, akkor a leghosszabb illeszkedés felé küldjük tovább.
CIDR bejegyzés aggregálása:
Ha ugyanaz a next hop, akkor az első X biten megegyezik a hálózat címe. Ezeket a bejegyzéseket össze lehet tömöríteni egy bejegyzéssé másik maszkkal.
A NAT hálózati címfordítást csinál. A gyorsan fogyó IPv4-es címek miatt hozták
létre. A lényege, hogy van
egy publikus IP címe a routerünknek és a belső hálózaton az eszközök privát IP címet kapnak. Amikor
küldünk egy csomagot a routerünk a lokális IP címet átírja a globális IP címünkre, így kifelé minden
eszközünk ugyanazon IP cím alatt látszódik, tehát egy IPv4 cím mögé lehetne rejteni az eszközöket. A
bejövő forgalmat viszont el kell dönteni, hogy melyik eszköz kapja meg. Erre használja a port mezőt
a
TCP és az UDP. Amikor jön egy csomag a megfelelő portra irányítja. A NAT Box kezel egy táblázatot,
amiben írja a portot és a privát IP címet innen fogja tudni, hogy kinek irányítsa a csomagot.
Ilyen privát IP tartományok:
Minden hálózatnak megvan a Maximum Transmission Unitja (MTU), ezek különbözőek lehetnek. Ez egy probléma, mert ha nagyobb a csomag, mint az MTU a hálózatban, akkor darabolni kell a csomagot. Ilyenkor több csomagnak kell átmennie, viszont ha valamelyik elveszik, akkor az egészet újra kell majd küldeni. A darabokat a végpontnak kell összeállítania. Csak darabolni lehet, összefűzni nem.
Az IP fejlécben az azonosító arra szolgál, hogy megmondja melyik csomaghoz tartozik a darab. A More Fragments (MF) flag ilyenkor 1, kivéve az utolsó darabnak, aminek 0. A darabeltolás a darab helyének első bájtját mutatja.
Az IP fragmentáció kihívásai:
Amíg nem jött meg minden darab, addig tárolni kell a darabokat, ez memóriaköltséges. Az is lehet, hogy nem sorrendben jönnek meg a darabok, vagy lehet, hogy duplikátumok jelennek meg vagy csak hiányoznak darabok.
Minden hálózat maga választja meg az MTU-t és a routerek követik a legjobb szándék (best effort) elvét: bárki eldobhat darabokat és nem értesítjük a küldőt a hibáról.
MTU felderítő protokoll:
Egy útvonal mentén a "legszűkebb keresztmetszet" / legkisebb MTU-t próbáljuk kitalálni. Kiküldünk egy csomagot Don't Fragment flag-el. Így ha egy olyan hálózatba ér a csomag, ahol kisebb az MTU, mint a csomag mérete, akkor eldobja a router a csomagot. Ekkor az adott router visszajelez a küldőnek, hogy el lett dobva a csomag. A küldő ekkor egy kisebb csomagot küld. Ha megint eldobásra kerül a csomag, akkor megint csökkenti a csomag méretét és így tovább.
IPv4-nél 2^{32} (4 milliárd) cím volt lehetséges. Ez kevés volt, erre a problémára kitalálták az IPv6-ot, ami 2^{128} címet tud már kezelni. Itt nem 127.0.0.1 a localhost cím, hanem a ::1. Úgy épül fel, hogy 8 hextetet (16 biteket) írunk le ':'-tal elválasztva.
Példa:
2001:0db8:0000:0000:0000:ff00:0042:8329
De a hextetek elejéről kezdő 0-kat elhagyhatjuk:
2001:db8:0:0:0:ff00:42:8329
Illetve a szekvenciálisan következő, hogy egyértelműen visszaállítható legyen a
cím, a csupa 0 hexteteket
elhagyhatjuk:
2001:db8::ff00:42:8329
Az IPv6-os fejléc egyszerűbb, mint az IPv4-es, de nagyobb is (160 helyett 320 bit).
IPv6-nál kezdetben nem volt fragmentáció, mert nem volt előnyös, de később visszahozták. Továbbra sem előnyös, MTU felderítést használunk inkább. Az IPv4-hez képest a checksum-ot elhagyták, mert a TTL csökkentése miatt újra kellett minden routernek számolnia, nincs benne a fejléc hossza sem (IHL), illetve a darabolás hiánya miatt nincs azonosító sem, DF és MF sem.
A forgalomirányító tábla egyszerűsödött, mert nem kell CIDR-t csinálni a sok IP cím miatt.
Forrás routing: Forrás mondja meg, hogy milyen útvonalon menjenek a
csomagjai.
Mobil IP: Az állomások magukkal vihetik az IP címüket másik hálózatba. Ilyenkor értesítjük a
routerünket, hogy egy másik hálózatban vagyunk és ha érkezik egy csomag, akkor a routerünk felénk
irányítja a beérkező csomagokat.
A teljes internetet kéne frissíteni. Viszont sok eszköz cseréje IPv6-ra nagyon költséges lenne.
Tunnel:
Erre a problémára találták ki, hogy használjunk tunneleket. Az olyan helyeken, ahol még nem működik az IPv6, ott az IPv6-os csomagokat becsomagoljuk egy IPv4-es csomagba.
Kapcsolatállapot alapú forgalomirányítással nem lehet az internetet csinálni, mert akkor minden routernek minden routert ismernie kéne. Erre találták ki, hogy az internetnek legyen két szintű hierarchiája: az alsó szinten vannak az autonóm rendszerek, (lokális kis hálózatok, egy operátor van, belül azt csinál amit akar) amik intra-domain routingot használnak pl. Routing Information Protocol (RIP), Open Shortest Path First (OSPF). Az autonóm rendszerek van egy ASN száma (16 bites volt, ma már 32), ami azonosítja őket. A felső szinten van az autonóm rendszereket összekötő rész, ahol inter-domain routing van (Border Gateway Protocol (BGP)).
BGP-t az autonóm rendszerek határain használnak, mert a többi nem elég hatékony. Elrejtik a belső hálózatot, mivel a BGP-t nem érdekli, hogy kinek hogy néz ki a belső hálózata. Az inter-domain routing miatt minden autonóm rendszer (kifelé) ugyanazt a protokollt használja. Az autonóm rendszerek határán helyezkednek el a BGP routerek.
A BGP se nem kapcsolatállapot alapú, se nem távolságvektor alapú protokoll, hanem útvonal vektor alapú protokoll. A politikai jellegű szabályokat kézzel konfigurálják a BGP-routeren.
Kérhetünk olyat is a protokolltól, hogy ne menjen át valamelyik autonóm rendszeren a csomag. Csoportosításuk átmenő forgalom szempontjából:
A BGP routerek TCP-vel kommunikálnak, periodikusan cserélnek ki egymással útvonalvektort. Hasonlóan a távolságvektor alapú protokollokhoz ez is Bellman Fordot használ, itt azt küldik a routerek egymásnak hogy ők milyen útvonalon keresztül routeolnak valahova, ha látjuk, hogy hurok van, azokat nem vesszük figyelembe.
Hot potato routing:
Ha egy autonóm rendszernek továbbítania kell egy csomagot, minél hamarabb próbál tőle megszabadulni.
Cold potato routing:
Ha egy autonóm rendszernek továbbítania kell egy csomagot, azt már a saját hálózatunkon belül próbáljuk, minél közelebb vinni a célhoz (ilyenek pl. a gerinchálózat üzemeltetők)
Útvonal import:
Egy autonóm rendszer kaphat útvonal információkat az ügyfelei autonóm rendszereitől, peerjeitől és a szolgáltatójától is.
Útvonal export:
Azt határozza meg, hogy kinek milyen útvonal információkat árulunk el. Az ügyfeleinknek mindent elárulunk. A peereknek nem áruljuk el a szolgáltatói útvonalakat, mert ezért mi fizettünk. A szolgáltatónak nem áruljuk el a peerjeinket.
IGP és eBGP és iBGP:
IGP-t használnak egy autonóm rendszeren belül, hogy útvonalat válasszanak. Ha egy autonóm rendszernek több BGP routere van, akkor az iBGP ezen routerek közötti BGP kommunikációt valósítja meg az autonóm rendszeren belül. Autonóm rendszerek között eBGP-t használnak.
Feladata a váratlan események jelentése, de lehet vele tesztelni hálózatokat pl. ha elérhetetlen egy cím, akkor egy ilyet kiküldve megtudhatjuk, hogy miért. Visszhangkérés, visszhangválasz, azaz a ping is ezt használja.
Fizikai címet (MAC címet) old fel. Minden hoszton van egy ARP tábla, ami összerendeli az IP címeket a MAC címekkel és számon tartja a korát is a bejegyzésnek, egy idő után elfelejti ezeket.
Ha el akarunk küldeni egy csomagot egy IP címre, de nem tudunk hozzá MAC címet, akkor egy adatszórásos ARP üzenetet küldünk ki, hogy kié az az IP cím. Aki rendelkezik azzal az IP címmel válaszolni fog. Ezután bekerül a kérdező ARP táblájába az információ. Ha a cél IP cím nem a mi hálózatunkban van, akkor a alapértelmezett átjárónak (default gateway) küldjük ki.
Ez egy hálózatkonfigurációs protokoll. Lényege, hogy az IP címeket dinamikusan is kioszthatjuk MAC cím alapján. Egyéb információk is kioszthatók, pl. alapértelmezett átjáró (default gateway), hálózati maszk, dns szerver címe, domain név. Lesz egy lease time / bérleti időtartam: eddig kapjuk meg az IP címet, de előbb is vissza lehet adni, illetve a lejárati idő közeledtével meg is lehet hosszabbítani.
Ha pl. egy cég hálózatát használnánk otthonról, akkor ez lehetséges bérelt vonallal, de ez nagyon drága és nem teljesen biztonságos. Helyette használhatunk VPN-t, ami egy virtuális vonal, ami biztonságos. Ez alagútak (tunnel) segítségével kivitelezhető. A két tunnel végpontnak van publikus IP címe. Ők az IP csomagokat egy másik IP csomagba pakolják bele és szedik ki onnan. Ez még nem elég, mert bárki, akin átmegy a csomag, belehallgathat. Ezért kell az IPSEC, ami a biztonságot kulcsokkal és authentikációval oldja meg.