STP(Spanning Tree Protocol) 生成树协议,由IEEE定义
作用:防止二层环路
思科:默认开启 H3C:默认关闭
关于生成树的协议的几个标准:
802.1D 标准的生成树 STP
802.1W 快速生成树 RSTP
802.1S 多实例生成树 MSTP
Cisco私有的:
PVST+ 每个vlan拥有一课单独的生成树,这么解释的原因是之前的802.1D是所有vlan共享一棵生成树
PVRST+ 对rstp的增强版
STP的选举:
1,选根桥(每个stp实例中有一个根桥)
桥ID=优先级(默认32768)+MAC地址(当优先级相同时,选择最小mac地址)
2,选根端口(每个交换机有一个根端口)
每一个交换机上到根桥最近的接口
A.比较到根的开销
B.比较发送者的桥ID(上级交换机)
C.比较发送者接口的优先级(默认128)
D.比较发送者的端口ID(上级交换机)
3,指定端口(每个链路有一个指定端口)
每一条链路上到根最近的接口
(根交换机的所有接口都是指定端口)
A.比较到根的开销
B.比较自己的桥ID
C.比较两个接口的优先级
D.比较两个接口的端口ID
4,剩下的就是非指定端口,也叫阻塞端口
附:链路开销表
STP的四种状态
阻塞(blocking): 不接收也不转发帧,接收但不发送BPDU,不学习MAC地址(20s)
监听(listening): 不接收也不转发帧,接收并发送BPDU,不学习MAC地址(15s)
学习(learning): 不接收也不转发帧,接收并发送BPDU,学习MAC地址(15s)
转发(forwarding):接收并转发帧,接收并且发送BPDU,学习MAC地址
RSTP的三种状态
关闭(disable): 不接收也不转发帧,接收但不发送BPDU,不学习MAC地址
学习(learning): 不接收也不转发帧,接收并发送BPDU,学习MAC地址
转发(forwarding):接收并转发帧,接收并且发送BPDU,学习MAC地址
STP的高级特性
1,PortFast:应用在接入层端口
特点:
A:防止下面接入网络设备
B:不参与stp选举,直接进入Forwarding状态,加快收敛
C:防止DHCP分配地址超时
D:一般和BpduGuard一起使用
全局配置命令:
Switch(config)# spanning-tree portfast default
在所有access接口上激活portfast
接口配置命令:
Switch(config-if)# spanning-tree portfast
在该接口上激活portfast
还有一条宏命令,接口下配置
Switch(config-if)# spanning-tree host
相当于把端口置于access模式,并开启portfast
2,Uplink Fast:应用在trunk端口
特点:
A:在活动链路故障时快速进行端口转换
B:配置之前,交换机的优先级需要是默认的,此命令会加大优先级使之永远不会最优
C:手工更改过优先级的,则uplinkfast不会改变此优先级
全局配置命令:
Switch(config)# spanning-tree uplinkfast
3,Backbone Fast:UplinkFast的补充
特点:
A:能检测到间接的链路故障
B:大大的缩短stp的收敛时间
全局配置命令:
Switch(config)# spanning-tree backbonefast
4,BpduGuard:(BPDU防护)
特点:配置为该模式的端口将不能接收BPDU包 ,一旦收到端口
将变为err-disable状态,配置在接入层,防止接入非法
的交换机,从而抢根,一般和portfast一起用
接口配置命令:
spanning-tree BpduGuard enable
全局配置命令:
spanning-tree portfast BpduGuard default
在所有启用portfast的接口上启用BPDU防护
5,BpduFilter:(BPDU过滤)
特点:防止交换机在启用了Portfast特性的接口上接收和发送BPDU
接口配置命令:
spanning-tree BpduFilter enable
接口将不会发送BPDU,也忽略接收到的BPDU
全局配置命令:
spanning-tree portfast BpduFilter default
启用后,在链路up的瞬间会发送BPDU,此后不再发送任何BPDU
启用后,在收到BPDU后立即丢失portfast以及BpduFilter特性,
成为一个普通的spanning-tree接口
6,Root Guard(跟防护)
特点:启用该命令的端口,一旦收到比当前跟桥更优的BPDU包,
将会把这个接口STP状态设置为BKN,直到不在收到给类型的BPDU包为止,一般配置在接入层
接口配置命令:
spanning-tree guard root
7,UDLD(单项链路故障检测)
特点:启用该命令后的端口,交换机会定期向邻居发送UDLD协议数据包,
并且期望收到回应,如果指定之间没有收到,就认为该链路为单向链路,
并且将端口关闭,一般多用于光纤链路中
接口配置命令:
udld port aggressive
(单项链路故障检测,针对的是端口,一旦出现问题立马down掉端口)
8,Guard Loop(环路防护)
特点:和UDLD作用类似,和UDLD的区别是它针对的是每vlan,
不会down掉整个端口,只会阻断有问题的vlan,正常vlan是可以通过配置此特性的端口的
接口配置命令:
spanning-tree guard loop