Spanning-Tree Feature
1. Port Fast
2. BPDU Guard
3. BPDU Filtering
4. UplinkFast
5. BackboneFast
6. EtherChannel Guard
7. Root Guard
8. Loop Guard
-------------------------------------------------------------------------------------------------------------------------------------
Portfast
生成树portfast能够使得被配置为第2层接入端口的接口立即进入转发状态,从而回避了监听状态和学习状态。
交换机启动后经listening-----learning------forward经历2个forward delay 至少30s后才能正常转发数据,对于连接服务器和主机的端口运行stp计算是不必要的,此类端口即使转发数据也不会一起环路,因此此类端口可以配置跳过stp计算,由blocking直接过度到forward。
Attention
1. 此类端口通常称为边缘端口,通过配置port fast功能可跳过stp的计算,直接过度到forward;
2. access 和trunk都可以配置port fast功能,若交换机连接交换机的端口上配置port fasr 则会制造环路;
3. 在配置了port fast功能的接口上接收到bpdu后,该接口会立即关闭port fast功能。
开启port fast功能
Switch(config-if)#spanning-tree portfast
Switch(config-if)#switchport mode host
全局模式下开启portfast特性
Switch(config)#spanning-tree portfast default
验证port fast
Switch#show spanning-tree interface f0/1 portfast
--------------------------------------------------------------------------------------------------------------------------------------
BPDU guard
在开启port fast功能的端口上会跳过stp的计算,从而直接过度到forwarding,当连接的是交换机时则会出现环路,bpdu guard功能可以使portfast端口在收到bpdu时立即shutdown或进入err-disable状态。可以设置交换机的超时时间,交换机之后自动重新启用接口,但交换机将重新使得接口进入“err-disable“状态。
Attention
1. 如果bpdu guard是在全局下开启的,则只对portfast端口有影响,当portfast端口收到bpdu后会shutdown接口,某些型号交换机会直接进入error-disable。
2. 如果bpdu guard是在接口下开启的,则对任何端口都有影响,无论是正常端口还是portfast端口。当端口收到bpdu后,会变成error-disable.
Configuration bpdu guard
全局下开启bpduguard----------------------------只对port fast端口有影响;
switch(config)#spanning-tree portfast bpduguard
在接口模式先开启bpduguard------------------------------对任何接口都生效;
switch(config-if)#spanning-tree bpduguard enable
生成树将全局性地向所有配置portfast特性的接口应用BPDU防护特性,但是只能以接口为基础来启用或禁用改特性。
--------------------------------------------------------------------------------------------------------------------------------------
BPDU filtering
bpdufiltering可以过滤掉在接口上发送或受到的bpdu,这就相当于关闭了接口上的stp,将会引起环路的可能。对于配置了portfast特性的端口,它们通常连接的是主机设备,主机设备不需要参与stp,通过使用BPDU过滤功能将能够防止向主机设备发送不必要的bpdu。
bpdu filtering二种配置:
接口模式开启:可以过滤掉任何收到和接受的bpdu;
全局模式开启:只能在开启portfast的接口上过滤bpdu,并且只能过滤掉发生的bpdu,不能过滤收到的bpdu;
Spanning-tree portfast bpdufilter default
验证bpdu过滤配置:showspanning-tree summary totals
如果在与启用BPDU过滤的相同接口上启用BPDU防护那么因为BPDU过滤优先级高于BPDU防护,所以bpdu防护将不起作用
Uplinkfast
如果存在一条或更多条冗余的第2层链路,那么uplinkfast能够在直接的链路故障后提供快速收敛。Uplinkfast以各个vlan为基础将接口定义为上行链路组;在任意时刻只能存在一个处于转发状态的接口,当链路发生故障时uplinkfast直接到转发状态,而无需经历监听和学习状态,切换过程5秒钟内完成。
当交换机检测到A-C的链路发生故障时,通过配置uplinkfast将解除阻塞交换机C上的堵塞端口,并且将其过渡到转发状态,而无需经历监听状态和学习状态,该切换过程在5s之内完成。
为了增强STP的扩展能力,uplinkfast特性也能抑制通常发往根网桥的TCN消息。交换机发送伪多播帧,它能够代理连接到根网桥的设备mac地址,进而便于上游交换机将mac地址表从发生故障的链路立即移动到新的端口,这种简单而有效的机制将能够更新发生故障的路径上转发条目,并且不会对其他条目产生影响。
配置uplinkfast
全局配置模式:switchC(config)#spanning-treeuplinkfast
uplinkfast特性能够将网桥优先级增加到49152,并且可以将交换机上所有接口的生成树开销增加3000使得交换机不可能成为根交换机;对于非默认网桥优先级和非默认端口开销的交换机,启用uplinkfast特性不能够增加网络优先级或端口开销
对于仅有有限数目活跃VLAN的配线间交换机,uplinkfast特性是最有用的特性之一,对于其他类型的应用,uplinkfast并不适用,主干层或分布层交换机不应当启用该特性。
--------------------------------------------------------------------------------------------------------------------------------------
Backbonefast
Backbonefast是对uplinkfast特性的一种补充,尽管uplinkfast能够对直接到分布层的链路上发生的错误进行快速的响应,但无助于主干核心中的间接故障,Backbonefast可以降低默认的收敛时间由默认的50s降低到30s。
当配置Backbonefast时要求网络中的每台交换机都启用Backbonefast。
次级BPDU:交换机从同时标识为根网桥和指定网桥的指定交换机中接收到的BPDU。当交换机接收到次级bpdu时,它将指明此交换机的一条非直连链路发生了故障,也就是指定交换机丢失了到达根交换机的连接。
如果接收到次级BPDU的交换机拥有到达根交换机的替代路径,那么它将使用替代路径来发送RLQ BPDU(根链路查询BPDU).RLQ通过中间交换机向根交换机进行传播,并且根交换机将最终进行响应。如果响应的根交换机就是最初的根交换机那么负责检测间接链路失效的交换机将认定根交换机任然处于活跃状态。对于接收到次级BPDU的端口,交换机将立即跳跃到监听状态,当发生主干链路失效时这种过程能够加快收敛的速度。
Eg:
如图所示中当链路AD发生故障时,对于交换机AD立即检测到链路处于down状态,为了能够是网络可以自我恢复交换机C上的阻塞端口将进入转发状态,因为链路AD没有 直接连接到交换机C在STP的正常规则之下,除非最大寿命设置的时间到期,否则交换机C将不会在链路CD中开始发送任何BPDU.
配置并验证Backbonefast:
全局配置命令:spanning-tree Backbonefast
验证Backbonefast:showspanning-tree Backbonefast
为了使得backbonetfast特性能够正确地工作,需要在网络中所有的交换机上都启用该特性,cisco交换机支持在其他第3方交换机中使用backbonetfast特性。
--------------------------------------------------------------------------------------------------------------------------------------
EtherChannel Guard
You can enable this feature by using the spanning-treeetherchannel guard misconfig global configuration command。
启用EC守护特性,该特性是把检测到的EC配置错误的端口设置为error-disable状态可选:
Switch(config)# #spanning-tree etherchannel guardmisconfig
-------------------------------------------------------------------------------------------------------------------------------------
Root guard
在网络发生异常的期间,根防护能够有助于避免第2层的环路。根防护能够牵制让接口成为指定端口,进而能够防止周围的交换机成为根交换机。如果网桥在启用根防护的端口上接受到上级bpdu那么端口将进入“不一致根“的stp状态,并且交换机不会从这个端口转发流量。
在如图示的网络中,当交换机D连接到交换机C的时候,他将参与stp,如果交换机D的优先级是0或者低于当前根网桥的优先级的数值,那么交换机D将成为VLAN的根网桥,若D作为根那么将导致连接两台核心交换机的吉比特以太网进入堵塞状态。
当前的设计是建议在A,B,C上启用根防护特性:
交换机A:所有接入端口;
交换机B:所有接入端口;
交换机C:所有接入端口;
在这种配置中,当交换机C接受到更好的BPDU的时候,它将把连接到交换机D的端口进行阻塞。
配置Root guard
交换机上执行接口级命令:switch(config-if)#spanning-treeguard root
-------------------------------------------------------------------------------------------------------------------------------------
避免转发环路和黑洞
在网络设计过程中,避免网络的转发环路和黑洞是必要的一部分,cisco catalyst交换机支持下列两种重要的特性:
1. 积极模式的UDLD:积极模式的UDLD能够检测并禁止单向链路。
2. 环路防护:通过避免桥接环路,环路防护的stp特性能够提高第2层网络的稳定性。
环路防护
环路防护能够对第2层转发环路提供额外的保护,当冗余拓扑中的stp阻塞端口错误地过渡到转发状态的时候,将会发生环路;当物理冗余拓扑中的某个端口停止接收STP BPDU的时候,stp将认为拓扑是无环路的,源自替代或备份端口的阻塞端口将过渡到指定端口,并将进入STP转发状态进而产生桥接环路;
通过使用环路保护,交换机将在过渡到stp转发状态之前执行额外的检查,交换机在启用环路防护特性的非指定端口上停止接收BPDU,那么交换机使得端口进入stp”不一致环路”的阻塞状态,而不是使得端口经历监听,学习和转发状态。
在所有非指定端口上启用环路防护特性,而不仅仅只是在阻塞端口上启用该特性。
默认情况下catalyst交换机禁用环路防护特性,需要使用下列接口级命令开启:
switch(config-if)#spanning-tree guard loop
全局配置命令:
switch(config-if)#spanning-tree loopguarddefault
Eg: