html5 公眾號 網(wǎng)站開發(fā)百度seo優(yōu)化價格
- 企業(yè)內(nèi)部網(wǎng)絡(luò)怎么防止網(wǎng)絡(luò)出現(xiàn)環(huán)路?學會STP生成樹技術(shù)就可以解決啦。
STP簡介
在二層交換網(wǎng)絡(luò)中,一旦存在環(huán)路就會造成報文在環(huán)路內(nèi)不斷循環(huán)和增生,產(chǎn)生廣播風暴,從而占用所有的有效帶寬,使網(wǎng)絡(luò)變得無法正常通信。
在這種環(huán)境下生成樹協(xié)議應(yīng)運而生,生成樹協(xié)議是一種二層管理協(xié)議,它通過有選擇性地阻塞網(wǎng)絡(luò)冗余鏈路來達到消除網(wǎng)絡(luò)二層環(huán)路的目的,同時具備鏈路備份功能。
生成樹協(xié)議和其他協(xié)議一樣,是隨著網(wǎng)絡(luò)的不斷發(fā)展而不斷更新?lián)Q代的。最初被廣泛應(yīng)用的是IEEE802.1D-1998 STP(Spanning Tree Protocol,生成樹協(xié)議),隨后以它為基礎(chǔ)產(chǎn)生了IEEE 802.1w RSTP(Rapid Spanning Tree Protocol,快速生成樹協(xié)議)和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成樹協(xié)議)。
三種生成樹協(xié)議特點比較:
生成樹協(xié)議 | 特點 | 應(yīng)用場景 |
STP |
| 無需區(qū)分用戶或業(yè)務(wù)流量,所有VLAN共享一棵生成樹。 |
RSTP |
| |
MSTP |
| 需要區(qū)分用戶或業(yè)務(wù)流量,并實現(xiàn)負載分擔。不同的VLAN通過不同的生成樹轉(zhuǎn)發(fā)流量,每棵生成樹之間相互獨立。 |
STP實現(xiàn)說明
華為實現(xiàn)說明
- STP在交換機所有版本,所有形態(tài)都支持。
- 華為交換機默認STP模式是MSTP。需要運行STP或RSTP模式時,必須要手動配置。
- 華為交換機在STP模式下,使用的端口角色和RSTP是一樣的,也就是說支持下面5種端口角色:指定端口、根端口、Alternate端口、Backup端口和邊緣端口。
- 華為交換機在STP模式下,支持下面4種保護功能:BPDU保護、Root保護、環(huán)路保護和防TC-BPDU攻擊保護。
- 版本差異說明:
- 從V100R006版本開始,華為X7交換機全局默認使能STP功能。
- V200R001版本及之后版本,開始支持邊緣端口屬性自動探測功能。即如果端口從未收到過BPDU報文,則邊緣端口屬性自動生效(端口下不會自動生成stp edged-port enable配置)。
- V200R001版本及之后版本,如果端口已經(jīng)配置stp edged-port enable,可以再配置根保護和環(huán)路保護,而其他版本會提示Error。
其他廠商實現(xiàn)
- H3C交換機STP相關(guān)命令配置與S系列交換機基本沒有差異。
- H3C交換機默認采用legacy標準來計算路徑開銷,而S系列交換機默認為dot1t。在與S系列交換機對接時,建議配置相同的計算標準。
- 某些H3C老形態(tài)設(shè)備,全局不使能STP或全局使能端口不使能STP時,端口收到BPDU報文后,可以當做普通組播數(shù)據(jù)報文在VLAN內(nèi)轉(zhuǎn)發(fā)。S系列交換機端口默認會丟棄。
Cisco交換機所支持的生成樹協(xié)議類型分別有:PVST(Per VLAN Spanning Tree)、PVST+(Per VLAN Spanning Tree Plus)、Rapid-PVST+(Rapid Per VLAN Spanning Tree Plus)和MST(Multiple Spanning Tree)。這幾種生成樹協(xié)議的某些BPDU報文采用其私有的報文格式,與IEEE標準的BPDU報文格式不一樣。
- 當Cisco交換機運行私有的PVST+或Rapid-PVST+生成樹協(xié)議時,與S系列交換機能否互通,取決于Cisco側(cè)的端口鏈路類型:
- 如果端口鏈路類型為trunk且退出VLAN 1,與S系列交換機無法實現(xiàn)互通。Cisco側(cè)端口在非VLAN 1中發(fā)送其私有的BPDU報文,S系列交換機默認不會處理該報文,當做普通組播數(shù)據(jù)報文進行轉(zhuǎn)發(fā),可以通過配置l2protocol-tunnel進行透傳。S系列盒式交換機通過l2protocol-tunnel透傳PVST+報文時,全局需要配置bpdu mac-address 0100-0ccc-cccd。
- 如果端口鏈路類型為trunk而且加入VLAN 1,只可以在VLAN 1中與S系列交換機互通。
- 如果端口鏈路類型為access,可以與S系列交換機互通。
- 當Cisco交換機運行MST協(xié)議時,可以理解為標準的MSTP模式,可以與S系列交換機互通。但是需要注意:在使用MSTP協(xié)議的S系列交換機與使用MST的Cisco交換機采用相同的域配置(域名、修訂級別、VLAN與實例的映射關(guān)系)的情況下,要想實現(xiàn)域內(nèi)互通,需要在S系列交換機端口配置摘要偵聽功能stp config-digest-snoop。這是兩者由于采用不同的密鑰來生成MSTP的摘要信息,因此端口發(fā)送的BPDU報文中的摘要信息不同。由于摘要信息不同,則屬于不同的MST域,會進行域間互通。
注意以下介紹的STP是狹義的STP,即IEEE 802.1D-1998 中定義的STP 協(xié)議。
STP原理
協(xié)商原則
STP協(xié)議是根據(jù)4個維度進行選舉協(xié)商的,設(shè)備之間通過發(fā)送BPDU報文,經(jīng)過4個維度的比較,最終會阻塞綜合能力最差的端口。
選舉維度(橋ID,累計根路徑開銷,發(fā)送設(shè)備BID,發(fā)送端口PID)
維度 | 定義 | 作用 |
橋ID | BID(Bridge ID),是由16位的橋優(yōu)先級(Bridge Priority)與橋MAC地址構(gòu)成。BID橋優(yōu)先級占據(jù)高16位,其余的低48位是MAC地址。 | 確定根橋。橋ID最小的設(shè)備會被選舉為根橋。 |
累計根路徑開銷 | 某端口到根橋累計的路徑開銷就是所經(jīng)過的各個橋上的各端口的路徑開銷累加而成。 | 選舉根端口、指定端口和阻塞端口時使用。 |
發(fā)送設(shè)備BID | 發(fā)送BPDU報文的橋ID。 | 選舉根端口、指定端口和阻塞端口時使用。 |
發(fā)送端口PID | 發(fā)送BPDU報文的端口ID。 PID由兩部分構(gòu)成的,高4位是端口優(yōu)先級,低12位是端口號。 | 只在存在Backup端口時使用。 |
角色和狀態(tài)
經(jīng)過4個維度的比較,最終會協(xié)商出端口的角色和狀態(tài),確定報文流量的轉(zhuǎn)發(fā)路徑。STP角色的定義,如圖所示。
- 根橋:就是橋ID最小的設(shè)備。橋ID是由16位的橋優(yōu)先級與橋MAC地址構(gòu)成。BID橋優(yōu)先級占據(jù)高16位,其余的低48位是MAC地址。華為交換機默認橋優(yōu)先級都是32768。所以在不修改橋優(yōu)先級時,MAC地址最小的設(shè)備就是根橋。
- 指定端口:就是負責轉(zhuǎn)發(fā)BPDU報文的端口。根橋上的端口都是指定端口。該端口可以正常轉(zhuǎn)發(fā)流量。
- 根端口:就是去往根橋路徑開銷最小的端口。該端口可以正常轉(zhuǎn)發(fā)流量。
- 阻塞端口:就是禁止轉(zhuǎn)發(fā)流量的端口。
從上面的官方定義,可以看出:STP協(xié)商完成后,端口要么被阻塞,要么正常轉(zhuǎn)發(fā)報文。其實在STP進行協(xié)商的過程中,是有一些中間狀態(tài)的。
端口狀態(tài) | 目的 | 說明 |
Forwarding | 端口既轉(zhuǎn)發(fā)用戶流量也處理BPDU報文。 | 只有根端口或指定端口才能進入Forwarding狀態(tài)。 |
Learning | 設(shè)備會根據(jù)收到的用戶流量構(gòu)建MAC地址表,但不轉(zhuǎn)發(fā)用戶流量。 | 過渡狀態(tài),增加Learning狀態(tài)防止臨時環(huán)路。 |
Listening | 確定端口角色,將選舉出根橋、根端口和指定端口。 | 過渡狀態(tài)。 |
Blocking | 端口僅僅接收并處理BPDU,不轉(zhuǎn)發(fā)用戶流量。 | 阻塞端口的最終狀態(tài)。 |
報文格式
STP協(xié)議報文是通過BPDU報文封裝的,目的MAC是組播MAC:01-80-C2-00-00-00,封裝格式是IEEE 802.3。
BPDU報文處理流程
BPDU報文的分類
-
- 配置BPDU報文:根據(jù)Flags標記位,分為3類
??? 第一類配置BPDU報文: Flags的TCA和TC位都置為0的配置BPDU報文
??? 第二類配置BPDU報文: Flags的TCA和TC位都置為1的配置BPDU報文
??? 第三類配置BPDU報文:Flags的TCA位置為0,TC位置為1的配置BPDU報文
-
- TCN BPDU報文: BPDU Type為0x80的BPDU報文,叫做TCN BPDU報文
BPDU報文的處理流程
BPDU報文格式
- 配置BPDU報文:BPDU Type為0x00的BPDU報文,都叫做配置BPDU報文
- 第一類配置BPDU報文: Flags的TCA和TC位都置為0的配置BPDU報文
該報文用于STP狀態(tài)的協(xié)商和維持。具體報文格式如下:
- 第二類配置BPDU報文: Flags的TCA和TC位都置為1的配置BPDU報文
該報文用于通知下游設(shè)備停止發(fā)送TCN BPDU報文。具體報文格式如下:
- 第二類配置BPDU報文: Flags的TCA位置為0,TC位置為1的配置BPDU報文
該報文用于通知下游設(shè)備刪除MAC地址表項。具體報文格式如下:
- TCN BPDU報文:BPDU Type為0x80的BPDU報文,叫做TCN BPDU報文,用于通知上游設(shè)備網(wǎng)絡(luò)拓撲變更。具體報文格式如下:
使用注意事項
- 盒式交換機需要通過“bpdu enable”使能BPDU報文上送CPU處理的功能,才能使STP報文上送CPU處理,否則STP狀態(tài)無法收斂。
V100R005及之前版本,在S2700系列設(shè)備,檢查全局是否配置bpdu enable;其他系列盒式交換機,檢查物理端口、Eth-trunk接口下是否配置bpdu enable。
V100R006及后續(xù)版本,對應(yīng)形態(tài)設(shè)備全局或端口默認使能bpdu enable。
- Eth-Trunk接口使能STP時,建議修改Eth-Trunk接口的cost值使其小于物理端口的cost值,使其不易協(xié)商為備份端口。一是因為Eth-Trunk接口的開銷為單個成員接口的開銷除以成員接口數(shù)量,當成員口狀態(tài)變化時Eth-trunk接口的cost值會變化;二是cost值越小說明鏈路質(zhì)量越高。
- 通過命令“display stp brief”查看端口狀態(tài)時,只會顯示使能STP且UP的端口。
- 可以通過修改路徑開銷和發(fā)送者的BID,選擇阻塞指定的端口。
配置舉例
組網(wǎng)需求
如圖所示,當前網(wǎng)絡(luò)中SwitchA、SwitchB、SwitchC和SwitchD通過環(huán)形組網(wǎng)備份鏈路。希望通過運行生成樹協(xié)議阻塞端口,將環(huán)形網(wǎng)絡(luò)結(jié)構(gòu)修剪成無環(huán)路的樹形網(wǎng)絡(luò)結(jié)構(gòu)。
- 在主鏈路故障時,對切換到備份鏈路的時間要求不高,要求配置簡單,所以這里使用STP模式。
- SwitchA設(shè)備的性能較高,希望作為根橋,SwithB為備份根橋。
- SwtichC和SwitchD設(shè)備連接用戶,希望阻塞SiwtchC和SwitchD之間的鏈路。
- SwitchC和SwitchD連接用戶的接口GE0/0/3不要參與STP計算。
配置思路
采用如下的思路配置STP:
- 配置模式是STP模式。
- 配置SwitchA為根橋,SwitchB為備份根橋。
- 統(tǒng)一使用默認路徑開銷。華為交換機默認的路徑開銷計算標準使用的是標準的dot1t。GE接口默認路徑開銷是20000,而Ethernet接口默認路徑開銷是200000。注意:eNSP模擬器中,STP的路徑開銷默認是1。
- SwitchC和SwitchD的GE0/0/3端口去使能STP協(xié)議。
- SwitchA、SwitchB、SwitchC和SwitchD使能STP協(xié)議。
操作步驟
步驟1:配置模式為STP模式。
<HUAWEI> system-view [HUAWEI] sysname SwitchA [SwitchA] stp mode stp |
<HUAWEI> system-view [HUAWEI] sysname SwitchB [SwitchB] stp mode stp |
<HUAWEI> system-view [HUAWEI] sysname SwitchC [SwitchC] stp mode stp |
<HUAWEI> system-view [HUAWEI] sysname SwitchD [SwitchD] stp mode stp |
步驟2:配置SwitchA為根橋,SwitchB為備份根橋。
[SwitchA] stp root primary ??//也可以使用命令stp priority 0 配置優(yōu)先級為0,和stp root primary的作用是一樣的。 |
[SwitchB] stp root secondary ?//也可以使用命令stp priority 4096 配置優(yōu)先級為4096,和stp root secondary的作用是一樣的。 |
步驟3:去使能SwitchB和SwitchC設(shè)備GE0/0/3端口的STP功能。
[SwitchC] interface gigabitethernet0/0/3 [SwitchC-GigabitEthernet0/0/3] stp disable [SwitchC-GigabitEthernet0/0/3] quit |
[SwitchD] interface gigabitethernet 0/0/3 [SwitchD-GigabitEthernet0/0/3] stp disable [SwitchD-GigabitEthernet0/0/3] quit |
步驟4:全局使能STP功能。
華為X7系列交換機默認是使能,該步驟可以省略。
[SwitchA] stp enable |
[SwitchB] stp enable |
[SwitchC] stp enable |
[SwitchD] stp enable |
步驟5:驗證配置結(jié)果。
?查看STP簡要信息,通過STP簡要信息可以快速的看出端口的角色和狀態(tài)。
配置文件
SwitchA的配置文件
# sysname SwitchA # stp mode stp stp instance 0 root primary # return |
SwitchB的配置文件
# sysname SwitchB # stp mode stp stp instance 0 root secondary #? return? |
SwitchC的配置文件
# sysname SwitchC? #? stp mode stp #? interface GigabitEthernet0/0/3 ?stp disable #? return? |
SwitchD的配置文件
# sysname SwitchD #? stp mode stp #? interface GigabitEthernet0/0/3 ?stp disable #? return |