生成树协议
STP(Spanning Tree Protocol)用于二层破环
不使用生成树协议可能会导致: 1. 广播风暴
2. MAC地址漂移
- 三层口没有STP
生成树协议模式:(实例-拓扑-进程)
- 单实例模型:所有VLAN使用相同的STP拓扑(STP、RSTP)
- 多实例模型(默认):多个STP拓扑(instance)关联多个VLAN(MSTP)
- VBST:每个VLAN构建自己的STP拓扑
根桥
根桥只有一个(BID↓)
- STP收敛后,仅根桥主动周期性向外发送配置BPDU,非根桥仅记录和转发。
- 根桥抢占,除非配置了根保护
BID(Bridge ID)
桥优先级↓ > MAC↓
- 桥优先级(默认=32768,最高位=1)为212=4096整数倍
[SW] stp root primary = stp priority 0 主根桥
stp root secondary = stp priority 4096 次根桥
- STP、RSTP的instance=0
- MSTP中,若桥优先级=8195=4096*2+3,表示桥优先级=8192,instance 3
PID(Port ID)
端口优先级↓ > 端口号(不可配)
默认=128 //算前8位,最高位置1,后4位不可配
[SW-G] stp port priority xxx //修改STP端口优先级
根路径开销RPC(Root Path Cost)
RPC = 端口到根桥的开销
- RPC↓的端口 = RP端口
[SW] stp pathcost-standard { dot1d-1998 | dot1t | legacy } 修改全局端口成本标准
[SW-G] stp cost xxx //单独为端口设置cost
BPDU优选规则
STP、RSTP、MSTI : 根桥BID↓ > RPC↓ > BID↓ > PID↓ > 接收端口PID↓
CIST: 总根BID↓ > 外部RPC↓ >
主根BID↓ > 内部RPC↓ > BID↓ > PID↓ > 接收端口PID↓
端口角色
- 传统的STP端口角色分为:根端口、指定端口、阻塞端口
但在华为设备中,STP、RSTP、MSTP端口角色保持一致
根端口RP Root Port |
Forwarding |
SW最优BPDU接口 非根桥距离根桥最近的接口 |
指定接口DP Designated Port |
Forwarding |
自己计算的BPDU更优 网段距离根桥最近的接口 |
替代端口AP Alternate Port |
Discarding,RP的备份 |
别人的更优 |
备份端口BP Backup Port |
Discarding,DP的备份 |
收到自己发出的更优的 |
RP、AP、BP 不发BPDU
仅DP(EP)发BPDU
- RP、AP、BP靠周期收到DP发来的BPDU保持端口角色
- DP不需要靠收BPDU维持端口角色,Forwarding之后不变,除非端口角色改变。
- AP、BP可以有多个
端口状态
传统STP接口状态 |
RSTP接口状态(华为) |
描述 |
Forwarding |
Forwarding RP、DP |
学MAC、转发流量 处理BPDU |
Learning |
Learning |
学MAC、不转发流量 处理BPDU |
Listening |
Discarding AP、BP |
不学MAC、不转发流量 只接收BPDU |
Blocking |
||
Disable |
DP收到更优BPDU
收到的BPDU是SW上 最优, DP → (RP,Forwarding) P/A机制
不是最优, DP → (AP,Discarding)
RP、AP、BP收到更差BPDU
STP:无响应,仅等待Max Age超时后,重置为(DP,Discarding)
RSTP:立即回复自己BPDU,不重置
重置接口为(DP,Discarding)的条件
1. BPDU超时 = Max Age = 20s
= 3*Hello*华为因子 = 3*2*3 =18s
2. RP失效、没有AP,其他接口重置为(DP,Discarding)(SW重新认为自己是根桥)
3. EP收到BPDU
STP拓扑计算
BPDU优选规则:根桥BID↓ > RPC↓ > BID↓ > PID↓ > 接收端口PID↓
BPDU向量={根桥BID,RPC,BID,PID}
第一步:交互BPDU(确认自己还是不是根桥)
第二步:链路选最优BPDU(确认接口还是不是RP)
第三步:非根端口计算BPDU
第四步:确定端口角色 DP=自己端口计算BPDU更优
AP=别人发来BPDU更优
第三步严格说是:SW根据收到的BPDU,计算内部向量,从而计算各端口的BPDU,确定是否有翻根
- 所有端口保存最优BPDU
- 步骤1-4无限循环
Eg1. 所有链路开销=7
第一轮:
1. 交互BPDU(确认自己还是不是根桥)
初始时,三台SW都认为自己是根桥,接口均为DP,交互BPDU
SW1、SW2的1号口收到更优BPDU,确认自己不是根桥
2. 链路选最优BPDU(确定RP)
非根桥选最优BPDU接口为RP
3. 为非根端口计算BPDU
4. 确定端口角色
第二轮:
1. 交互BPDU(确认自己还是不是根桥)
根桥不变
2. 链路选最优BPDU(确定RP)
RP不变
3. 为非根接口计算BPDU
计算的BPDU不变
4. 确定端口角色