Spanning Tree Protocol (STP) lost fysiek redundante topologieën in lus-vrije, boom-achtige topologieën op. Het grootste probleem met STP is dat sommige hardwaremislukkingen ervoor kunnen zorgen dat het mislukt. Deze mislukking creëert door te sturen loops (of STP loops). De grote netwerktekorten worden veroorzaakt door STP lijnen.
In dit document wordt de functie loop Guard STP beschreven die bedoeld is om de stabiliteit van Layer 2-netwerken te verbeteren. Dit document beschrijft ook de BPDU-scheefdetectie (Bridge Protocol Data Unit). De BPDU-skew-detectie is een diagnostische functie die syslg-berichten genereert wanneer BPDU’s niet op tijd worden ontvangen.
In dit document wordt ervan uitgegaan dat de lezer bekend is met de basisbediening van STP. Raadpleeg het gedeelte Spanning Tree Protocol (STP) op Catalyst Switches om te leren hoe STP werkt.
Dit document is niet beperkt tot specifieke software- en hardware-versies.
CatOS
De functie STP loop Guard is geïntroduceerd in CatOS versie 6.2.1 van de Catalyst software voor Catalyst 4000 en Catalyst 5000 platforms en in versie 6.2.2 voor Catalyst 6000 platform.
De BPDU-scheve detectiefunctie is geïntroduceerd in CatOS versie 6.2.1 van de Catalyst software voor Catalyst 4000- en Catalyst 5000-platforms en in versie 6.2.2 voor Catalyst 6000-platform.
Cisco IOS®
De functie STP-loop Guard is geïntroduceerd in Cisco IOS-softwarerelease 12.1(12c)EW voor Catalyst 4500 switches en Cisco IOS-softwarerelease 12.1(11b)EX voor Catalyst 6500.
De BPDU-functie voor de detectie van scheefheid wordt niet ondersteund in Catalyst-switches die Cisco IOS-systeemsoftware uitvoeren.
Intern, wijst STP aan elke brug (of switch) een rol toe die op configuratie, topologie, relatieve positie van de haven in de topologie, en andere overwegingen is gebaseerd. De havenrol definieert het gedrag van de haven vanuit het STP standpunt. Op basis van de havenrol, verstuurt of ontvangt de haven STP BPDU's en verstuurt of blokkeert het gegevensverkeer. Deze lijst geeft een korte samenvatting van elke STP poortrol:
Aangewezen-Eén aangewezen poort wordt geselecteerd per link (segment). De aangewezen haven is de haven die het dichtst bij de root-brug ligt. Deze poort verstuurt BPDU's op de link (segment) en verstuurt verkeer naar de root-brug. In een STP geconvergeerd netwerk, is elke aangewezen poort in de STP door te sturen staat.
Opstarten: de brug kan slechts één wortelpoort hebben. De basispoort is de haven die naar de root-brug leidt. In een STP geconvergeerd netwerk, is de wortelpoort in de STP door te sturen staat.
Alternatief: Alternatieve poorten leiden tot de root-brug, maar zijn geen wortelpoorten. De alternatieve poorten behouden de STP-blokkerende status.
Back-uplijn: dit is een speciaal geval wanneer twee of meer poorten van dezelfde brug (switch) onderling verbonden zijn, rechtstreeks of via gedeelde media. In dit geval wordt één haven aangewezen, en het resterende havenblok. De rol voor deze haven is back-up.
De functie STP loop Guard biedt extra bescherming tegen Layer 2 door te sturen lussen (STP loops). Een STP lijn wordt gecreëerd wanneer een STP die haven in een overtollige topologie blokkeert verkeerd overschakelt naar de door:sturen staat. Dit gebeurt meestal omdat een van de poorten van een fysiek redundante topologie (niet noodzakelijk de STP-blokkerende poort) niet langer STP-BPDU’s ontvangt. Bij zijn werking is STP afhankelijk van de continue ontvangst of transmissie van BPDU's op basis van de havenrol. De aangewezen haven geeft BPDU's door, en de niet aangewezen haven ontvangt BPDU's.
Wanneer één van de havens in een fysisch overtollige topologie niet meer BPDU's ontvangt, denkt STP dat de topologie lus gratis is. Uiteindelijk wordt de blokkerende poort van de afwisselende of reservepoort aangewezen en beweegt naar een doorvoerstaat. Deze situatie creëert een lus.
De lus Guard functie voert extra controles uit. Als BPDU's niet op een niet-aangewezen poort worden ontvangen, en loop Guard wordt geactiveerd, wordt die poort verplaatst naar de STP loop-inconsequent blokkerende staat, in plaats van de luisterstaat / het leren / het doorsturen staat. Zonder de lensbeveiliging neemt de haven de aangewezen havenrol op. De poort beweegt naar de STP staat en creëert een lus.
Wanneer de loop Guard een inconsistente poort blokkeert, wordt dit bericht gelogd:
CatOS
%SPANTREE-2-LOOPGUARDBLOCK: No BPDUs were received on port 3/2 in vlan 3. Moved to loop-inconsistent state.
Cisco IOS-Cisco
%SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/24 on VLAN0050.
Zodra de BPDU op een poort in een loop-inconsistente STP staat wordt ontvangen, verandert de haven in een andere STP staat. Volgens de ontvangen BPDU betekent dit dat het herstel automatisch is en dat interventie niet nodig is. Na herstel wordt dit bericht ingelogd:
CatOS
%SPANTREE-2-LOOPGUARDUNBLOCK: port 3/2 restored in vlan 3.
Cisco IOS-Cisco
%SPANTREE-2-LOOPGUARD_UNBLOCK: Loop guard unblocking port FastEthernet0/24 on VLAN0050.
Neem dit voorbeeld om dit gedrag te illustreren:
Switch A is de achterliggende switch. Switch C ontvangt geen BPDU's van switch B vanwege een storing in de unidirectionele koppeling tussen switch B en switch C.
Zonder loop Guard, de STP blokkerende poort op switch C transities naar de STP luisterstaat wanneer de max_age timer afloopt, en dan gaat het over naar de expediteur staat in twee keer de forward_delatime. Deze situatie creëert een lus.
Met loop Guard ingeschakeld, de blokkerende poort op switch C transities in STP loop-inconsistente status wanneer de max_age timer afloopt. Een poort in STP lijn-inconsistente staat geeft geen gebruikersverkeer door, dus er wordt geen lus gemaakt. (De loop-inconsistente staat is effectief gelijk aan het blokkeren van staat.)
De functie loop Guard wordt per poort ingeschakeld. Maar zolang deze de poort op het STP-niveau blokkeert, blokkeert loop Guard inconsistente poorten op een per-VLAN-basis (vanwege STP per-VLAN). Dat wil zeggen, als BPDUs niet op de boomstampoort voor slechts één bepaald VLAN worden ontvangen, slechts dat VLAN wordt geblokkeerd (verplaatst naar loop-inconsistente STP staat). Om de zelfde reden, als toegelaten op een interface EtherChannel, wordt het volledige kanaal geblokkeerd voor een bepaald VLAN, niet slechts één verbinding (omdat EtherChannel gezien wordt als één logische haven vanuit het STP standpunt).
Op welke havens moet de lus Guard worden ingeschakeld? Het meest voor de hand liggende antwoord betreft de blokkerende havens. Dit klopt echter niet helemaal. Loop Guard moet op de niet-aangewezen havens (preciezer, op wortel- en uitwijkhavens) worden ingeschakeld voor alle mogelijke combinaties van actieve topologieën. Zolang de lusbeveiliging geen per-VLAN optie is, zou de zelfde (boomstam) haven voor één VLAN en niet aangewezen voor het andere kunnen worden aangewezen. Er moet ook rekening worden gehouden met de mogelijke overloopscenario's.
Neem dit voorbeeld:
De standaardinstelling is dat loop Guard is uitgeschakeld. Deze opdracht wordt gebruikt om loop Guard in te schakelen:
CatOS
set spantree guard loopConsole> (enable) set spantree guard loop 3/13 Enable loopguard will disable rootguard if it's currently enabled on the port(s). Do you want to continue (y/n) [n]? y Loopguard on port 3/13 is enabled.
Cisco IOS-Cisco
spanning-tree guard loop Router(config)#interface gigabitEthernet 1/1 Router(config-if)#spanning-tree guard loop
Met versie 7.1(1) van de Catalyst software (CatOS) kan loop Guard mondiaal worden ingeschakeld op alle poorten. In feite is loop Guard ingeschakeld voor alle point-to-point links. De point-to-point link wordt gedetecteerd door de duplexstatus van de link. Als duplex vol is, wordt de link beschouwd als point-to-point. Het is nog steeds mogelijk om mondiale instellingen per poort te configureren of te omzeilen.
Geef deze opdracht uit om loop Guard mondiaal in staat te stellen:
CatOS
Console> (enable) set spantree global-default loopguard enable
Cisco IOS-Cisco
Router(config)#spanning-tree loopguard default
Geef deze opdracht uit om loop Guard uit te schakelen:
CatOS
Console> (enable) set spantree guard none
Cisco IOS-Cisco
Router(config-if)#no spanning-tree guard loop
Geef deze opdracht uit om loop Guard wereldwijd uit te schakelen:
CatOS
Console> (enable) set spantree global-default loopguard disable
Cisco IOS-Cisco
Router(config)#no spanning-tree loopguard default
Geef deze opdracht uit om de status van loop Guard te controleren:
CatOS
show spantree guardConsole> (enable) show spantree guard 3/13 Port VLAN Port-State Guard Type ------------------------ ---- ------------- ---------- 3/13 2 forwarding loop Console> (enable)
Cisco IOS-Cisco
show spanning-tree Router#show spanning-tree summary Switch is in pvst mode Root bridge for: none EtherChannel misconfig guard is enabled Extended system ID is disabled Portfast Default is disabled PortFast BPDU Guard Default is disabled Portfast BPDU Filter Default is disabled Loopguard Default is enabled UplinkFast is disabled BackboneFast is disabled Pathcost method used is short Name Blocking Listening Learning Forwarding STP Active ---------------------- -------- --------- -------- ---------- ---------- Total 0 0 0 0 0
Loop Guard en Unidirectional Link Detection (UDLD)-functionaliteit overlappen elkaar, gedeeltelijk in de zin dat beide bescherming bieden tegen STP-fouten veroorzaakt door unidirectionele koppelingen. Deze twee kenmerken verschillen echter van functionaliteit en hoe zij het probleem aanpakken. In deze tabel worden lijnbewaking en UDLD-functies beschreven:
Functionaliteit | Loop Guard | UDLD |
---|---|---|
Configuratie | per poort | per poort |
Handelsnorulariteit | Per-VLAN | per poort |
Autorecover | Ja | Ja, met optie uitlijning uit wissen |
Bescherming tegen STP-fouten veroorzaakt door unidirectionele koppelingen | Ja, wanneer ingeschakeld op alle wortel en afwisselende poorten in redundante topologie | Ja, wanneer ingeschakeld op alle links in redundante topologie |
Bescherming tegen STP-fouten die worden veroorzaakt door problemen in de software (de aangewezen switch stuurt geen BPDU) | Ja | Nee |
Bescherming tegen bedrading. | Nee | Ja |
Gebaseerd op de verschillende ontwerpoverwegingen kunt u of UDLD of de lijnGuard optie kiezen. Wat STP betreft, is het meest opvallende verschil tussen de twee kenmerken het ontbreken van bescherming in UDLD tegen STP-storingen veroorzaakt door problemen in software. Als resultaat hiervan stuurt de aangewezen switch geen BPDU's. Dit soort mislukkingen is echter (in een orde van grootte) zeldzamer dan fouten die worden veroorzaakt door eenrichtingsverbindingen. In ruil hiervoor zou UDLD flexibeler kunnen zijn in het geval van unidirectionele koppelingen op EtherChannel. In dit geval schakelt UDLD alleen mislukte koppelingen uit en het kanaal moet functioneel blijven met de resterende koppelingen. In zo'n mislukking, stopt de loop Guard het in een lus-inconsistente staat om het hele kanaal te blokkeren.
Daarnaast werkt loop Guard niet aan gedeelde links of in situaties waar de link in één richting is geweest sinds de link-up. In het laatste geval ontvangt de haven nooit BPDU en wordt het aangewezen. Omdat dit gedrag normaal zou kunnen zijn, wordt deze specifieke zaak niet beschermd door loop Guard. UDLD biedt bescherming tegen een dergelijk scenario.
Zoals beschreven, wordt het hoogste niveau van bescherming geboden wanneer u UDLD en loop Guard toelaat.
Root Guard
De wortelbeveiliging sluit elkaar uit met de loop bewaker. De root Guard wordt gebruikt in aangewezen havens, en het laat de haven niet toe om niet aangewezen te worden. De loop Guard werkt op niet aangewezen poorten en laat de haven niet aanwijzen door het verstrijken van max_age. De root Guard kan niet worden ingeschakeld in dezelfde poort als de loop Guard. Wanneer de lensbeveiliging in de poort is ingesteld, schakelt deze de wortelbeveiliging uit die op dezelfde poort is ingesteld.
Snel uplinken en backbone
Zowel uplink snel als backbone fast zijn transparant voor de loop Guard. Wanneer max_age snel wordt overgeslagen door backbone op het tijdstip van reconversie, geeft dit niet de loop Guard weer. Raadpleeg de volgende documenten voor meer informatie over snelle uplink-backbone en snel backbone:
PortFast en BPDU Guard en Dynamic VLAN
Loop Guard kan niet worden ingeschakeld voor havens waarop portfast is ingeschakeld. Aangezien BPDU Guard werkt op portfast-enabled poorten, zijn sommige beperkingen van toepassing op BPDU Guard. Loop Guard kan niet worden ingeschakeld op dynamische VLAN-poorten omdat deze poorten snel zijn ingeschakeld.
Gedeelde links
Loop Guard dient niet te worden ingeschakeld op gedeelde links. Als u loop Guard op gedeelde links inschakelen, kan het verkeer van hosts die zijn aangesloten op gedeelde segmenten worden geblokkeerd.
Meervoudige Spanning Tree (MST)
Loop Guard functioneert correct in de MST omgeving.
BPDU-scheve detectie
Loop Guard dient correct te werken met BPDU-scheefheid detectie.
De STP-operatie is sterk afhankelijk van de tijdige ontvangst van BPDU's. Bij elk hallo_time bericht (2 seconden standaard) verstuurt de root-brug BPDU's. Niet-root-bruggen regenereren geen BPDU's voor elk hallo_time bericht, maar ze ontvangen doorgestuurde BPDU's van de root-brug. Daarom zou elke niet-root-brug BPDU's op elk VLAN moeten ontvangen voor elk hallo_time bericht. In sommige gevallen worden BPDU's verloren, of de brug CPU is te druk om BPDU's tijdig door te geven. Deze problemen, evenals andere kwesties, kunnen er voor zorgen dat de BPDU's laat komen (als ze er al toe komen). Dit probleem bedreigt potentieel de stabiliteit van het overspannen van boomtopologie.
De BPDU-scheefheid detecteert dat de switch BPDU's die laat aankomen, bij de hand kan houden en de beheerder in kennis kan stellen van de waarschuwingsberichten. Voor elke poort waarop een BPDU ooit te laat is aangekomen (of is scheefgetrokken) meldt de scheefheid detectie de meest recente scheefheid en de duur van de scheefheid (latentie). Het meldt ook de langste BPDU-vertraging in deze poort.
Om de brug CPU tegen overbelasting te beschermen, wordt er geen syslg-bericht gegenereerd telkens wanneer er een BPDU-scheefheid plaatsvindt. Berichten zijn snelheidsbeperkt tot één bericht elke 60 seconden. Mocht de vertraging van BPDU echter groter zijn dan max_age gedeeld door 2 (wat standaard gelijk is aan 10 seconden), dan wordt het bericht direct afgedrukt.
Opmerking: BPDU-scheefheid detecteert is een diagnostische functie. Wanneer de BPDU-scheefheid is gedetecteerd, verstuurt het een syslog-bericht. De BPDU-scheefdetectie neemt geen verdere corrigerende maatregelen.
Dit is een voorbeeld van een syslogbericht dat door BPDU skew detectie wordt gegenereerd:
%SPANTREE-2-BPDU_SKEWING: BPDU skewed with a delay of 10 secs (max_age/2)
De BPDU-scheefdetectie wordt per switch ingesteld. De standaardinstelling is uitgeschakeld. Geef deze opdracht uit om BPDU-scheefdetectie mogelijk te maken:
Cat6k> (enable) set spantree bpdu-skewing enable Spantree bpdu-skewing enabled on this switch.
Om de informatie over de scheefheid van de BPDU te zien, gebruikt u de opdracht Show spantree bpdu-skewing <vlan>|< mod/port> zoals in dit voorbeeld wordt getoond:
Cat6k> (enable) show spantree bpdu-skewing 1 Bpdu skewing statistics for vlan 1 Port Last Skew (ms) Worst Skew (ms) Worst Skew Time -------------- --------------- --------------- ------------------------- 3/12 4000 4100 Mon Nov 19 2001, 16:36:04
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
02-Dec-2013 |
Eerste vrijgave |