路防护特性能够避免由于软硬件缺陷所导致的网络设备故障。
6 .1 802.1D生成树协议的增强
为了增强STP的操作,cisco开发了几种新特性,其中包括:
- PorFast;
- UplinkFast
- BackboneFast
上述每一种特性都能够增强802.1D的收敛速度。
6. 1. 1
PortFast
PortFast:能够使得被配置为第2层接入端口的接口立即进入转发状态,而回避了监听和学习的状态。
(阻塞--监听--学习---转发---禁用)
配置PortFast特性:
接口命令下,将可以启用或禁用PortFast
:
SW(conifg-if)# [no] spanning-tree
portfast
例如:在基于cisco IOS 软件的catalyst
交换机上配置和验证PortFast特性:
SW# configure
terminal
SW(conifg)# interface fastethernet
3/27
SW(config-if)# spanning-tree
portfast
SW#show spanning-tree interface f3/27
portfast
如果本网桥是一台接入层交换机,我们可以全局地启用PortFast特性。需要记住的是,我们应当
在连接到分布层交换机的上行链路端口上明确地禁用PortFast特性(以免造成环路)。
通过在全局配置模式下使用下列命令,将可以全局性的启用PortFast特性:
SW(conifg)# spanning-tree portfast
default
BPDU防护特性:
如果启用PORTFAST特性的端口接收到BPDU,那么BPDU防护使得端口进入“err-disable”状态。“err-disable”状态端口状态等效于禁用状态,并且能够防止从端口进出数据,这种状态将一直持续到“err-disable”状态配置超时或手工干预。通过在所有配置Portfast特性的端口上启用BPDU防护特性,将可以避免在启用PortFast
的端口上交换设备的意外连接所导致的网络中断。
BPDU防护特性只对启用了portfast的端口有用
==============================================================================================
PortFast(快速端口):
用于access
端口,能绕过监听和学习状态直接进入转发状态
节省30S
端口下用spanning-tree portfast
(cisco
专有){disable|truck
}
由于是接入端口,正常情况下是不会接受到BPDU 的,如果接受到了BPDU,STP
就要把这个端口转到阻塞状态,
全局命令
spanning-tree portfast
bpduguard,当收到BPDU,STP
把这个端口关闭掉,更好的保护端口,
spanning-tree portfast bpdufilter
default,default是所有接口的意思,则当收到BPDU
时,STP
把该端口变为普通端口,不再是portfast
端口,
用show spanning-tree summay totals
查看
UplinkFast(快速上行链路):
在有冗余的链路中使用,当启用的那条链路断掉,另一条备份链路绕过监听和学习状态直接进入转发状态
节省30S
。如果原来的交换机恢复连接,交换机在等待2倍转发延迟时间再加上5s后才将该端口转入转发状态。这使得邻接端口有时间经过侦听和学习状态转入转发状态。
全局下用spanning-tree uplinkfast
(cisco
专有)
BackboneFast(快速骨干):
在一个STP
实例的整个网路交换机上使用,当一个交换机从被阻塞的端口收到一个劣等BPDU
时,它查询根交换机后发现网络改变,就把原来那个阻塞端口马上转到监听状态,而不用等待Max
Age 的时间
节省20S
在全局下用spanning-tree backbonefast
(cisco
专有)
Root
guard:
(config-if)#spanning-tree guard root
启用根防护,端口只能转发BPDU而不能接收BPDU,禁止端口成为根端口,当接收上级BPDU时该端口进入阻断状态。用于防止新加入具有更小优先级交换机成为根桥,在连接新加入的交换机的交换机端口上用spanning-tree
guard root
保护原有的根交换机,把这个端口自动阻塞,用show
spanning-tree inconsistentports
查看因为根保护而被阻塞的端口
BPDU
guard:
Switch(config)#
spanning-tree portfast bpduguard default
/---在启用了PortFast特性的端口上启用BPDUguard---/
Switch(config-if)# spanning-tree bpduguard
enable
/---在没启用PortFast特性的情况下启用BPDUguard---/
全局命令
spanning-tree portfast
bpduguard,当收到BPDU,STP
把这个端口关闭掉,更好的保护端口,
spanning-tree portfast bpdufilter
default,default是所有接口的意思,则当收到BPDU
时,STP
把该端口变为普通端口,不再是portfast
端口,
(config)#spanning-tree portfast{ bpduguard |
bpdufilter }default
端口上启用了PortFast将自动启用BPDU
防护,启用后收到BPDU端口将进入errdisable状态被关闭,所以上行链路端口不应启用
接口下:spanning-tree bpduguard [enable | disable]
spanning-tree bpdufilter [enable | disable]
接口下不收发BPDU可产生环路
所有这种既能在全局模式下配置又能在接口模式下配置的,都是接口配置可以覆盖全局配置
==============================================================================================
例:举例说明连接主机的接口配置
SW# configure terminal
SW(config)# interface Fastethernet
3/9
SW(config-if)# switchport host
SW(config-if)# end
6. 1 .2
Uplink Fast (上行链路组)
当交换机A监测到根端口的当前活跃链路2发生链接故障,那么Uplink将解除阻塞交换机A上的阻塞端口,将其过渡到转发状态,而无需经历监听状态和学习状态,该切换过程将在
5S内完成。
配置并验证 UPLinkFast:
通过使用下列全局配置命令,将可以启用UPLinkFast 特性:
# spanning-tree uplinkfast [max-update-rate] //max-update-rate
数值代表每秒所发送的多播数据包的数目,默认的是每秒150个数据包。
例如:在基于cisco IOS软件的catalyst
交换机上配置UpLinkfast特性==>>
SW#configure
terminal
SW(config)# spanning-tree
uplinkfast
SW(config)# spanning-tree uplinkfast
max-update-rate 400
SW(config)# end
主干层或分布层交换机不应当启用该特性,一般应用在接入层。
6. 1. 3 BackboneFast
BackboneFast特性是对UPLinkFast特性的一种补充。
尽管UPLINKFast能够对
直连到分布交换机的链路上发生的错误进行快速地响应,但它无助于主干核心中的
间接故障,
注意:当配置BackboneFast特性的时候,要求在网络中的每台交换机上启用BackboneFast特性。某些老款的ciaco
catalyst交换机可能不支持BaF。
次级BPDU是指定交换机所发送的。
配置并验证BcakboneFast:
通过使用下列全局配置命令,将可以启用或禁用BackBoneFast特性=====》
[no]spanning-tree Backbonefast
为了使得Backbonefast特性能够正确的工作,我们需要在网络中
所有的交换机上都启用该特性。
例如:在基于cisco IOS软件的catalyst交换机上配置和验证Backbonefast特性:
SW# configure termianl
SW(config)# spanning-tree backbonefast
SW(config)# end
SW# show spanning-tree backbonefast
6.2 提高生成树的弹性
STP不提供检测机制和平衡机制来确保多层交换网络的高可用性。
cisco提出下列特性来帮助精确调整和增加STP的弹性:
-
BPDU防护:能够防止交换机意外的连接到启用Portfast特性的端口。将交换机连接到调用Portfast特性的端口,可能导致2层环路。
- BPDU过滤:能够限制交换机不向接入端口发送不必要的BPDU
- 根防护:能够防止接入端口上的交换机成为根交换机
6.2.1 BPDU防护
如果接口启用了STP
PortFast特性,那么当该接口接收到BPDU的时候,BPDU防护能够使进入‘err-disable’状态,为避免桥接环路,BPDU防护作为一种预防步骤来禁用接口。
对于能够接收BPDU且配置了Portfast特性的接口,生成树BPDU防护能够将其关闭,而不是使得接口进入生成树阻塞状态。在有效的配置中,对于配置了Portfast特性的接口,它不应当接收BPDU。
注释:生成树将全局性的向所有配置PortFast特性的接口应用BPDU防护特性,但是
只能以接口模式为基础来启用或禁用该特性。
如果希望在基于cisco IOS软件的catalyst交换机上启用或禁用BPDU防护,那么就需要使用下列全局命令:
SW(confg)# [no] spanning-tree
portfast bpduguard
例子:在基于cisco IOS软件的catalyst交换机上配置和验证BPDU防护的特性===》》
多种情况可能会导致STP故障,例如:连接交换机的接口双工不匹配、单向链路故障、帧破坏、Portfast配置错误、资源错误、STP参数调整不当、软件缺陷和硬件故障等。
在进行STP排错的时候,应当首先“认清网络”,其中需要了解备份和冗余连接,并且能够快速清除连接。
l
桥接网络的拓扑
l
根网桥的位置
l
阻塞端口和冗余链路的位置
配置命令:
Debug spanning-tree
events----------------------在交换机上启用STP相关事件调试
Show processes
cup--------------------------------显示cpu处理器的资源利用信息
Show spanning-tree
backbonefast---------------显示生成树BackboneFast的状态和统计信息
Show spanning-tree
uplinkfast-------------------显示生成树UplinkFast的状态和统计信息
(config-if)#spanning-tree guard
loop------------在指定接口上配置环路防护特性
(Config-if)#spanning-tree guard
root------------在指定接口上配置根防护特性
(Config-if)#spanning-tree
portfast---------------在指定接口上配置环路防护特性
(Config)# spanning-tree
portfast budufilter default—在所有启用portfast特性的接口上配置STP BPDU过滤
(config-if)#spanning-tree portfast
bpduguard----在指定端口上配置环路防护特性
注:因为主机不需要参与STP,所以它将丢弃所接收到的BPDU。基于上述原因,通过使用BPDU过滤功能将能够防止向主机设备发送不必要的BPDU。如果全局性的配置了BPDU过滤的功能,端口在各自接口接收到任何BPDU时,交换机都将把接口更改回正常STP操作。例如:对于启用PortFast特性的接口,如果它接收到BPDU,那么它将丢弃PortFast状态和BPDU过滤特性。在这种情况下,交换机将禁用各接口的PortFast
BPDU过滤特性,STP将继续从该端口向所连接的设备发送BPDU。可能会导致桥接环路,BPDU过滤不是一种推荐配置
BPDU防护
:能够防止交换设备意外地连接到启用PortFast特性的端口。如果将交换机连接到启用PortFast特性的端口上,那么就可能导致第2层环路或拓扑变更。生成树将全局性的向所有配置PortFast特性的接口应用BPDU防护特性,但是只能以接口为基础来启用或禁用该特性
如果接口启用了STP
PortFast特性,那么当该接口接收到BPDU的时候,BPDU防护能够使其进入“err-disable”状态,为避免桥接环路,BPDU防护作为一种预防性步骤来禁用接口
BPDU过滤:
能够限制交换机不向接入端口发送不必要的BPDU
通过使用BPDU过滤功能,将能够防止交换机在启用PortFast特性的接口上发送BPDU。如果在启用BPDU过滤的相同接口上启用
BPDU防护,那么因为BPDU过滤的优先级高于BPDU防护,所以BPDU防护将不起作用。
Root防护
:能够防止接入端口上的交换机成为根交换机,当端口启用根防护特性的时候,交换机将不允许端口成为STP根端口。
在所有的接入端口启用根防护,进而不会通过这些端口建立根网桥。
交换机将让启用根防护特性的端口强制成为指定端口
----------------------------------------------------------------------------------------------------------------------
portfast和bpduguard应用
----------------------------------------------------------------------------------------------------------------------
6.3
避免转发环路和黑洞
在网络的设计中,避免网络的转发环路和黑洞是必要的一部分,为了解决这种情况,cisco
catalyst交换机支持下列两种重要的特性:
-
积极模式的UDLD---------积极模式的UDLD能够检测并禁用单向链路,第7章将会详细介绍UDLD相关内容(单向链路检测)
- 环路防护------通过避免桥接环路,环路防护的STP特性能够提高第2层网络的稳定性。
通过使用环路防护的特性,交换机将在过渡到STP转发状态之前执行额外的检查。如果交换机在启用环路防护特性的非指定端口上停止接收
BPDU。那么交换机将使得端口进入STP' 不一致环路 '的阻塞状态,而不是使得端口经历监听、学习和转发状态。
尽管这种特性能够以VLAN为基础而阻塞不一致的端口,但环路防护特性能够以每个端口为基础而进行配置。
在EtherChannel接口的情况下,如果没有接收到某个特定VLAN的BPDU,那么对于属于通道组的所有端口,通道状态将进入“不一致”状态
(从STP的观点来看,catalyst交换机将EtherChannel当作一个逻辑端口)
在
所有非指定端口上启用环路防护特性,而不仅仅只在阻塞端口启用该特性,更准确的说,对于活跃拓扑的所有可能组合,都应当在根端口
和替代端口上启用环路防护。默认情况下,catalyst交换机禁用环路防护特性。如果希望在基于cisco
IOS软件的catalyst交换机上启用环路防
护特性,那么就需要使用下列接口级的配置命令:
(config-if)# spanning-tree guard loop
注释:环路防护和根防护不能共存于相同的端口。基于以上原因,如果启用环路防护特性,那么就将以每端口为基础而禁用先前所配置的根
防护特性
6.4 STP 排错
桥接环路是STP故障的常见特征,STP排错包括识别和防止桥接环路。
STP的主要功能是避免桥接网络中冗余链路所产生的环路,STP工作在OSI参考模型的第2层,当出现某些情况的时候(软硬件故障),STP将
发生故障,STP排错通常都是非常有难度的。
6.4.1 STP的潜在故障
- 双工不匹配
- 单向链路失效
- 帧破坏
- 资源错误
- PortFast配置错误
- STP直径参数调整不恰当
一、双工不匹配
在点到点链路中,双工不匹配是一种常见的配置错误。
例如:链路一侧采用手工配置全双工,而别一侧却使用自动协商,就发生双工不匹配
全双工一方不再从半双工一方接收BPDU,那么它就将认为不再存在根网桥。
半双工一方进行载波监听、冲突检测及退后算法。
二、单向链路失效
单向链路失效是产生桥接环路的一种非常常见的原因。如果没有检测到光纤链路失效或收发器故障,通常都会导致单向链路。
UDLD及A-UDLD能够检测错误的配线或单向链路,并且能够自动地使得受到影响的端口进入“err-disable”状态。更多信息请见第7章。
三、帧破坏
帧破坏是导致STP故障的另一种原因,如果接口正在经受高速率的物理错误,其结果就可能是丢弃BPDU,这瘵导致处于阻塞状态的接口进入
转发状态。帧破坏是诸多原因(例如:双工不匹配,劣质电缆或不合格的电缆长度)的结果。
四、资源不足
如果出于某种原因而过度使用了网桥的CPU,那么就可能导致CPU没有足够的资源来发出BPDU。通常情况下,STP不是一种处理器密集型的
应用,并且STP的优先级高于其他进程。
五、PortFast配置错误
如果端口上启用了PortFast特性,端口将绕过STP的监听和学习状态,并将直接过渡到转发状态。
六、STP直径参数调整不恰当
如果最大寿命计时器或转发延迟计时器的数值比较小,那么就可能导致不稳定的STP拓扑。如果由于计时器时间短而丢失BPDU,那么就可能
导致瞬间的STP环路。对于STP的默认最大寿命计时器,它们之间的距离不能超过7台网桥。较大的STP直径能够影响收敛的时间。
6.4.2 STP的排错方法:
一、认清网络:用户必须理解网络的下列基本特征:
- 桥接网络的拓扑
- 根网桥的位置
- 阻塞端口和冗余链路的位置
二、确定桥接环路
桥接环路会导致其他协议失去控制,例如:HSRP看到了自己数据数据包,那么HSRP就可能抱怨重复的IP地址,在发生环路期间,另外一种常见
的消息就是接口之间的MAC地址不停的翻动。
三、恢复连接
恢复连接包括下列两种行为:
-
打破环路-------就是手工禁用那些提供网络冗余的端口,在可能的情况下,我们应当首先禁用那些处于阻塞状态的端口。在每禁用一个端口的时候,我们都应当检查是否已经恢复网络连接。
-
记录事件------如果不可能确定故障源,或者故障是瞬间现象,那么就可以在经历失效的交换机上启用日志功能,并且增加STP事件的日志级别
注释:当对跨越多台交换机的IP子网进行排错的时候,检查系统日志服务器是一种非常有效的方法。
# loggiing buffered
# show logging(日志的相关设置)
四、检查端口状态:
应当首
先调查阻塞端口的状态,然后再调查其他端口,我们应当遵守下列原则:
- 阻塞端口:检查并确认交换机是否定期地在根端口和阻塞端口上接收BPDU。# show spanning-tree Vlan
vlan-id detail
- 双工不匹配:需要在点对点链路两侧分别进行检查。 # show interface
- 端口利用率:如果端口发生过载的情况,那么它也许不能发送关键的BPDU,并且还可能会发生桥接环路,# show
interface
- 帧破坏:如果希望获得帧破坏的统计信息,请注意观察 # show interface 命令输出结果中的输入错误(input
error)字段。
五、查找资源错误
对于运行STP的交换机,CPU高利用率可能会导致网络不稳定。通过使用# show process
CPU
命令,将可以检查CPU利用率是否接近100%
与低优先级流量相比较,cisco catalyst交换机为控制流量(例如
BPDU)分配更高的优先级,如果交换机仅是在处理低优先级的流量,那么
交换机将处于稳定状态。
六、禁用不必要的特性
通过禁用尽可能多的特性,将可以降低排错的复杂度,例如:EtherChannel就是一种将几个不同链路捆绑到单个物理端口的特性。在排错的
时候禁用该特性,那么有助于排错。
6.8 配置练习:
识别第2层环路:在对第2层环路或STP问题进行排错的时候,应当
首先检查网络中核心交换机和分布层交换机的系统日志。