一. STP
• STP 消除環路的思想:
○ 將網絡拓撲修剪爲樹形
○ 選擇樹根節點ROOT;
○ 確定最短路徑;
○ 阻塞冗餘鏈路。
• 橋ID :
○ 用於在STP 中唯一的標識一個橋。
○ 橋ID:【橋優先級:2字節】【橋MAC地址:6字節】
• 路徑開銷(Path Cost):
○ 路徑開銷用於衡量橋與橋之間路徑的優劣;
○ STP 中每條鏈路都具有開銷值;
○ 路徑開銷等於路徑上全部鏈路開銷之和。
• 鏈路開銷標準:
○ 單端口下(H3C私有標準):10M=2000,100M=200。1G=20。10G=2。
• 配置BPDU:
○ 網橋通過交互配置BPDU 獲取STP 計算所需要的參數;
○ 配置BPDU 基於二層組播方式發送,目的地址爲01-80-C2-00-00-00;
○ 配置BPDU 由根橋週期發出,發送週期爲Hello Time;
○ 配置BPDU 老化時間爲Max Age。
• 配置BPDU 格式:(網橋協議數據單元(Bridge Protocol Data Unit))
• STP 計算方法:
○ 1、配置BPDU 處理:
網橋將各個端口收到的配置BPDU 和自己的配置BPDU 做比較,得出優先級最高的配置BPDU;
網橋用優先級最高的配置BPDU 更新本身的配置BPDU ,用於選舉根橋和確定端口角色;
網橋從指定端口發送新的配置BPDU。
○ 2、配置BPDU 比較原則——優先級向量最小者最優:
首先比較Root Bridge ID--->
其次比較Root Path Cost--->
再次比較Designate Bridge ID--->
再其次比較Designate Port ID--->
最後比較Bridge Port ID。
• 根橋選擇:
○ 起始各個交換機都認爲自己是根橋,然後進行互發幀進行根橋PK,最終優先級向量最小者勝出。
• 確定端口角色的標準:
◊ 根端口:網橋上到根橋最近的端口(到根橋的開銷最小);
◊ 指定端口:端口的配置BPDU 在其所屬鏈路上是最優的(端口擁有該鏈路上最優的配置消息);
◊ Alternate端口:端口的配置BPDU 在其所屬鏈路上不是最優的,且端口不是根端口。
• 等路徑開銷計算:
◊ 當路徑開銷相等時,則根據順序比較Designate Bridge ID,越不優者相連或與之相連的端口爲Alternate 端口。
◊ 而對於鏈路聚合的模型,兩條鏈路開銷相等時,則要比較Designate Port ID,端口越不優者爲Alternate 端口。
• 收到低優先級配置BPDU時的處理
○ 收到低優先級配置BPDU的網橋會立即迴應一個配置BPDU消息
• STP 爲端口定義了五種狀態:
○ Disabled、Blocking、Listening、Learning、Forwarding。
• 各端口狀態對配置BPDU 收發、MAC 地址學習以及數據收發的處理有所不同:
• Forward Delay 延時:
○ 從中間狀態Listening 經過一個延時進入另一箇中間狀態Learning;
○ 從Learning 狀態再經過一個延時進入Forwarding 狀態;
○ 延時長度爲Forward Delay;
○ 默認爲15秒。
• 網橋發送TCN BPDU 的條件爲:
○ 有端口轉變爲Forwarding 狀態,且該網橋至少包含一個指定端口;
○ 有端口從Forwarding 狀態或Learning 狀態轉變爲Blocking 狀態。
• 當根橋故障後:
○ 指定根橋等待Max Age Timer 後沒收到消息,則判斷爲根橋down 掉了
• STP拓撲改變處理過程
○
○ 網橋發現拓撲變化(Down或新加入網橋),產生TCN的BPDU從RP發出,以通知根橋。如上游網橋不是根橋,則上游網橋會將下一個要發送的配置BPDU中TCA位置位,作爲收到TCN的確認。發送給下游網橋。上游網橋從根端口發送TCN的BPDU直到根橋收到TCN BPDU,收到後,根橋會將下一個要發送的配置BPDU中的TCA位置位作爲對收到的TCN確認。並將該配置BPDU中TC位置位,用於通知網絡中所有網橋網絡拓撲發生了變化。根橋在Max Age+Forward Delay(20s+15s)內,將發送的配置BPDU中的TC置位,當網橋收到後會將自身的MAC地址老化時間由300秒縮短爲Forward Delay(15s)。網橋發送TCN的週期爲Hello Time,如果沒收到TCA置位則重複發送TCN,收到TCA後停止從RP發TCN。
• TCN產生的條件:
○ 網橋上有端口轉變爲Forwarding狀態,且至少包括包含一個DP。
○ 網橋上有端口從Forwarding或Learning狀態轉變爲Block狀態。
• TCN的BPDU:
○ 包括三部分:Protocol ID、Protocol version(這兩個和配置BPDU一樣)、BPDU Type(這個有區別)。
○ BPDU Type表示爲:0x80爲TCN的BPDU。
○ 標誌位:76543210。第7位置位表示爲TCA,第0位置位表示和TC置位BPDU。
• STP 協議的不足:
○ 收斂時間長:缺省情況下一個端口從Blocking 狀態過渡到Forwarding 狀態至少需要30 秒鐘(兩倍的ForwardDelay)。對於一個拓撲不穩定網絡,會導致網絡的長時間中斷。(兩倍:Listening--->Learning--->Forwarding)
○ 拓撲變化收斂機制不靈活:主機頻繁上下線時,網絡會產生大量TCN。
二. RSTP
• RSTP引入:
○ RSTP 是從STP 發展而來,實現的基本思想一致;
○ RSTP 具備STP 的所有功能,可以兼容STP 運行;
○ RSTP 和STP 有所不同:
1.減少了端口狀態(Discarding、Learning、Forwarding);
2.增加了端口角色(根端口、指定端口、Alternate 端口(用於根端口做備份)、Backup 端口(用於指定端口做備份));
3.BPDU 格式及發送方式不同;
4.當交換網絡拓撲結構發生變化時,RSTP可以更快地恢復網絡的連通性。
• RST BPDU 報文和STP 相比不同之處有:
○ Protocol Version ID 變爲2(如0x02);
○ BPDU Type 變爲2(如0x02);
○ 使用了Flags 字段的全部8位;
○ 增加Version 1 Length 字段(如0x00)。
• RST BPDU 中的Flags 字段:
○ 在RST BPDU 的Flags 字段中,除TC 以及TCA 標誌位,還包含P/A 標誌位、端口狀態標誌位以及端口角色標誌位。
• RSTP 中BPDU 的處理:
○ 網橋自行從指定端口發送RST BPDU,不需要等待來自根橋的RST BPDU。發送週期爲Hello Time;
○ RST BPDU 老化時間爲3 個連續的HelloTime 時長。
• RSTP提供了一種保活機制
○ 網橋可以根據如未收到BPDU則表示網絡中斷,時長爲3個Hello Time時長,STP沒有。
• 收到低優先級RST BPDU的處理
○ STP只能有指定端口收到低優先級RST BPDU 做出迴應。處於阻塞狀態的端口不會對收到低優先級的BPDU做出迴應。
○ RSTP中阻塞狀態的端口收到RST BPDU可以迴應。
• RSTP 快速收斂機制:
○ 邊緣端口機制;
○ 根端口快速切換機制;
○ 指定端口快速切換(P/A)機制。
• 邊緣端口(Edge Port):
○ 邊緣端口指網橋上直接和終端相連的端口(如:直接與主機相連的交換機);
○ 邊緣端口可以直接進入轉發狀態,不需要延時,並且不會觸發拓撲改變;
○ 邊緣端口收到BPDU 後,會轉變爲非邊緣端口。有點像Cisco的PortFast端口。
• 根端口快速切換:
○ 如果舊的根端口已經進入阻塞狀態,而且新根端口(優先級最高的Alternate端口作爲新的根端口)連接的對端網橋的指定端口處於Forwarding 狀態,則在新拓撲結構中的根端口可以立刻進入轉發狀態。
• 指定端口快速切換:
○ 指定端口可以通過與相連的網橋進行一次握手,快速進入轉發狀態:
1.握手請求報文:Proposal;
2.握手迴應報文:Agreement。
○ P/A 機制條件:握手必須在點到點鏈路進行。
• RSTP 拓撲改變處理機制
○ 1、拓撲改變觸發條件:
只有非邊緣端口轉變爲Forwarding 狀態時,產生拓撲改變;
○ 2、拓撲改變處理:
在兩倍Hello 時間內向所有其它指定端口和根端口發送TC置位BPDU 報文;
清除除接收到TC 報文的端口之外的所有指定端口和根端口學習的MAC地址。
• RSTP 拓撲改變處理:
○ 1、不再使用TCN;
○ 2、收斂更快速。
○ STP的TCN是拓撲改變時網橋向根橋發送TCN(經過的網橋也會收到),然後由根橋通知其它網橋。
○ 而RSTP是網橋直接通過DP和RP端口向其它網橋直接發送TC報文,其它網橋收到後會繼續從其DP和RP端口繼續擴散發送,從而實現根橋和所有網橋都知道拓撲改變。
• RSTP 和STP 的兼容運行:
○ RSTP 的端口連續三次接收到版本爲STP 的BPDU,則端口協議將切換到STP協議。
○ 切換到STP 協議的RSTP 端口將喪失快速收斂特性。
○ 出現STP 與RSTP 混用的情況,建議將STP 設備放在網絡邊緣。
○ 運行STP 的網橋移除後,由RSTP模式切換到STP模式的端口仍將運行在STP模式。
• 基本配置命令:
○ 開啓生成樹功能:
[H3C] stp enable
○ 關閉該端口的生成樹功能:
[H3C-Ethernet0/1] stp disable
○ 生成樹運行模式:
[H3C] stp mode { stp | rstp | mstp }
• RSTP 可選參數:
○
• 配置優先級和端口開銷:
○ 更改Bridge Priority:
[H3C] stp priority bridge-priority
○ 更改端口開銷的值:
[H3C-Ethernet0/1] stp cost cost
○ 更改設備支持的端口開銷標準:
[H3C] stp pathcost-standard { dot1d-1998 | dot1t | legacy }
• 配置端口的優先級:
○ 1.端口ID 由兩部分組成:
PortPriority+PortIndex
○ 2.改變端口優先級
[H3C-Ethernet0/1] stp port priority port-priority
• 配置端口的Hello Time:
○ [H3C] stp timer hello centiseconds
• 配置端口的Max Age:
○ [H3C] stp timer max-age centiseconds
• 配置端口的Forward Delay:
○ [H3C] stp timer forward-delay centiseconds
• 配置網絡直徑:
○ 1、網絡直徑:任意兩臺終端設備之間通過的交換機數目的最大值;
○ 2、改變網絡直徑會間接影響到Max Age 和Forward Delay 這兩個參數的值,這種方法比直接手工配置兩個參數更爲可靠。
○ 3、所以當網絡中加入交換機可以通過改變網絡直徑參數來達到適應網絡狀況的目的。
○ 4、配置命令爲:
[H3C] stp bridge-diameter bridgenum(diameter:直徑)
• RSTP 高級配置:
○ 配置端口爲邊緣端口:
端口視圖配置:
[H3C-Ethernet0/1 ] stp edged-port enable
○ 全局或端口視圖執行mCheck 操作:
[H3C] stp mcheck
[H3C-Ethernet0/1 ] stp mcheck
RSTP自動遷移至STP,STP設備下線後,可手工切換STP到RSTP。
• RSTP 維護調試命令:
○ 顯示和STP 統計和狀態信息:
[H3C] display stp [ interface interface_list ] [brief]
三. MSTP
• STP/RSTP 的侷限:
○ 所有VLAN 共享一顆生成樹;
○ 無法實現不同VLAN 在多條Trunk 鏈路上的負載分擔。
• MSTP:(Multiple Spanning Tree,多生成樹協議)
○ 基於實例計算出多顆生成樹,實例間實現負載分擔。
• MST 域(MST Region):
○ 擁有相同MST 配置標識的網橋構成的集合:域名、修訂級別、VLAN 映射關係。
• 協議標準
○ STP:IEEE 802.1D
○ RSTP:IEEE 802.1W
○ MSTP:IEEE 802.1S
• MSTP 的特點如下:
○ MSTP 引入“域”的概念,把一個交換網絡劃分成多個域。每個域內形成多棵生成樹,生成樹之間彼此獨立;在域間,MSTP利用CIST 保證全網絡拓撲結構的無環路存在。
○ MSTP 引入“實例(Instance)”的概念,將多個VLAN 映射到一個實例中,以節省通信開銷和資源佔用率。MSTP各個實例拓撲的計算是獨立的(每個實例對應一棵單獨的生成樹),在這些實例上就可以實現VLAN 數據的負載分擔。
○ MSTP 可以實現類似RSTP 的端口狀態快速遷移機制。MSTP兼容STP和RSTP。
• MSTP的術語
○ MST 域:是由交換網絡中的多臺設備以及它們之間的網段所構成。這些設備具有下列特點:都啓動了MSTP;具有相同的域名(Region);具有相同的VLAN 到生成樹實例映射配置;具有相同的MSTP修訂級別配置;這些設備之間在物理上有鏈路連通。
○ VLAN 映射表:VLAN 映射表是MST 域的一個屬性,用來描述VLAN 和生成樹實例的映射關係。
○ CIST(公共和內部生成樹):是整個網絡所有設備經過生成樹計算得到的一個樹,總根是整個網絡優先級最高的橋,即CSIT的根橋
○ IST(內部生成樹):IST 是域內實例上的生成樹。IST和CST共同構成整個交換網絡的CIST。IST是CIST在MST域內的片段。
○ CST(公共生成樹):CST是連接交換網絡內所有MST域的單生成樹。如果把每個MST域看作是一個“設備”,CST就是這些“設備”通過STP協議、RSTP 協議計算生成的一棵生成樹。
○ MSTI:每個域內可以存在多棵生成樹,每棵生成樹和相應的VLAN 對應。這些生成樹就被稱爲MSTI。
○ 域邊界端口:域邊界端口是指位於MST域的邊緣,用於連接不同MST域、MST域和運行STP的區域、MST域和運行RSTP的區域的端口。
○ 外部路徑開銷(EPRC):指的是端口到總根的最短路徑開銷。
○ 內部路徑開銷(IPRC):發送此BPDU的網橋到達CIST域根的路徑開銷。
○ 指定端口ID:由指定端口的優先級和端口號組成。
○ Master 端口:連接MST 域到總根的端口,位於整個域到總根的最短路徑上。IST根橋在CIST上的根端口。
○ Backup 端口:當開啓了MSTP的同一臺設備的兩個端口互相連接時就存在一個環路,此時設備會阻塞端口ID較小的端口,此阻塞端口稱爲Backup 端口,而另外一個端口則處於轉發狀態,成爲指定端口。
• MSTP 的BPDU 格式:
• CIST 的優先級向量:
○ 1、CIST 優先級向量
{RootID: ERPC: RRootID:IRPC: DesignateBridgeID: DesignatePortID: RcvPortID}
○ 2、比較原則:最小最優:
◊ 首先比較CIST 總根ID--->
◊ 其次比較CIST 外部路徑開銷--->
◊ 再次比較CIST 域根ID--->
◊ 再其次比較CIST 內部路徑開銷--->
◊ 再其次比較CIST 指定橋ID--->
◊ 再其次比較CIST 指定端口ID--->
◊ 最後比較CIST 接收端口ID。
• MSTI 的優先級向量:
○ 1、MSTI 優先級向量
{RRootID: IRPC: DesignateBridgeID: DesignatePortID: RcvPortID}
○ 2、比較原則:最小最優:
◊ 首先比較MSTI 域根ID--->
◊ 其次比較MSTI 內部路徑開銷--->
◊ 再其次比較MSTI 指定橋ID--->
◊ 再其次比較MSTI 指定端口ID--->
◊ 最後比較MSTI 接收端口ID。
• MSTP 計算方法:
○ CST/IST 的計算和RSTP 類似;
○ MSTI 的計算僅限於區域內;
○ MSTI 計算參數包含在IST BPDU 中,和IST的計算同步完成。
• MSTP 和RSTP 的互操作:
○ RSTP 橋將MSTP域看做一個橋ID爲域根ID的RSTP 橋。
• MSTP 的P/A 機制:(Proposal:建議)
○ 上游橋發送的Proposal BPDU 中,P 標誌位和A 標誌位都置位;
○ 下游收到P 標誌位和A 標誌位都置位的Proposal BPDU,在將端口同步後會迴應Agreement BPDU,使得上游的指定端口快速進入轉發狀態。
• MSTP 基本配置:
○ 區域配置:
由系統視圖進入區域配置視圖:
[H3C] stp region-configuration
配置域名:
[H3C-mst-region ] region-name name
配置修訂級別:
[H3C-mst-region ] revision-level level
配置VLAN 和實例的映射:
[H3C-mst-region ] instance instance-id vlan vlan-list
激活區域配置:
[H3C-mst-region ] active region-configuration
• MSTP 高級配置:
○ 配置交換機爲首選根橋:
[H3C] stp instance instance-id root primary
○ 配置交換機爲備份根橋:
[H3C] stp instance instance-id root secondary
• MSTP 兼容性配置:
○ 配置端口識別/發送MSTP 報文格式:
[H3C-GigabitEthernet1/0/1] stp compliance { auto | dot1s | legacy }
○ 全局開啓摘要偵聽:
[H3C] stp config-digest-snooping
○ 端口開啓摘要偵聽:
[H3C-Ethernet1/0/1 ] stp config-digest-snooping
• MSTP 兼容性配置:
○ 下游設備配置No Agreement Check 特性
[SWB-Ethernet1/0/1] stp no-agreement-check
四. STP保護機制
• BPDU 保護機制:
啓動了BPDU 保護功能後,如果邊緣端口收到了配置消息,MSTP 就將這些端口關閉。
• BPDU 保護命令:
[SWA] stp bpdu-protection
• 根橋的錯誤切換:
合法根橋收到優先級更高的(BPDU)配置消息,失去根橋的地位,引起網絡拓撲結構的變動。
• 根橋保護機制:
對於設置了根保護功能的端口,一旦該端口收到某實例優先級更高的配置消息,立即將該實例端口設置爲偵聽狀態,不再轉發報文。
• 根橋保護命令:
[H3C-Ethernet1/0/1] stp root-protection
• 環路的產生:
由於鏈路擁塞或者單向鏈路故障,端口會收不到上游設備的BPDU 報文,此時下游設備重新選擇端口角色,會導致環路的產生。(網絡擁塞導致BPDU 丟失、光纖鏈路單通)
• 環路保護機制:
○ 在MSTP中,只對Root Port、Alternate port、Backup Port有效。
○ 配置了環路保護的端口,當接收不到上游設備發送的BPDU 報文時,環路保護生效。
○ 如果該端口參與了STP 計算,則不論其角色如何,該端口在所有實例都將處於Discarding 狀態,直到再次接受到BPDU。
• 環路保護命令:
[H3C-Ethernet1/0/1] stp loop-protection
• TC ***:
在有僞造的TC-BPDU 報文惡意***設備時,設備短時間內會收到很多的TCBPDU 報文,頻繁的刪除操作給設備帶來很大負擔,給網絡的穩定帶來很大隱患。
• TC 保護機制:
○ 設置設備在收到TC-BPDU 報文後的10 秒內,進行地址表項刪除操作的最多次數;
○ 監控在該時間段內收到的TC-BPDU 報文數是否大於門限值。
• 配置TC保護命令
○ 開啓TC保護功能:
[H3C] stp tc-protection enable
○ 配置門限值:
[H3C] stp tc-protection threshold number