目录
收敛:整个网络达到一致的情况
交换机端口五种STP状态
禁用(Disable):端口未开启,或者为连线,此时该接口不能收发BPDU报文,也不能收发业务数据帧。交换机接口被关闭down就是禁用状态
阻塞(Blocking):端口被阻塞就不能发送和转发数据,不会进行MAC地址学习。只会持续侦听网络中STP报文,即BPDU报文(拓扑变更通告)。
侦听(Listening):可以收发BPDU报文,不能收发业务数据帧,不会进行MAC地址学习
学习(Learning):可以收发BPDU报文,会侦听业务数据帧但是不能转发数据帧,可以进行MAC地址学习
转发(Forwarding):可以正常收发数据帧,也会进行BPDU报文处理(根端口或指定端口)
STP收敛一般过程
禁用—>侦听—>学习—>转发
计时器
Hello时间:STP交换机发送BPDU报文的时间间隔(在根网桥上修改才有效)
转发延时:指一个端口Listening 到 Learning的各自时间,默认15s 这两个状态下端口处于阻塞状态,这是STP协议避免临时环路的关键
Max Age(最大老化时间):端口会根据接收到的BPDU存储所接收到的最好的四个信息(网桥BID,累计根路径开销,发送者BID,发送端口PID).每次接收到合适的BPDU,端口就会启动这个MaxAge计时器。超过这个Max Age时间,端口接收到不合适的BPDU,就会认为网络直径过大,这个时间默认是20s
问题:交换机上会有VLAN的划分,当划分了广播域就阻挡了广播,不同的VLAN具有不同的STP
单生成树:交换机上只有一个VLAN
多生成树:交换机上有多个VLAN
一个VLAN 一棵树,因为一个VLAN属于同一个广播,在同一个广播域中,BPDU报文(拓扑变更通告)才不会被阻止。
配置前的情况
默认情况下,交换机上面都是启用了生成树协议的。
设置网桥优先级
依照:比较网桥ID(交换机ID),网桥ID较小的为根交换机、网桥ID:交换机的优先级+交换机的MAC地址、优先级越小越优先,MAC地址越小越优先
SW2#conf t
/* 第一步:在VLAN 1上启用生成树,默认已启用 */
SW2(config)#spanning-tree vlan 1
/* 第二步:指定根网桥,通过配置网桥优先级实现,必须是4096的倍数 */
SW2(config)#spanning-tree vlan 1 priority 4096 /*
SW2(config)#
需要设置SW3的f0/6接口为阻塞端口,直接设置SW1的网桥优先级
依照:网桥ID优先级越小越优先。
SW1#
SW1#conf t
SW1(config)#
SW1(config)#SW1(config)#spanning-tree vlan 1 priority 8192
(一般情况用不到)
/* 这条命令是通过在原来的优先级32768上降4096 ,使得优先级低于其他交换机 */
/*交换机默认情况下的网桥优先级是32768 如果修改必须是4096的倍数 */
SW1(config)#SW1(config)#spanning-tree vlan 1 root primary
/ * 百兆带宽路径成本就是 19、千兆带宽路径成本是1 */
SW1(config-if)#SW1(config)#spanning-tree vlan 1 cost 19
/* 默认端口优先级是128 修改需要改成2的次方数*/
SW1(config-if)#SW1(config)#spanning-tree vlan 1 port-priority 64
SW0的配置
创建VLAN 、加入对应接口,配置trunk链路
Switch>en
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#int f0/4
Switch(config-if)#sw mode acc
Switch(config-if)#sw acc vlan 10
Switch(config-if)#exit
Switch(config)#int f0/3
Switch(config-if)#sw mode acc
Switch(config-if)#sw acc vlan 20
Switch(config-if)#exit
Switch(config)#int range f0/1-2
Switch(config-if-range)#sw mode trunk
SW1配置
Switch>en
Switch#conf t
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#int f0/3
Switch(config-if)#sw mode acc
Switch(config-if)#sw acc vlan 20
Switch(config-if)#exit
Switch(config)#int range f0/1-2
Switch(config-if-range)#sw mode trunk
Switch(config-if-range)#
SW2配置
Switch>en
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#int f0/3
Switch(config-if)#sw mode acc
Switch(config-if)#sw acc vlan 10
Switch(config-if)#exit
Switch(config)#int range f0/1-2
Switch(config-if-range)#sw mode trunk
Switch(config-if-range)#
SW1的f0/1端口被阻塞
假设现在需要将SW0设置为VLAN 10的根网桥 ,SW1设置为 VLAN 20的根网桥
配置前的情况
SW0
SW1
思路,配置网桥优先级
在SW0上指定VLAN 10优先级 4096
Switch#
Switch#conf t
Switch(config)#spanning-tree vlan 10 priority 4096
在SW1 上指定VLAN 20的优先级
Switch#
Switch#conf t
Switch(config)#spanning-tree vlan 20 priority 4096
经过查看,VLAN 20 生成树阻塞的是 SW0 F0/2
VLAN 10生成树阻塞的是SW1 F0/2
在模拟器中,只要能跑一个vlan数据就会显示绿灯,所有vlan数据都不能跑才显示黄灯。
目前VLAN 10的流量走向图
假设需要修改它的路径为如图
将SW2的F0/2阻塞,将SW1 F0/2开启
但是SW2的F0/2与VLAN 10根交换机是直连的,在根网桥不变的情况下怎么办?
修改路径带宽,增加根路径成本,使其不能称为根端口,通过修改接口速率实现
在SW2上做配置
Switch>en
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#int f0/2
Switch(config-if)#speed 10
Switch(config-if)#end