4.8. Kapcsolás az adatkapcsolati rétegben

Sok szervezet több LAN-nal is rendelkezik, és szeretnék ezeket összekötni. Nem lenne egyszerűbb, ha a LAN-okat össze tudnánk kapcsolni egy nagyobb LAN-ná? Valójában meg tudjuk ezt tenni, amikor az adatkapcsolatokat az úgynevezett hidakkal (bridge) alakítjuk ki. A 4.3.4. szakaszban bemutatott Ethernet-kapcsoló a híd modernebb neve. A klasszikus Ethernetnél és az Ethernet-elosztóknál szélesebb funkcionalitást nyújt, hogy több LAN-t egyszerűbben lehessen nagyobb és gyorsabb hálózattá összekapcsolni. A „híd” és a „kapcsoló” fogalmakat szinonimaként használjuk.

A hidak az adatkapcsolati rétegben működnek, és az adatkapcsolati réteg címeit vizsgálják meg a keretek továbbításához. Mivel az általuk továbbított keretek adatmezejét nem vizsgálják meg, képesek IP- vagy másfajta csomagokat kezelni (például AppleTalk-csomagokat). Az útválasztók ezzel szemben a csomagokban található címeket vizsgálják meg, és azok alapján végzik az útválasztást, tehát csak azzal a protokollal működnek, amelynek kezelésére tervezték.

Ebben a szakaszban megnézzük a hidak működését, illetve azt, hogyan lehet velük több fizikai LAN-t egy nagy logikai LAN-ná összefogni. Megnézzük ennek az ellenkezőjét is, azaz hogyan lehet egy fizikai LAN-t több logikai LAN-ként kezelni, a VLAN-nak (Virtual LAN – virtuális LAN) nevezett technikával. Mindkét technika a hálózatok menedzsmentjének rugalmasságát segíti elő. Kapcsolók, hidak és más, ezekhez kötődő területek átfogó tárgyalásával Seifert és Edwards [2008], valamint Perlman [2000] munkája foglalkozik.

4.8.1. Hidak használata

Mielőtt megismerkednénk a hidak kialakításával, nézzünk meg néhány olyan gyakori helyzetet, amelyben hidakat használnak. Három okot említünk meg, hogy miért lehet szüksége egyetlen szervezetnek több LAN-ra is.

Először is, sok egyetemi tanszék és vállalati szervezeti egység rendelkezik saját LAN-nal azért, hogy összekössék saját személyi számítógépeiket, kiszolgálóikat és egyéb eszközeiket (például nyomtatóikat). Mivel a különböző szervezeti egységek céljai is eltérőek, elképzelhető, hogy különböző típusú LAN-okat építettek ki, függetlenül más egységekétől. Előbb vagy utóbb azonban szükség lesz az együttműködésre, azaz hidakat kell alkalmazni. Ebben a példában tehát a hálózatok tulajdonosainak autonómiája eredményezte a több LAN létrejöttét.

A második esetben a szervezet földrajzilag szétszórtan, egymástól akár nagy távolságokra lévő épületekben helyezkedhet el. Olcsóbb lehet, ha az épületekben különálló LAN-okat telepítenek, és ezeket hidak és néhány hosszú fényvezető szál segítségével kötik össze ahelyett, hogy a kábeleket egyetlen központi kapcsolóba vezetnék. Még ha a kábelek lefektetése egyszerű feladat is, de a hosszukra vonatkozóan korlátozás van (például sodrott érpáras gigabites Ethernet esetén 200 m). A hálózat működésképtelen lesz, ha hosszabb kábelt használnak, a túl nagy jelgyengülés vagy körülfordulási idő miatt. Az egyetlen megoldás, ha feldaraboljuk a LAN-t, és a részeket hidakkal kötjük össze, hogy a teljes hálózat által lefedhető távolságot megnöveljük.

A harmadik eset az, amikor a terhelés megosztása indokolja az egyetlen LAN több (kapcsolók által összecsatolt) logikai szegmensre bontását. Több nagy egyetemen például több ezer munkaállomás áll rendelkezésre hallgatói és oktatói célokra. Cégeknek is lehet többezres alkalmazotti létszáma. A rendszer hatalmas mérete egyszerűen lehetetlenné teszi, hogy az összes munkaállomást egyetlen LAN-hoz kapcsolják, ugyanis több a számítógép, mint ahány port van egy (bármilyen) Ethernet-elosztón, és több állomás van, mint amennyi egyetlen klasszikus Etherneten megengedett.

Még ha lehetséges is lenne az, hogy az összes munkaállomást összekapcsolják, a több állomás csatlakoztatása egyetlen Ethernet-elosztóhoz vagy klasszikus Ethernethez nem növelné meg a kapacitást. Minden állomás ugyanazt a rögzített méretű sávszélességet használja. Minél több állomás van, annál kevesebb az állomásonkénti átlagos sávszélesség.

Akárhogy is, két különálló LAN kétszer akkora kapacitású, mint egy LAN. A hidak lehetővé teszik a LAN-ok összekapcsolását, miközben a kapacitásukat megtartják. A kulcs az, hogy ne küldjenek forgalmat olyan portokra, ahova nem szükséges, így minden LAN teljes sebességgel tud futni. Ez a viselkedés növeli a megbízhatóságot is, mivel egyetlen LAN esetén egy meghibásodott állomás, amely folyamatosan szemetet küldözget, eldugíthatja a teljes LAN-t. Azzal, hogy eldöntjük mit továbbítsunk, és mit ne, a hidak úgy viselkednek, mint egy épületben a tűzbiztos ajtók, megelőzve azt, hogy egy megbolondult állomás működésképtelenné tegye az egész rendszert.

Hogy ezek az előnyök könnyen érvényre jussanak, ideális esetben a hidaknak tökéletesen átlátszóknak kell lenniük. Lehetségesnek kell lennie, hogy valaki elmenjen hidakat venni, csatlakoztassa a LAN-kábeleket a hidakhoz, és ezáltal minden azonnal tökéletesen működjön. Ne kelljen hardvert módosítani, ne kelljen szoftvert módosítani, ne kelljen címeket beállítani, ne kelljen útválasztó-táblázatokat vagy más paramétereket letölteni. Egyáltalán semmit se kelljen tenni, csak a kábeleket csatlakoztatni, majd az egészet magára lehessen hagyni. Továbbá, a létező LAN-ok működését egyáltalán nem befolyásolhatják a hidak. Ami az állomásokat illeti, nem lehet észrevehető különbség, hogy azok híddal összekapcsolt LAN vagy anélküli LAN részei. Az állomások mozgatásának ugyanolyan könnyűnek kell lenni a híddal összekapcsolt LAN-on belül, mint egyetlen LAN-on belül.

Elég meglepő, de lehetséges átlátszó hidak létrehozása. Erre két algoritmust használnak: a hátrafelé tanulás algoritmust, hogy megakadályozzák a forgalom olyan helyre küldését, ahova nem szükséges; és a feszítőfa algoritmust, hogy az összevissza kábelezés során esetlegesen kialakult hurkokat feltörjék. Nézzük meg ezeket az algoritmusokat, hogy rájöjjünk, hogyan megy végbe ez a varázslat.

4.8.2. Helyi hálózatok összekapcsolása

Egymáshoz kapcsolt hálózatok topológiájának két esetét mutatja a 4.41. ábra. A bal oldalon két többpontos LAN-t, mint amilyen a klasszikus Ethernet, egy hídnak nevezett speciális állomás kapcsol össze, amely mindkét LAN része. A jobb oldalon kétpontos kábelezésű, egy elosztót is tartalmazó LAN-ok vannak összekapcsolva. A hidak olyan eszközök, amelyekhez az állomások és az elosztó csatlakoznak. Ha a LAN megvalósítási technikája Ethernet, a hidat Ethernet-kapcsolónak nevezik.

4.41. ábra - (a) Egy híd, amely két többpontos LAN-t kapcsol össze. (b) Hidak (és egy elosztó), amely hét kétpontos állomást kapcsol össze

kepek/04-41.png


A hidakat abban az időben fejlesztették ki, amikor a klasszikus Ethernet volt használatban, ezért gyakran ábrázolják többpontos kábellel, mint például a 4.41.(a) ábrán. Viszont minden topológia, amivel manapság találkozhatunk, kétpontos kábelekből és kapcsolókból áll. A hidak ugyanúgy működnek mindkét beállításban. Minden állomás, amely egy hídnak ugyanahhoz a portjához csatlakozik, ugyanabba az ütközési tartományba tartozik és minden port külön ütközési tartományt képvisel. Ha ugyanahhoz a porthoz több állomás csatlakozik (mint a klasszikus Ethernet esetén), vagy egy elosztó csatlakozik, amely több állomást csatlakoztat ugyanarra a portra, akkor a CSMA/CD-protokollt használják az esetleges ütközések feloldására és a keretek elküldésére.

Van viszont egy különbség abban, ahogy a híddal összekapcsolt LAN-okat építik. Egy híd többpontos LAN-ba építéséhez a hidat új állomásként kell csatlakoztatni mindkét többpontos LAN-hoz, ahogy a 4.41.(a) ábrán látható. Kétpontos LAN-ok híddal való összekapcsolásához, az elosztók csatlakoztathatók egy hídhoz, vagy inkább az elosztók helyettesíthetők híddal a teljesítőképesség növelése érdekében. A 4.41.(b) ábrán egy kivételével minden elosztót lecseréltek hidakra.

Különböző típusú kábeleket lehet egy hídhoz csatlakoztatni. Például a kábel, amely a B1 és B2 hidakat köti össze a 4.41.(b) ábrán, lehet egy hosszú fényvezető szál, míg az a kábel, amelyik az állomásokat köti össze a híddal, lehet rövid sodrott érpár. Ez az elrendezés különböző épültekben elhelyezkedő LAN-ok híddal történő összekapcsolásakor hasznos.

Most vizsgáljuk meg azt, hogy mi történik a híd belsejében. Minden híd válogatás nélküli üzemmódban (promiscuous mode) működik, azaz elfogad minden keretet, amely valamely portjára csatlakozó állomástól származik. Egy hídnak mindegyik keretről el kell döntenie, hogy vajon továbbítania vagy eldobnia kell, valamint ez előbbi esetben azt, hogy melyik porton küldje ki a keretet. A döntést a híd a célcím használatával hozhatja meg. Vegyük például a 4.41.(a) ábrán látható topológiát. Ha az A állomás küld keretet B állomásnak, akkor B1 híd az 1-es portján fogja venni. A keretet rögtön eldobja minden további nélkül, mert már a megfelelő porton van. Ellenben a 4.41.(b) ábrán látható topológián, tegyük fel, hogy A küld egy keretet D-nek. A B1 híd az 1-es portján fogja venni a keretet és a 4-es portján küldi ki. A B2 híd ezután a keretet a 4-es portján fogja venni és az 1-es portján kiküldeni.

E séma megvalósításának egyszerű módja, hogy teszünk egy nagy (hash-struktúrájú) táblát a hídba. A tábla felsorolja az összes lehetséges célállomást, és mindegyikhez megadja a megfelelő kimeneti portot. Például a 4.41.(b) ábrán a B1 híd táblája szerint D a 4-es porthoz tartozik, hiszen B1-nek csak annyit kell tudnia, hogy melyik portra továbbítsa a D-nek küldött kereteket. Valójában B1-et nem érdekli, hogy a keretet útja során még többször továbbítani kell, amikor az a B2-höz érkezik.

Amikor a hidakat először kapcsolják be, a tábláik üresek. Egyik híd sem tudja, hogy a célállomások merre helyezkednek el, így az elárasztásos algoritmust használják: minden bejövő keretet, amelynek címzettje ismeretlen, kiküldik az összes porton, kivéve azt, amelyikről érkezett. Ahogy telik az idő, a hidak lassan megtanulják, hogy merre találhatók a célállomások. Miután egy címzett állomás ismertté vált, a felé irányuló keretek csak a megfelelő porton kerülnek továbbításra, nem árasztják el a hálózatot.

Az az algoritmus, amit a hidak használnak, a hátrafelé tanulás (backward learning). Mint már említettük, a hidak válogatás nélküli üzemmódban működnek, így minden keretet látnak, amely a portjaikon megjelenik. Megvizsgálva a forráscímeket, megállapíthatják, hogy mely portokon mely állomások érhetők el. Például ha a 4.41.(b) ábrán a B1 híd lát egy keretet a 3-as portján, amelyik a C állomástól származik, rájön, hogy C a 3-as portján keresztül érhető el, így készít a táblájában egy bejegyzést. B1 minden olyan rákövetkező keretet, amely bármelyik portján C-nek érkezik, továbbítani fogja a 3-as portjára.

A hálózat topológiája változhat, ahogy állomásokat és hidakat üzembe vagy üzemen kívül helyeznek, vagy megváltoztatják az üzemelésük helyét. A dinamikusan változó topológia kezelése érdekében minden alkalommal, amikor létrejön egy táblabejegyzés, eltárolják a keret beérkezésének időpontját is. Amikor egy olyan keret érkezik, amelynek feladójáról helyes bejegyzés szerepel a táblában, az időinformációt az aktuális időponttal írják felül. Ilyen módon a tábla bejegyzéseihez rendelt időpontok megadják, hogy a híd mikor vett utoljára keretet az adott állomástól.

Egy folyamat a hídban időről időre végignézi a táblát, és törli onnan a néhány percnél régebbi bejegyzéseket. Ily módon elérhető, hogy kézi beavatkozás nélkül, néhány percen belül ismét visszaálljon egy olyan állomás normális működése, amelyet levettek a hálózatról, majd annak egy eltérő pontjára csatlakoztattak vissza. Az algoritmus azonban azt is maga után vonja, hogy ha egy állomás néhány percig csendben marad, a felé irányuló forgalom elárasztja a teljes rendszert addig, amíg az állomás maga nem küld végre egy keretet.

Egy beérkező keret útválasztása függ attól, hogy melyik porton érkezett (forrásport), valamint hogy mi a céljának a címe (célcím). Az eljárás a következő:

  1. Ha a célcímhez tartozó port és a forrásport azonos, akkor a keretet el kell dobni.

  2. Ha a célcímhez tartozó port és a forrásport különböző, akkor a keretet továbbítani kell a célporton.

  3. Ha a célport ismeretlen, akkor elárasztást kell alkalmazni és a keretet a forrásport kivételével minden porton ki kell küldeni.

Lehet, hogy a kedves olvasó megdöbben azon, hogy fordulhat elő az első eset kétpontos adatkapcsolatok esetén. A válasz az, hogy úgy történhet meg, ha elosztókat használnak a számítógépek egy csoportjának a hídhoz való csatlakoztatására. A 4.41.(b) ábrán látható példában az E és F állomások a H1 elosztóhoz csatlakoznak, ami pedig a B2 hídhoz csatlakozik. Ha E küld egy keretet F-nek, az elosztó továbbítani fogja B2-nek is, nemcsak F-nek. Ez az, amit az elosztók csinálnak: összekötik az összes portot úgy, hogy egy porton bejövő keretet egyszerűen az összes többi porton kiküldi. A keret a B2 2-es portján fog megérkezni, ami már a címzett állomás felé néző kimenő port. A B2 hídnak csak el kell dobnia a keretet.

Ahogy egy keret megérkezik, az algoritmust alkalmazni kell rá, ezért ez általában egy nagyon speciális célú VLSI-lapkán van megvalósítva. A lapka végzi a cím keresését és a tábla frissítését, mindezt néhány mikroszekundum alatt. Mivel a hidak csak a MAC-címeket vizsgálják egy keret továbbításakor, ezért lehetséges az, hogy a továbbítást elkezdjék, amint a célcímmező beérkezett, mielőtt a keret többi része megérkezik (feltéve természetesen, hogy a kimeneti vonal elérhető). Ez a megoldás csökkenti a keretnek azt a késleltetését, amely a hídon való áthaladásából ered, valamint csökkenti a keretek számát, amelyeket a híd pufferelni kényszerül. Erre átvágó kapcsolóként (cut-through switching) vagy féreglyuk útválasztásként (wormhole routing) hivatkoznak, és általában hardveresen valósítják meg.

A hidak működését most a protokollkészlet szemszögéből vizsgáljuk meg azért, hogy megértsük mit is jelent egy adatkapcsolati rétegbeli eszköznek lenni. Vegyünk egy keretet, amelyet az A állomás küld D állomásnak a 4.41.(a) ábrán látható topológián, amelyben a LAN-ok Ethernetek. A keret át fog menni az egyik hídon. A feldolgozást a protokollkészlet figyelembevételével a 4.42. ábra mutatja be.

4.42. ábra - Keret feldolgozása egy híd protokollkészletét tekintve[21]

kepek/04-42.png


A csomag egy felsőbb rétegtől érkezik az Ethernet MAC-rétegbe. Kap egy Ethernet-fejrészt (és egy farokrészt is, de ezt az ábrán nem jelöltük). Ezt az egységet a MAC-réteg továbbadja a fizikai rétegbe, majd onnan kimegy, végig a kábelen, ahonnan a híd felszedi.

A híd fizikai rétege feladja a keretet az Ethernet MAC-rétegnek. Ez a réteg kiterjedtebb feldolgozási képességekkel rendelkezik, mint egy állomás Ethernet MAC-rétege. Ez továbbadja a keretet az átjátszónak (relay), ami szintén a MAC-réteg része. A híd átjátszó funkciója csak az Ethernet MAC-fejrészt használja, hogy megállapítsa, hogyan kezelje a keretet. Ebben az esetben, ez továbbítja a keretet annak az Ethernet MAC-rétegbeli portnak, amelyiken keresztül el lehet érni a D állomást, és a keret folytatja az útját.

Általános esetben, egy adott rétegbeli átjátszó újraírhatja az adott rétegnek szánt fejrészt. Rövidesen a VLAN-oknál látunk erre példát. A híd semmilyen esetben sem nézhet bele a keret tartalmába és nem tudhatja meg, hogy IP-t szállít-e; ez teljesen érdektelen a híd adatfeldolgozása szempontjából, és megsértené a protokollrétegezést. Fontos még megjegyezni, hogy egy portos hídnak k darab MAC- és fizikai rétege van. A k értéke a mi példánkban 2.

4.8.3. Feszítőfás hidak

A megbízhatóság növelése érdekében redundáns adatkapcsolatokat lehet használni a hidak között. A 4.43. ábrán látható példán két párhuzamos adatkapcsolat van a két híd között. Ez a felépítés biztosítja, hogy ha az egyik adatkapcsolatot elvágják, a hálózat nem szakad két számítógép-csoportra, amelyek nem tudnak egymással beszélgetni.

4.43. ábra - Hidak két párhuzamosan futó adatkapcsolattal

kepek/04-43.png


Ez a redundancia azonban okoz néhány új problémát, mert hurkokat hoz létre a topológiában. Jobban megérthetjük ezt egy példán keresztül, ha megvizsgáljuk, hogyan történik A kereteinek küldése egy korábban nem látott célállomásnak a 4.43. ábrán. Minden híd az ismeretlen célállomások kezelésénél megszokott szabályt követi, azaz a kerettel elárasztja a hálózatot. Nevezzük F 0-nak azt a keretet, amely A-tól jön és eléri a B1 hidat. A híd ennek a keretnek a másolatait a többi portján kiküldi. Csak azokat a portokat vesszük figyelembe, amelyek B1-et és B2-t kötik össze (annak ellenére, hogy a keret a többi porton is kiküldésre kerül). Mivel két adatkapcsolat van B1 és B2 között, a keret két példánya fogja elérni a B2-t. Ezeket F 1-gyel és F 2-vel jelöltük a 4.43. ábrán.

Nem sokkal később, a B2 híd veszi ezeket a kereteket. Viszont nem tudja (és nem is tudhatja), hogy ezek ugyanannak a keretnek a példányai, hanem azt gondolja, hogy két különböző keretet küldtek egymás után. Így a B2 híd fogja F 1-et és a másolatait kiküldi a többi portján, ugyanígy tesz F 2-vel. Ezzel létrejön az F 3 és az F 4 keret, amelyeket a két adatkapcsolaton visszaküldenek B1-nek. Ezután B1 lát két keretet ismeretlen célcímekkel, és újra lemásolja őket. Ez a ciklus a végtelenségig folytatódik.

A fenti nehézség úgy küszöbölhető ki, hogy a hidak kommunikálnak egymással, és lefedik a hálózat aktuális topológiáját egy olyan feszítőfával (spanning tree), amely eléri az összes hidat. Tulajdonképpen annyi a teendő, hogy bizonyos adatkapcsolatokat figyelmen kívül kell hagyni, hogy egy képzeletbeli, hurokmentes topológia jöjjön létre, amely az aktuális topológia egy részhalmaza.

Vegyük például a 4.44. ábrát, amelyen öt összekapcsolt híd és a hozzájuk csatlakozó állomások láthatók. Minden állomás csak egy hídhoz kapcsolódik. Vannak redundáns adatkapcsolatok a hidak között, tehát ha az összes adatkapcsolat használatban van, akkor a kereteket körbe-körbe fogják küldeni. Erre a topológiára tekinthetünk úgy, mint egy gráfra, amelyben a hidak képezik a csúcsokat és a kétpontos adatkapcsolatok az éleket. A gráfot egy feszítőfává csökkenthetjük, amely definíciószerűen hurokmentes azáltal, hogy a 4.44. ábrán látható szaggatott vonalakat kiejtjük. Ezt a feszítőfát használva pontosan egyetlen útvonal vezet bármelyik két állomás között. Miután a hidak megállapodtak a feszítőfában, az állomások közötti összes továbbítás ezt a fát követi. Mivel így minden forrás és cél között csak egyetlen útvonal létezik, nem jöhetnek létre hurkok.

4.44. ábra - Egy feszítőfa, amely öt hidat köt össze. A szaggatott vonalak nem részei a feszítőfának

kepek/04-44.png


A feszítőfa felépítéséhez a hidaknak egy elosztott algoritmust kell futtatniuk. Minden híd periodikusan konfigurációs üzenetet küld az összes portján a szomszédainak, és feldolgozza a más hidaktól vett üzeneteket a következők szerint. Ezeket az üzeneteket nem továbbítják, mert az a feladatuk, hogy egy fát építsenek, amit majd továbbításra lehet használni.

A hidaknak maguk közül ki kell választaniuk egyet, amely a feszítőfa gyökere lesz. A kiválasztás érdekében mindegyik állomás beletesz a konfigurációs üzenetébe egy, a MAC-címükön alapuló azonosítót, valamint annak a hídnak az azonosítóját, amelyet a gyökérnek gondolnak. A MAC-címeket a gyártók állítják be és az egész világon egyediek, ezért ezek az azonosítók is egyediek lesznek, és így kényelmes a használatuk. A hidak a legkisebb azonosítójú hidat választják gyökérnek. Miután a hírek elterjesztéséhez elég üzenetet cseréltek, a hidak megegyeznek, hogy közülük melyik legyen a gyökér. A 4.44. ábrán, a B1 hídnak van a legkisebb azonosítója, ezért az lesz a gyökér.

A következő lépésben a gyökértől minden egyes hídhoz menő legrövidebb útvonalat kijelölő fa meghatározása történik. A 4.44. ábrán a B2 és B3 hidakat B1-től közvetlenül egy ugrással el lehet érni, ami a legrövidebb út. A B4 híd két ugrással érhető el, vagy a B2-n vagy a B3-on keresztül. Hogy a döntetlent feloldják, a kisebb azonosítójú hídon keresztül menő utat választják, tehát a B4 a B2-n keresztül érhető el. A B5 híd két ugrással elérhető B3-on keresztül.

Hogy a hidak a legrövidebb útvonalakat megtalálják, a gyökértől való távolságukat belerakják a konfigurációs üzenetükbe. Minden híd megjegyzi a gyökérhez vezető legrövidebb utat. Ezután a hidak lekapcsolják azokat a portjaikat, amelyek nem részei a legrövidebb útnak.

Igaz, hogy a fa lefedi az összes hidat, de nem biztos, hogy az összes adatkapcsolat (vagy akár híd[22]) szerepel benne. Ez azért lehetséges, mivel néhány port kiiktatásával néhány adatkapcsolatot lenyesnek a hálózatról a hurkok elkerülésére. Miután a feszítőfa elkészült, az algoritmus tovább fut, hogy a hálózat topológiai változásait automatikusan észlelhesse, és a fát bármikor frissíthesse.

A feszítőfa kialakítására alkalmazott algoritmust Radia Perlman fejlesztette ki. Az volt a feladata, hogy oldja meg több LAN összekapcsolását hurkok nélkül. Kapott egy hetet, hogy megcsinálja, de ő egy nap alatt kidolgozta az algoritmust. Szerencsére maradt ideje arra, hogy verses formában is megírja [Perlman, 1985].

Úgy vélem többé nem látok

egy fánál remekebb gráfot.

A fák mind jellegzetesen

teljesen hurokmentesek.

Mivel a fák feszítenek,

csomag elér minden szegmenst.

A gyökeret úgy választják,

számaikat sorbarakják.

Gyökértől a legjobb utak

a fában érvényre jutnak.

Csinálok egy hálót, melyben

hidak feszítőfát lelnek.

A feszítőfa algoritmust IEEE 802.1D néven szabványosították, és már sok éve használatban van. 2001-ben újraírták, hogy topológiaváltozás után gyorsabban találjon egy új feszítőfát, melyet Perlman [2000] munkája részletez.

4.8.4. Ismétlők, elosztók, hidak, kapcsolók, útválasztók és átjárók

A könyvben ez idáig számos módját láthattuk annak, hogyan lehet kereteket és csomagokat egyik számítógépről a másikra átvinni. Szó volt az ismétlőkről, az elosztókról, a hidakról, a kapcsolókról, az útválasztókról és az átjárókról is. Mindegyik eszközt széles körben használják, de többé-kevésbé eltérnek egymástól. Mivel ilyen sokan vannak, talán érdemes egyszer együtt is megvizsgálni őket, hogy lássuk, miben hasonlítanak és miben különböznek.

A legfontosabb azt felismerni, hogy ezek az eszközök különböző rétegekben működnek, ahogy azt a 4.45.(a) ábra is szemlélteti. Azért lényeges, hogy melyik rétegről van szó, mert a különböző eszközök más-más információt használnak fel annak eldöntésére, hogyan kapcsoljanak. A tipikus felállás az, hogy a felhasználó előállít valamilyen adatot, amelyet egy távoli gépnek kíván küldeni. Ez az adat átkerül a szállítási rétegbe, ami hozzáad egy (például TCP) fejrészt, ami az így kapott adategységet továbbadja a hálózati rétegnek. A hálózati réteg is hozzáadja a saját fejrészét, ezzel egy hálózati rétegbeli (például IP) csomagot alakít ki. A 4.45.(b) ábrán az IP-csomagot szürke árnyékolással jelöltük. A csomag ezt követően az adatkapcsolati réteghez kerül, mely hozzáteszi saját fejrészét és ellenőrző összegét, majd az így kapott keretet átadja a fizikai rétegnek (például egy LAN-on keresztüli) átvitelre.

4.45. ábra - (a) Az egyes eszközök és a rétegek, ahol megtalálhatók. (b) Keretek, csomagok és fejrészek

kepek/04-45.png


Tekintsük most a kapcsolóeszközöket, és nézzük meg, hogyan viszonyulnak a csomagokhoz és a keretekhez! Legalul, a fizikai rétegben találjuk az ismétlőket. Ezek analóg eszközök, melyek a hozzájuk csatlakoztatott kábelek jeleivel dolgoznak. Az ismétlő az egyik kábelszegmensen megjelenő jelet megtisztítja, felerősíti és átrakja a másikra. Az ismétlők nem ismerik a kereteket, a csomagokat vagy a fejrészeket. A bitek helyett csak azok voltban mért feszültségszintjeit értik. A klasszikus Ethernetet például úgy tervezték, hogy négy ismétlőt lehessen használni, amelyek megnövelik a jel teljesítményét azért, hogy a maximális kábelhosszt 500 méterről 2500 méterre lehessen kiterjeszteni.

Következő eszközünk az elosztó (hub). Az elosztónak számos bemeneti vonala van, amelyekre egyszerűen villamosan lehet csatlakozni. A bármelyik vonalon beérkező keretek az összes többi vonalon kivitelre kerülnek. Ha két keret egyszerre érkezik, akkor ütközni fognak, pontosan úgy, mint egy koaxiális kábelen. Az elosztóba érkező vonalaknak ugyanazzal a sebességgel kell működniük. Az elosztók annyiban különböznek az ismétlőktől, hogy (általában) nem erősítik a beérkező jeleket, és olyan a kialakításuk, hogy több bemenetük lehet, ezek a különbségek azonban nem túl jelentősek. Az ismétlőkhöz hasonlóan az elosztók is fizikai rétegbeli eszközök, melyek nem vizsgálják vagy használják az adatkapcsolati címeket.

Lépjünk most feljebb az adatkapcsolati rétegbe, ahol a hidakat és a kapcsolókat találjuk A hidakat nemrég tanulmányoztuk. Egy híd kettő vagy több LAN-t köt össze. Az elosztókhoz hasonlóan a modern hidaknak is több portjuk van, rendszerint elég 4–48 darab adott típusú bemeneti vonal számára. Az elosztóktól eltérően, itt minden port el van szigetelve, hogy különálló ütközési tartományt alakítson ki. Ha egy port duplex kétpontos adatkapcsolat, akkor a CSMA/CD-algoritmusra nincs szüksége. Amikor megérkezik egy keret, a híd szoftvere kiolvassa a célcímet a keret fejrészéből, és egy táblázatból meghatározza, hogy hová kell küldeni az adott keretet. Az Ethernet esetében ez a cím a 4.14. ábrán látható 48 bites célcím. A híd csak a megfelelő portra teszi ki a keretet, és több keretet tud továbbítani egyszerre.

A hidak jobb teljesítményt nyújtanak az elosztóknál, és a portok elszigeteltsége azt jelenti, hogy a bemeneti vonalak különböző sebességen, és valószínűleg még különböző típusú hálózaton is képesek futni. Ennek gyakori példája az olyan híd, amelynek a portjaihoz 10, 100 és 1000 Mb/s-os Ethernet csatlakozik. A hídban szükség van pufferelésre, hogy fogadni tudjon egy keretet az egyik porton, és egy keretet továbbítani egy másikon. Ha a keretek gyorsabban érkeznek be, mint ahogy a kapcsoló újra ki tudná küldeni azokat, elfogyhat a pufferterület, és el kell dobnia a kereteket. Például, ha egy gigabites Ethernet teljes sebességgel zúdítja a bitjeit egy 10 Mb/s-os Ethernetre, a hídnak pufferelnie kell azokat, miközben reméli, hogy lesz elég memóriája hozzá. Ez a probléma akkor is fennáll, ha a portok megegyező sebességgel futnak, és több port küld ugyanarra a célportra kereteket.

A hidakat eredetileg különböző típusú LAN-ok összekapcsolására szánták, például egy Ethernetet és egy vezérjeles gyűrűt. Ez, bárhogy nézzük, soha nem működött jól a LAN-ok közötti különbségek miatt. A különböző formátumok megkövetelik a másolást, és az újraformázást, ami processzoridőt vesz el, valamint új ellenőrző összeg számítását igényli, és lehetőséget ad rejtett hibákra is, amelyeket a híd memóriájában lévő rossz bitek eredményeznek. A különböző legnagyobb megengedett kerethosszúságok eltérése szintén komoly problémát jelent, melyre nincs hatékony megoldás. Alapvetően azokat a kereteket, amelyek túl nagyok ahhoz, hogy továbbítani lehessen, el kell dobni. Ennyit az átlátszóságról.

Két másik területen különbözhetnek még a LAN-ok, ezek a biztonság és a szolgáltatásminőség. Néhány LAN, például a 802.11, rendelkezik adatkapcsolati rétegbeli titkosítással, ellenben néhány LAN nem, ilyen például az Ethernet. Néhány LAN-nak van olyan szolgáltatásminőségi képessége, mint amilyen a prioritás (például a 802.11), ellenben néhánynak nincs, ilyen például az Ethernet. Ennek következtében, ha egy keret ezeken a LAN-okon át utazik, akkor ezek nem tudják nyújtani a küldő által elvárt biztonságot és szolgáltatásminőséget. Ezen okok miatt a modern hidak általában egyetlen típusú hálózaton működnek, és az útválasztókat (melyeket alább áttekintünk) használják a különböző típusú hálózatok összekapcsolására.

A kapcsolók a modern hidak másik elnevezése. A különbségeknek több köze van a marketinges, mint a műszaki dolgokhoz, de néhány eltérést fontos megjegyezni. A hidakat akkor fejlesztették ki, amikor a klasszikus Ethernet még használatban volt, ezért általában viszonylag kevés LAN-t kapcsolnak össze, és ezért viszonylag kevés portjuk van. Manapság a kapcsoló elnevezés a népszerűbb. A modern hálózatok kétpontos adatkapcsolatokat használnak, mint amilyen a sodrott érpár, így a számítógépeket egyesével közvetlenül a kapcsolóba dugják, és ezért a kapcsolóknak gyakran sok portjuk van. Végül, a kapcsoló kifejezést általános értelemben is használják. A híd funkcionalitása egyértelmű. A kapcsoló ellenben vonatkozhat egy Ethernet-kapcsolóra vagy egy teljesen más eszközre, amely továbbítási döntést hoz, például egy telefonközpontra.

Láthattuk eddig az ismétlőket és az elosztókat, melyek eléggé hasonlók, valamint a hidakat és a kapcsolókat, melyek még jobban hasonlítanak egymáshoz. Most továbblépünk az útválasztókhoz, melyek az összes eddigi eszköztől különböznek. Amikor egy csomag megérkezik egy útválasztóhoz, akkor a keret fej- és farokrészét eltávolítják, és a keret adatmezejében található csomagot (amit a 4.45. ábrán sötéttel jelöltünk) átadják az útválasztó szoftvernek. Ez a szoftver a csomag fejrészének segítségével választja ki a megfelelő kimeneti vonalat. IP-csomag esetén a csomag fejrésze nem a 48 bites IEEE 802-es címet, hanem a 32 bites (IPv4) vagy 128 bites (IPv6) címet tartalmazza. Az útválasztó szoftver nem látja a keretben levő címeket, és azt sem tudja, hogy a csomag egy LAN-on vagy egy kétpontos vonalon érkezett-e be. Az útválasztókat és az útválasztást az 5. fejezetben tárgyaljuk.

Egy réteggel feljebb találjuk a szállítási átjárókat. Ezek két olyan számítógépet kötnek össze, melyek eltérő összeköttetés-alapú szállítási protokollt használnak. Tegyük fel például, hogy egy összeköttetés-alapú TCP/IP-protokollt használó gép egy másik, összeköttetés-alapú SCTP-nek nevezett szállítási protokollt használó géppel szeretne kommunikálni. Ekkor a szállítási átjáró átmásolhatja a csomagokat az egyik összeköttetésről a másikra, miközben a szükséges módon átalakítja azok formátumát.

Végül, az alkalmazási átjárók az adatok formátumát és tartalmát is megértik, és képesek lefordítani az üzeneteket az egyik formátumról a másikra. Egy e-levél átjáró például az internetes üzeneteket SMS-üzenetekre fordíthatja a mobiltelefonok számára. A kapcsolóhoz hasonlóan az átjáró is némileg általános kifejezés, mely utalhat egy felső rétegben futó továbbítási folyamatra.

4.8.5. Virtuális LAN-ok

A helyi hálózatok korai időszakában vastag sárga kábelek kígyóztak végig az irodaépületek kábelcsatornáin. Minden számítógép, amely mellett elhaladtak, ezekre csatlakozott. Senki nem foglalkozott azzal, hogy melyik gép melyik LAN-hoz tartozik. Az egymás melletti irodák összes felhasználója ugyanazt a LAN-t használta, akár összetartoztak, akár nem. Az elhelyezkedés fontosabbnak bizonyult a cég szervezeti felépítésénél.

Az 1990-es években a sodrott érpár és az elosztók megjelenésével mindez megváltozott. Az épületeket (jelentős kiadások árán) újrakábelezték, hogy megszabaduljanak az összes sárga kerti locsolótömlőtől, és minden irodából sodrott érpárokat vezettek a folyosók végén vagy a központi gépteremben lévő kábelrendezőkhöz, ahogy azt a 4.46. ábra is szemlélteti. Ha a kábelezésért felelős alelnök történetesen látnok volt, akkor 5-ös kategóriájú sodrott érpárokat telepítettek; de ha szűkmarkú volt, akkor a meglevő (3-as kategóriájú) telefonvezetékeket használták (aztán pár év múlva azokat is le lehetett cserélni, amikor a gyors Ethernet megjelent).

4.46. ábra - Épület központi kábelezéssel, elosztókkal és egy kapcsolóval

kepek/04-46.png


Manapság a kábelek megváltoztak és az elosztókból kapcsolók lettek, de a kábelezési minta maradt a régi. Ez a minta lehetővé tette, hogy a LAN-okat ne fizikai, hanem logikai úton alakítsák ki. Például, ha egy vállalat k darab LAN-t akar, akkor vásárolhat k darab kapcsolót. Ha kellő gondot fordítanak annak eldöntésére, hogy melyik csatlakozót melyik elosztóba dugják, akkor a LAN-ok tagjait az elhelyezkedéstől viszonylag függetlenül, a szervezeti felépítésnek megfelelően lehet megválasztani.

Egyáltalán számít az, hogy ki melyik LAN-on van? Végül is majdnem minden szervezetnél össze van kötve az összes LAN. A rövid válasz mégis az: igen, gyakran számít. A rendszergazdák több okból kifolyólag is szeretik, ha a LAN-okon lévő felhasználói csoportok nem az épület fizikai elrendezését, hanem az intézmény szervezeti rendjét tükrözik. Az első ok a biztonság. Egy LAN-on lehetnek webszerverek és más számítógépek, melyeket nyilvános használatra szánnak. Egy másik LAN-on lehetnek olyan számítógépek, amelyek a személyzeti osztály adatait tárolják, ezek nem kerülhetnek az osztályon kívülre. Ilyen helyzetben ésszerű dolog az osztály összes számítógépét egyetlen LAN-ra tenni, és megtiltani, hogy bármelyik szerverhez a LAN-on kívülről hozzáférjenek. A vállalati vezetés ráncolni szokta a homlokát, amikor azt hallja, hogy egy ilyen elrendezést lehetetlen kialakítani.

A második gondot a terhelés jelenti. Egyes LAN-okat sokkal intenzívebben használnak, mint másokat, és olykor kívánatos lehet az ilyeneket elkülöníteni. Ha például a kutatási osztályon dolgozók mindenféle remek kísérletet folytatnak, amelyek felett néha elvesztik az uralmukat és a LAN-juk telítődik, akkor a vezetőség tagjai nem fognak lelkesedni azért, hogy azzal a hálózati kapacitással segítsék ki a kollégákat, melyet éppen videokonferenciára használnának. Ez újra azt a benyomást kelti a vezetőségben, hogy gyorsabb hálózat telepítése szükséges.

A harmadik az adatszórásos forgalom kérdése. A hidak adatszórással[23] továbbítják a kereteket, amikor a címzett állomás elhelyezkedése nem ismert, és sok felsőbb rétegbeli protokoll is használja az adatszórást. Például ha egy felhasználó egy csomagot szeretne küldeni az x IP-címre, akkor honnan fogja tudni, hogy milyen MAC-címet rakjon a keretbe? Ezzel a kérdéssel az 5. fejezetben fogunk foglalkozni, de a válasz röviden az, hogy adatszórással szétküld egy keretet, mely azt a kérdést tartalmazza: „Kié az x cím?”, majd várja a választ. Ahogy egy LAN-on a számítógépek száma növekszik, úgy nő az adatszórások száma is. Minden adatszórás nagyobb mértékben használja a LAN kapacitását, mint a szabályos keretforgalom, mert a forgalmat a LAN minden számítógépének el kell juttatni. Ha a LAN-okat sikerül a lehető legkisebb méretűnek megtartani, az adatszórásos forgalom hatása csökkenthető.

Az adatszórással függ össze az a probléma is, hogy néha az is előfordulhat, hogy egy hálózati illesztő meghibásodik vagy rosszul konfigurálják, és adatszórással végtelen keretfolyamot állít elő. Ha a hálózat tényleg szerencsétlen, akkor ezek a keretek válaszra ösztönöznek gépeket, amely egyre növekvő forgalomhoz vezet. Az ilyen adatszórási vihar (broadcast storm) eredménye az, hogy (1) ezek a keretek lekötik a LAN teljes kapacitását és (2) az összes összekapcsolt LAN-on lévő gépet megbénítja az adatszórt keretek feldolgozása és eldobása.

Első látásra úgy tűnhet, hogy az adatszórási viharok kiterjedését korlátozni lehetne a LAN-ok hidakkal vagy kapcsolókkal történő szétválasztásával, de ha az átlátszóság elérése a cél (azaz, hogy egy gépet át lehessen vinni a hídon egy másik LAN-ra anélkül, hogy azt bárki is észrevenné), akkor a hidaknak az adatszórással elküldött kereteket is továbbítaniuk kell.

Most, hogy láttuk, miért akarhatnak a vállalatok több, korlátozott kiterjedésű LAN-t kiépíteni, térjünk vissza a logikai és a fizikai topológia szétválasztásának problémájára. A szervezeti felépítést tükröző fizikai topológia építése munka- és költségigényes, még akkor is, ha központosított vezetékezést és kapcsolókat alkalmaznak. Például, ha ugyanannak a részlegnek két alkalmazottja különböző épületben dolgozik, könnyebb lehet őket különböző kapcsolókhoz csatlakoztatni, amelyek különböző LAN-okhoz tartoznak. Még ha nem is ez a helyzet, a vállalat egyik dolgozója átkerülhet az egyik részlegből a másikba anélkül, hogy kiköltözne az irodájából; vagy éppen átköltözik egy másik irodába anélkül, hogy átkerülne egy másik részlegbe. Ennek eredményeképpen előfordulhat, hogy a dolgozó nem a megfelelő LAN-on van addig, amíg a rendszergazda a dolgozó kábelét az egyik kapcsolóból a másikba át nem dugja. Továbbá lehetséges, hogy az egy részlegbe tartozó számítógépek száma nem jól illeszkedik a kapcsoló portjainak számához, esetleg néhány részleg túl kicsi, míg mások annyira nagyok, hogy több kapcsolóra van szükségük. Ez a kihasználatlan portok miatt a kapcsolók portjainak pazarlásához vezet.

Sok vállalatnál állandóan szervezeti változások történnek, ami azt jelenti, hogy a rendszergazdák rengeteg időt töltenek azzal, hogy csatlakozókat húznak ki az egyik helyről, és máshová dugják azokat vissza. Ráadásul bizonyos esetekben az áthelyezés egyáltalán nem megoldható, mert a felhasználó gépéből kijövő sodrott érpár túl messze van a megfelelő elosztótól (például másik épületben van), vagy a kapcsolón rendelkezésre álló portok nem a megfelelő LAN-hoz tartoznak.

A hálózati gyártók a nagyobb rugalmasságot megcélzó vevői igények kielégítésére egy olyan megoldás kidolgozásába kezdtek, melynek segítségével az épületeket teljes egészében szoftveres úton lehet átkábelezni. A munka eredménye a VLAN (Virtual LAN virtuális LAN) nevű elgondolás lett. Ezt még az IEEE 802-es bizottság is szabványosította és most már széles körben alkalmazzák sok szervezetnél. Vessünk hát egy pillantást erre. A VLAN-okról további információkkal szolgál Seifert és Edwards [2008] munkája.

A VLAN-ok a VLAN-képes kapcsolókon alapulnak. Egy VLAN-alapú hálózat kiépítésekor a rendszergazda eldönti, hogy hány VLAN-t fog használni, melyik gép melyik VLAN-on lesz, és hogy mi lesz az egyes VLAN-ok neve. A VLAN-okat gyakran (nem hivatalosan) színekről nevezik el, mivel így színes ábrát lehet nyomtatni, melyek a gépek fizikai elrendezését mutatják, és a piros LAN tagjait pirossal, a zöld tagjait zölddel jelölik és így tovább. Ily módon egyetlen képen látható mind a logikai, mind a fizikai elrendezés.

Példaként tekintsük a 4.47. ábrán látható kapcsolt LAN-t, ahol az S (szürke) VLAN-hoz kilenc, az F (fehér) VLAN-hoz pedig öt gép tartozik. A szürke VLAN-hoz tartozó számítógépek a két kapcsolón elszórva helyezkednek el, beleértve azt a két számítógépet is, amelyek egy elosztón keresztül csatlakoznak a kapcsolóhoz.

4.47. ábra - Két VLAN (szürke és fehér) egy kapcsolt LAN-on

kepek/04-47.png


Ahhoz, hogy a VLAN-ok helyesen működjenek, konfigurációs táblázatokat kell felállítani a kapcsolókban. Ezek a táblázatok azt mondják meg, hogy az egyes VLAN-okat melyik port segítségével lehet elérni. Ha beérkezik egy keret, mondjuk a szürke VLAN-ról, akkor azt minden S jelű portra továbbítani kell. Ez egyaránt vonatkozik a hagyományos (azaz egyesküldéses) forgalomra, ahol a címzett állomás helyét a hidak még nem tanulták meg, valamint a többesküldéses és adatszórásos forgalomra is. Figyeljük meg, hogy egy portot több VLAN-színnel is fel lehet címkézni.

Példaként, tételezzük fel, hogy a 4.47. ábrán látható, B1 hídhoz csatlakozó, egyik szürke állomás egy keretet küld egy olyan címzett állomásnak, amelyet még nem láttak korábban. A B1 híd meg fogja kapni ezt a keretet, és látni fogja, hogy szürke VLAN-on lévő géptől érkezett, ezért azt minden S-sel címkézett (kivéve a bejövő) portjára árasztja. A keretet elküldi öt másik szürke állomásnak, amely a B1-hez kapcsolódik, valamint B2-nek a B1 és B2 közötti adatkapcsolaton. A B2 hídon a keret, az előzőekhez hasonlóan, az összes S-sel jelölt porton továbbítódik. Ezzel a keret eljut még egy állomásig és az elosztóig, (amely a keretet az összes állomásának továbbítja). Az elosztónak két címkéje is van, mert mindkét VLAN-hoz tartozó állomás csatlakozik hozzá. A kereteket nem küldik ki S-sel nem címkézett portokon, mert a híd tudja, hogy azokon a portokon keresztül nincs elérhető szürke VLAN-ba tartozó számítógép.

A példánkban, a keretet csak azért küldték el B1 hídtól B2 hídnak, mert a szürke VLAN-ba tartozó számítógépek kapcsolódnak B2-höz. A fehér VLAN-t megvizsgálva láthatjuk, hogy a B2 híd B1 irányába néző portja nincs F-fel felcímkézve. Ez azt jelenti, hogy a fehér VLAN egy kerete sem fog a B2 hídtól a B1 hídnak továbbítódni. Ez a helyes működés, mert fehér VLAN-hoz tartozó állomások nem kapcsolódnak a B1-hez.



[21] Az ábrán a fizikai réteg adatszerkezete hibás, mert ott struktúra nélküli bitsorozatnak kellene lenni. (A lektor megjegyzése)

[22] Ez egy önellentmondás. De ha a műszaki részleteket nézzük, a protokoll lehetővé teszi ezt. Ez a nem szándékolt működés akkor fordulhat elő, ha túl sok híd van a hálózatban, és két vagy több fa alakul ki, melyek nem fedik egymást. (A fordító megjegyzése)

[23] Itt a szerző pontatlan, mert az adatszórást az különbözteti meg az elárasztástól, hogy a célcím csupa 1-es. De a hidak nem változtatják meg a fejlécet. Tehát a hidak ilyenkor elárasztják a hálózatot keretekkel. (A fordító megjegyzése)