Synergon Integrator
Magyar oldalak/Hírek/Szakértői vélemények
Betűméret növeléseBetűméret csökkentése
Nyomtatás
Unicast Frame Flooding kialakulása redundáns campus LAN környezetben
2009.05.19. kedd 18:28

Egy switchelt hálózatban az unicast (vagyis egy konkrét host Ethernet címére küldött) keretek csak azon a porton jelennek meg kimenő forgalomként, amelyen az adott host csatlakozik. Amennyiben a switchek portjain tartósan látunk olyan unicast forgalmat, amely nem a porton csatlakozó hostnak szól, akkor abban a hálózatban valami rosszul működik. Ez a cikk egy esettanulmány arról, hogy ilyen jelenség hogyan léphet fel úgy, hogy az nem a hálózati eszközök hibás működéséből, hanem a kialakított –egyébként jól működő- rendszer technikájából fakad, és ismertetjük a lehetséges orvoslási módszereket is.

A hálózat design áttekintése

A hálózat vázlatát mutatja az 1. ábra.

-

1. ábra: A hálózati design

A tervezett Campus hálózat architekturálisan teljes volt, vagyis tartalmazta a Core, a Distribution és az Access réteget. (A továbbiakban rendre C-, D- és A- rétegként hivatkozunk rájuk, az őket  reprezentáló switcheket pedig C-switch, D-switch és A-switch elnevezéssel illetjük. Azon switchek halmazát, amelyek egy összefüggő Layer 2 domaint alkotnak, egy disztribúciónak fogjuk nevezni; ez lényegében a két összetartozó D-switch és a rájuk csatlakozó A-switchek együttese.) A C-rétegben –amelyet két redundáns Catalyst 6500-as típusú switch alkotott- kizárólag Layer3 kapcsolatokat definiáltunk, nem is használtunk VLAN-okat, vagy Spanning Tree Protocol-t. A C-rétegben használt routing protocol gyors konvergenciájú OSPF volt.

A D-réteg switchei szintén Layer3 képességűek voltak. Két-két D-switch szolgálta ki az egy épület szintjein elhelyezett Access switcheket. A D-switchek egy-egy Layer3 kapcsolaton csatlakoztak a C-switchekhez; itt költségkímélési okból engedtünk a redundanciából, amennyiben egy-egy D-switch csak egy C-switch-hez csatlakozott (nem pedig mind a kettőhöz). A D-switchek a Layer 3 kapcsolatokon kívül kizárólag 802.1Q Trunk kapcsolatokkal rendelkeztek mind az A-switchek, mind egymás felé.

Az A-switchek két 802.1Q Trunk kapcsolaton csatlakoztak a D-switchekhez. Megjegyezzük, hogy ezzel a design módszerrel az A-switchek konfigurációja nem csak egy disztribúción belül, hanem a teljes hálózatban uniformizálható, hiszen a VLAN-számok és –nevek minden disztribúcióban újrahasználhatók. Az egyetlen beállítás, amiben disztribúciónként célszerűen. bár nem kötelezően különböznek, az a VTP domain név.

A logikai design szerint a hálózat Layer 3 határfelülete a D-switcheken végződött, és a két-két összetartozó D-switch már Layer 2 (VLAN Trunk) kapcsolaton csatlakozott egymáshoz. A disztribúciókban az A-switchekre csatlakozó host gépek számára minden egyes VLAN-ban a D-switchek Layer 3 (VLAN) interfészei biztosítottak a redundáns kijáratot VLAN-onként egy-egy HSRP (Hot Standby Router Protocol) default gateway IP-cím formájában. A D-switcheken –és így a rendelkezésre álló A-D és D-C kapcsolatokon- terhelésmegosztást alakítottunk ki. A terhelésmegosztás technikájára nem valamiféle dinamikus (packet vagy flow alapú), hanem statikus megoldást választottunk. Ennek lényege volt, hogy az A-rétegben szolgáltatott VLAN-okat a forgalmi szokások alapján két, közel egyenlő összsávszélességű csoportba osztottuk, és a D-switchek megfelelő beállításaival elértük azt, hogy rendes üzemi körülmények között az egyik VLAN csoport forgalma az egyik D-switchen (nevezzük ezt D1-switchnek), a másik VLAN csoport forgalma a másik D-switchen keresztül folyt. Ezt a működést a HSRP és a hálózatban működő Rapid Per VLAN Spanning Tree Protocol (Rapid-PVSTP) összehangolt tuningjával értük el. A lényeg az volt, hogy az adott VLAN-ban az STP root bridge és a HSRP aktív router ugyanaz a switch legyen, viszont az egyik VLAN csoport számára a D1-switch, míg a másik csoport számára a D2-switch lássa el ezt a szerepet. Ha valamely A-switch egyik uplink kapcsolata megszakadt, akkor a Rapid-PVSTP és a HSRP természetesen automatikusan a másik D-switch irányába terelte a forgalmat. A beállítások forgalomra gyakorolt eredményét mutatja a 2. ábra. Látszik, hogy a disztribúció piros VLAN-jának forgalma mindkét irányban a D1-switchben, míg a fekete VLAN forgalma a D2-switch-ben aggregálódik.

  -

2. ábra: A HSRP és STP tuning hatása a terheléselosztásra

A hiba észlelése

A hálózatban Cisco IP-telefonrendszert is üzembe helyeztünk, a számítógépek a telefonok mögött csatlakoztak a hálózatra. Egy telefonos probléma miatt csomagvizsgálatot végeztünk az egyik telefon számítógép-portján, és meglepve tapasztaltuk, hogy oda nem illő unicast keretek érkeznek a porton, vagyis az A-switch áraszt, szaknyelven Flooding-ot végez. A Flooding kialakulásának jól definiált okai a következők lehetnek:

  • A switch tábla (TCAM vagy CAM) betelik
  • Tartósan magas CPU terhelés
  • Unknown Unicast Destination Address („címzett ismeretlen”)

Az első két lehetőséget igen hamar kizártuk a switch berendezések lekérdezése után, így a harmadik okra koncentráltunk. Kiderült, hogy már a Layer 3 kapcsolást végző D-switch nem ismeri switch-táblájában azokat a mac-címeket, amelyekre szóló kereteket a végpontokon észleltünk, vagyis a Flooding már a D-switchben fellépett.

A jelenség magyarázata

A jelenség abban az esetben léphet fel, amikor a két kommunikáló berendezés egy disztribúción belül, de különböző VLAN-csoportba tartozó host. Másképpen fogalmazva az egyik host (nevezzük H1-nek) VLAN-jában a Default Gateway és STP root a D1-switch, a másik host (H2) VLAN-jában a Default Gateway és STP root a D2-switch. Vizsgáljuk meg a csomagok illetve keretek útját mindkét irányban! A megértést ábrák segítik; az ábrákon a két, egy disztribúcióban levő VLAN-t piros és fekete színek reprezentálják.

A H1-től H2 felé haladó csomag útját szemlélteti a 3. ábra.

-

3. ábra: A csomag útja H1-től H2 felé

A csomag Layer2 forráscíme a H1 host mac-címe, célcíme a D1-switch mac-címe, (hiszen a default gateway-en keresztül a fekete VLAN-ba tart a csomag). A D1-switch a bejövő keret alapján kitölti H1 mac-címével CAM-tábláját, vagyis tudja, hogy H1 melyik portján  látszik. A D1-switch eztuán a Layer2 keretezést leveszi a csomagról, és Layer3 forwarding döntést végez az IP csomagon (ezt a sárga szaggatott nyíl szimbolizálja), és megállapítja, hogy a fekete VLAN-ban kell kiküldenie a csomagot. A D1-switch ezután ahhoz, hogy Layer2 keretbe foglalja a csomagot egy ARP-kérést küld ki a fekete VLAN-ba H2 mac-címét tudakolva, amelyre a H2-től kapott válasz alapján megtudja H2 mac-címét, amelyet ARP és CAM-táblájába is bejegyez. Fontos tudnunk, hogy a Cisco IOS-ben az ARP-cache a bejegyzéseket alapértelmezetten 4 óráig, a CAM-tábla sorokat pedig 5 percig őrzi, továbbá az ARP bejegyzés kiöregedésekor az IOS először újabb ARP kéréssel megpróbálja megújítani a bejegyzést, és akkor törli, ha nem kap rá választ. A csomagot ezutám Layer2 kerettel látja el, és a a CAM-táblája alapján a Layer2 kapcsolással továbbítja esetünkben a D2-switch felé néző Trunk porton immár a fekete VLAN-ban. A D2-switch ezután a CAM-táblája alapján, egyszerű Layer2 kapcsolással továbbítja a keretet a megfelelő A-switch felé, amely hasonlóan kiküldi azt H2 portján.

A H2-től H1 felé haladó csomagok (4. ábra) hasonlóan követhetők, a legfőbb kölönbség a Layer3 kapcsolás helyében van.

-

4. ábra: A csomag útja H2-től H1 felé

Mivel a H2-nek a fekete VLAN-ban D2-switch a default gateway-e, ezért a visszafelé irányuló IP-forgalom Layer3 kapcsolása a D2-switchben történik. A D2-switch a H1 host mac-címéről az előbbiekhez hasonlóan a legelső neki szóló csomag előtt bonyolított ARP-kommunikáció alapján szerez tudomást, és bejegyzi azt az ARP és a CAM-táblájába.

A csomagok tehát fizikailag ugyanazon az útvonalon haladnak oda és vissza, ám a csomagfolyam mégis aszimmetrikus a két irányban a Layer3 kapcsolás, a routing helye miatt. Az aszimmetrikus routing következménye az, hogy a D1-switch az első ARP-válasz után nem kap olyan kereteket, amelyek H2-től származnak, vagyis amelyekben H2 mac-címe szerepel forráscímként. Mivel a switchek a bejövő keretek forráscímeiől „tanulnak”, így a CAM-táblájából 5 perc után törli a H2-re vonatkozó bejegyzést. Az ARP-cache bejegyzése viszont négy óráig érvényes, így leghamarabb akkor számíthatunk az ARP kommunikációból eredő CAM-bejegyzés frissítésre. Ezzel előállt az a helyzet, hogy a H2 mac-címe a D1-switch számára 3 óra 55 percig ismeretlen unicast cím, és a H2-nek szóló kereteket így minden, fekete VLAN-ba csatlakozó portján kiküld, vagyis D1-switch Flooding-ot végez H2 mac-címére. Szimmetrikus gondolatmenettel könnyű belátni, hogy hasonló helyzet áll elő D2 switchben H1 mac-címére.

Ha megfigyeljük D1-switchet, akkor azt látjuk, hogy a fekete VLAN-ban (amelybe a problémás H2 host tartozik) kizárólag az a VLAN Trunk portja van forwarding állapotban, amelyen ténylegesen ki kellene küldenie a keretet H2 felé akkor is, ha a CAM-táblájában szerepelne H2 mac-címe. A többi, fekete VLAN-ba tartozó A-switchek felé néző Trunk portján a Spanning Tree Protocol blokkolása miatt nincs kerettovábbítás. Hasonló a helyzet D2-switch és H1 host viszonylatában. Mondhatjuk, hogy az ismeretlen unicast címre való továbbítás miatt az ismeretlen Unicast Flooding állapot fennáll, de sajátos módon rendes üzemi állapotban éppen arra az egy trunk portra terjed ki, amely a megfelelő irány. Így ahhoz, hogy a jelenséget észleljük, kellett az a körülmény is, hogy a telepítéskor az A-switchek és a D-switchek közötti optikai kapcsolatokhoz a Gigabites SFP transceiver modulok jó része később érkezett meg, és így az A-switchek egy része így egyetlen Trunk kapcsolaton csatlakozott a D-switchhez. Ezt a helyzetet mutatja az 5. ábra.

-

5. ábra:Unicast Frame Flooding

Hasonló állapot életszerűbb módon kialakulhat akkor is, ha egy egyébként redundáns módon bekötött A-switch egyik uplink kapcsolata valamilyen műszaki hibaokból megszakad.

A fentieket összegezve megállapíthatjuk, hogy a jelenség nem hibás eszközműködés, hanem a design következménye, és bár rendes üzemi körülmények között is kialakul mégis rejtve marad, és mindenképpen ki kell küszöbölnünk a jelenlétét.

A jelenség kiküszöbölése

A leírt jelenség oka az aszimmetrikus routing miatt kialakuló ARP-cache és CAM-tábla inkonzisztencia. Az aszimmetrikus routing az egyik eredeti célból: a terhelésmegosztásból ered, vagyis a design szerves része, így ezt nem tudtuk és nem is akartuk megszüntetni. Megkerestük tehát, milyen módszerekkel lehet az ARP-cache és a CAM-tábla konzisztenciáját biztosítani. Mivel az ARP-válasz egyúttal az adott host CAM-tábla bejegyzését is frissíti, ezért kézenfekvő, hogy azt kell elérni, hogy az ARP kommunikáció a CAM-bejegyzés kiöregedése előtt megtörténjen. Az általunk választott megoldás a VLAN interfészeken az ARP-cache lejárati idejének valamivel 5 perc alá (298 másodpercre) állítása volt, de megfelelő lehet a CAM-aging növelése valamivel az ARP timeout fölé. Az ARP-lejárat csökkentése némiképp növeli az ARP (és így a broadcast) forgalmat, míg a CAM-aging megnövelése hálózatbiztonsági aggályokat vethet fel.

Oldal tetejére

Megoldásainkról bővebb információt a kapcsolatfelvételi űrlap kitöltésével és elküldésével kérhet.