- 一、二层网络设计需求和问题
- 1 广播风暴
- 2 MAC地址表震荡
- 二、STP概述
- 三、STP操作
- 四、BPDU Bridge Protocol Data Unit 桥协议数据单元
- 五、BPDU类型
- 1 配置 BPDU:Configuration
- 2 拓扑变更通告 BPDU-TCN BPDU
- 2.1 桥ID
- 2.2 端口ID
- 2.3 路径开销
- 2.4 根路径开销
- 2.5 链路开销标准
- 六、STP选举过程
- 1 根桥选举
- 2 根端口选举
- 3 指定端口选举
- 七、STP端口状态
- 八、STP计时器
- 九、STP端口转换
- 十、STP拓扑变化
- 十一、STP配置
为了提高网络可靠性 交换网络中通常会使用冗余链路 然而冗余链路会给交换网络带来环路风险 并导致广播风暴以及MAC地址表不稳定等问题 进而会影响到用户的通信质量 生成树协议STP(Spanning Tree Protocol) 可以在提高可靠性的同时又能避免环路带来的各种问题 不像三层有TTL 纯二层的环路不会停下来
1 广播风暴STP:Spanning Tree Protocol 生成树协议
通过构造一棵树来消除交换网络中的环路 根桥-根交换机 根端口-非根交换机上的一个端口 如果交换机上没有根端口 则肯定不是非根桥(非根交换机)
交换机的前身是网桥! 现在的桥就是交换机!
四、BPDU Bridge Protocol Data Unit 桥协议数据单元使用组播:01-80-C2-00-00-00
修改STP模式:stp mode mstp/rstp/stp 查看STP详细信息:dis stp 默认MSTP
选举根交换机以及确定每个交换机的角色和状态(用来选举根桥) 在初始过程中 每个桥都主动发送配置BPDU 在网络拓扑稳定后 只有根桥主动发送配置BPDU 其他交换机在收到上游传来的配置BPDU后 才会发送自己的配置BPDU(根桥选出来后) 发送周期为Hello Time(默认值为2 2秒发一次) 老化时间为Max Age (20s)
2 拓扑变更通告 BPDU-TCN BPDU下游交换机感知到拓扑变化时向上游发送的拓扑变化通知
BPDU Type: Topology Change Notification (0x80) 拓扑改变通知
0-65535(2^16) 桥ID = 桥优先级 + 桥MAC地址 桥优先级 2B=16b 桥MAC地址 6B=48b 桥ID 8B=64b
2.2 端口ID 端口ID = 端口优先级 + 端口编号 端口优先级 1B=8b 端口编号 1B=8b
stp端口开销更改:stp cost 0-200000000 stp开销标准更改:stp pathcost-standard dot1d-1998/dot1t 现在华为用802.1t
BID最小的成为根桥(先比优先级 再比MAC)
BID = Bridge ID = 桥优先级 + 桥MAC地址 桥优先级的取值范围:0-65535(216) 桥优先级的默认值:32768 如图中4096 < 32768 故SWA为根桥
2 根端口选举 根端口-非根桥的端口-到达根桥最近的端口-开销最小的端口 根端口选举依据: 先看该端口的根路径开销Root Path Cost-确定到达根桥的最短路径 到根桥路径上所有开销之和 如果根路径开销Root Path Cost相等 再比较对端BID-Bridge ID -发送给自身的 BPDU里的BID 如果对端BID相同(即两者优先级相同 MAC相同(同一根交换机所发)) 再比较PID-Port ID 先比较对端的PID 如果是同一类型端口 则肯定是数字编号较小的优先 如果对端PID相同(即根交换机连接一个集线器 再从集线器接一个交换机) 再比较本端PID 则肯定是数字编号较小的优先 查看根端口信息:dis stp brief 查看根路径开销ERPC:dis stp 或 dis stp int g0/0/0
指定端口-负责每段链路上的数据发送 通常 根桥上的端口都是指定端口 一条链路上 根路径开销小的为指定端口 如果根路径开销相同 则比较BID 先比BID优先级 再看MAC地址 越小越优先 - 为指定端口 如果BID相同 则比较PID
根端口 RP 指定端口 DP 预备端口 AP(Alternative Port) - discarding 阻塞状态
七、STP端口状态 华为交换机主要以显示MSTP和RSTP的状态为主 Discarding阻塞状态是MSTP和RSTP的 Blocking阻塞状态是STP的
Disabled Blocking和Listening在RSTP中被打包在Discarding中 稳定状态: Disabled Blocking Forwarding 过渡状态: Listening Learning
配置BPDU报文每经过一个交换机 Message Age都+1 如果Message Age大于Max Age 非根桥会丢弃该配置BPDU
50s = 20s阻塞->侦听 + 15s 侦听->学习 + 15s学习->转发 修改STP模式:stp mode stp/mstp/rstp 默认MSTP
解决方法: 1.等待MAC地址表老化300s 2.等待ARP缓存清空 重新广播获取MAC地址
拓扑变更通告 BPDU-TCN 下游交换机感知到拓扑变化时向上游发送的拓扑变化通知 (TCN告知上游交换机:我出现故障啦)会一直周期性发送TCN 直到收到确认 (TCA上游交换机收到TCN后回复下游交换机:我知道啦) 上游交换机继续向上发送TCN 直到根桥收到 根桥收到后 (TC根桥收到TCN后回复下游:我也知道啦)
3.引入TCN TCA TC机制 检测到拓扑改变的交换机通过根端口向根桥发送TCN 上游交换机收到TCN后回应TCA 然后下游交换机停止发送TCN 再通过根端口发送TCN直至根桥收到 根桥通过指定端口发送TC通知所有下游交换机把MAC地址表记录的老化时间从300s变为15s 使得链路切换与MAC地址表保持同步
传统二层交换的都会产生环路问题 一般用STP+VRRP解决 但是STP的致命缺陷是等待时间过长 在重要的项目中是等不起的 故有RSTP的产生 同时在大型项目中引入交换机堆叠和链路聚合 堆叠又称 多虚一(虚表示虚拟化) 或 集群 堆叠技术是厂商私有的
十一、STP配置