lucklong  http://lucklong.blog.51cto.com/23691/354157   转过来备忘  
 
------------------------------------------------------
 
PortFast 加快终端主机连接入stp网络的收敛.
只适用于,在 交换机与主机( 电脑)相连的 端口, 不应该在交换机与交换机,路由器,hub互连的 网络设备的端口使用.
把一个port设置了portfast,就是让那个port不再使用STP的算法。
在STP中,port有5个状态:disable、blocking、listening、learning、forwarding。
只有forwarding状态,port才能发送用户数据。如果一个port一开始是没有接pc,一旦pc接上,就会经历blocking->listening->learing->forwarding,每个状态的变化要经历一段时间,这样总共会有3个阶段时间,缺省的配置要50秒钟。这样从pc接上网线,到能发送用户数据,需要等50秒的时间,但如果设置了portfast,那就不需要等待这50秒了。

portfast只能用在接入层,也就是说交换机的端口是接HOST的才能起用portfast,如果是接交换机的就一定不能启用,否则会造成新的环路.
起用portfast往往是因为一些应用的要求,cisco是建议将符合条件的port设置成portfast的.

PS:

将SWITCH的端口设置为spanning-tree portfast后,如果这个端口接到其他SWITCH或者HUB上就可能造成环路问题。加上spanning-tree bpduguard enable之后,当这个端口在收到BPDU包后就会进入errdisable状态,从而避免环路。
 
BPDU GUARD的功能是当这个端口收到任何的BPDU就马上设为Error-Disabled状态.
我们知道,当交换机STP功能启用的时候,默认所有端口都会参与STP,并发送和
接受BPDU. 当这个端口下如果有自回环的环路,那么它发出去的BPDU在小交换机上回环后就会被自己接收到, 这个时候BPDU GUARD就会把它立刻设为Error-Disabled状态,这个端口就相当于被 关闭了,不会转发任何数据,也就切断了环路,保护了整个网络.
 
Portfast和bpduguard配置:
switch(config)#interface range f0/1 - 5
switch(config-if-range)#spanning-tree portfast
switch(config-if-range)#spanning-tree bpduguard enable
 
 
 
BPDU Guard使具备PortFast特性的端口在接收到BPDU时进入err-disable状态来避免桥接环路,其可在全局或接口下进行配置(默认关闭),可使用errdisable recovery cause bpduguard命令开启端口状态的自动恢复。
不同于BPDU防护,BPDU Filter配置于全局/接口模式时,功能有所不同,当启用于PortFast端口模式时,交换机将不发送任何BPDU,并且把接收到的所有BPDU都丢弃;而启用于全局模式时,端口在接收到任何BPDU时,将丢弃PortFast状态和BPDU过滤特性,更改回正常的STP操作,BPDU Filter特性默认关闭。
当同时启用bpduguard与bpdufilter时,bpdufilter优先级较高,bpduguard将失效。
LOOP Guard主要用来避免阻塞端口错误地过渡到转发状态而产生桥接环路的情况;当交换机在启用loopguard特性的非指定端口上停止接收BPDU时,交换机将使得端口进入STP“不一致环路”(inconsistentports)阻塞状态,当不一致端口再次收到BPDU时,端口将根据BPDU自动过滤到STP状态。通过sh spanning-tree inconsistentports命令可以查看不一致端口状态。loopguard特性默认开启。
 
BPDU GUARD
的功能是当这个端口收到任何的
BPDU就马上设为Error-Disabled状态。我们知道,当交换机STP功能启用的时候,默认所有端口都会参与STP,并发送和接受BPDU,当BPDU GUARD开启后,在正常情况下,一个下联的端口是不会收到任何BPDU的,因为PC和非网管换机都不支持STP,所以不会收发BPDU。当这个端口下如果有自回环的环路,那么它发出去的BPDU在非网管换机上回环后就会被自己接收到,这个时候BPDU GUARD就会把它立刻设为Error-Disabled状态,这个端口就相当于被关闭了,不会转发任何数据,也就切断了环路,保护了整个网络。
BPDU Guard
特性可以全局启用也可以基于基于接口的启用,两种方法稍有不同.

当在启用了
Port Fast特性的端口收到了BPDU后,BPDU Guard将关闭该端口,使该端口处于err-disable状态,这时必须手动才能把此端口回复为正常状态。

配置BPDU Guard:
Switch(config)# spanning-tree portfast bpduguard default          /---
在启用了PortFast特性的端口上启用BPDUguard---/
Switch(config-if)# spanning-tree bpduguard enable                       /---
在没启用PortFast特性的情况下启用BPDUguard---/

BPDU Filtering

特性和
BPDU Guard特性非常类似.通过使用BPDU Filtering,将能够防止交换机在启用了Port Fast特性的端口上发送BPDU给主机。

如果全局配置了BPDU Filtering,当某个Port Fast端口接收到了BPDU,那么交换机将禁用Port FastBPDU Filtering特性,把端口更改回正常的STP状态.
如果在单独的Port Fast端口启用BPDU Filtering,此端口将不发送任何的BPDU并忽略所有接收到的BPDU.

注意,如果在连接到其他交换机的端口(不是连的主机的端口)上配置了BPDUFiltering,那么就有可能导致层2环路(Prevent from sending and receiving BPDU).另外,如果在与启用了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---/
ROOT Guard
Root Guard:防止新加入的交换机(有更低根网桥ID)影响一个已经稳定了(已经存在根网桥)的交换网络,阻止未经授权的交换机成为根网桥。
工作原理:当一个端口启动了此特性,当它收到了一个比根网桥优先值更优的BPDU包,则它会立即阻塞该端口,使之不能形成环路等情况。这个端口特性是动态的,当没有收到更优的包时,则此端口又会自己变成转发状态了。
ROOT GuardDP(designated port)指定端口上做,该端口就不会改变了,只会是DP了,这样可以防止新加入的交换机成为root,该端口就变成了永久的DP了,show spann inconsistentport),若新加入的交换机想成为root,则它的端口不能工作,直到这个新交换机委曲求全做RP为止。
Loop Guard
Loop Guard:防止一个阻断的端口由于链路不正常(不能双向通信等)接不到BPDU后变成转发,配了此项后,即使接不到BPDU也是阻断的loop-inconsistent blocking state(启用loop guard时自动关闭root guard);

Loop guard
RP接口或替代端口启用:
Switch(config-if)# spanning-tree guard loop

全局启用:
Switch(config)#spantree global-default loopguard enable
如果在一个启用了root guard的端口上启用loop guardloop guard将禁用root guard功能。
 
 
---------------------
errdisable recovery cause all
errdisable recovery interval 30

恢复端口