Portfast
一个交换机接口在默认情况下,在接口启动后,由于STP的计算,该接口会从initiallization--blocking--listening--learning--forwarding,其中listening--learning状态要经过两个forward delay时间,也就是说一个接口最少在30S后才可以进入正常转发数据的状态;
对于一个连接终端PC或者服务器的交换机接口来说,是可以不需要进行STP计算的,此类端口称为边缘端口,在cisco交换机上,可以通过配置portfast功能,使这类端口不需要进行STP计算从而直接进入forwarding状态;access和trunk接口都可以配置Portfast功能;
当一个开启了Portfast功能的接口再收到BPDU时,交换机会认为对端连接的是交换机而不是终端PC或者服务器,所以默认情况下当收到BPDU时去立刻关闭该接口的portfast功能
可以通过命令spanning-tree portfast在接口下开启portfast功能;也可以通过命令spanning-tree portfast default下在全局模式下开启Portfast功能
BPDU Guard
BPDU Guard的功能是当接口收到BPDU时,立刻把该接口变为shutdown或者err-disabled状态;BDPU Guard既可以在接口模式下配置,也可以在全局模式下配置
BPDU Guard配置在全局模式时,只对portfast接口有效,当portfast接口收到BPDU时,会shutdown此接口;有的类型的交换机会将接口err-disabled
BPDU Guard配置在接口模式时,无论接口是Portfast还是正常接口,当收到BPDU时,会err-disabled此接口。
可以通过命令spanning-tree portfast bpduguard default在全局模式下开启BPDU GUARD功能;也可以通过命令spanning-tree bpduguard enable在接口模式下开启BPDU GUARD
BPDU Filtering
BPDU Filtering可以过滤在接口发送或者收到BPDU,如果开启了BPDU Filtering功能,则相当于关闭了STP功能;
BPDU Filtering可以配置在全局模式下,也可以配置在接口模式下;
BPDU Filtering配置在全局模式下时,可以过滤掉portfast接口的BPDU,而且只能过滤掉发出的BPDU,不能过滤收到的BPDU。如果一个开启了Portfast和开启了BPDU filtering功能的接口还可以收到BPDU,那么BPDU Filtering功能会失效并会造成portfast功能失效
BPDU Filtering配置在接口模式下时,可以过滤掉任何接口发送和收到的BPDU
可以通过命令spanning-tree portfast bpdufilter default在全局模式下开启BPDU Filtering功能;也可以通过命令spanning-tree bpdufilter enable在接口模式下开启BPDU Filtering功能
下面通过以下的拓扑分别解释uplinkfast backbonefast的功能
uplinkfast
当一个存在block端口的交换机上的主要通信链路down掉时,在启用block端口时需要经过50S(2个forward delay时间+max-age时间)的时间,即使运行在RSTP模式下也需要6S的时间;uplinkfast功能可以在主要链路down掉时,在1S-5S的时间内启用block端口
uplinkfast只适合在非根交换机带有block端口的交换机上才可以有效地起到作用;并且uplinkfast功能只能通过命令spanning-tree uplinkfast在全局模式下开启
Backbonefast
在上图拓扑中,当SW2的F0/23口down掉后,可以通过uplinkfast功能立刻启用block接口来恢复通信;但是当SW3的F0/19接口down掉后,即使是开启了uplinkfast功能的SW2也不可能立刻检测到远程交换机有链路down掉,因为uplinkfast只能立刻检测到本地交换机链路down掉的情况,要让所有的交换机都知道远端交换机有链路down掉,从而打开一条新的链路,这就是backbonefast的功能。
在正常的网络中,只有根交换机才可以发出BPDU,称为configuration BPDU;当网络中出现比根交换机发出的BPDU更高优先级的BPDU时,该BPDU称为inferior BPDU,默认情况下,交换机收到inferior BPDU是将其丢弃的。
一个开启了backbonefast功能的交换机,当正在使用的链路中断了,又没有block端口备用的时候(SW3),它会向网络中发送一个inferior BPDU,用来宣告自己的链路中断;当其他非根交换机(SW2)在block端口收到inferior BPDU时,会将block端口转换到转发状态,并向根交换机发送一个root link query信息,开启了backbonefast的根交换机会回应这个消息,此时SW2会立刻启用block端口恢复网络的正常通信。
backbonefast功能要在所有的交换机上开启,并且不能针对单独的VLAN开启,也不支持MSTP功能。
可以通过命令spanning-tree backbonefast在全局模式下开启backbonefast功能。
Root Guard
通过以下拓扑来解释root guard的功能
在上述拓扑图中,当SW4作为新加入网络的交换机,如果SW4拥有比根交换机更高的优先级的话,会抢夺根交换机的位置;如果SW4抢夺根交换机成功,那么SW2的F0/19端口会变为根端口,会对网络正常运行造成一定的影响,因为要重新进行STP的选举。
可以通过在SW2的F0/19接口上开启root guard功能,如果在此接口上连接的新交换机企图抢夺根交换机的位置时,那么此接口会进行inconsistend(blocked)状态,从而阻止新交换机抢夺根交换机的位置。
在运行MSTP时,开启了root guard的接口会强制成为指定端口。
不能在Portfast端口上开启root guard 功能;在可能连接新交换机的接口上开启root gurard功能。
开启root guard功能的端口属于哪个VLAN,root guard就对哪个VLAN生效。
可以通过命令spanning-tree guard root在接口模式下开启root guard功能。
Loop Guard
通过以下拓扑来解释loop guard的功能
在上图中的网络环境中,如果交换机所有端口收发数据的功能正常,则交换机就能够靠收发BPDU来检测出网络中的多余链路,就会将其Block,从而避免环路。但是当网络中出现单向链路故障时,也就是某个端口只能收数据而不能发数据,或者只能发数据而不能收数据,这时网络会出现意想不到的麻烦。如上图,由于SW2的端口F0/21出现单向链路故障,导致从F0/21发出去的数据包能被SW3收到,而SW3发的数据包却不能被SW2收到,此时造成的结果是,SW3认为网络是正常的,又由于SW3拥有更高优先级的Bridge-ID,所以SW3上F0/19为根端口,F0/21为指定端口,SW3上所有端口都是转发状态,而没有Blocking的端口。但是由于SW2不能收到SW3发来的数据包,也就不能从SW3收到BPDU,最终SW2只能从F0/23收到数据包,所以SW2认为网络是无环的,因此做出了一个错误的决定,就是在STP计算结束后,认为网络无环,而将原本应该被Block的端口F0/21变为指定端口,造成SW上F0/23和F0/21同时为转发状态。这样会造成网络环路。
单向链路故障不仅会将网络中blocking端口错误地认为是指定端口,而且还会造成根端口变成指定端口。
可以在端口上开启loop guard功能,这样在端口收不到BPDU时,会把端口置于loop-consistent状态,相当于blocking状态
loop guard需要在非指定端口中开启,也就是根端口和BLOCK端口
PortFast的接口不能开启Loop Guard。
Root guard和Loop Guard不能同时开。
Root guard支持PVST+,,rapid PVST+, MSTP。
可以通过命令spanning-tree guard loop在接口模式下开启loop guard功能。