目录
一、二层网络设计需求和问题
为了提高网络可靠性 交换网络中通常会使用冗余链路
然而冗余链路会给交换网络带来环路风险
并导致广播风暴以及MAC地址表不稳定等问题 进而会影响到用户的通信质量
生成树协议STP(Spanning Tree Protocol)
可以在提高可靠性的同时又能避免环路带来的各种问题
不像三层有TTL 纯二层的环路不会停下来
1 广播风暴
2 MAC地址表震荡
二、STP概述
STP:Spanning Tree Protocol 生成树协议
三、STP操作
通过构造一棵树来消除交换网络中的环路
根桥-根交换机
根端口-非根交换机上的一个端口
如果交换机上没有根端口 则肯定不是非根桥(非根交换机)
交换机的前身是网桥!
现在的桥就是交换机!
四、BPDU Bridge Protocol Data Unit 桥协议数据单元
使用组播:01-80-C2-00-00-00
修改STP模式:stp mode mstp/rstp/stp
查看STP详细信息:dis stp
默认MSTP
五、BPDU类型
1 配置 BPDU:Configuration
选举根交换机以及确定每个交换机的角色和状态(用来选举根桥)
在初始过程中 每个桥都主动发送配置BPDU
在网络拓扑稳定后 只有根桥主动发送配置BPDU
其他交换机在收到上游传来的配置BPDU后
才会发送自己的配置BPDU(根桥选出来后)
发送周期为Hello Time(默认值为2 2秒发一次)
老化时间为Max Age (20s)
2 拓扑变更通告 BPDU-TCN BPDU
下游交换机感知到拓扑变化时向上游发送的拓扑变化通知
BPDU Type: Topology Change Notification (0x80)
拓扑改变通知
2.1 桥ID
0-65535(2^16)
桥ID = 桥优先级 + 桥MAC地址
桥优先级 2B=16b
桥MAC地址 6B=48b
桥ID 8B=64b
2.2 端口ID
端口ID = 端口优先级 + 端口编号
端口优先级 1B=8b
端口编号 1B=8b
2.3 路径开销
2.4 根路径开销
2.5 链路开销标准
stp端口开销更改:stp cost 0-200000000
stp开销标准更改:stp pathcost-standard dot1d-1998/dot1t
现在华为用802.1t
六、STP选举过程
1 根桥选举
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
3 指定端口选举
指定端口-负责每段链路上的数据发送
通常 根桥上的端口都是指定端口
一条链路上 根路径开销小的为指定端口
如果根路径开销相同 则比较BID
先比BID优先级 再看MAC地址 越小越优先 - 为指定端口
如果BID相同 则比较PID
根端口 RP
指定端口 DP
预备端口 AP(Alternative Port) - discarding 阻塞状态
七、STP端口状态
华为交换机主要以显示MSTP和RSTP的状态为主
Discarding阻塞状态是MSTP和RSTP的
Blocking阻塞状态是STP的
八、STP计时器
Disabled Blocking和Listening在RSTP中被打包在Discarding中
稳定状态:
Disabled
Blocking
Forwarding
过渡状态:
Listening
Learning
配置BPDU报文每经过一个交换机 Message Age都+1
如果Message Age大于Max Age 非根桥会丢弃该配置BPDU
九、STP端口转换
十、STP拓扑变化
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的产生 同时在大型项目中引入交换机堆叠和链路聚合
堆叠又称 多虚一(虚表示虚拟化) 或 集群
堆叠技术是厂商私有的