網(wǎng)絡(luò)拓?fù)淙鐖D1所示。在該網(wǎng)絡(luò)中,誰將被選舉為VLAN1對(duì)應(yīng)生成樹的根網(wǎng)橋呢?由拓?fù)鋱D中標(biāo)注的數(shù)據(jù)可知,Switch1和Switch3的優(yōu)先級(jí)相同,都是默認(rèn)值32768,Switch2的優(yōu)先級(jí)48452大于32768。而Switch3的MAC地址比Switch1的MAC地址小,所以根橋應(yīng)該是Switch3。下面我們通過對(duì)網(wǎng)橋優(yōu)先級(jí)的進(jìn)一步理解,說明事實(shí)并非如此!
圖1 網(wǎng)絡(luò)拓?fù)鋱D
表1 BID的構(gòu)成
根橋的選舉就是在運(yùn)行STP協(xié)議的交換機(jī)中相對(duì)某個(gè)VLAN選舉出一個(gè)唯一的根橋。根橋的選舉依據(jù)是網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文中BID(Bridge ID)字段值。BID字段有8個(gè)字節(jié)共64位,如表1所示。
系統(tǒng)ID擴(kuò)展即VLAN ID,用以區(qū)別不同VLAN的生成樹。橋優(yōu)先級(jí)和系統(tǒng)ID擴(kuò)展是一起計(jì)算的,橋ID為高4位,系統(tǒng)ID擴(kuò)展為低12位,組合成一個(gè)16位2字節(jié)的數(shù)據(jù)。為不引起混淆而有所區(qū)分,本文對(duì)其命名為“組合優(yōu)先級(jí)”,用大寫字母P表示,橋優(yōu)先級(jí)用小寫字母p表示。
由于同一顆生成樹對(duì)應(yīng)同一個(gè)VLAN,所以在一顆生成樹中選舉根網(wǎng)橋時(shí)不用考慮VLAN ID,可只比較橋優(yōu)先級(jí)p和MAC。在進(jìn)行BID比較時(shí),從左到右按橋優(yōu)先級(jí)p(或組合優(yōu)先級(jí)P)和MAC地址逐級(jí)比較,數(shù)值越小,被選舉為根橋的優(yōu)先級(jí)越高。
表2 BID中各數(shù)值的取值范圍
對(duì)于VLAN 1的生成樹,VLAN ID都是1,即0000 0000 0001B。橋優(yōu)先級(jí)p為16位二進(jìn)制數(shù)(不是4位),低12位為全0,高4位從0000B到 1111B,其 范 圍 為0000 0000 0000 0000B到1111 0000 0000 0000B,即 0到61440。BID中各數(shù)值的取值范圍如表2所示。
由表2看出,組合優(yōu)先級(jí)最小值是0000 0000 0000 0001B=1D,最 大 值 是1111 0000 0000 0001B=61441D,形成等差數(shù)列,其公差為4096。從組合優(yōu)先級(jí)P中減去VLAN ID,其數(shù)值為0,4096,……,61440,也形成等差數(shù)列,公差為4096,即都是4096的倍數(shù)。由表2得:
組合優(yōu)先級(jí)P=橋優(yōu) 先 級(jí)(xxxx 0000 0000 0000B)+VLAN ID(0000 0000 0001B),即 :P=p+v=k*4096+v,其 中0≤k≤15且k∈N,v為VLAN ID。
對(duì)于不同顆的生成樹,VLAN ID從 0000 0000 0001B到 1111 1111 1110B,即從 1到 4094 (VLAN 0和VLAN 4095用作協(xié)議保留),最多支持4094顆生成樹。組合優(yōu)先級(jí)P的范圍從0000 0000 0000 0001B到1111 1111 1111 1110B,即從 1到65534。
為什么橋優(yōu)先級(jí)的默認(rèn)值取為32768而不是別的數(shù)據(jù)呢?因?yàn)?2768對(duì)應(yīng)的1000B剛好是在0000B到1111B最中間的2個(gè)數(shù)0111B和1000B中的1000B。
如果圖1中標(biāo)注的“網(wǎng)橋優(yōu)先級(jí)”是指純橋優(yōu)先級(jí)p,則 Switch2的 48452不是4096的倍數(shù),不能做為橋優(yōu)先級(jí)。如果圖1中標(biāo)注的“網(wǎng)橋優(yōu)先級(jí)”是指16位的組合優(yōu)先級(jí)P,則根據(jù)P=k*4096+v知:
48452=k*4096+v,0≤ k≤ 15且 k∈ N,即48452=11*4096+3396
說明橋優(yōu)先級(jí)p=11*4096=45056,VLAN ID=3396,這是 針對(duì)VLAN 3396的一顆生成樹。這時(shí),對(duì)于Switch1和Switch3的32768來說,方程:32768=k*4096+3396
應(yīng)該有在區(qū)間[0,15]上的整數(shù)解,然而它沒有。所以無論把32768和48452理解成橋優(yōu)先級(jí)p或者組合優(yōu)先級(jí)P,都是矛盾的。
對(duì)于VLAN 1的生成樹,配置Switch2的優(yōu)先級(jí)為48452的命令為:Switch2(config)#spanning-tree vlan 1 priority 48452
回車后出現(xiàn)如下提示:%Bridge Priority must be in increments of 4096.
% Allowed values are:0 4096 …… 61440
提示中說,橋優(yōu)先級(jí)必須設(shè)置成4096的倍數(shù),比如0,4096,……,61440。 雖 然 手工設(shè)置了priority 48452,但該命令的操作并沒有成功,Switch2的優(yōu)先級(jí)仍然還是默認(rèn)的32768,并沒有因?yàn)樵撁畹膱?zhí)行而將其優(yōu)先級(jí)更改為48452!
通過命令:
Switch 2#show spanning-tree vlan 1
得到的結(jié)果是:
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0010.0000.0000
這進(jìn)一步說明其組合優(yōu)先級(jí)P是32769,橋優(yōu)先級(jí)p還是32768。
結(jié)果是,三臺(tái)交換機(jī)的優(yōu)先級(jí)還是一樣的,都是默認(rèn)的32768。根橋是誰就只能由MAC地址值來判斷了,經(jīng)過比較,根橋是MAC地址最小的Switch2。
所以說,網(wǎng)橋優(yōu)先級(jí)必須是4096的倍數(shù),Switch2標(biāo)注的48452不是4096的倍數(shù),所以不能設(shè)置其為網(wǎng)橋的優(yōu)先級(jí)。