在最早学习生成树STP的时候,端口ID总共占16bit,其中8位是端口优先级,8位是端口编号,所以端口优先级部分的取值范围是0-255,缺省值为128。如下图所示:

STP中,交换机的端口ID为什么要配置为16的倍数?

  但现在,在实际配置交换机的时候,配置端口ID的端口优先级的时候,有以下报错:


[SW1-Ethernet0/0/1]stp port priority ?
  INTEGER<0-240>  Port priority, in steps of 16

[SW1-Ethernet0/0/1]stp port priority 1
                                     ^
Error: Wrong parameter found at '^' position.
[SW1-Ethernet0/0/1]stp port priority 16 ?
  <cr> 

[SW1-Ethernet0/0/1]stp port priority 16
[SW1-Ethernet0/0/1]


  就是端口优先级必须配置为16的倍数,否则交换机会报错,在交换机的命令提示中,也提到,端口优先级,步进为16。这跟最早对端口优先级这个参数的理解有出入了,由于上述设备是华为交换机,查询了华为的文档,有这样的描述:“PID:端口ID;PID由两部分构成的,高4位是端口优先级,低12位是端口号。”这说明对端口ID的定义已经有变化了,只有高4位才是定义优先级的,5-8位被用去做端口编号。

  这样做是可以理解,现在的中高端交换机,端口数量有的已经远超255个了,所以原来只有8位定义端口编号,显然不够了,从端口优先级部分挪了4位来定义端口编号,才能确保交换机的每个端口有唯一的编号;而端口优先级部分只有15个不同的值,这实际也够用了。