Layer2 stabilitet (BPDU guard)

Att skydda kunder från andra kunder är en fråga som varit på tapeten många gånger.
Enkla åtgärder som att partitionera nätet med egna VLAN och subnät är bara några av de saker vi gör för att förbättra prestanda i nätet genom att minska ”skräp”-trafik. Ibland behövs ytterligare lite nätverks-magi.

I denna post kommer jag beskriva en av de metoder vi använder för att skydda våra nätverk på länklagret (layer 2).

Här om dagen fick jag en historia berättad för mig där en kille had stoppat in en kabel i fel nätverksport på sin skola.
Tydligen hade det sänkt hela kommunens nätverk när en switch-loop uppstått.

Här har vi ett solklart exempel på när nätverks-ansvarig inte gjort sin läxa.
Vad som hände här var att switchar får multipla vägar som trafiken kan gå. Ethernet är inte alltid så smart så att det kan förstå när nån gör fel. Den försöker bara matcha vad som händer på det fysiska lagret.

Ett värre exempel var nyligen då ett sjukhus datornätverk gick ned helt och hållet.
Detta berodde på att någon sjuksköterska hade kopplat in en nätverkskabel  i fel nätverksuttag. Felet upptäcktes inte förrens  man gått igenom varje avdelning där det fanns nätverk.

Vad som skapar detta fel om man inte vidtagit åtgärder mot detta är att när en port aktiveras och en ny väg till samma switchar märks så uppstår en loop. Paketen skickas runt runt, arp requests skickas fel och eventuell broadcast storm .

En lösning är att sätta upp korrekta spanning tree protocol (STP) konfigurationer. Beroende på switch-tillverkare och modell så aktiverar man STP per VLAN och port. Anger vilken port som kommer vara primär, och vilken som kommer vara sekundär vid eventuellt bortfall för att få redundans.

För cisco så finns det en superb beskrivning på Ciscos portal här .
Själv föredrar jag att lösa redundans i core och distribution på andra vis – men problemet med loopar kan fortfarande uppstå. Detta löser jag på ett smidigare sätt än STP.
Svaret på detta problem (och som kommunens it-tekniker borde kunnat) är BPDU guard.
Det är så enkelt och går snabbt att implemetera på ciscoutrustning och annan utrustning som stödjer det.

I cisco-miljö görs det på följande vis:

CatOS Command

Console> (enable) set spantree portfast bpdu-guard enable 

Spantree portfast bpdu-guard enabled on this switch. 

Console> (enable)

Cisco IOS Software Command

CatSwitch-IOS(config)# spanning-tree portfast bpduguard 
CatSwitch-IOS(config)

Vad detta gör är att när en switch loop upptäcks försätts ena anslutningen i inaktiverat (disable) läge.
Om man vill att switchen ska försöka återansluta efter ett tag kan man konfigurera automatiskt retry. Annars kommer den felande länken vara inaktiverad tills man löser det manuellt.

CatOS Commands

Console> (enable) set errdisable-timeout interval 400 

Console> (enable) set errdisable-timeout enable bpdu-guard

Cisco IOS Software Commands

CatSwitch-IOS(config)# errdisable recovery cause bpduguard

CatSwitch-IOS(config)# errdisable recovery interval 400

Note: The default timeout interval is 300 seconds and, by default, the timeout feature is disabled.

BPDU Guard bör man konfigurera på alla kritiska switchar där loopar kan uppstå. Det räcker med något så enkelt som att koppla en kabel från en port till en annan på samma switch ibland för att skapa en loop.
Källa: http://www.cisco.com/en/US/tech/tk389/tk621/technologies_tech_note09186a008009482f.shtml