5.3.2.2. Classless Inter-Domain Routing (CIDR)

Az Internet rohamos növekedésével két súlyos probléma merült fel. Az egyik a címtér kimerülése, nevezetesen az, hogy az új hálózatoknak már nem jut hálózati cím; a másik pedig a címben levô két hierarchia szint elégtelensége. Az, hogy a 32 bites cím mindössze két részre van felosztva (hálózat és állomás cím), azt eredményezi, hogy a route-olási hierarchia tetején levô, a kontinensek közötti forgalmat lebonyolító, EGP protokollokat futtató router-eknek minden hálózat hollétérôl tudni kell legalább annyit, hogy merre kell az adott csomagot továbbítani. Ennek eredményeképp óriási méretû routing táblázatokra van szükség, ami lassítja a bennük való keresést és drágítja a berendezéseket. Emellett az Internet növekedésének eredményeképp a táblázatok mérete 1995 környékén 9 havonta duplázódott, míg a memóriatechnológia csupán 24 havonta, a telítôdés elkerülhetetlen. [15].

Egy egyedi IP cím kiosztása viszont önmagában nem garantálja a konnektivitást, csak akkor, ha a mi hálózatunkról szóló információt a router-ek elterjesztik az egész világon. Ha ez nem történik meg, rólunk senki se hall és hozzánk nem lehet csomagot küldeni. Így mindenképpen fontos, hogy minden hálózatot terjesszünk. Ez azonban a trendek folytatódása esetén nem fog menni.

Erre a problémára ad megoldást a CIDR [RFC1518] [RFC1519]. A módszer lényege, hogy a router-ekben egy bejegyzés nem csupán egy, hanem több hálózat felé való továbbítási irányt írjon le. Azaz a célpontok ne egyes hálózatok, hanem hálózatok csoportjai legyenek. Így az azonos irányba esô hálózatok egy bejegyzésben megjeleníthetôek és nem kell mindegyikhez külön-külön letárolni a továbbítási irányt.

A jelenlegi Internet címzési rendszerben ez a legegyszerûbben a következôképpen oldható meg. A célpontok egy IP címbôl és egy maszkból álljanak, ahol a maszk a cím néhány felsô bitjén egyes, az alsó biteken nulla. Ezt a megoldást eddig a subnet-ek kijelölésére használták, ott a maszk hosszabb volt, mint a hálózati cím. Tehát a 152.66.0.0 B osztályú hálózat subnet maszkjai 16 bitnél több egyest tartalmaztak. A subnet maszkokkal az adott hálózatot tudtuk tovább darabolni. Minden hálózatban egy maszk létezett, az összes subnet egyezô méretû volt.

A CIDR esetén viszont a maszkok folyamatosak és rövidebbek, mint a hálózati cím, így több hálózatot tudunk egy IP cím + maszk párossal leírni. Például a 152.64.0.0 cím a 255.252.0.0 maszkkal illik a 152.64.0.0, a 152.65.0.0, a 152.66.0.0 és a 152.67.0.0 B osztályú hálózatokra. Ha ezek felé a hálózatok felé ugyanarra vezet az út, akkor ezt 4 helyett egy bejegyzéssel is elintézhetjük. Ez a cím aggregáció (address aggregation).

Ha a célpontokat IP cím + maszk párosával írjuk le, nemcsak aggregálni tudunk, de a subnet-ek is változó hosszúságúak lehetnek, nem kell már az egész hálózaton belül egy fix maszk, hanem miden subnet-nek saját maszkja lehet. Természetesen a subnet címeket úgy kell kiosztani, hogy a csomagokban lévô címbôl egyértelmûen kiderüljön, melyik subnet-re szól a csomag. Tehát, ha van egy 152.66.19.0, 255.255.255.0 subnet-ünk, akkor 152.66.19.128, 255.255.255.128 subnet-ünk már nem lehet, hiszen mindkettôben létezhet 152.66.19.129 címû állomás. A módszerrel egy állomást is könnyen feltüntethetünk a routing táblázatban, az ilyen célpont maszkja 255.255.255.255.

A CIDR elnevezés onnan ered, hogy ilyen módon tulajdonképpen az eredeti IP címstruktúra bomlik fel, egy hálózat mostantól nem feltétlen egy A, B vagy C osztályú címet kap, hanem egy cím-prefixet, azaz egy IP címet, amibôl valahány bit már foglalt, a többi pedig a hálózaton belül azonosítja az állomásokat (ezt választja szét a maszk). Ez teljesen megfelel az Internetben eluralkodó címosztási gyakorlatnak, az utóbbi idôben ugyanis a B osztály kimerülése miatt a kisebb hálózatok inkább C osztályú címek egy blokkját kapták. Valójában ezek a C osztályú címek összefoghatók egy prefixszé is, aminek hossza rövidebb, mint a C osztályú hálózati cím (24 bit).

Minthogy a C osztály is elfogy egy idô után, az A osztályban lévô, mintegy 25%-nyi kihasználatlan címteret is ki lehet osztani, természetesen egy A osztályú hálózat címeit több szervezet között felosztva. Ekkor már nemcsak az EGP, de az IGP protokollnak is „osztálymentesnek" (classless) kell lennie (Classless Intra-domain Routing Protocol, CIRP). [16] A megoldás melléktermékként a címtér gazdaságosabb kihasználását is eredményezi, egy B vagy A osztályú címen több közepes méretû szervezet osztozhat.

A CIDR bevezetése olyan sürgetô volt, hogy minden nézeteltérést félretéve az egész Internet közösségben egycsapásra alkalmazásra került. Ma minden jelentôs hálózati gerincen CIDR protokoll (BGP4) mûködik. Ennek eredményeképp például az AlterNet-bôl 1995-ben kifele hirdetett 3194 útvonalból a CIDR bevezetése után csupán 799 maradt, ez a fajta javulás tipikusnak mondható [15].

Természetesen az aggregáció csak akkor mûködik, ha a fizikailag „egymás melletti" hálózatok címei is szomszédosak. Ez a mai Internetben egyáltalán nem általános, csupán az utóbbi idôben került a figyelem középpontjába a címek könnyen aggregálható módon való szétosztása. A további növekedés érdekében néhol jelentôs átszámozásokra lehet szükség.

A CIDR feloldotta az IP címek fix belsô struktúráját. Nincs többé hálózati cím, csak prefixek vannak. Egy Internet szolgáltató CIDR használata esetén, ha címteret kér, egy prefixet kap, például 20 bit hosszút, amibôl ô az általa kiszolgált hálózatoknak hosszabb prefixeket ad. A nagy hálózatoknak csak kicsivel hosszabbat, a kis hálózatoknak jóval hosszabbat. A hálózatok saját magukon belül tetszôlegesen tovább delegálhatják a címteret az egyes subnet-eknek, vagy bármilyen más módon oszthatják szét a rájuk esô (a prefixben egyezô) címeket. A szolgáltató pedig mindössze egyetlen prefixet terjeszt a többi szolgáltató felé.

Az Internetben az elôbbi bekezdésben felvázolt megoldás soká fog elterjedni. Egyrészt ez minden routing protokoll CIDR mivoltát feltételezi, a legelterjedtebb IGP, a RIP pedig nagyon nem az. Még az OSPF és az EIGRP esetén is módosításokra van szükség, pedig ott a célpontok már IP cím + maszk alakúak. Az IP új generációjának címstruktúrája azonban már teljesen CIDR alapokon áll.

A CIDR azonban problémákat is felvet. Egyrészt használata esetén a routing protokollban nem lehetséges a költségekkel való számolás, hiszen több, eltérô elérési költségû hálózat adatait aggregáljuk egy bejegyzéssé. Másrészt problémák adódnak az ún. multi-homed szervezetek esetén, melyek több ponton kapcsolódnak a hálózat többi részére. Ezt most részletesebben is megvizsgáljuk.

Tekintsünk egy szervezetet, amely kapott egy prefixet, saját hálózatának. Ennek a hálózatnak több kijárata is van, mindegyik kijáraton csupán egy prefixet terjeszt, hiszen összes belsô címe ebbe az egyetlen prefixbe aggregálható.

41. ábra. A címaggregáció

Ám mi van akkor, ha a hálózat kettészakad? Például az F router szeparálódik a kettôs gyûrû hibája miatt. Ekkor ha az A és B router-ek továbbra is az aggregált címet terjesztik, akkor a külsô hálózat esetleg feléjük továbbít olyan csomagokat, melyek a területre illetékesek. Azt joggal várhatjuk, hogy a topológiaváltozás esetén a C router nem az aggregált, hanem csak saját (152.66.64.0, 255.255.192.0) prefixét terjessze. Az viszont nem egyértelmû, hogy az A és B router-ek, akik tudnak egymásról, miért ne aggregálhatnák prefixüket egy rövidebb prefixszé, mint eddig. Ebben az esetben a külsô hálózatba kétféle prefix jut (az eddigi rövidebb és a által terjesztett hosszabb) és a területre szóló csomagok címére mindkettô illik. Az ilyen helyzetekben való helyes döntés végett a továbbítás mindig a hosszabb, azaz a pontosabb prefix alapján történik. Így a területre szóló csomagok a C, a többi pedig az A vagy B router-ekhez érkezik, lévén azokra nincs pontosabban illeszkedô prefix.

Célszerû tehát mindhárom router-nek mindkét prefixet terjesztenie, mind a rövid, az egész hálózatra illeszkedôt, mind a hosszabb, csak a saját területére illeszkedôt. Ez esetben mindegyikhez a saját területére érkezô csomagok fognak érkezni, azonban a teljes hálózat prefixének terjesztésével azt is jelzik, hogy rajtuk keresztül elérhetô a másik két terület is.

A CIDR címek kiosztása akkor hatékony, ha minden szervezet szolgáltatója címterének egy részét kapja, mert akkor a szolgáltató egy prefixbe foghatja össze összes ügyfelének címterét. Vegyünk most egy nagy nemzetközi szervezetet (NSZ), mely 6 szolgáltatóhoz kapcsolódik, háromhoz az USA-ban, kettôhöz Európában és egyhez a távol-keleten. Hálózata belül teljes konnektivitással rendelkezik. Vajon milyen prefixet adjunk ennek a hálózatnak?

1a. Minden szolgáltatótól független, saját prefixet. Ennek eredményeképp a világ összes gerinchálózatában terjesztôdni fog NSZ prefixe, még azokban is, melyekhez nem kapcsolódik. Ez csupán kevés ilyen szervezet esetén elfogadható.

1b. Ha a kontinentális címtérbôl osztunk ki prefixet (mondjuk az Észak-Amerikaiból), a probléma egy részét megoldottuk, hiszen az Észak-Amerikán kívül minden hálózatban egy aggregált Észak-Amerika bejegyzés szerepel majd csak. Észak-Amerikán belül azonban továbbra is külön bejegyzés szükséges az NSZ részére. Ezen felül azonban egy második probléma is fellép. Például egy a távol-keleten az NSZ távol-keleti részlegének feladott csomag elutazik Észak-Amerikába (a preixet onnan terjesztik), ott belép az NSZ hálózatába és azon belül továbbítódik vissza a távol-keletre.

1c. Ha az egyik szolgáltató címterébôl adunk prefixet, mondjuk az egyik USA szolgáltatóéból, akkor az elsô problémát megoldottuk: nem kell külön bejegyzés az NSZ-nek (még az USA-n belül sem), de a neki küldött csomagok kizárólag azon az egy szolgáltatón keresztül juthatnak el hozzá. Ezen csak akkor segíthetünk, ha a többi szolgáltató is elvállalja az NSZ prefixének terjesztését, ami viszont visszavezet az elsô problémához.

2. Az NSZ esetleg kaphat 6 különbözô prefixet, egyet minden szolgáltatójától, melyeket az adott szolgáltatóhoz közeli telephelyei között oszthat szét. Ez esetben az Európába címzett csomagok a szolgáltatók között eljutnak az Európai szolgáltatóhoz és ott, a célponthoz közel lépnek be az NSZ hálózatába. Ez optimális továbbítást jelent, de a csomag továbbításának költségeit javarészt a szolgáltatók állják. Az 1a megoldásban, a csomag a feladóhoz legközelebbi kapcsolaton juthatott az NSZ hálózatába és azon belül tett meg nagy távolságokat, a továbbítás költségei tehát nem a szolgáltatókat terhelték, nekik inkább a prefix terjesztését kell végezniük. A 2. megoldás esetén ezenkívül, ha valamelyik szolgáltatóval megszakad a kapcsolat, az NSZ hálózatának azon része kívülrôl elérhetetlen lesz, pedig a belsô konnektivitás megvan.

Eddig az Internet címek kiosztásának kevés köze volt a hálózat topológiájához. Ez ugyan sok információ tárolását tette szükségessé a router-ekben, de nagyfokú rugalmasságot eredményezett. Ha egy szervezet eddigi szolgáltatója nem felelt meg a szervezet igényeinek, egyszerûen másik szolgáltatónál fizetett elô. Ennek a mûveletnek pedig semmiféle hatása nem volt a belsô címeire, azok „tulajdonosa" a szervezet.

Abban az esetben, ha a szolgáltató címterébôl kap az elôfizetô, tulajdonképpen nem ô, hanem a szolgáltató birtokolja a címteret, hogy aggregálva terjeszthesse a rajta keresztül elérhetô célpontokat. Ez nagyban megköti az elôfizetôk kezét, akik csak egy átszámozással együtt válthatnak szolgáltatót, vagy pedig címfordító gateway-eket kell alkalmazniuk. Az átszámozást ­jó esetben­ a DHCP és a DNS adatbázisokban elegendô megtenni és minden állomást újraindítani. Az újraindítás azonban sok helyen (például bank) nem tehetô meg, márpedig, kevés rendszer képes az IP cím cseréjére mûködés közben. Legalább a TCP kapcsolatok azonban akkor is elvesznek, hisz azok részben a cím alapján azonosítódnak. Éppen ezért az új IP számos a címek ideiglenes kölcsönzésére, visszavonására, esetleg egy állomásnak több cím együttes kiosztására vonatkozó eljárást tartalmaz.

A fenti megfontolásokon kívül számos politikai kérdés is fölmerül a címosztással kapcsolatban, melyekre meghaladják ezen dolgozat kereteit. Mi történik például, ha egy aggregált preifx által lefedett területek egy részének forgalmát ki kívánjuk szolgálni, más részének forgalmát pedig nem? Hogyan bontjuk ekkor szét a prefixet két bejegyzéssé, mikor mi csak egyet kaptunk? A fenti okfejtéssel csupán érzékeltetni szerettük volna, hogy a CIDR bár létkérdés, az aggregáció miatt sok olyan információt elfed, amik pedig hasznosak lennének a route-olás során.