一、STP的作用
1、網橋與交換機
都工作在第二層,網橋是交換機的前身,網橋基於軟件來實現各種功能、端口密度低。只支持半雙工。交換機基於硬件ASIC實現各種功能、端口密度高、支持全雙工。
2、單點鏈路故障(引入冗餘)
3、冗餘二層網絡中的問題(爲什麼要STP)
A、廣播風暴
B、MAC表的不穩定
C、重複的單播幀
D、多重循環
4、STP的作用
STP是一種循環避免的二層協議,網橋之間可以通過交換STP的消息,可以發現網絡中的物理環路,根據STP的算法,邏輯上阻塞某些接口,建立一個免循環(loop-free)的邏輯拓撲,最終STP能夠建立一個跨越整個二層交換網絡的免循環的支葉樹狀結構。
二、STP術語
1、STP的協議包BPDU 數據結構
Protocol identifier=00總是0
Protocol version=00(STP的版本 802.1D爲0)
BPDU type (00配置BPDU 80 TCN BPDU)
Flag:0 TC:根網橋置位,表示拓撲發生變化。7 TCA:收到TCN的網橋置位表子ACK確認。1 proposal建議 23端口功能(指定備份根替代) 45當前端口狀態(learning forwarding) 6同意(agreement)
Root identifier根網橋ID
Root path cost到達根網橋的STP開銷。不同廠商、測量評定,link cost的值可能不能,可手工指定 10M =100 100M =19 1000M =4 10G =2 622M =6 155M =14在收BPDU的口加開銷
Sending bridge id發送網橋ID
Port發送網橋端口ID
Message age:消息壽命,從根網橋發出BPDU之後的秒數,每經過一個網橋都遞減1,所以它本質上是到達根網橋的跳計數。
Information lifetime:最大壽命,網橋在將根網橋看作不可用之前保留根網橋ID的最大時間。
Root hello time:根網橋連續發送的BPDU之間的時間間隔
Forward delay:轉發延遲,網橋在監聽和學習狀態所停留的時間間隔
2、根網橋
在交換網絡中選舉無環路拓撲的參考點與核心,具有最低網橋ID的交換機。
網橋ID:優先級+MAC 字節數8=2+6
優先級:0-65535缺省一半32768 MAC交換機背板MAC
優先級=網橋優先級(4bit)+Extended System ID(12bit)
思科的網橋優先級帶有擴展ID,作爲VLAN或MST實例的惟一標識符.
網橋優先級=4096的倍數+vlan ID 手工修改只能影響前面4個bit。
3、根網橋的選舉標準bridge id (演示)
一個二層網絡中,選舉一個交換機作爲根網橋,最小優先級,優先級相同,選最小MAC。具有搶佔功能。
Switch(config)#spanning-tree vlan 1 root primary 優先級-8K
Switch(config)#spanning-tree vlan 1 root secondary 優先級-4K
Switch(config)#spanning-tree vlan 1 priority ?
<0-61440> bridge priority in increments of 4096
三、STP的工作過程
1、STP算法
確定根網橋、確定到根網橋的最小開銷、確定最小發送網橋ID、確定最小發送端口ID。
2、工作過程
初始化,網橋工作時,所有活動端口都發送BPDU,如果端口從其他網橋收到BPDU比自身發送的更佳,本端口停止發送BPDU,並存儲最佳的BPDU(20秒)maxage。
正常工作下,BPDU從根網橋出發,沿着所有活動路徑(DP)到達網絡中的每個網段,週期2秒,hello不正常時,如果停止從鄰居收到最佳BPDU持續20秒,本地端口又會發送BPDU。
3、STP的選舉
A、選擇根網橋:最小BID爲根
B、每個非根網橋選擇一個根端口
根端口:到根網橋最近的端口(開銷最小)。收BPDU的接口選
C、每個物理網段選擇一個指定端口,發送最佳BPDU的端口爲指定端口。根網橋上所有接口都爲指定接口,發BPDU的接口選。
D、其他端口,阻塞,邏輯阻塞,丟數據包,接收協議包。
(演示)三交換機互連。操作和選舉,兩交換機互連,操作和選舉
(發BPDU的接口改優先級,收BPDU的接口改cost)
接口spanning-tree vlan n port-priority 128(default)。16遞增0-255
Spanning-tree vlan n cost n
四、STP的端口狀態
1、port state
Down/disable:沒接設備或手工shutdown
Blocking:只能接收BPDU
Listening:收發BPDU,已確定活動拓撲,STP選舉
Learning:MAC學習,構建橋接MAC表
Forwarding:轉發用戶數據
2、STP timer(端口狀態切換時間)舉例情景
1、hello time 2秒
2、max age 20秒=10倍hello週期
3、forwarding 15秒
直接電信號丟失30s blocking(0)-listening(15)-learning(15)-forwarding
間接,最佳BPDU超時。blocking(20)-listening(15)-learning(15)-forwarding
3、STP TCN
TCN的作用,加速MAC地址表超時。
Mac超時
300s老化時間,直連電信號丟失,clear mac address-table dynamic,TC:300s—15s
TCN的產生條件,端口的UP/DOWN。端口狀態變爲forwarding。端口狀態變爲forwarding或Learning變爲blocking或down。
由感知拓撲變化的交換機產生TCN,沿根端口路徑上游交換機的中繼到根網橋。上游交換機收到TCN則指定端口才會處理TCN,上游交換機在下一個配置BPDU的過程中設置TCA標記,從收到的TCN的指定port發送出去。發送TCN的交換機收到TCA置位的配置BPDU停止產生TCN,否則,仍以本地hello週期發送BPDU。根網橋收到TCN,則在新的配置BPDU中,TCA、TC都置爲1,TC置位的目的加速網橋MAC表超時(300s—15s)。TC置位的BPDU持續發送maxage+forwarding delay,縮短爲15秒,不是清除整個表,只是加速MAC表超時。
五、STP高級特性
1、STP的模式
全局spanning-tree mode PVST+(default) Rapid PVST MST
Pvst+是cisco基於802.1D基礎上發展的,爲了兼容802.1Q每個vlan一個STP實例,加入cisco一些私有特性
Cst(common spanning-tree) 所有vlan共用一個STP的實例。優點:CPU資源佔用少,缺點:不能做負載均衡。
Rapid – pvst+ cisco私有,(RSTP)加快收斂2-3秒。
MST(國際標準)multi spanning-tree
多個vlan共用一個STP的實例
禁用STP no spanning-tree vlan x
2、STP做負載均衡。(PVST+)
網絡中存在冗餘鏈路,網絡中存在多個vlan,網絡中存在多個STP實例。操縱根網橋、 端口開銷、端口優先級、發送網橋ID實現。
3、調整STP的時間參數(不建議)
全局spanning-tree vlan vlan-id hello-time seconds
spanning-tree vlan vlan-id forward-time seconds
spanning-tree vlan vlan-id max-age seconds
spanning-tree transmit hold-count value Configure the number of BPDUs that can besent before pausing for 1 second. For value, the range is 1 to 20; the default is 6.
4、portfast
作用:優化邊界端口,接終端設備的端口快速收斂。Portfast立刻到forwarding,端口狀態變化不會導致TCN產生,端口STP仍在,當接收到BPDU會正常收斂,針對access。DHCP、bootp、802.1x。
接口下spanning-tree portfast
防止接交換機改變STP拓撲結構.接交換機自動關閉。
Sw1(config-if)#spanning-tree bpduguard enable
Sw1(config)#spanning-tree portfast bpduguard default
5、uplinkfast
作用:優化上聯端口,使主備uplink立刻切換。典型應用在接入層交換機,自動跟蹤根端口,使備份接口在2-3秒內收斂,變成forwarding。將交換機的優先級改爲49152,使其不能成爲根網橋,將其開銷加3000 ,使其不能成爲中繼交換機,由此說明交換機只能成爲未梢接入層交換機。
Sw1(config)#spanning-tree uplinkfast
6、backbonefast
作用:改進交換機之間間接鏈路失效,網絡收斂的時間(50—30)理論時間.收到次佳BPDU立刻處理。注意問題:在所有交換機上都要配置
Sw1(config)#spanning-tree backbonefast
引入RLQ機制(root link query)。如果網段down。B會發送次佳BPDU到C。C立刻處理,C沿根端口發送RLQ查詢到A,C在根端口收到迴應,知道根的存在,C立刻停止maxage。打開原來的blocking口。B收到BPDU知道從C可以到達根。
7、root guard
作用:配置該特性的端口不會成爲根端口,從而保護了STP的拓撲,收到superior BPDU端口進入root-inconsistent狀態,此狀態不能收發數據。拿走交換機正常,重新使用shutdown no shutdown.
Sw1(config-if)#spanning-tree guard root
8、loop guard
作用:跟蹤非指定端口(root port alt port)的BPDU活動,協議包收不到,端口不應被使用。BPDU丟失端口變爲loop-inconsistent狀態,blocking來防止循環。直到再收到BPDU,又可正常收斂。
Sw1(config-if)#spanning-tree guard loop
9、UDLD單向鏈路檢測
作用:針對光纖鏈路檢測單向鏈路故障造成的環路。定期發送UDLD hello包,三個週期沒有收到UDLD的迴應,則認爲link出現單向故障。
全局/接口:udld {aggressive/enable/disable}
強佔(errdisable) 一般(只發syslog)