stp Rstp Mstp
STP(在IEEE制定的802.1D標準下定義)STP V5版本默認是關的
STP是二層網絡中用於消除環路的協議:
通過阻斷冗余鏈路來消除橋接網絡中可能存在的路徑回環
當前活動路徑發生故障時,激活冗余備份鏈路,恢復網絡連通性
stp的作用是通過冗余鏈路是一個有環路的橋接網絡修剪成一個無回路的樹形拓撲結構。
通過在橋之間交換BPDU(橋協議數據單元)報文,來保證設備完成生成樹的計算過程
BPDC(橋協議數據單元)
1、配置BPDU:用來進行生成樹的計算和維護生成樹拓撲的報文
2、TCN BPDU:當拓撲結構改變時,用來通知相關設備網絡拓撲發生變化的報文
配置BPDU:由根橋從指定端口周期性發出,發送周期Hello Time(2s/次),非根橋從根端口接收配置BPDU,進行更新並從指定端口將其發出。網絡中只有根橋會生成配置BPDU,非根橋只能對配置BPDU進行中繼(轉發),不會 自行產生配置BPDU,沒有運行STP的網橋將把配置BPDU當作普通的數據幀轉發。
配置BPDU用來根橋的選舉和端口角色的確定,基於二層組播方式發送,目的地址為01-80-C2-00-00-00。
當根端口收到配置BPDU後,都會保存本端口最優的BPDU,如果BPDU信息在Mac Age(20s)時間內得到更新時,端口將清除保存的BPDU信息。
配置BPDU包含目的Mac地址、源Mac地址、幀長、邏輯鏈路頭以及載荷等。 a、載荷中包含了stp計算所需的信息:
1>、根ID:由根橋的優先級和MAC地址組成
2>、根路徑開銷:到根橋的最小路徑開銷。如果是根橋,其根路徑開銷為0;如果是非根橋,則為到達根橋的最短路徑上所有路徑開銷的和。
3>、指定橋 ID :生成或轉發BPDU的根ID ,由橋優先級和橋MAC地址組成 指定橋是一條鏈路上負責生成或轉發BPDU的橋(比較方法先比到跟橋的開銷,再比橋ID)
4>、指定端口ID:發送BPDU的端口ID,由端口優先級和端口索引號組成
各臺設備的各個端口在初始時生成以自己為根橋(Root Bridge)的配置消息,向外發送自己的配置消息
網絡收斂後,根橋向外發送配置BPDU,其他的設備對該配置BPDU進行轉發
配置BPDU的格式:
DMA:目的MAC地址
SMA:源MAC地址
L/T:幀長
LLC Header:配置消息固定的鏈路頭
Payload: BPDU數據:protocol ID :協議號固定為(0x0000),生成樹協議號
protocol version ID:協議版本號,目前有三個版本,stp為0x00
BPDU Type:配置BPDU類型0x00,TCN BPDU類型0x80
Flags:由8位組成,最高位為TC標誌位,最低位為TCA標誌位,其他6位保留
Message Age:從根橋生成配置BPDU開始,到當前為止配置BPDU的存活時間
MAX age:配置BPDU存活最大時間
Hello Time:發送配置BPDU周期(2s)
Forward Time:最大延遲時間,默認15s
橋和端口的角色:
橋:根橋和指定橋
端口角色:指定端口(DP)、根端口(RP)、Alternate端口(AP)
一、根橋的選舉:
1、作用:統一參照物
產生BPDU
二層流量的中心
定義:橋ID用於在STP中唯一的標識一個橋,橋ID由兩部分組成,長度為8個字節(64位)
橋優先級:高16位
MAC地址:低48位
比較方法:先比橋的優先級,優先級值小的優(默認32768,修改時要是4096的倍數)
再比較橋的MAC地址,MAC地址越小越優
二、路徑開銷:
定義:路徑開銷等於路徑上全部鏈路開銷之和
當接受BPDU時加上本路徑開銷,指定端口(DP)的開銷為0,改開銷選路時該根端口的(RP),
三、STP計算步驟:
配置BPDU的處理過程:
網橋將各個端口收到的配置BPDU和自己的配置BPDU做比較,得出優先級最高的配置BPDU
網橋用優先級最高的配置BPDU更新本身的配置BPDU ,用於選舉根橋和確定端口角色
網橋從指定端口發送新的配置BPDU
配置BPDU比較原則——優先級向量最小者最優
首先比較Root Bridge ID (根橋ID)
其次比較Root Path Cost(根路徑開銷)
再次比較Designate Bridge ID(指定橋ID)
再其次比較Designate Port ID (指定端口ID)
最後比較Bridge Port ID(本地橋端口ID)
四、根橋的選舉和端口角色的確定:(在網橋中,本橋的最優配置BPDU只會從指定端口發出)
根橋的選舉:
起始都認為自己是根橋,都發送配置BPDU,相互比較出最優的,為根橋
端口角色的確定:(算入口開銷,再接收BPDU時加上本端口的開銷)
作用:通過角色來確定最終狀態
不同角色任務不同
RP有發送TCN BPDU(刷新MAC地址表)
DP發送BPDU的,發TC置位的BPDU
在RSTP中,AP是RP的備份
BP:在RSTP,BP是DP的備份
確定端口角色的標準:1、根端口(RP):網橋上到根橋最近的端口;(一個交換機上只有一個根端口(RP))根端口的確定需要比較RPC,擁有最小RPC的端口為RP
2、指定端口(DP):端口的配置 BPDU 在其所屬鏈路上是最優的;(一條鏈路上只有一個DP)
3、Alternate端口: 端口的配置 BPDU 在其所屬鏈路上不是最優的,且端口不是根端口。
Alternate 端口: 端口既非根端口也非指定端口;
根端口:該端口到根橋的開銷最小;
指定端口: 端口擁有該鏈路上最優的配置消息。 ( 根橋發送的 BPDU 消息,其中 BPC=0)
接收配置BPDU處理:如果收到一個比自己優的配置BPDU,則將接收到的更新為自己的BPDU,後向外轉發
交換機接收到BPDU時加上接收端口的開銷,根橋發出的BPDU的開銷為0
1、SWD收到SWB和SWC的BPDU發現自己橋ID比他們兩優
2、第一輪過後SWB、SWC認為SWA為根橋,SWD依然認為自己是根橋(其實是與選舉根橋同時進行的)
3、再次進行BPDU交互時, SWC和SWB發送的BPDU為SWA的加上字節接收端口開銷
4、SWD從SWC收到的比從SWA收到的優,所以認為自己的RPC為218
5、SWB認為從SWC過來的BPDU的開銷小於從SWA過來的,所以連接SWC的接口為RP,連接SWA為AP
6、SWD從SWB收到的BPDU優於從SWC過來的,所以連接SWB為RP,連接SWC為AP
AP和DP的選舉:如果發送的BPDU優於接收的BPDU,則端口為指定端口
如果接收到的BPDU優於發送的BPDU,且該端口不是根端口,則端口為AP(比較時,發出的BPDU要加上本鏈路開銷)
RP的選舉:
1、比較開銷,若相同,比較指定橋ID(a、到根橋開銷 b、設備ID)
2、指定端口ID,最後比較本地端口ID(先比較端口的優先級和MAC,再比較端口索引號)
五、等路徑開銷計算:
當路徑開銷相等時,則比較指定橋ID和指定橋的端口號(發送者的)
指定橋的比較:先比較到根橋的開銷,在比較指定橋ID
1、當指定橋ID一樣時,比較指定端口ID(發送者的)
2、當指定端口ID相等時,比較Bridge Port ID(接收端口ID)
七、收到低優先級配置BPDU時的處理
當收到一個低優先級的配置BPDU,網橋會立即回應一個配置BPDU,這樣可以保證新加入的網橋盡快的確認根橋和端口角色(因為網橋都會保存一個當前最優的BPDU,老化時間為20s)
臨時環路:
當拓撲結構發生變化,新的配置BPDU要經過一定的時延才能傳播到整個網絡,在所有網橋收到這個變化的消息之前可能會存在臨時環路
八、STP端口狀態:
Forward Delay(延時)30s
從中間狀態Listening經過一個延時進入另一個中間狀態Learning 從Learning狀態再經過一個延時進入Forwarding狀態 延時長度為Forward Delay
Listening--------(經過一個Forward Delay)Learning---------(經過一個Forward Delay)Forward
從 Listening到Forward需要30s
九、STP拓撲改變處理過程:
端口enable
端口disenable
端口被選為根端口或者指定端口
端口被選為Alternate端口(阻塞)
Forward Delay延時
從鏈路中斷到連路恢復需要300s(MAC地址老化時間)的時間,但是當網橋收到根橋發送TC置位的配置BPDU後,會將自身MAC地址老化時間由300s變為Forward Delay。(15s)
當SWD的下行鏈路中斷後,SWE的E1/0/1在配置BPDU老化時間(20s)後任務其對端鏈路中斷,並向根橋發送TCN BPDU,根橋收到後,向各端口發送TCA BPDU(TC置位的配置BPDU),這樣將MAC地址時間縮短為15s,所以從中斷到恢復的時間為20(配置BPDU老化)+30(端口狀態改變(AP——RP),兩個Fowarding Delay時間)+15(MAC地址刷新時間)。
網橋發送TCN BPDU的條件為 :
有端口轉變為Forwarding狀態,且該網橋至少包含一個指定端口
有端口從Forwarding狀態或Learning狀態轉變為Blocking狀態
第0位置位表示該消息為TC置位BPDU(拓撲改變)
第7位置位表示該消息為TCA(TCN BPDU的確認)
當根橋故障後,指定根橋等待 Max Age Timer(20s)後沒收到消息,則判斷為根橋 down 掉了,認為自己是根橋,並發送以自己為根橋的配置BPDU,SWC發現SWB的BPDU優於自己的BPDU,以原根端口為指定端口,連接SWB的為根端口。
當SWC連接SWA的根端口中斷時,SWC會立即認為根橋消失,阻塞口立即轉變為Listening狀態,並發送以自己為根橋的配置BPDU,SWB收到低優先級的BPDU,立即回復以SWA為根橋的BPDU,因此,SWB連接SWC的為指定端口,SWC連接SWB的端口為根端口。
當兩個網橋之間新增一條鏈路時,首先SWA和SWB的E1/0/1和E1/0/2均會認為自己是指定端口,並進入Listening狀態。在此狀態進行BPDU的交互,E1/0/1變為指定端口,E1/0/2位根端口,並進入Learning狀態,同時SWE的E1/0/2也變為阻塞口。
十、STP的不足:
1、收斂時間長:
缺省情況下一個端口從Blocking狀態過渡到Forwarding狀態至少需要30秒鐘(兩倍的Forward Delay)。對於一個拓撲不穩定網絡,會導致網絡的長時間中斷
2、拓撲變化收斂機制不靈活
當主機頻繁上下線時,網絡中會產生大量的TCN BPDU
RSTP(IEEE標準為802.1w)
RSTP和stp的區別:
RSTP減少了端口狀態
RSTP增加了端口角色
RSTP配置BPDU的格式和發送方式有所改變
當網絡拓撲發生改變時,RSTP的處理方式不同,可以快速收斂
將端口狀態設置為三個
Discarding:丟棄接收幀,不轉發幀,不進行地址學習,能夠處理發送BPDU
端口角色:
指定端口
根端口
Alternate端口:當阻塞端口收到的更優的配置BPDU來自於其他網橋時,該端口為Alternate端口(為網橋提供一條到達根橋的備用路徑,做為根端口備份)
Backup端口:當阻塞端口收到的更優的配置BPDU來自於本網橋時,該端口為Backup端口(指定端口的備份)
RST BPDU的格式及發送方式
協議版本號為0x02
BPDU type 為0x02
flags字段全部8位
增加了Version1 Length字段
RST BPDU中Flags字段:
0位:為TC標誌位,跟stp一樣(拓撲改變)
1位:為proposal位,表示此報文為Proposal報文
2和3位:端口角色標誌位,00表示端口角色未知,01表示端口為Alternate端口或Backup端口,10表示為根端口,11位指定端口
4位:Learning標誌位,表示端口處於Learning狀態
5位:Forwarding標誌位,表示端口處於Forwarding狀態
6位:Agreement標誌位,表示該BPDU為Agreement報文
7位:TCA標誌位,TC確認
BPDU發送方式:
在STP中通常只有根橋才可以產生配置BPDU,非根橋從根端口接收BPDU,並更新為自己的配置BPDU,然後從指定端口發出,非根橋不會主動產生BPDU。
而在RSTP中,RSTP中網橋可以自行從指定端口發送RST BPDU,不需要等待來自根橋的,發送周期為Hello Time(2s)
RSTP網橋的保活機制:
由於網橋可以自行產生BPDU,當網橋在一定時間內沒有收到對端的網橋發送的BPDU,即認為對端網橋的連接中斷
RST BPDU老化時間為3個連續的Hello Time(6s)時長
當阻塞口收到低優先級的BPDU時,會立即作出回應,”某某為根橋“
RSTP的快速收斂機制:
邊緣端口機制:當接口直接與用戶終端連接時,端口直接進入Forwarding狀態(減少了端口進入Forwarding狀態的時間
根端口快速切換:RSTP定義了Alternate端口為根端口的備份,當舊根端口進入阻塞狀態時,會選出網橋中最高優先級的Alternate端口作為新的根端口,期間不需要Forwarding延時。
指定端口快速切換:(P/A機制)(握手必須在點到點鏈路中進行)
當新鏈路連接時,兩端都是指定端口且為阻塞狀態。當端口屬於Discarding狀態和Learning狀態時,發送的RST BPDU都被P置位,端口角色為指定端口(2、3位都是1),收到P置位的BPDU後,網橋會判斷接收端口是否為根端口,若是,網橋啟動同步過程。同步是指網橋阻塞除邊緣端口以外的所有端口。
同步完成後根端口進入轉發狀態,並向指定端口發送一個A置位的BPDU(該BPDU復制P置位的BPDU,唯一不同的就是flags置位字段不同),端口角色為根端口(2、3位為10),指定端口收到A置位的BPDU後,立即進入轉發狀態。此時根端口的下行端口仍然為阻塞狀態,繼續與下行端口進入上述操作。
如果指定端口發出P置位的BPDU後,沒有收到A置位的BPDU,則該端口將切換為STP模式需要等待30s才能進入轉發狀態。
RSTP中的拓撲改變處理:
改變的條件:非邊緣端口轉變為Forwarding狀態。在RSTP中,鏈路中斷不會直接觸發拓撲改變
當非邊緣端口轉變為Forwarding狀態時,網橋會在兩倍的Hello Time時間內向根端口以及其他所有指定端口發送TC置位的BPDU,同時會清除這些端口的MAC地址。
當其他網橋收到TC置位的RST BPDU後,會清除接收端口以及邊緣端口之外的其余端口MAC地址,,並在兩倍的Hello Time 時間內向指定端口和根端口發送TC置位的BPDU。
RSTP和STP兼容性:
當運行RSTP的網橋連續收到3次配置BPDU時,網橋認為端口與stp網橋相連,該端口切換為STP模式。
切換到STP的RSTP端口將喪失快收斂的特性
出現RSTP和STP混用時,建議將STP放在網絡邊緣
運行STP的網橋移除後,由RSTP模式切換到STP模式的端口仍將運行在STP模式
配置命令:
[H3C] stp enable //stp全局開啟
[H3C-Ethernet0/1] stp disable //接口下關閉
[H3C] stp mode { stp | rstp | mstp } //運行模式
[H3C] stp priority bridge-priority //橋的優先級
[H3C-Ethernet0/1] stp cost cost //端口開銷(改根端口開銷)
[H3C-Ethernet0/1] stp port priority port-priority //端口優先級
[H3C-Ethernet0/1 ] stp edged-port enable //邊緣端口開啟
[H3C]display stp brief //查看端口角色
[H3C]display stp //顯示STP信息
MSTP(IEEE的802.1S標準中定義)
多是指多實例。
RSTP、stp,都是單實例生成樹,不能實現流量的負載分攤。MSTP做基於vlan級別的負載
TP/RSTP 的局限:
所有VLAN 共享一顆生成樹;
無法實現不同VLAN 在多條Trunk 鏈路上的負載分擔。
MSTP:(Multiple Spanning Tree,多生成樹協議)
基於實例(實例是域內的概念)計算出多顆生成樹,實例間實現負載分擔。
MSTP的相關概念:
MST域:擁有相同MST 配置標識的網橋構成的集合
a、域名:本域的名稱,默認使用該交換機的mac地址
b、修訂級別:目前保留,默認為0
c、配置摘要:vlan與實例映射的哈希值
CST、IST、CIST、總根和域根:
CIST:(CST+IST)是整個網絡所有設備經過生成樹計算得到的一棵樹,總根是整個網絡中優先級最高的橋,是CIST的根橋,負責域間無環。
CST:(公共生成樹):連接交換網絡內所有MST域的單個生成樹。如果把每個域看做一個設備,CST就是設備通過STP、RSTP協議計算出的一個生成樹,CST的根橋為CIST根橋所處的域
IST:(內部生成樹):是MST域內的一棵生成樹,對應的實例號為0,IST根橋即CIST的域根,是MST域內距離總根(CIST根)最近的橋(它的根是不比較優先級的)
MSTI:(多生成樹實例):MST域內可以通過MSTP生成多棵生成樹,每棵生成樹之間彼此獨立。每棵生成樹都稱為MSTI
MSTI的域根:是每個MSTI上優先級最高的網橋。MST域內每個MSTI可以指定不同的根
域邊界端口:域邊界端口是指位於MST域的邊緣,用於連接不同MST域、MST域和運行STP的區域、MST域和運行RSTP的區域的端口。
外部路徑開銷(EPRC):指的是端口到總根的最短路徑開銷。
內部路徑開銷(IPRC):發送此BPDU的網橋到達CIST域根的路徑開銷。
Master 端口:(域邊界)連接MST 域到總根的端口,此端口指向總根距離最短,IST根橋在CIST上的根端口。(Mater端口在每個MSTI上的角色都相同)
Backup 端口:(與RSTP一樣)當開啟了MSTP的同一臺設備的兩個端口互相連接時就存在一個環路,此時設備會阻塞端口ID較小的端口,此阻塞端口稱為Backup 端口,而另外一個端口則處於轉發狀態,成為指定端口。
MSTP的BPDU格式:
MST BPDU和RST BPDU的前36字節的格式都一樣,主要多了MST專有字段,版本號為0x03,BPDU類型變為0x02,表示為RST/MST BPDU
CIST優先級向量:(最小者最優)
首先比較CIST總根ID
其次比較CIST外部路徑開銷
再次比較CIST域根ID
再其次比較CIST內部路徑開銷
再其次比較CIST指定橋ID
再其次比較CIST指定端口ID
最後比較CIST接收端口ID
MSTI 的優先級向量:(最小者最優)
首先比較MSTI域根ID
其次比較MSTI內部路徑開銷
再其次比較MSTI指定橋ID
再其次比較MSTI指定端口ID
最後比較MSTI接收端口ID
MSTP 計算方法:
CST/IST 的計算和RSTP 類似;
MSTI 的計算僅限於區域內;
MSTI 計算參數包含在IST BPDU 中,和IST的計算同步完成。
域內計算過程:
在vlan2 中各網橋優先級:SWA2>SWA>SWA3
在vlan 4 中各網橋優先級:SWA3>SWA>SWA2
在vlan 2中各網橋優先級:SWB3>SWB>SWB2>SWB4
在vlan 3中各網橋優先級:SWB4>SWB2>SWB3>SWB
MSTP 和RSTP 的互操作:(沒有對應實例時走IST)
RSTP 橋將MSTP域看做一個設備,設備ID(橋ID)為域根ID的RSTP 橋。
MSTP 的P/A 機制:(Proposal:建議)(在RST中只有P置位,而在MSTP中都置位)
上遊橋發送的Proposal BPDU 中,P 標誌位和A 標誌位都置位;
下遊收到P 標誌位和A 標誌位都置位的Proposal BPDU,在將端口同步後會回應Agreement BPDU,使得上遊的指定端口快速進入轉發狀態。
MSTP的配置:
[H3C]stp enable //開啟STP
[H3C] stp region-configuration //進入
[H3C-mst-region ] region-name name //域名
[H3C-mst-region ] revision-level level //配置級別(默認為零)
[H3C-mst-region ] instance instance-id vlan vlan-list //實例映射
[H3C-mst-region ] active region-configuration //激活域
[H3C] stp instance instance-id root primary //將本設備設為主根
[H3C] stp instance instance-id root secondary //將本設備設為從根
STP保護機制(以下三種在本接口只能三選一)
1、BPDU保護:(結合邊緣端口應用)(接入層)
當交換機底下接入的是pc時,要啟用邊緣端口和BPDU保護,防止沒接入一臺PC都要進行stp重新計算,減少stp收斂的時間
引入:當沒有開啟BPDU保護,邊緣端口收到BPDU配置信息時,邊緣端口將改為非邊緣端口,從而導致生成樹的重新計算
如果開啟BPDU保護功能,當邊緣端口收到BPDU配置信息時,MSTP將這些邊緣端口關閉
邊緣端口:物理UP後,馬上變成Forwarding。是可以發BPDU的。用Disable也行,但是不好,不能發送BPDU。
配置命令:(不受外來BPDU的影響)
[H3C] stp bpdu-protection //開啟BPDU保護
[SWA-Ethernet1/0/1] stp edged-port enable //邊緣端口
邊緣端口:配置為邊緣端口之後,不進行STP計算,接口UP後直接進入Forwarding,當該端口收到BPDU時,該端口將會喪失邊緣端口特性。(單用邊緣端口時)
當與BPDU保護一起用的時候,,當一個邊緣端口收到一個異常的BPDU,該端口將會down
2、根橋保護:(匯聚層)
開啟根橋保護的端口根橋保護為指定端口。開啟根橋保護的端口後,這些端口的狀態將被設置為Listening狀態,不再轉發報文(相當於此接口相連的鏈路斷開)。端口會經歷從Listening狀態轉變為Forwarding狀態,在此期間如果端口沒有收到更優的BPDU時,端口會恢復到原來的轉發狀態。
[H3C-Ethernet1/0/1] stp root-protection //根橋保護
3、環路保護:(核心層)
在啟動環路保護後,當端口保存的BPDU老化時,環路保護生效。(由於端口阻塞或者光纖單通導致的BPDU超時,引起對方收不到BPDU)。
根端口的角色如果發生變化就會變為Discarding(丟棄接收幀,不轉發幀,不進行地址學習,能夠處理發送BPDU)狀態,不轉發報文,從而不會在網絡中形成環路。Discarding狀態會一直維持,直到端口再次收到BPDU,重新成為根端口。
在MSTP中,此功能對根端口、Alternate端口和Backup端口有效。
[H3C-Ethernet1/0/1] stp loop-protection //環路保護
4、TC保護:
設置設備在收到TC-BPDU報文後的10秒內,進行地址表項刪除操作的最多次數
監控在該時間段內收到的TC-BPDU報文數是否大於門限值。(默認為6)
可以避免mac地址表(ARP表是通過MAC表項的刪除而更新的,不是直接刪除的)的頻繁刷新
[H3C] stp tc-protection enable //全局下使能
[H3C] stp tc-protection threshold number //單位時間內能夠收到TC的最大次數。
dis stp brief
dis stp root
dis stp down-port
STP開銷計算:
stp在DP發出時開銷為0,不算出接口開銷,只算入口開銷,所以為了改變接口狀態,修改stp開銷時,修改RP的開銷
本文出自 “Network_偉” 博客,請務必保留此出處http://cwnetwork.blog.51cto.com/10718966/1970459
stp Rstp Mstp