User Tools

Site Tools


wiki:site:cisco:stp

STP - Spanning Tree Protocol

Bridging loop

Komunikace PC-1 to PC-4

  1. Uvažujme, že PC-1 zná MAC adresu PC-4 a switche mají prázdné CAM tabulky.
  2. PC-1 pošle rámec s cílovou MAC (PC-4), oba sw ho přijmou na portu 1/1, a uloží si zdrojovou adresu PC-1 do CAM tabulky
  3. Jelikož adresa PC-4 není v CAM tabulkách, musejí sw rámec rozeslat všemi porty, kromě těch, na kterých rámec přijali
  4. Oba switche odešlou rámec z portů 2/1, PC-4 přijme dva rámce, každý switch zároveň přijme rámec od druhého switche.
  5. Oba switche si na základě přijatého rámce od druhého switche upraví záznam v CAM tabulce. Dle zdrojové adresy v rámcích se switche domnívají, že PC-1 je nyní v segmentu B na portech 2/1.
  6. Jelikož switche ještě neví, za kterým portem je PC-4 (PC-4 zatím nic nevysílal), musejí rámec, který přijaly od druhého switche, poslat na všechny porty kromě těch ze kterých jej přijaly. Tzn. ten samý rámec vyšlou z portů 1/1.
  7. Oba zase přijmou rámec odeslaný druhým switchem a opraví záznam v CAM (PC-1 je na portu 1/1).
  8. Tento rámec oba zase vyšlou z portu 2/1. Přijmou rámec vyslaný druhým switchem, opraví záznam v CAM (PC-1 je na portu 2/1).
  9. Dále se celý proces opakuje…

Broadcast storm

  • vznikne odesláním L2 broadcastu do vzniklé smyčky
  • Broadcast se ve smyčce “točí” donekonečna

BPDU

  • src.mac = mac portu switche
  • dst.mac = 0180.c200.0000
  • defaultně se rozesílá všemi porty každé 2 s (Hello time)

Dva typy:

  1. Configuration BPDU
  2. Topology Chnage Notification (TCN) BPDU

Hlavička Configuration BPDU:

bytesfield Poznámka
2Protocol ID vždy 0
1Version vždy 0
1Message type Config/TCN
1Flags
8Root BID
4Root Path Cost
8Sender BID
2Port ID
2Message Age násobky 1/256s, tzn. 0-256s
2Max.Age násobky 1/256s, tzn. 0-256s
2Hello Time násobky 1/256s, tzn. 0-256s
2Forward Delay násobky 1/256s, tzn. 0-256s

Volba Root Bridge

  • Root Bridge je referčním bodem pro STP topologii
  • Každý switch má swé Bridge ID, na základě kterého dochází k volbě roota

Bridge ID (8 byte)

  • Bridge Prority (2 byte) - 0-65535, def.32768 (0x8000)
  • MAC Addr. (6 byte) - unikátní adr. backplanu nebo supervizoru, nelze měnit
  • - čím nižší-tím lepší
  • (formát 32768.aaaabbbbcccc)
  • Každý switch po zapnutí se domnívá, že je root
  • Začne rozesílat BPDU, v polích RootBID a SenderBID uvádí své BridgeID
  • Jakmile získá BPDU jiného switche s nižším RootBID, musí si tuto hodnotu pamatovat a posílat i ve svých BPDU v poli RootBID.
  • Další BPDU porovnává s nejnižší známou hodnotou, kterou si pamatuje.
  • Za nějaký čas se switche shodnou na jednom, který má nejnižší BID - ten je root

Voba Root Portu

  • Děje se jen na nonroot switchích!
  • root path cost - kumulativní hodnota, celková cena cesty k rootu, přenáší se v BPDU
  • path cost - jen lokální význam, cena cesty k sousednímu switchi

Path Cost:

  • 1 byte
  • původně počítáno lineárně 1000Mbps / bandwidth linky
  • dle nových pravidel, je cost nelineární
Link Bandwidth Old STP Cost New STP Cost
4 Mbps 250 250
10 Mbps 100 100
16 Mbps 63 62
45 Mbps 22 39
100 Mbps 10 19
155 Mbps 6 14
622 Mbps 2 6
1 Gbps 1 4
10 Gbps 0 2

Root Path Cost

  • Root bride pošle BPDU s root path cost = 0
  • Jakmile nejbližší sousední switch přijme BPDU, zvedne hodnotu root path cost o cenu linky, na které BPDU přijal.
  • Jestliže přijde BPDU ještě z jiného portu, děje se to samé.
  • Porovnají se získané hodnoty, port s nejnižší hodnotou root path cost se stane root portem
  • Pak se pošle BPDU dál s novou (tou nejnižší) hodnotou root path cost.

Volba Designated portu

  • Vždy jeden na síťový segment
  • Designated port je jediný v segmentu, který může forwardovat provoz
  • Designated portem se stane port switche, který v segmentu posílá BPDU s nejnižší hodnotou root path cost

V případě stejných hodnot rozhoduje:

  • Nižší Root BID
  • Nižší Root Path Cost
  • Nižší Sender BID
  • Nižší Sender port ID

STP Stavy portů

Disabled

  • Administratevly down

Blocking

  • nemůže vysílat ani příjmat
  • nemůže přidávat MAC adresy do CAM table
  • Může jen příjmat BPDU

Listening

  • Do tohoto stavu přechází v případě, je pravděpodobné, že se port stane root potem nebo designated portem
  • nemůže vysílat ani příjmat
  • Může vysílat a příjmat BPDU
  • Forward Delay = 15 s
Switch# show spanning interface fa 0/1
Vlan               Port ID                      Designated                  Port ID
Name               Prio.Nbr      Cost Sts      Cost  Bridge ID              Prio.Nbr
----------------- ------------- -------------- ---------------------------  --------
VLAN0001           128.1           19 LIS       0    32769 000a.f40a.2980   128.1

*Mar 16 14:31:15 UTC: STP SW: Fa0/1 new learning req for 1 vlans

Learning

  • Přijímá a vysílá BPDU
  • Přijímá rámce a plní si CAM tabulku
  • nemůže vysílat
  • Forward Delay = 15 s
Switch# show spanning interface fa 0/1
Vlan               Port ID                      Designated                  Port ID
Name               Prio.Nbr      Cost Sts      Cost  Bridge ID              Prio.Nbr
----------------- ------------- -------------- ---------------------------  --------
VLAN0001           128.1           19 LRN       0    32768 00d0.5849.4100   32.129

*Mar 16 14:31:30 UTC: STP SW: Fa0/1 new forwarding req for 1 vlans

Forwarding

  • Port je plně funkční
Switch# show spanning interface fa 0/1
Vlan               Port ID                      Designated                  Port ID
Name               Prio.Nbr      Cost Sts      Cost  Bridge ID              Prio.Nbr
----------------- ------------- -------------- ---------------------------  --------
VLAN0001           128.1           19 FWD       0    32768 00d0.5849.4100   32.129

Jak ručně určit stav STP?

  1. Všem linkám určit cost
  2. Určit Root Bridge - switch s nejnižším Bridge ID
  3. Určit Root porty - 1 per switch, nejnižší root path cost
  4. Učit Designated porty - 1 per segment, nejnižší root path cost, v případě shody použít rozhodovací pravidla pro STP
  5. Určit Blocking porty - všechny porty, které nejsou root nebo designated

STP Timers

Konfigurují se centralizovaně (s vyjímkou TCN BPDU Hello Time) na root bridgi, protože hodnoty timerů jsou přenášeny v BPDU. Defaultní hodnoty jsou nastaveny na network diameter = 7, počítáno od root bridge (včetně). Změna těchto hodnot se doporučuje provádět pouze změnou net.diameteru na root bridgi, který si pak hodnoty přepočítá.

Hello Time

  • Dle 802.1D defaultně 2 s
  • časový interval mezi Conf.BPDU odesílaných root bridgem
  • Změna HelloTime na root bridgi se týká všech nonroot switchů, protože nonroot switche Conf.BPDU jen přeposílají.
  • Hello Time pro TCN BPDU se konfiguruje lokálně na jednotlivých switchích

Forward Delay

  • Defaultně 15 s
  • Určuje délku Listening a Learning stavů

Max Age

  • Defaultně 20 s
  • Každý switch si pamatuje nejlepší přijaté BPDU, jakmile tato BPDU přestanou přicházet, switch po čase Max Age toto BPDU v paměti nahradí jiným a dojde ke změně topologie.

Topology Changes

TCN BPDU

  • Switch ho odesílá z root portu při každé změně (link up/down), netýká se změn na portech konfigurovaných jako portfast
  • Neobsahuje žádné informace, slouží jen k informaci o tom že došlo ke změně
  • TCN BPDU jsou odesílány v intervalech Hello Time, dokud nejsou potvrzeny sousedním switchem ACK BPDU, který je stejným způsobem propaguje dál směrem k rootu.
  • Jakmile root přijme TCN také ho potvrdí, následně všem rozešle Config.BPDU s nastaveným flagem Topology Change.
  • Díky tomu všechny switche zkrátí platnost CAM tabulky z def.300 s na Forward Delay 15 s.

TCN BPDU

byesfield
2Protocol IDvždy 0
1Versionvždy 0
1Message Type

Direct Topology Changes

(link down)

  1. Switch C a switch A detekují na svých portech(1/1 a 1/2) pád linky.
  2. Switch C zahodí “best BPDU”, které měl v paměti, protože BPDU bylo přijato portem, který nyní spadl. Běžně by se switch pokusil odeslat TCN z root portu, v tomto případě však root port spadl. V případě switche A se TCN neodesílá, protože switch je root bridge.
  3. Root bridge, switch A, rozešle Config.BPDU s nastaveným TCN flagem.
  4. Switche B a C po přijetí tohoto BPDU zkrátí platnost CAM tabulek na dobu Forward delay (15s).
  5. Switch C přijal BPDU na portu 1/2, který byl dosud blokován, přijaté BPDU je v tuto chvíli nejlepší ⇒ port se stane novým root portem a přejde do stavu forwarding.

  • U switchů A a B nedochází během konvergence k žádným změnám stavů portů, změna se týká pouze switche C
  • Ztráta konektivity hostů switche C, trvá dobu, kterou port 1/2 prochází stavy Listening a Learning, tedy celkem 30 sec.

Indirect Topology Changes

(link up, but no data can pass between switches)

  1. Switch A i C mají linku up, linkou však neprochází data a ani BPDU
  2. Nedošlo k chybě linky, neposílá se žádné TCN.
  3. Switch C má v paměti “best BPDU”, které předtím přijal z portu 1/1. Nyní však tímto portem žádné BPDU nepřichází a po vypršení času Max Age toto “best BPDU” není platné a je z paměti vymazáno.
  4. Dříve nebo později je přijato BPDU na portu 1/2, které je nyní nejlepší přijaté. Port 1/2 se stane root portem a přejde ze stavu Blocking přes Listening a Learning do stavu Forwarding.

  • Hosti switche C v tomto případě ztratí konektivitu na čas Max Age (20s) + čas než dorazí další BPDU (2 s) + čas, který portu 1/2 trvá přechod do stavu forwarding (15 + 15 s) ⇒ celkem cca 52 sec.

Insignificant Topology Changes

(access port up/down)

  1. PC na portu 2/12 někdo vypne, switch detekuje pád linky.
  2. Switch C začne posílat TCN BPDU směrem k rootovi (portem 1/1)
  3. Root bridge jej potvrdí TCN ACK a pak rozešle Config.BPDU s TCN flagem.
  4. Toto BPDU způsobí, že switch B a C zkrátí platnost svých CAM tabulek, v tabulkách zůstanou záznamy jen aktivních spojení. Zkrácená platnost tabulek trvá po dobu Forward delay + Max age.

  • Jedná se jen o kosmetický problém a je třeba zvážit důsledky ve větší síti s mnoha PC, kde je zapínání a vypínání PC běžné. Časté mazání a zkracování platnosti CAM záznamů způsobuje nárůst broadcastového provozu.
  • Předejít se tomu dá nastavením portů pro hosty jako Portfast

Typy STP

CST Common Spanning Tree

  • IEEE 802.1Q - specifikuje jak jsou vlany přenášeny v trunku mezi switchi a zároveň specifikuje single instanci STP, která zahrnuje všechny VLANy.
  • Tato instance STP je nazývána CST Common Spanning Tree.
  • CST BPDU jsou přenášena v nativní VLAN a v netagovaných rámcích.
  • Jedna instance STP pro všechny VLANy je výhodná z hlediska konfigurace a zátěže CPU.
  • Záložní linky mezi switchi však jsou blokovány a jsou nevyužité.

PVST Per-VLAN Spanning Tree

(Cisco)

  • Pro každou VLAN zvláštní instance STP.
  • STP pro každou VLAN lze konfigurovat samostatně.
  • Umožňuje load balancing po záložních linkách (některé vlany jdou jednou cestou a ostaní druhou cestou)
  • Jelikož se jedná o proprietární prot., vyžaduje na truncích enkapsulaci ISL.
  • Není kompatibilní s CST, nedochází k výměnám BPDU.

PVST+ Per-VLAN Spanning Tree Plus

(Cisco)

  • Kompatibilní s CST i PVST.
  • PVST+ může sloužit jako překladač mezi CST a PVST.
  • S PVST komunikuje prostřednictvím ISL trunků, s CST si vyměňuje BPDU v netagovaných rámcích v nativní VLAN.
  • BPDU jiných instancí PVST+ jsou skrz část sítě s CST tunelována. Posílají se se speciální (mcast) cílovou MAC adresou, která CST switche nezajímá, avšak dorazí-li k PVST+ switchi, ten BPDU zpracuje.

Konfigurace STP

Defaultně - STP zapnuto.

Switch(config)# [no] spanning-tree vlan vlan-id
Switch(config-if)# [no] spanning-tree vlan vlan-id

STP Root Bridge

Root Bridge by měl být výkonný switch v centru L2 sítě. Nejlépe v distribuční vrstvě nebo blízko serverové farmy. Vždy je potřeba ručně nakonfigurovat root bridge a secondary root bridge, aby se předešlo nečekaným stavům.

Bridge ID

  • Standartní dle 802.1D - 16 bitů bridge priority + MAC adr.VLAN
  • Rozšířené dle 802.1t - 4 bity priorita (0-61440 násobky 4096) + 12 bitů VLAN ID + MAC adr.VLAN

Jestliže switch nepodporuje 1024 MAC adres pro vnitřní použití, je defaultně použito rozšířené bridge ID. V opačném případě je def. použito standartní Bridge ID.

Switch(config)# [no] spanning-tree extended system-id

Ručně:

Switch(config)# spanning-tree vlan vlan-list priority bridge-priority

Bridge priority:

  • Standartně : 0-65535, def.32768
  • Extended Sysem ID: 0-61440 (násobky 4096), def.32768

Pomocí makra:

Switch(config)# spanning-tree vlan vlan-id root {primary | secondary} [diameter diameter]
  • makro přihlídne k aktuálním hodnotám v síti ve chvíli kdy je spuštěno, avšak nezaručí, že se switch stane rootem, popř. že si tento status udrží.
  • jelikož se jedná o makro, není vidět ve výpisu konfigurace switche
  • primary je-li aktuální priorita roota větší než 24576 switch si nastaví tuto prioritu, jeli priorita roota menší, switch si nastaví o 4096 nižší bridge prioritu (kromě nuly, tu je třeba nastavit ručně).
  • secondary - bridge priority se nastaví na 28672, spoléhá se to na to, že všechny switche jsou v defaultu, je to z důvodu, že další secondary root nelze zjistit, protože neposílá žádná BPDU.
Switch(config)# spanning-tree vlan 1 root primary
vlan 1 bridge priority set to 24576
vlan 1 bridge max aging time unchanged at 20
vlan 1 bridge hello time unchanged at 2
vlan 1 bridge forward delay unchanged at 15

Příklad:

  • Switch A je root a má ve VLAN 100 prioritu 4200
  • Switch B je v defaultu a používá extended sytem id - ve VLAN 100 má prioritu 32768+100=32868
Switch_B(config)# spanning-tree vlan 100 root primary

Tímto příkazem se nám nepodaří udělat ze switche B roota, protože pokud si má nastavit o 4096 nižší prioritu, musel by si nastavit 104 - což není násobek 4096, jediná zbývající možnost by byla nula, tu ale nelze nastavit pomocí makra - musí se zadat ručně:

Switch_B(config)# spanning-tree vlan 100 priority 0

Nyní je priorita switche B 0+100=100.

Root Path Cost

  • kumulativní hodnota všech hodnot cost po cestě k rootu
  • lze ovlivnit nastavením cost jednotlivých portů
Switch(config-if)# spanning-tree [vlan vlan-id] cost cost(1-65535)
Switch# show spanning-tree interface type mod/num [cost]
Vlan              Role Sts Cost       Prio.Nbr Type
----------------- ---- --- ---------- -------- -----------------------------
VLAN0001          Root FWD 4          128.1    P2p
VLAN0010          Desg FWD 4          128.1    P2p
VLAN0020          Root FWD 4          128.1    P2p

Port ID

  • 16 bitů = 8 bitů priorita + 8 bitů port number
  • Port priority = 0-255, defaultně 128
  • Port number = 0-255, na “nemodulárním” switchi odpovídá č.portu (fa 0/10 = 10), na modulárním switchi nebo v portchannelu už není odvoditelné.
Switch(config-if)# spanning-tree [vlan vlan-list] port-priority port-priority
Switch# show spanning-tree interface type mod/num

STP Timers

  • Nastavovat jen na ROOTOVI !!! - časy se pomocí BPDU vypropagují do ostatních switchů
  • timery lze konfigurovat globálně (vynecháním parametru vlan) nebo pro konkrétní VLANy (instance STP)

Manuální konfigurace:

Switch(config)# spanning-tree [vlan vlan-id] hello-time seconds(1-10,def.2)
Switch(config)# spanning-tree [vlan vlan-id] forward-time seconds(4-30,def.15)
Switch(config)# spanning-tree [vlan vlan-id] max-age seconds(6-40,def.20)

Automatická konfigurace pomocí makra:

Switch(config)# spanning-tree vlan vlan-list root {primary | secondary} [diameter diameter [hello-time hello-time]]
  • hello-time je nepovinný, při neuvedení se použijí def.2s ze kterých se dopočítají zbylé timery pro zadaný diameter

PortFast

(Cisco)

  • zajišťuje rychlou konektivitu pro PC na access layer switchi
  • Stadartně portu trvá až 50s (30s STP + 20s PaGP) než přejde do stavu Forwarding po připojení PC
  • Na portech, kde je jen jedno zařízení (PC) je riziko vzniku smyčky malé
  • PortFast zajistí okamžitý přechod ze stavu Blocking do Forwarding (vynechají se stavy Listening a Learning)
  • Detekce smyček na portu však nadále probíhá a při vzniku smyčky port přejde do stavu Blocking
  • TCN BPDU se neposílají při změně stavu portu (up/down)!

Globální konfigurace:

Switch(config)# spanning-tree portfast default

Konfigurace per-interface:

Switch(config-if)# [no] spanning-tree portfast

Makro pro access port:

  • zapne na portu PortFast
  • nastaví port jako access
  • vypne na portu PaGP
Switch(config-if)# switchport host
Switch(config-if)# switchport host
switchport mode will be set to access
spanning-tree portfast will be enabled
channel group will be disabled
Switch# show spanning-tree interface type mod/num portfast
Switch# show spanning-tree interface fastethernet 0/1 portfast
VLAN0010          enabled

UplinkFast

(Cisco)

  • Slouží ke zrychlení zvednutí záložního uplinku na access switchích
  • Spadne-li na access switchi uplink (root port), zvednutí záložního běžně trvá až 50s, po celou tuto dobu je switch a jeho klienti odříznut od sítě.
  • Je-li záložních uplinků více, je okamžitě zvednut ten s nejnižší root path cost
  • Z principu své funkce nelze použít na Root Bridgi
  • Po zapnutí funguje pro celý switch a všechny VLANy
  • Zvednutím bridge priority na 49152 zajišťuje, aby se switch nemohl stát rootem
  • Port cost všech portů je zvednuta o 3000, tím se zajistí, že porty budou znevýhodněny ve výpočtu root path cost pro níže připojené switche.
  • UplinkFast poskytuje mechanismus, který zajistí rychlý update CAM tabulky nadřazeného switche po změně uplinku. Posílá rámce s cílovou mcast adresou 0100.0ccd.cdcd a do pole zdrojové adresy dosazuje adresy ze své CAM tabulky. Parametr max-update-rate udává počet paketů (pps) za sekundu. Defaultně je to 150pps, je-li nastavena 0 nic se neposílá.
Switch(config)# spanning-tree uplinkfast [max-update-rate pkts-per-second(0-65535,def.150)]
Switch# show spanning-tree uplinkfast
Switch# show spanning-tree uplinkfast
UplinkFast is enabled
Station update rate set to 150 packets/sec.
UplinkFast statistics
Number of transitions via uplinkFast (all VLANs)             : 2
Number of proxy multicast addresses transmitted (all VLANs)  : 52

Name                  Interface List
--------------------- --------------------------------
VLAN0001              Gi0/1(fwd)
VLAN0010              Gi0/1(fwd)
VLAN0100              Gi0/1(fwd)

BackboneFast

(Cisco)

  • Switch aktivně zjišťuje alternativní cesty k rootovi při detekci indirect link failure
  • indirect link failure je detekováno přijetím slabšího (inferior) BPDU na root portu nebo Blocked portu
  • Toto BPDU je rozesláno switchem, který ztratil kontakt s rootem a inzeruje v něm sebe jako roota.
  • Běžně switch musí čekat po dobu Max Age, než může takové BPDU akceptovat.
    • Je-li slabší BPDU přijato Blocked portem, je port zvolen rootem a ostatní Blocked porty jsou považovány za alternativní cesty k rootu.
    • Je-li slabší BPDU přijato Root portem, všechny Blocked porty jsou považovány za alternativní cesty k rootu.
    • Je-li slabší BPDU přijato Root portem, a na switchi není žádný Blocked port, switch usoudí že ztratil konektivitu s rootem. V tomto případě se switch snaží stát Root Bridgem.

RLQ - Root Link Query protocol

  • je použit v případě že switch má nějaké Blocked porty
  • slouží ke zjištění zda upstream switche mají spojení s rootem
  • switch pošle RLQ Request
  • RLQ Request, je propagován sítí, je-li příjemcem root bridge nebo switch, který nemá spojení s rootem, odpoví zprávou RLQ Reply.
  • Jestliže RLQ Reply je přijato na root portu - je spojení s rootem OK.
  • Jestliže RLQ Reply je přijato nonroot portem, musí být zvolena alternativní cesta k rootu - max age timer okamžitě expiruje, aby mohl být vybrán nový root port.
  • Celá pointa BackboneFast spočívá jen ve zkrácení doby rekonvergence při zjištění problému s cestou k rootu.
  • Toho je dosaženo okamžitou expirací max Age timeru při zjištění chyby
  • Celkově lze tedy rekonvergence dosáhnout během 30s (Listenning + Learnning) místo původních 50s (MaxAge + Listenning + Learning)
  • BackboneFast je defaultně vypnuto, v případě implementace, je nutné jej zapnout na všech switchích v síti (z důvodu použití RLQ).
Switch(config)# spanning-tree backbonefast
Switch# show spanning-tree backbonefast
Switch# show spanning-tree backbonefast
BackboneFast is enabled

Monitoring STP

Switch# show spanning-tree [detail]
Switch# show spanning-tree vlan vlan-id
Switch# show spanning-tree [vlan vlan-id] summary
Switch# show spanning-tree [vlan vlan-id] root
Switch# show spanning-tree [vlan vlan-id] bridge
Switch# show spanning-tree bridge brief
Switch# show spanning-tree interface type mod/num [detail]
Switch# show spanning-tree uplinkfast
Switch# show spanning-tree backbonefast

Protecting STP topology

Root Guard

  • slouží k obraně před podvržením roota (připojení switche s nižší bridge priority)
  • měl by se zapnout na všech portech, kde za žádných okolností nebude root
  • jakmile jsou na portu se zapnutým Root Guardem přijímána tzv. superior (lepší) BPDU, port přejde do stavu root-inconsistent. Port nepropouští žádná data, může přenášet BPDU, nemůže je však zvenčí přijímat. Port se nemůže stát root portem.
  • jakmile přestanou přicházet superior BPDU, port přejde běžnými STP stavy do stavu forwarding
  • Pozor, RootGuard nerozlišuje VLANy, přijde-li superior BPDU, provoz na portu je blokován pro všechny VLANy.
Switch(config-if)# spanning-tree guard root
Switch# show spanning-tree inconsistentports

BPDU Guard

  • Ochrana před příjmem nežádoucích BPDU
  • Obvykle se zapíná na PortFast portech na access switchích
  • po přijetí BPDU port přejde do stavu err-disabled a je vypnut, zvednout ho lze ručně pomocí shut/no shut nebo automaticky pomocí errdisable timeout funkce
  • BPDU Guard má zabránit potížím s připojením nežádoucího switche (změna topologie STP, možnost vzniku smyčky)
  • BPDU Guard neumí zabránit vzniku smyčky připojením hubu do dvou různých míst v síti, kde neběží STP

Globální konfigurace:

Switch(config)# spanning-tree portfast bpduguard default
  • projeví se na všech PortFast portech

Per-port konfigurace:

Switch(config-if)# [no] spanning-tree bpduguard enable
Switch# show spanning-tree summary
Switch# show spanning-tree summary totals

Loop Guard

  • Ochrana proti náhlé ztrátě příjmu BPDU
  • Blocking port setrvává ve stavu Blocking dokud na něj chodí BPDU, jakmile se příjem BPDU přeruší port čeká dobu Max Age pak začne přecházet do stavu Forwarding, protože se domnívá, že vznik smyčky nehrozí a že na protějším konci linky není STP zařízení - toto může být příčinou vzniku smyčky!
  • LoopGuard sleduje příjem BPDU na nondesignated (blocking/alternate) portech, jakmile je přerušen příjem BPDU, LoopGuard uvede port do stavu loop-inconsistent, provoz je stále blokován.
  • Jakmile se příjem BPDU obnoví, LoopGuard nechá port projít běžnými STP stavy.

Globální konfigurace:

Switch(config)# spanning-tree loopguard default

Per-port konfigurace:

Switch(config-if)# [no] spanning-tree guard loop
  • Loop Guard funguje per-VLAN
  • Lze jej aktivovat globálně bez ohledu na funkce portů
Switch# show spanning-tree summary

UDLD

(Cisco)

UniDirectional Link Detection

Jednosměrný spoj:

  • nejpravděpodobnější výskyt na optických propojích, chyba GBIC, SFP nebo přerušení vlákna
  • nebezpečné pro STP, v případě, že Blocking port přestane přijímat BPDU, začne přecházet do stavu Forwarding a vznikne smyčka

UDLD:

  • sleduje zda je linka opravdu obousměrná
  • switch posílá svému protějšku speciální L2 UDLD rámce obsahující identifikaci svého portu a očekává odpověď s identifikací protějšího portu
  • musí být nakonfigurováno na obou koncích sledované linky, jinak nejsou odesílány odpovědi
  • Porty na obou koncích posílají svá echa nezávisle, na lince běží tedy jakoby dva procesy UDLD
  • Echa jsou posílána v konfigurovatelných intervalech - def. 15 sec, cílem je, aby UDLD stihlo zasáhnout dříve než port stihne přejít z blocking do forwarding stavu ⇒ celkový čas detekce jednosměrnosti musí být menší než Max Age + 2x Forwarding Delay tedy 50 sec.
  • UDLD detekuje jednosměrnest až po třetím echu bez odpovědi, defaultně tedy po 45 sec
  • Jelikož každý switch si posílá vlastní echa, může být message time na obou koncích různý a UDLD bude fungovat normálně!

Normal mode - po detekci jednosměrnosti není funkce portu omezena, port je označen jako undetermined state a je vygenerována syslog zpráva

Aggressive mode - po detekci jednosměrnosti se switch pokusí ještě linku “profouknout”, začne posílat echo každou sekundu po dobu 8s, nepřijde-li ani jedna odpověď, port přejde do stavu errdisabled

Globální konfigurace:

  • zapne se na všech optických portech
  • message time:
    • na Cat 3550 = def. 7sec
    • na Cat 4500 a 6500 = def. 15sec
Switch(config)# udld {enable | aggressive | message time seconds(7-90,def.7 or 15)}

Per-port konfigurace:

  • lze zapnout i na běžných portech
  • lze použít k vypnutí UDLD na konkrétních optických portech, je-li použita globální konfigurace
Switch(config-if)# udld {enable | aggressive | disable}

První konfigurace:

  • Je-li UDLD konfigurováno v běžící síti, může vzniknout obava, co se stane když ho zapnu na jednom konci a na druhém ještě není nakonfigurováno.
  • Tato situace je ošetřena tak, že UDLD při první konfiguraci nemá žádné informace o svém sousedovi, posílá tedy echa a čeká na odpověď
  • dokud není UDLD zapnuto na protějším konci, odpovědi na echa nepřichází
  • v tomto případě linka nespadne
  • UDLD začne řešit stav linky až po té co je nakonfigurováno na obou koncích

UDLD v EtherChannelu:

  • echa jsou odeílánána v jednolivích linkách channelu
  • UDLD tedy k portům přistupuje jednotlivě, tzn. neshodí celý EtherChannel, ale jen konkrétní linku
Switch# show udld interface type mod/num
Switch# udld reset

BPDU Filter

  • Slouží k vypnutí STP na portu
  • Port nepřijímá a ani nevysílá BPDU
  • Jakmile na port přijde BPDU, port přestane být portfast
  • (při zvedání portu pár BPDU odejde = ochrana proti propojení dvou switchů s BPDU Filter)
  • Lze konfigurovat globálně nebo per-interface
  • Globální konfigurace zapne BPDU Filter na všech PortFast portech
Switch(config)# spanning-tree bpdufilter default
Switch(config-if)# spanning-tree bpdufilter {enable | disable}
Switch# show spanning-tree summary
wiki/site/cisco/stp.txt · Last modified: 2018/01/17 14:27 by root