网络拓扑如图1所示。在该网络中,谁将被选举为VLAN1对应生成树的根网桥呢?由拓扑图中标注的数据可知,Switch1和Switch3的优先级相同,都是默认值32768,Switch2的优先级48452大于32768。而Switch3的MAC地址比Switch1的MAC地址小,所以根桥应该是Switch3。下面我们通过对网桥优先级的进一步理解,说明事实并非如此!
图1 网络拓扑图
表1 BID的构成
根桥的选举就是在运行STP协议的交换机中相对某个VLAN选举出一个唯一的根桥。根桥的选举依据是网桥协议数据单元报文中BID(Bridge ID)字段值。BID字段有8个字节共64位,如表1所示。
系统ID扩展即VLAN ID,用以区别不同VLAN的生成树。桥优先级和系统ID扩展是一起计算的,桥ID为高4位,系统ID扩展为低12位,组合成一个16位2字节的数据。为不引起混淆而有所区分,本文对其命名为“组合优先级”,用大写字母P表示,桥优先级用小写字母p表示。
由于同一颗生成树对应同一个VLAN,所以在一颗生成树中选举根网桥时不用考虑VLAN ID,可只比较桥优先级p和MAC。在进行BID比较时,从左到右按桥优先级p(或组合优先级P)和MAC地址逐级比较,数值越小,被选举为根桥的优先级越高。
表2 BID中各数值的取值范围
对于VLAN 1的生成树,VLAN ID都是1,即0000 0000 0001B。桥优先级p为16位二进制数(不是4位),低12位为全0,高4位从0000B到 1111B,其 范 围 为0000 0000 0000 0000B到1111 0000 0000 0000B,即 0到61440。BID中各数值的取值范围如表2所示。
由表2看出,组合优先级最小值是0000 0000 0000 0001B=1D,最 大 值 是1111 0000 0000 0001B=61441D,形成等差数列,其公差为4096。从组合优先级P中减去VLAN ID,其数值为0,4096,……,61440,也形成等差数列,公差为4096,即都是4096的倍数。由表2得:
组合优先级P=桥优 先 级(xxxx 0000 0000 0000B)+VLAN ID(0000 0000 0001B),即 :P=p+v=k*4096+v,其 中0≤k≤15且k∈N,v为VLAN ID。
对于不同颗的生成树,VLAN ID从 0000 0000 0001B到 1111 1111 1110B,即从 1到 4094 (VLAN 0和VLAN 4095用作协议保留),最多支持4094颗生成树。组合优先级P的范围从0000 0000 0000 0001B到1111 1111 1111 1110B,即从 1到65534。
为什么桥优先级的默认值取为32768而不是别的数据呢?因为32768对应的1000B刚好是在0000B到1111B最中间的2个数0111B和1000B中的1000B。
如果图1中标注的“网桥优先级”是指纯桥优先级p,则 Switch2的 48452不是4096的倍数,不能做为桥优先级。如果图1中标注的“网桥优先级”是指16位的组合优先级P,则根据P=k*4096+v知:
48452=k*4096+v,0≤ k≤ 15且 k∈ N,即48452=11*4096+3396
说明桥优先级p=11*4096=45056,VLAN ID=3396,这是 针对VLAN 3396的一颗生成树。这时,对于Switch1和Switch3的32768来说,方程:32768=k*4096+3396
应该有在区间[0,15]上的整数解,然而它没有。所以无论把32768和48452理解成桥优先级p或者组合优先级P,都是矛盾的。
对于VLAN 1的生成树,配置Switch2的优先级为48452的命令为:Switch2(config)#spanning-tree vlan 1 priority 48452
回车后出现如下提示:%Bridge Priority must be in increments of 4096.
% Allowed values are:0 4096 …… 61440
提示中说,桥优先级必须设置成4096的倍数,比如0,4096,……,61440。 虽 然 手工设置了priority 48452,但该命令的操作并没有成功,Switch2的优先级仍然还是默认的32768,并没有因为该命令的执行而将其优先级更改为48452!
通过命令:
Switch 2#show spanning-tree vlan 1
得到的结果是:
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0010.0000.0000
这进一步说明其组合优先级P是32769,桥优先级p还是32768。
结果是,三台交换机的优先级还是一样的,都是默认的32768。根桥是谁就只能由MAC地址值来判断了,经过比较,根桥是MAC地址最小的Switch2。
所以说,网桥优先级必须是4096的倍数,Switch2标注的48452不是4096的倍数,所以不能设置其为网桥的优先级。