STP :spanning Tree IEEE802.1D 公有协议 生成树协议
作用:解决网络环路,同时保障冗余
原理:通过判断网络环路,来阻断环路节点,多用于设备冗余,同时也起到了防环作用
使用STA算法,STA会在冗余链路中选择一个参考点(生成树的根),将选择到达要的单条路径,同时阻断其他冗余路径。一旦已选路径失效,将启用其他路径
STP通过选举来判断网络节点方向,选举依靠BPDU报文实现,BPDU报文直接封装在以太网帧中。BPDU默认2s 由根桥发送一次
根桥的产生:初始交换机连入网络中,每台交换机都会进行根桥选举,发送BPDU报文,比较lowest BID,最小当选,根桥发送BPDU,非根桥转发
BID计算的依据:优先级+MAC 最小,默认优先级32768,4096的倍数,建议根桥直接为0
指令如下:spanning-tree vlan 1-10 priority 4096
BPDU报文的作用:
1.选举根桥
2.确定冗余路径的位置
3.通过阻塞特定端口来避免环路
4.通告网络的拓扑变更
5.监控生成树的状态
PS:手动制定根桥:spanning-tree vlan 1-10 root primary,在另一台指定备根桥:spanning-tree vlan 1-10 root secondary
根桥上的所有端口都是指定端口,其他非根桥都只有一个根端口,其他非指定端口和非根端口将被block从而达到防环
根端口(RP):Lowest RID+最小到根路径开销(对接端口速率月对根路径开销越小)
:(config-if)spanning-tree cost 22 #修改每个VLAN的cost值
RID:端口优先级+端口号
#spanning-tree port-priority 16 #端口下修改,默认是128,16的倍数
生成树运行时的端口状态:
1.blocking ——不转发帧,监听
2.listening ——监听状态,不转发帧,不学习
3.learning ——学习状态,学习MAC,不转发帧
4.forwarding——转发状态,只有处于这个状态端口才能正常工作
PS:在运行STP端口的边缘接入上面,STP计算需要时间,预计STP需要50s ,进入forwarding状态,在日常接入中特别麻烦,建议使用边缘端口:spanning-tree portfast 开启快速转发,不进行学习和侦听,但是有一个危险,就是无法保证防环,此时开启:spanning-tree portfast bpduguard
扩展:RSTP 802.1w
开启指令:spanning-tree mode rapid-pvst #部分Cisco设备默认使用,其相对于STP所有VLAN一个生成树,RSP是一个VLAN有一个生成树
特性:
RSTP中,将接口的链路类型分为两种:
1、共享(share)链路 半双工
2、点到点链路 (point-to-point)全双工
PS:仅仅只在点到点链路上RSTP才能实现快速收敛
·RSTP中定义了3种端口状态:
Discarding/Learning/Forwarding
·RSTP中的端口角色:
RP:根端口
DP:指定端口
Alternate Port:替代端口
Backup Port:备份端口
portfast在RSTP中也称为边缘端口
在802.1D中,只有当SW从根端口收到BPDU时,非根桥才能转发BPDU;在802.1w中,每个SW会每隔2S就发送一次包含当前信息的BPDU。在RSTP中,只有当非边缘端口进入转发状态的时候才会导致拓扑变更,才会产生TC BPDU,连接的丢失不会导致拓扑变更,也不会产生TC BPDU;在RSTP中,每台交换机都可以下发TC置位的config BPDU,这样也实现了快速收敛;除非网络有老式设备,否则RSTP不需要使用TCN BPDU
MST(multiple spanning tree): 802.1s
1.MST对vlan分组(Instance)
2.每个分组可以有独立的STP,实现二层负载分担。
启用方式:
spanning-tree mode mst (启用MST)
spanning-tree mst configuration
name Cisco
revision 10
instance 1 vlan 1-2
instance 2 vlan 3-4
spanning-tree mst 1 priority 4096 修改本交换机在这一大堆VLAN中的优先级
int f0/5
spanning-tree mst 1 cost 19 修改本接口在这一组中的开销
show spanning-tree mst
show spanning-tree mst configuration
PS:有一个默认组0,没划分的VLAN就在这里面,MST不能和PVST共存,可以和RSTP共存
实例解析:
1.端口防护:设置了portfast的端口,收到BPDU,如果有添加bpduguard,那么端口将直接Down,需要管理员打开
出现这种情况,有可能会用户误解导致端口Down,此时你也刚好不在,你需要添加一个自动恢复:
errdisable recovery cause bpduguard 设置300S(默认)后自动修复bpduguard所导致的errdisable
errdisable recovery interval 30 修改默认的修复时间
PS:此时端口因为收到BPDU而blocking状态,将30s后恢复
2.强行指定根桥:
只需要在汇聚上添加:spanning-tree guard root 此时他就是个根桥
3.环路保护:一旦BLocking端口强行过渡到forwarding状态那么将引发环路
启用Loopguard的接口,如果原来的BPDU老化了,不会转到listening状态,而将自动转为inconsistent状态;在inconsistent状态下,会再根据对端交换机发过来的BPDU进行决定端口状态
spanning-tree loopguard default (全局)
int g0/1
spanning-tree guard loop (接口)
STP,基本上可以总结以下可能:
1、双工不匹配
2、单向链路失效
3、数据传输异常
4、根桥/根端口异常
5、portfast配置不当
6、互联设备STP配置不当