在局域网 中,交 换设备间借助于生成树协议(Spanning-Tree Protocol,STP) 来 这 完成动态修剪,从而形成统一的树形结构,避免同一VLAN下数据链路层环路的存在,其标准为IEEE802.1D。
路径开销Cost、端口ID、端口编号是决定非根交换机指定端口和阻塞端口的判定条件。
CISCO交换机的端口优先级是以“Prio.Nbr”的格式表示的,其中Prio为端口 ID,数 值 在 <0,240> 之间,默认为128,且必须是16的倍数;Nbr为端口编号,从1开始由FastEthernet端口按顺序编号到GigabitEthernet端口。
图1 网络结构拓扑图
在生成树收敛过程中,以上参数的比较顺序是Cost、Prio 和Nbr,数值越小成为转发端口的优先级越高。下面通过几个实验说明非根交换机的阻塞端口与它自身的优先级无关。
所有条件均为默认相同,拓扑图如图1所示。图1中连接端口均为千兆端口,所以各链路Cost值相同。不新建VLAN,都在VLAN 1中进行讨论。
通过命令show spanning-tree vlan 1可查看到两台交换机的Priority值均为默认 32769(32768加上VLAN号 1)。
通过命令show version可查看到S1的MAC地址为0002.17B5.915D比较小,优先级较高;S2的MAC地址为0050.0FC2.DD84比较大,优先级比较低,所以S1被选举为根交换机。
通过命令show spanning-tree vlan 1可查看到S2端口Gig0/1的Prio.Nbr的值为128.25(1-24是百兆端口), 端口Gig0/2的Prio.Nbr的值为128.26。
根据判定条件,Cost相同,端口ID相同,端口编号较大者Gig0/2应该是被阻塞的端口。
通过命令show spanning-tree interface G0/2可以查看到该端口状态为BLK(阻塞)状态。确实为阻塞状态,这时判定和实际是一样的,这与各教科书的描述也一致。
然而,这只是一种巧合,事实并非如此!请继续看下面的实验。
图2 网络结构拓扑图
同实验一,只是把端口反接,也就是把S1的Gig0/1对 应 S2的Gig0/2,S1的Gig0/2对应S2的Gig0/1,如图2所示。
对于交换机S2来说,各端口ID同实验一中没有变化,阻塞端口也应该是G0/2,然而通过命令show spanning-tree interface Gig0/2查看到的状态为FWD,而 Gig0/1的 状 态 为BLK。
这说明非根交换机端口优先级比较高的反而被阻塞。
拓扑图如图1,手工修改S2的端口优先级,使Gig0/1的Prio值大于 Gig0/2的Prio值,也就是让Gig0/1的优先级变低。命令如下:
修改端口Gig0/1的Prio值为最大值240,优先级最低,应该被阻塞。生成树收敛结束后,通过命令发现阻塞端口仍然是Gig0/2,并没有发生变化。
这说明非根交换机各端口的Prio.Nbr值并不影响端口的阻塞属性。
拓扑图如图1,手工修改S1的端口ID值,使Gig0/1的Prio值大于 Gig0/2的Prio值,也就是让Gig0/1的优先级变低,命令如下:
修改端口Gig0/1的Prio值为最大值240,生成树收敛完成后,通过命令发现阻塞端口发生了变化,S2的Gig0/1成为了阻塞端口。
以上实验说明,非根交换机S2的端口是否被阻塞,不是由S2自身的端口优先级来决定,而是由对端根交换机的对应端口的优先级来决定。