一.STP增强特性:
传统的802.1d标准的STP,有一些缺陷,比如当一个
交换机检测到链路发生故障,再到网络重新收敛的时候,至少要等50秒的时间 (转发延迟+BPDU最大生存周期).当一个端工作站,比如PC或服务器,插到
交换机某个端口后,该端口同样会经历STP的一些状态,比如监听和学习.但 是端工作站不会引起层2环路,因此,对于接端工做站的端口,没必要经历这相对漫长的STP收敛时间.因此CISCO提出了Port Fast这一特性.启用该特性的端口无需经历转发延迟可以直接进入转发状态,减少收敛时间.该特性类似802.1w标准里的边缘端口(EP):
在启用这种特性的时候,必须保证该端口连接的是端工作站,而不是交换机或者集线器等网络设备,否则会引起环路问题.另外,如果在该端口启用了语音VLAN,那么Port Fast特性也将自动被启用.
配置方式如下:
Switch(config)# spanning-tree portfast default /---全局启用Port Fast特性---/
Switch(config-if)# spanning-tree portfast [trunk] /---基于接口的启用Port Fast特性---/
Switch(config-if)# spanning-tree portfast disable /---禁用Port Fast特性---/
注意,如果要在trunk端口启用该特性,先要确保该trunk端口不会引起环路.
另外一种减少STP收敛时间的技术是Uplink Fast特性:
当交换机A检测到链路L2出故障后,会立刻切换到L3,从而跳过STP的监听和学习阶段(转发延迟),节约近30秒的时间达到快速收敛.另外要注意的是, 如果配置了VLAN的优先级,那么不能启用该特性.因为该特性是对所有VLAN生效而不是针对某一个VLAN生效.一旦启用该特性后,交换机的网桥优先级 自动被设置为49152;如果你的链路开销小于3000,那么开销将自动增大为3000(如果大于3000则不会).该举动的意图是防止交换机(如上图里 的交换机A)成为根桥.
配置方式如下:
Switch(config)# spanning-tree uplinkfast [max-update-rate pps] /---全局启用Uplink Fast---/
可选参数值的范围是0-32000,默认每秒150个包,值越低收敛越慢.
如果照上图里,当链路L1出故障后,Uplink Fast特性就不能弥补该缺点.因此出现了Backbone Fast特性:
当交换机C通过下级BPDU信息(inferior BPDU)检测到L1出故障后,由于L1不是它到根桥的直连链路.因此,交换机C会发送根链路查询信息(RLQ).当收到RLQ的应答后,交换机C将自己 原本处于堵塞状态的端口立即设置为转发状态(把最大生存周期的20秒给老化掉),为B提供一条到根桥的替代路径.但要经过转发延迟,也就是大约30的时 间.一旦启用该特性,必须在所有的交换几上都使用.但如果此时新增加一个交换机进来,该交换机也会发送下级BPDU信息声称自己想成为根桥(野心够大 啊).不过其他交换机会忽略该下级BPDU,并且交换机B会告诉它A才是根桥:
配置方式:
Switch(config)# spanning-tree backbonefast /---全局启用Backbone Fast---/
二.STP环路保护机制:
BPDU Guard特性可以全局启用也可以基于基于接口的启用,两种方法稍有不同.当在启用了Port Fast特性的端口收到了BPDU后,BPDU Guard特性将关闭(err-disable)该端口(正常情况是启用了Port Fast特性的端口不可能收到BPDU).
配置方法:
Switch(config)# spanning-tree portfast bpduguard default /---在启用了Port Fast特性的端口上启用BPDU Guard---/
Switch(config-if)# spanning-tree bpduguard enable /---在不启用Port Fast特性的情况下启用BPDU Guard---/
而BPDU Filtering特性和BPDU Guard特性非常类似.通过使用BPDU Filtering,将能够防止交换机在启用了Port Fast特性的端口上发送BPDU给主机:
如果全局配置了BPDU Filtering,当某个端口接收到了BPDU,那么交换机将把端口更改回正常的STP状态,也就是它将禁用Port Fast和BPDU Filtering特性.注意,如果在连接到其他交换机的端口上配置了BPDU Filtering,那么就有可能导致层2环路.另外,如果在与启用了BPDU Filtering的相同端口上配置了BPDU Guard特性,所以BPDU Guard将不起作用,起作用的将是BPDU Filtering.
配置BPDU Filtering:
Switch(config)# spanning-tree portfast bpdufilter default /---在启用了Port Fast特性的端口上启用BPDU Filtering---/
Switch(config-if)# spanning-tree bpdufilter enable /---在不启用Port Fast特性的情况下启用BPDU Filtering---/
一般层2网络的SP可能会有多条达到客户网络的连接.为了防止客户交换机偶然成为根桥,可以在连接到客户交换机的端口上使用Root Guard特性来避免这一问题的发生.那个根保护的端口会强制成为指定端口(即不允许端口成为根端口),如果STP偶然选出客户交换机的某个端口做为根端 口(RP),那么Root Guard特性将把该端口设置为root-inconsistent状态(堵塞)来防止客户交换机成为根桥:
配置Root Guard:
Switch(config-if)# spanning-tree guard root /---启用Root Guard特性---/
注意,Root Guard和Loop Guard特性不可同时使用,也不要在启用了Uplink Fast特性的端口上启用该特性.该特性一旦配置后,对所有VLAN都生效.
另外,也可以使用Loop Guard技术替代端口(AP)或RP由于单向链路的故障问题成为指定端口(DP):
如上图,交换机A做为根桥,由于交换机B和C之间发生单向链路故障,C将不能从B那里接收到BPDU.如果没有启用该特性,那么交换机C在最大生存 周期(Max Age)计时器超时之后,交换机C上的堵塞端口将转换到监听状态,并最终会在30秒之后转换到转发状态.当交换机C的原先处于堵塞状态的端口进入到转发状 态的时候,交换机B上原先的DP还处于转发状态,而一个桥接网段上只能有一个DP,因此就产生了环路.如果启用了Loop Guard特性之后,当最大生存周期超时之后,交换机C上的堵塞端口将过渡到loop-inconsistent状态(堵塞),处于该状态的端口不能传递 任何流量.因此就不会产生层2环路.
配置Loop Guard:
Switch(config)# spanning-tree loopguard default /---启用Loop Guard特性---/
注意,Loop Guard和Root Guard特性不可同时使用.