STP协议
BPDU,网桥协议数据单元
STP路径开销,以链路带宽为准,两个标准,现在主要以NEW为准
STP的选举
· 每个广播域选举一个根桥
· 每个非根交换机选举一个根端口
· 每个段选举一个指定端口
· 选择一个非指定端口
需考虑的因素
· 最低的根桥ID
· 到根桥的最低路径成本
· 最低的发送者网桥ID
· 最低的发送者端口ID
需要注意
· 跟桥的角色是可抢占的
· 桥ID中的MAC是交换机的背板MAC,端口ID中的MAC是交换机端口的MAC。Show int | in bia 可查看所有MAC,第一个就是背板MAC
· 选择根端口:比较接收到的BPDU;
· 选择指定端口:比较发送出BPDU
· 根桥向自身的所有接口发送BPDU,非根交换机会从自己的根端口接收BPDU,并从自身的指定端口转发出去,非指定端口不转发BPDU,只会侦听,默认20秒没收到BPDU包,则开始发送BPDU;
选举Root
比较所有网桥的优先级,优先级一致,比较MAC地址,SW1成为Root,Root所有端口为指定端口
非根交换机选举跟端口
如图所示,SW1的F0/0与SW2的F0/1为Root Port,因为这些端口到达跟桥的Cost值最小
每个段选举指定端口
Root所有端口为DP。比较SW2与SW3相连的接口,SW2会收到SW3发来的BPDU,SW3也会都到SW2发来的BPDU,各自比较自己和收到的BPDU报文中到根路径成本,也就是COST值,发现都为19,然后比较桥ID(比较发送者桥ID),明显SW2的MAC比较小,故成为DP,而SW3的F0/0被Block。
注意,这时如果试图在SW3上,将F0/1的COST调大,比如调整为200,那么在SW3上,F0/0就会成为RP。
一般在需改变的交换机上的端口做操作
(config-if)#spanning-tree cost 10 //修改接口COST值,如果想让阻塞端口成为转发端口,
(config-if)#spanning-tree vlan 1 cost 10 //只针对某个vlan 修改接口COST值
选举Root
不再赘述
非根交换机选举跟端口
如图所示,SW2的两个接口都会收到BUDP报文,都是来自SW1,因此,两份BUDP中到Root的开销都是0,接着比较发送者桥ID,都是来自SW1,因此也比较不出来,再比较两份BPDU报文中的端口ID,假设SW1的端口优先级相等,则比较接口ID,明显SW1的F0/1接口ID比较小,故SW2的F0/1接口称为RP。
每个段选举指定端口
Root的每个端口都是指定端口,SW2的F0/1接口为RP,故SW2的F0/2接口被Block。
注意,这时如果试图在SW2上将F0/2的接口优先级改小,也是没用的,因为比较的是发送者的端口ID,所以如果在SW1上,将F0/2的端口优先级调小,那么在SW2上,F0/2就会成为RP。
当然,如果将SW2的F0/2 Cost值调小,也可以让F0/2成为RP
修改接口优先级,一般在需改变的交换机上联设备接口下做操作
(config-if)#spanning-tree port-priority 64 //修改接口优先级,必须是16的倍数, Cisco默认128,
spanning-tree vlan 1 port-priority 64 //只针对某个vlan 修改接口优先级
SW1
配置Vlan的主根桥:
(config)#spanning-tree vlan 1 priority 0 //将vlan 1 的优先级配置为0,,默认为32768
SW2
配置Vlan的次根桥:
(config)#spanning-tree vlan 1 priority 4096 //将vlan 1 的优先级配置为4096,比主根桥小