生成树协议算法
生成樹協議存在算法:
802.1D 根本,后面都是基于該算法的升級改變
PVST PVST+(CISCO)
RSTP(802.1w)
MSTP(802.1S)
上一篇整理了生成樹協議解決交換機備份中環路的基本原理,現在整理具體是如何做的。
一、802.1D
1)BPDU:橋協議數據單元–就是交換機間溝通互動收發的數據
B-網橋 PDU-協議數據單元
網橋可以理解為現在的交換機,根網橋就是當根的交換機
1.BPDU中有包含 :
協議ID 版本號 信息類型 標記位 根ID 路徑開銷 橋ID 端口ID
消息老化 最大老化 hello時間 轉發延時
2.BPDU種類:
第一種BPDU
配置BPDU—只有根網橋可以發送,在交換網絡初始狀態時,所有交換機均定義本地為根網橋,進行BPDU的發送;使得網絡中所有交換機均收到其他設備的BPDU,之后基于數據中的參數進行比對,選舉出根網橋;之后所有非根網橋不再發送BPDU,而是僅接收和轉發根網橋的BPDU;周期2s發送,hold time 20s;
第二種BPDU
TCN—拓撲變更消息(也是BPDU): 本地交換機鏈路故障后,STP重新收斂,為了快速刷新全網所有交換機的MAC表,將向本地所有STP接口發送TCN(標記位中的TCN位置1,正常為0),鄰居交換機收到TCN后,先標記為ACK位為回復,用于可靠傳輸消息;之后將TCN逐級轉發到根網橋處,由根網橋回復TC消息來逐級回復到所有交換機;使所有交換機臨時將MAC表的老化時間修改為15s(默認的,轉發延時)
2)生成樹協議中的端口角色和端口狀態
1.交換機角色
根網橋–也叫根交換機
非根交換機
2.端口角色
根端口
指定端口
非指定端口
3.狀態
down:(還沒有運行stp)沒有BPDU收發,一旦可以進行BPDU收發進入下一狀態
偵聽:強制15s;所有交換機進行BPDU收發,選舉所有角色;接口角色為非指定端口直接進入阻塞狀態;
若為指定端口和根端口進入下一狀態;
學習:強制15s; 指定端口和根端口學習所有接口連接設備的MAC地址,生成MAC表;之后進入下一狀態;
轉發:指端端口和根端口進入,可以轉發用戶報文;
阻塞:邏輯阻塞;
注: 只有到接口進入到轉發狀態后,才能為用戶轉發數據報文,之前的30s不能轉發任何數據;
3)角色如何選舉
【1】根網橋 – 在一棵生成樹實例中,有且僅有一臺交換機為root;
參數:BID(橋ID)
BID=網橋優先級 + MAC地址
網橋優先級(取值范圍0-65535公有) 默認32768 + 修改必須以4096的倍數去更改
規則:先比較優先級,小優; 若優先級相同,比較mac,小優
實際比較看的是RID,但是RID也是從BID哪里來的,當選擇出根交換機時,非根交換機的RID成為根交換機的RID,BID還是自己的。
【2】根端口—在每臺非根網橋上,有且僅有一個接口;本地離根網橋最近的接口(最短、星型),接收來自根網橋的BPDU,轉發用戶的流量(該接口不阻塞)
參數:1.cost 2.BID 3.PID
規則:
1、比較從根網橋發出后,通過該接口進入時最小的cost值;
2、入向cost值相同,比較該接口對端設備的BID,小優
3、對端BID也相同,比較該接口對端設備的接口的PID;優先級小,若優先級一致,接口編號小優
PID(端口ID)=接口優先級 + 接口編號
接口優先級(端口優先級取值范圍0-240,步長16,即取值必須為16的整數倍,默認128)
注意: BID相同情況就是當交換機優先級相同情況下,而且mac地址一樣所以是一個設備
如上面的根交換機0/2接口大于0/1接口編號,所以下面的交換機根端口為0/2
4、連對端PID也相同,比較本地PID,小優;(構成條件,兩臺交換機之間連接一臺集線器或者透明交換機)
【3】指定端口,在每一段存在STP協議的物理鏈路上,有且僅有一個接口;轉發來自根網橋的BPDU,同時可以轉發用戶流量(不阻塞);默認根網橋上所有接口為指定端口;根端口對端為指定端口(必須每臺交換機都支持STP協議,透明交換機上的接口就不行)
1、比較從根網橋發出BDPU后,通過該接口進入這段鏈路時的cost值最小(出向)
所以cost=20000的接口為指定端口
2、若出向cost值相同,必須本地的BID,小優;
3、本地BID相同,比較本地的PID;
4、本地PID,相同,直接阻塞該端口;
【4】非指定端口(阻塞端口)當以上所有角色全部選舉完成后,剩余沒有任何角色的接口為非指定;
該接口邏輯阻塞,實際可以接收到信息,但不轉發;
4)收斂時間
初次收斂 30s = 15偵聽+15s學習
如果發生結果變化
1.存在直連檢測
本地存在阻塞端口,若其他端口斷開,該阻塞端口馬上進入15是偵聽(選舉);結果若為啟用,那么將再進入15s學習—總30s
2.沒有直連檢測
本地不存在阻塞端口,若某個端口斷開,將發送次優BPDU(以本地為根)給其他鄰居交換機,其他交換機無視該數據,進行20s hold time計時,到時阻塞接口進入15s偵聽,15s學習=總50s,然后再把根網橋與斷開的該交換機連接起來。
5)802.1D缺點
1、收斂慢 – 因為上述硬性的計時器規則
2、鏈路利用率低–備份閑置 (接口堵塞后,鏈路閑置不用)
6)802.1配置命令
[sw1]stp mode stp 修改為802.1d算法,當下華為默認為MSTP;
[sw1]stp priority 4096 修改網橋優先級 必須以4096的倍數去更改
[sw1-GigabitEthernet0/0/1]stp cost ? 修改接口cost值
INTEGER<1-200000000> Port path cost
[sw1-GigabitEthernet0/0/1]stp port priority ? 修改接口優先級
INTEGER<0-240> Port priority, in steps of 16
二、PVST
cisco私有 基于vlan的生成樹協議
在每個vlan內,存在一棵樹,每個樹的工作原理同802.1d一致;不同vlan的BPDU區別在于優先級;
優先級=4096倍數+vlan id 人為僅可修改4096倍數備份,且只能修改為4096的整倍
僅支持 trunk干道封裝為ISL(cisco私有封裝)
缺點:1.收斂慢 2.樹多(但是有獨立芯片)
三、PVST+
優點:在PVST的基礎,兼容802.1q的trunk封裝;且設計了部分的加速;
1.端口加速(進入層連接用戶的接口)
圖中所指端口 15s偵聽+15s學習=30s才能啟動,30s之后結果如下
2.上行鏈路加速-針對直連檢測–這個命令會使 優先級和cost的值增大,只能在接入層設備配置
3.骨干加速—針對次優BPDU,去除20秒,但是剩下的30秒必須進行
缺點:
1、收斂慢(加速不徹底)
2、樹多(僅cisco存在單獨的芯片,友商無法負荷)
四、快速生成樹RSTP
cisco的RSTP 基于vlan的快速生成樹 - 一個vlan一棵樹 pvst+的升級
公有RSTP(802.1w)整個交換網絡一棵樹 802.1d的升級
1)快速的原理
1、取消了計時器,而是在一個狀態工作完成后,直接進入下一狀態;
2、分段式同步,兩臺設備間逐級收斂;使用請求和同意標記;依賴標記位的第1和第6位
3、BPDU的保活為6s;hello time 2s;
4、將端口加速(邊緣接口)、上行鏈路加速、骨干加速集成了
5、兼容802.1d和PVST,但802.1d和PVST沒有使用標記位中的第1-6位,故不能快速收斂;因此如果網絡中有一臺設備不支持快速收斂,那么其他開啟快速收斂的設備也不能快速;
當tcn消息出現時,不需要等待根網橋的BPDU,就可以刷新本地的cam表;
切記: 接口默認為半雙工時,即便允許RSTP,依然基于慢速的802.1D算法來收斂;
RSTP與STP的區別在于:
2)變化
接口狀態變化
1.STP的阻塞狀態 Blocking 是不收也不轉發BPDU,但是知道有BPDU,和DOWN狀態不一樣,DOWN是不收不發也不知道
2.RSTP有個接口狀態是 Discarding 融合了堵塞狀態 blocking 偵聽狀態
該狀態只收BPDU,不轉發也不學習BPDU,因為能收到BPDU,所以肯定會知道誰是根,只要知道根信息,就不用花費后面的20秒,但是前邊的15+15秒還得進行。
角色變化
1.將非指定端口分為 AP–替代端口 BP–備份端口,無論是AP還是BP,其實都是802.1D中的阻塞端口
AP端口(替代端口):如果因為競爭根端口失敗,那么該端口就是替代接口
BP端口(備份端口):如果因為競爭指定端口失敗,那么該端口就是備份接口
當根端口或者某個指定端口掛了的時候,替代端口或者備份端口直接就補上,不用再參加選舉,節省了15s
最后的15s能不能省?learning狀態強制15s學習MAC地址!?
基于P/A機制:
先是discarding狀態 節省20s次優BPDU發送時延
RP–AP DP–BP 節省15s選舉時間
1.P/A機制為主動,SWA主動發送P置位的BPDU
2.SWB同步變量(為了防止成環,先阻塞邊緣端口之外的其他端口)
3.SWB覺得該BPDU好,發送A置位的確認BPDU
4.SWA收到A置位的BPDU,端口立即進入轉發狀態
這個過程幾乎是秒級 1-2s
但是如果是根網橋掛了,就15s+15s不能缺少重新選舉+學習 這個也是生成樹沒有徹底解決速度慢的缺點。
五、MSTP(簡稱MST,802.1S)
華為設備默認使用該協議(Cisco研發出思路捐出來公用)
不同組間的BPDU中的優先級= 4096倍數+組號
1)產生原因:
STP和RSTP存在缺陷:由于局域網內所有的VLAN共享一棵生成樹,因此無法在VLAN間實現數據流量的負載均衡,鏈路如果被阻塞之后,將不承載任何流量,還有可能造成部分VLAN的報文無法轉發。
隨著網絡規模的變大,企業對RSTP的時間算是滿意,但是對它不能夠利用閑置的資源是有意見的。
2)解決辦法
MSTP對STP和RSTP的改進:
1.MSTP把一個交換網絡劃分成多個域,每個域內形成多顆生成樹,生成樹之間彼此獨立;
也可理解為
2.每棵生成樹叫做一個多生成樹實例MSTI
每個域叫做一個MST域
3)MSTP概念
劃區域 如何在同一個區域 都得支持MST 參數配置一樣:1.name 2.等級 3.交換機上的實例劃分
區域形成之后,就會圍繞這個區域
區域內形成內部的生成樹
一個區域可生成多個生成樹,一個生成樹對應一個實例 每個區域默認存在實例0
區域間 由實例0統一管理區域間的成環問題,又區域內的實例0的根來相互選舉區域間總根,總根選舉出來后,就正常選舉那個端口角色
CST 區域間的那顆大樹
IST 區域內的那些實例的生成樹
CIST 大樹+小樹
SST 如若有一個設備不支持MST,那么這個設備自己形成一個區域(上下兼容就行了)
4)MSTP配置
以上四種算法的生成樹,是以802.1D為基礎不斷升級優化的
整理下來總結生成樹的優缺點:
優點:1.防環 2.備份
缺點:
1.對鏈路利用率低這個問題優化不夠徹底。
2.沒有徹底解決速度慢的缺點。
各類端口速度問題被解決,但是當根交換機掛掉,就15s+15s不能缺少重新選舉+學習
3.生成樹線路是相對優 不會絕對優 不太適合大型企業網,因為大型企業網需要橫向流量盡快速度到達目標。
總結
- 上一篇: Vue按钮封装防抖功能
- 下一篇: 对待新技术的看法