STP_stp

STP算法总结
步骤一:选举跟网桥
选择网桥ID最小的
步骤二:选择根端口
1.选择端口到根网桥路径开销最小的
2.选择发送方网桥ID最小的
3.选择发送方端口ID最小的
步骤三:选择指定端口
1.选择网桥到根网桥路径开销最小的
2.选择发送方网桥ID最小的
3.选择发送方端口ID最小的
步骤四:阻塞其它端口 形成无环拓扑

从图中可以看出,STP的拓扑变更后,收敛速度很慢(30-50秒),30秒到50秒的时间对于要求实施响应的业务数据(VOIP、视频会议、数据库交互业务)是无法忍受的,所以STP定义了一些加快收敛的机制。
加快STP收敛的方法:
调整STP时间参数
使用CISCO的STP增强特性
进行协议的升级,使用RSTP或MSTP
调整STP时间参数:
switch(config)#spaning-tree VLAN # ( hello-time | forward-delay | max age )  # 
STP_stp_02
CISCO的STP增强特性
portfast特性
用来加快交换机上连接终端设备的边界端口(access)收敛速度的一种STP特性。
从理论上可以将STP的收敛时间变为0,即直接从disabled状态进入到forwarding状态。
portfast特性启用后并没有禁止STP,如果该端口下接STP交换机则仍然会执行正常的STP选举收敛。
portfast端口的状态变化不会触发TCNBPDU
配置
全局配置模式下:  spanning-tree portfast default
接口模式下:  spanning-tree portfast
plinkfast特性
加快接入层交换机上联主备链路切换时间的一种快速收敛特性。
uplinkfast的注意事项:
只在接入层交换机上部署,该接入层交换机上有且只有两条上行链路。
只针对接入层交换机的上行链路故障有用。影响的是交换机上的所有VLAN。
网桥优先级和端口开销会增加,网格优先级变为49152 ,端口开销会增加3000 
全局模式:spanning-tree uplinkfast
Backbonefast特性
加快间接链路故障STP收敛的一种特性。必须部署在STP网络中的所有交换机上
RLQ:根链路查询报文,cisco私有。由收到次佳配置BPDU的交换机产生,从根端口向根网桥发送,以探知到根的链路或根本身是否稳定。
STP_stp_03
STP的保护机制
BPDU Guard
是用来防止因portfast端口而导致交换网络中出现循环的一种STP保护特性。配置了BPDU guard的portfast端口在收到BPDU时便会进入errdisable状态。
bpduguard的全局开启与接口开启是与portfast的全局开启和接口开启对应的。
SW(config)#spanning-tree portfast bpduguard default (全局开启)
SW(config-if)#spanning-tree bpduguard enable (接口开启)
当STP BPDU guard禁用了端口,该端口会始终处于errdisable状态。恢复到正常端口状态有以下两种方式:
手动通过shutdown/no shutdown重新激活;
通过设置时间周期自动恢复;
Switch(config)#errdisable recovery cause bpduguard
Switch(config)#errdisable recovery interval 400
BPDU Filter
其特性非常类似于BPDU Guard,也是定义于portfast端口上,但它所执行的动作比BPDP Guard要轻一些,使用该机制的端口不会发送配置BPDU。
而且能完全保证新增的交换机既不影响原有网络的同时又能与网络中的其他主机正常通信。
   SW(config)#spanning-tree portfast bpdufilter default(全局开启)
   //porstfast端口不发送配置BPDU,收到BPDU后,转入正常STP收敛
   SW(config-if)#spanning-tree bpdufilter enable (接口开启)
ROOT Guard
根保护确保启用了根保护的端口成为指定端口,根保护是基于每端口配置的,并且不允许该端口成为一个STP根端口。
设置了根保护的端口如果收到了一个优于原BPDU的新的BPDU,它将把本端口设为root-inconsIistent状态,相当于监听状态。该状态下不会收发数据,不会成为根端口,只会监听BPDU。当停止接受错误的最优BPDU时,该端口经历生成树过程后自动恢复。
接口模式下:spanning-tree root guard
UDLD单向链路检测 
作用:
检测一对光纤链路收发是否存在故障,如果存在单向链路故障容易导致环路发生
UDLD的工作原理:
周期性发送UDLD二层帧(UDLD hello包),对端会有UDLD的回应,说明链路正常
若三个UDLD hello周期没收到对端UDLD的回应,则认为链路出现单向故障。
全局或光纤接口下单独启用:udld { aggressive | enable | disable }
Aggressive 模式:端口进入到errdisable状态下就不可用了
Enable一般模式:端口进入到undetermined状态并产生syslog,端口仍然可用
LOOP Detection
默认启用,通过自动检测并判断本设备下游是不是存在环路,如果存在环路,则该接口不可用