在局域網(wǎng) 中,交 換設(shè)備間借助于生成樹協(xié)議(Spanning-Tree Protocol,STP) 來 這 完成動態(tài)修剪,從而形成統(tǒng)一的樹形結(jié)構(gòu),避免同一VLAN下數(shù)據(jù)鏈路層環(huán)路的存在,其標(biāo)準(zhǔn)為IEEE802.1D。
路徑開銷Cost、端口ID、端口編號是決定非根交換機指定端口和阻塞端口的判定條件。
CISCO交換機的端口優(yōu)先級是以“Prio.Nbr”的格式表示的,其中Prio為端口 ID,數(shù) 值 在 <0,240> 之間,默認(rèn)為128,且必須是16的倍數(shù);Nbr為端口編號,從1開始由FastEthernet端口按順序編號到GigabitEthernet端口。
圖1 網(wǎng)絡(luò)結(jié)構(gòu)拓?fù)鋱D
在生成樹收斂過程中,以上參數(shù)的比較順序是Cost、Prio 和Nbr,數(shù)值越小成為轉(zhuǎn)發(fā)端口的優(yōu)先級越高。下面通過幾個實驗說明非根交換機的阻塞端口與它自身的優(yōu)先級無關(guān)。
所有條件均為默認(rèn)相同,拓?fù)鋱D如圖1所示。圖1中連接端口均為千兆端口,所以各鏈路Cost值相同。不新建VLAN,都在VLAN 1中進(jìn)行討論。
通過命令show spanning-tree vlan 1可查看到兩臺交換機的Priority值均為默認(rèn) 32769(32768加上VLAN號 1)。
通過命令show version可查看到S1的MAC地址為0002.17B5.915D比較小,優(yōu)先級較高;S2的MAC地址為0050.0FC2.DD84比較大,優(yōu)先級比較低,所以S1被選舉為根交換機。
通過命令show spanning-tree vlan 1可查看到S2端口Gig0/1的Prio.Nbr的值為128.25(1-24是百兆端口), 端口Gig0/2的Prio.Nbr的值為128.26。
根據(jù)判定條件,Cost相同,端口ID相同,端口編號較大者Gig0/2應(yīng)該是被阻塞的端口。
通過命令show spanning-tree interface G0/2可以查看到該端口狀態(tài)為BLK(阻塞)狀態(tài)。確實為阻塞狀態(tài),這時判定和實際是一樣的,這與各教科書的描述也一致。
然而,這只是一種巧合,事實并非如此!請繼續(xù)看下面的實驗。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)拓?fù)鋱D
同實驗一,只是把端口反接,也就是把S1的Gig0/1對 應(yīng) S2的Gig0/2,S1的Gig0/2對應(yīng)S2的Gig0/1,如圖2所示。
對于交換機S2來說,各端口ID同實驗一中沒有變化,阻塞端口也應(yīng)該是G0/2,然而通過命令show spanning-tree interface Gig0/2查看到的狀態(tài)為FWD,而 Gig0/1的 狀 態(tài) 為BLK。
這說明非根交換機端口優(yōu)先級比較高的反而被阻塞。
拓?fù)鋱D如圖1,手工修改S2的端口優(yōu)先級,使Gig0/1的Prio值大于 Gig0/2的Prio值,也就是讓Gig0/1的優(yōu)先級變低。命令如下:
修改端口Gig0/1的Prio值為最大值240,優(yōu)先級最低,應(yīng)該被阻塞。生成樹收斂結(jié)束后,通過命令發(fā)現(xiàn)阻塞端口仍然是Gig0/2,并沒有發(fā)生變化。
這說明非根交換機各端口的Prio.Nbr值并不影響端口的阻塞屬性。
拓?fù)鋱D如圖1,手工修改S1的端口ID值,使Gig0/1的Prio值大于 Gig0/2的Prio值,也就是讓Gig0/1的優(yōu)先級變低,命令如下:
修改端口Gig0/1的Prio值為最大值240,生成樹收斂完成后,通過命令發(fā)現(xiàn)阻塞端口發(fā)生了變化,S2的Gig0/1成為了阻塞端口。
以上實驗說明,非根交換機S2的端口是否被阻塞,不是由S2自身的端口優(yōu)先級來決定,而是由對端根交換機的對應(yīng)端口的優(yōu)先級來決定。