眾所周知,不同 VLAN 接口“自環”了不會產生廣播風暴,但是否會被 STP 阻塞掉呢?
舉個簡單的拓撲:
這個拓撲中,SW1的G0/0/1和G0/0/2分別屬于不同的VLAN1和VLAN2,兩個口同時接傻瓜交換機,相當于“物理自環”了,但其實邏輯上并未環路,這種自環網絡是不會產生廣播風暴的,如下圖:
廣播包進入1口后打上缺省tag 1,即不會再向VLAN2的2口轉發,不會產生環路風暴。那么這種情況下,交換機啟用STP功能,這兩個口會不會被阻塞掉一個呢?說明這個問題之前先來模擬一下。
搭建拓撲
本例通過eNSP搭建拓撲進行模擬,交換機使能STP模式,1口配置為Access VLAN1,2口配置為Access VLAN2。
等待拓撲收斂,查看生成樹收斂的最終狀態:
可以看到最終是2口被阻塞了,STP優先級比較是“小優”,1口優先級更高阻塞2口符合預期。
但很顯然,STP協議并不關心1、2口是否屬于不同VLAN,即便是邏輯拓撲上不成環協議也會把它阻塞掉,這個結果其實并不符合大眾用戶的心理預期,屬于“誤阻塞”。那為什么為這樣呢?
原理分析
STP協議收斂的依據是BPDU報文的交互,交換機端口使能STP后,BPDU是端口發出來的,每個端口發出的BPDU均不一樣。BPDU報文是802.3/LLC幀格式封裝的,和我們常見的以太網數據報802.3 Ethernet 2幀格式有一些區別:
STP和RSTP的BPDU中是不包含VLAN信息的,所以生成樹協議不會基于端口VLAN去做判斷和比較。
那么在MSTP中的表現是怎么樣的呢?
MSTP不同VLAN接口的收斂
MSTP是可以配置VLAN在不同的實例中收斂的,兩個情況:
1.默認配置
默認情況下VLAN1和2都是MSTP的實例0,兩個口都在默認實例0中收斂自然也會阻塞優先級最低的那個口:
2. 配置實例
如果將VLAN1和VLAN2分別劃入不同實例1和2,那么實例之間是獨立收斂計算的,1、2物理口不會被阻塞,轉發機制如下:
- 處于VLAN1的數據會在實例1的生成樹中轉發;
- 處于VLAN2的數據會在實例2的生成樹中轉發;
- 其余VLAN數據在實例0中轉發,但小優口會被阻塞掉。
配置了MSTP的實例后,BDPU報文中是有MSTID字段的,交換機橋之間的交互計算會基于實例收斂:
總結
上述原理看不懂沒關系,慢慢再琢磨就行,但是下述總結務必記好:
Q:交換機使能STP或RSTP,不同VLAN接口“自環”了是否會被阻塞掉其中1個口?
A:會,阻塞掉優先級小的那個口。
Q:如果是使能MSTP呢?
A:分兩種情況:
- 默認不配置實例就和RSTP一樣,會阻塞優先級小的那個口;
- 配置實例后,1口和2口在不同實例中均處于轉發狀態。