特性描述:
      STP可以构建一个无环、树形拓扑,当交换机链路端口UP起来后,STP会在那个端口重新计算,结果就是把该端口置为转发(forwarding)或闭塞(blocking)状态,这取决于端口在网络中的位置以及STP参数。这个计算以及状态转变的过程需要大概30到50秒的时间,在这个时间里,该端口上没有用户数据流过。某些用户应用可能会因此而超时。
       使用PortFast特性可以使端口在UP起来后立即置为转发状态。但是该端口还是会参与STP的过程,如果最终发现端口引起环路,那么不好意思了,最终还是会把该端口置为闭塞(blocking)状态。
       只要端口参与STP,某些设备就能夺取根桥功能从而影响现有STP拓扑。为了夺取根桥功能,设备会连接到端口并使用一个更低的桥优先级来运行STP。这是拒绝服务***(DoS)的一种简单形式。因为不断地引入和移除一个有更低桥优先级的STP设备,会使得STP不断重计算,导致网络不稳定甚至崩溃。
       STP PortFast BPDU guard特性的实施使得网络设计者可以保持现有拓扑的可预见性和可控性。配置了该特性的端口下的设备是不能够影响到STP拓扑的。如果该端口收到某设备发过来的BPDU包,BPDU guard操作会使该端口失效并置为 errdisable状态。此时console上会出现一个消息,如:
2009 May 22 15:13:32 %SPANTREE-2-RX_PORTFAST:Received BPDU on PortFast enable port. Disabling 2/1
2009 May 22 15:13:32 %PAGP-5-PORTFROMSTP:Port 2/1 left bridge port 2/1Consider this example:
 
 
       上图中,同一个VLAN中,A是根桥(优先级8192),B是备份根桥(16384),A与B之间是GE链路,组成网络的核心层。C是接入层交换机,在连接到D的端口上配置了PortFast特性,如果其他是缺省参数,那么C连接到B的那个端口被阻塞。D是PC机,不参与STP。箭头是BPDU方向。
 
 
       上图是演示设备D参与STP会发生些什么事情。如果设备D拥有更低的桥优先级,他们它将把根桥抢了过来,此时,核心层GE高速链路中的一个端口就会被闭塞掉!所有A与B间的流量都会经过教低速链路以及接入层交换机!如果链路带宽不足就有可能引起丢包,这是我们不希望看到的。
       但STP PortFast BPDU guard特性可以阻止这种情况,该特性在交换机C收到设备D发过来的BPDU包时,马上把该端口置为 errdisable状态使其失效。
 
配置
CatSwitch-IOS(config)# spanning-tree portfast bpduguard
 
一旦端口被置为 errdisable状态后,就一直保持该状态,除非手工激活它。你也可以通过配置超时特性,使该端口在计时器超时后自动恢复。
CatSwitch-IOS(config)# errdisable recovery cause bpduguard
CatSwitch-IOS(config)# errdisable recovery interval 400
注意:确实超时间隔为300秒,并且缺省下超时特性是不启用的。
 
CatSwitch-IOS# show spanning-tree summary totals
Root bridge for: none.
PortFast BPDU Guard is enabled
UplinkFast is disabled
BackboneFast is disabled
Spanning tree default pathcost method used is short
 
Name                 Blocking Listening Learning Forwarding STP Active
-------------------- -------- --------- -------- ---------- ----------
  1 VLAN                 0        0         0        1          1