配置STP定时器你会了吗?
!
原理概述
普通生成树STP不能实现快速收敛,但是在STP中诸如Hello Time定时器、Max Age定时器、ForwardDelay定时器、未收到上游的BPDU就重新开始生成树计算的超时时间等参数会影响其收敛速度。通过配置合适的系统参数,可以使STP实现最快的拓扑收敛。下面首先介绍STP定时器。
■ HelloTime定时器:HelloTime为周期发送BPDU来维护生成树的稳定的时间,默认为2s。如果交换机在配置的超时时间内没有收到上游交换机发送的BPDU,则会重新进行生成树计算。在根交换机上配置的HelloTime将作为整个生成树内所有交换机的
Hello Time。
■ Max Age定时器: BPDU 的最大生存时间,默认为20s,交换机通过比较从.上游交换机收到的BPDU中携带的Message Age (配置BPDU的生存时间,如果配置BPDU是根桥发出的,则Message Age为0,每经过-一台交换机增加1)和Max Age,来判断此BPDU是否超时。如果收到的BPDU超时,交换机将该BPDU老化,同时阻塞接收该BPDU的接口,并开始发出以自已为根桥的BPDU。这种老化机制可以有效地控制生成树的半径。在根交换机上配置的Max Age 将作为整个生成树内所有交换机的Max Age。
■Forward Delay定时器:此延迟时间为Forward Delay定时器的时间,默认为15s。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重
新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路。为此,STP采用了--种端口状态迁移机制,新选出的根端口和指定端口要经过2倍的Forward Delay 延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,使所有参与STP计算的交换都能正确知晓网络状态,从而防止了临时环路的产生。在华为交换机设备上,由于默认生成树模式为MSTP,当手工更改生成树模式为STP时, STP的端口状态同样只有Discarding、Learning、Forwarding 3种。在根交换机.上配置的延迟时间将作为整个生成树内所有交换机的延迟时间。
超时时间=3 X Hello Time X Timer Factor.如果交换机在配置的超时时间内没有收到上游发送的BPDU,就认为上游交换机已经出现故障,然后会重新进行生成树拓扑的计
算。但是有时交换机在较长的时间内收不到上游发送的BPDU,是由于,上游交换机的繁忙造成的,在这种情况下一般不应该重新进行生成树计算。因此,在稳定的网络中,应将超时时间配置得长一些,以减少网络资源的浪费。建议将Timer Factor的值设置为5~ 7,以增强网络稳定性。根交换机的Hello Time、Forward Delay以及Max Age 3个时间参数之间取值应该满足如下公式,否则网络会频繁震荡。
2X( Forward Delay- 1.0 second )≥Max Age
Max Age≥2X( Hello Time+ 1.0 second )
建议使用stpbridge-diameter命令配置网络直径,交换机会自动根据网络直径计算出Hello Time、Forward Delay以及Max Age 3个时间参数的最优值。默认网络直径为7。
实验内容
本实验模拟企业网络场景。公司内网是-一个大的局域网,由4台交换机两两相连组成的一个环形网络。为了避免形成环路,每台交换机都运行了STP生成树协议,且配置
S1为根交换机,S2 为备份根交换机。现在为了优化网络,在网络变化时加快STP的收敛速度,需要在交换机上更改STP 定时器的设置,将所有定时器调整到最优值,完成STP的加速收敛。
实验拓扑
配置STP定时器的拓扑如图4-2所示。
实验编址
实验编址见表4-2。
Mac地址
实验步骤
//基本配置
根据实验编址表进行相应的基本IP地址配置,并使用ping命令检测各直连链路的连通性。
其余直连网段的连通性测试省略。
//配置STP定时器
在4台交换机上配置使用STP,并配置S1为该二层网络中的根交换机,S2 为备份根交换机。
配置完成后,使用display stp命令查看各定时器的默认值。
可以查看到在默认情况下,BPDU每2秒发送一次(Hello), BPDU的最大老化时间为20s (MaxAge), 转发延迟为15s (FwDly), 最大传递跳数为20跳(MaxHop)。注意,Config Times标识的是当前设备配置的计时器,而Active Times标识的是正在生效的计时器,一般情况下二者是完全相同的。
在PC-4.上使用ping -t命令持续发送ICMP报文,进行连通性测试。
可以观察到,此时网络稳定,没有出现任何丢包现象。
在S1上修改STP的Forward Delay时间为2000cs,默认为1500cs,cs 代表百分之一秒。注意,只有在根交换机上进行该配置才会生效。
配置完成后,交换机会弹出信息,提示配置已经被改变。
使用display stp命令查看此时的定时器值。
可以观察到,此时修改已经完成。如果在非根交换机.上配置,那么Config Times配置值会发生改变,而Active Times实际运行值不会改变。
再回到PC-4上观察到PC-2的连通性测试结果。
观察到出现大量丢包现象。
如果更改STP的Hello Time时间及其他计时器也会出现相同的现象,这里不再赘述。所以不建议使用命令直接修改定时器时间,而建议使用stp bridge -diameter命令设置网络
直径,交换机会根据网络直径自动计算出3个时间参数的最优值。注意,本命令需要在根交换机上配置才能生效。
在S1上使用stp bridge-diameter 3命令设置网络的直径为3。
配置完成后,观察STP计时器的改变情况。
可以观察到,此时最大老化时间被自动修改为12s,转发延迟被自动修改为9s。
同时对PC-4到PC-2连通性测试结果再次进行观察。
可以观察到,此时网络恢复了正常。
//验证Forward Delay定时器
为了验证Forward Delay时间对端口状态迁移的影响,仍然维持上一步骤中PC-4到PC-2的连通性测试。
在S1、S2、S3、S4上查看STP下的各个端口的状态。
可以观察到,由于S1是根交换机,所以S1的所有端口都是DP端口即指定端口,所处状态都是转发状态。
同理观察其他交换机的STP接口状态。
可以观察到,此时S2和S3接口都属于转发状态,S4的E 0/0/2接口为根端口,E 0/0/3接口处于阻塞状态。
现在将S4的E 0/0/2接口关闭,使E 0/0/3接口成为新的根端口。
请注意,在华为交换机上,当从MSTP模式切换到STP模式,运行STP协议的设备上端口支持的端口状态仍然保持和MSTP支持的端口状态一样, 仅包括Forwarding、Learning和Discarding。又由于华为交换机上默认的STP模式为MSTP,故本实验中,STP仅支持3个状态,S4 的E 0/0/3 接口会从Discarding状态,再经过Learning过渡状态,最终到Forwarding状态,只需经历一个Forward Delay的时间。
配置完成后,观察连通性测试结果。
可以观察到,此时丢失了9个数据包。这是因为根据上一步骤的配置结果,ForwardDelay时间为9s,即S4上该端口从Discarding状态经过Learmning状态,最终到Forwarding
状态需要一个Forwad Delay的时间间隔。
恢复S4的E0/0/2接口,并在根交换机R1上更改网络直径为默认值7。
配置完成后,查看S1上的STP信息。
可以观察到,Forward 时间已被自动修改为15s。
现在采用相同的方法,关闭S4上的E 0/0/2接口,测试丢包情况。并在配置完成后,观察连通性测试结果。
可以观察到,丟包共17个,即验证了端口状态迁移从Discarding状态到Forwardin状态经过了一个Forward Delay的15s时间间隔。
思考
交换机端口在发生状态转换时,都有哪些状态会经历- -一个Forward Delay?