STP
STP(802.1D)
RSTP(802.1W)
MSTP(802.1S) 华为设备默认开启是MSTP
STP(802.1D)
BPDU字段信息:
- Protocol:协议版本
- version:STP版本
- STP 值为0
- RSTP 值为2
- MSTP 值为3
- BPDU type
- congifuration bpdu 拓扑BPDU 2s发送一次
- topology bpdu :拓扑发生变化时发送的bpdu
- 802.1w/s bpdu
- flags
- 标签位;只用到第一位和第七位
- TCA 置 1:拓扑确认
- TC 置 1:通告全网交换机拓扑发生变化
- RID:根桥的BID(优先级+mac地址)
- RPC:到根桥累计开销之和
- BID:所经过交换机自己的BID(优先级+mac地址)
- PID:端口ID,优先级+端口组成
- message age:当前消息年龄(每经过一个设备加1)
- max age:最大消息年龄
- hello time:发送时间间隔,一般默认是2s
- forward delay:转发时间,端口状态切换的时间
- 决定监听和学习状态所需要的时间值
- 收到TC BPDU后MAC地址的老化时间
STP定义每个交换机都有一个BID来标识自己
BID=优先级+mac地址
优先级取值由两种标准:
1、0-65535
2、0-61440 华为默认采用的取值,只能是4096的倍数
三种端口:
- RP 根端口
- 非根桥上接收最好的BPDU
- 转发数据
- DP 指定端口
- 链路上发送最好的BPDU
- 转发数据
- AP 备份端口
- 被阻塞
STP选举流程:
- 选举根桥
- 非根桥选举根端口
- 每条链路上选举指定端口
- 即不是RP也不是DP就是AP端口
- STP通过修改RID、RPC、BID、PID来决定选举
比较原则:
- RID越小越优(优先级+mac地址)
- RPC越小越优(到根桥累计开销之和)
- BID越小越优(上联交换机BID,优先级+mac地址)
- PID越小越优(端口优先级+端口编号)
五种状态:
端口状态
|
是否转发数据
|
是否学习MAC地址表
|
是否接收BPDU
|
备注
|
Disabled
|
端口被禁用
|
|
|
|
Blocking
|
不转发数据帧
|
不学习MAC地址表
|
接收并处理BPDU
但不发送BPDU
|
|
Listening
|
不转发数据帧
|
不学习MAC地址表
|
只参与生成树计算
接收并发送BPDU
|
从阻塞进入监听状态需要15s
|
Learning
|
不转发数据帧
|
学习MAC地址表
|
参与生成树计算
接收并发送BPDU
|
从监听进入转发状态需要15s
|
Forwarding
|
转发数据帧
|
学习MAC地址表
|
参与生成树计算
接收并发送BPDU
|
端口角色切换可能存在环路风险,因为STP端口切换需要经过时间等待
|
1、一个非根桥的RP失效并存在AP端口时,AP成为新的RP,需要经历30s进入转发状态
2、非根桥RP失效但不存在AP接口时,网络恢复需要50s
3、根桥失效会重新选举根桥,网络恢复需要50s
监听状态为什么需要15s?
- 监听状态15s是避免STP协议在收敛过程中产生临时环路,让BPDU有足够的时间在整个网络进行传递
- 监听状态期间,MAC地址表受TC BPDU的影响会进行提前老化,清除错误的MAC地址信息,导致错误的MAC地址老化,也导致正确且空闲的MAC地址老化;如果此时需要转发数据帧就会导致大量未知DMAC单播帧泛洪的现象,影响网络性能,那么我们继续牺牲15s的收敛时间,设计出学习状态能让交换机在此期间重新构建正确的MAC地址表项,减少单播帧在STP收敛期间产生大量的泛洪行为
BPDU分两种
- configuratlon bpdu 配置BPDU(2s发送一次)
- 标准STP由根桥发送配置BPDU,非根桥交换机不能发送配置BPDU
- 华为设备经过优化,非根桥可以发送BPDU
- Topoloy Change Notificaction 当交换机发生变化时,发送TCN报文,通知拓扑更改
- topology bpdu:拓扑发生变化时发送的bpdu
- TCA BPDU 拓扑确认更改
- TC BPDU 拓扑变化BPDU
拓扑发生变化时,如何发送BPDU?
- 当拓扑发生变化时会发送TCN BPDU通知根桥
- 上游设备收到TCN BPDU后,会回复一个TCA BPDU,同时也向它的上游设备发送TCN BPDU,沿途设备重复这个动作,直到根桥(一般是DP接收,RP发送)
- 当根桥收到TCN 的BPDU后,回复一个TCA BPDU,同时向全网发送一个TC BPDU,通知拓扑发生改变;
- 当交换机收到TC BPDU后,将自身所有端口(除边缘端口外)的MAC地址表老化时间变成15s
- 注:标准的STP上游设备只回复TCA 置位的BPDU;华为设备有变化,上游设备回复TCA和TC置位的BPDU,让交换机提前把老化时间变成15s;
- TC BPDU由根桥持续发送35s的时间(防止拓扑发生改变时,交换机学到错误MAC地址)
- 华为交换机标注的STP支持边缘端口;
什么情况下认为拓扑是发生改变的
- 当端口进入到转发状态时认为拓扑发生变化
- RP失效或者RP进入到转发状态时认为拓扑发生变化
- 注:DP端口失效不认为拓扑发生改变
拓扑发生改变的缺点:
- 当PC接入后交换机端口会进入转发状态那么就会引起拓扑发生改变,从而会产生TC置位的BPDU,交换机MAC地址表从300s的老化时间变成15s
- 后果:假如MAC地址老化时间变成15s,15s后所有交换机删除mac地址表,那么问题来了?
- 在一个特大型园区网中交换机删除MAC地址,而此时员工要进行数据通信由于没有MAC地址就会产生大量的未知广播帧,从而造成网络拥塞。
- 现象:网络会持续一段时间卡顿。 解决:配置边缘端口
华为针对STP优化
- 非根桥可以主动发送BPDU(标准STP没有)
- 收到次级BPDU立即老化(标准STP没有)
- 边缘端口(标准STP没有,只在RSTP中存在)
RSTP(802.1W)
与STP变化:
- 通过端口角色增补
- 端口状态重新划分
- 配置BPDU格式改变,充分利用了STP协议中flag字段
- 配置BPDU处理发生变化
- 快递收敛
- 增加了保护功能
BPDU有两种
- RST DPDU
- TC RST BPDU
RSTP报文格式:
1、通过端口增补
端口角色
|
描述
|
||
Root Port
|
根端口
所在交换机离根交换机最近的端口
|
转发数据
|
|
Designated Port
|
指定端口
发往根交换机方向的数据
从交换机方向发出的数据
|
转发数据
|
|
Backup Port
|
备份端口
DP的备份端口
|
不转发数据
|
BP学习到了自己发送的BPDU报文而阻塞的端口
提供了另一条到其他交换机的备用路径
|
Alternate Port
|
预备端口
RP的备份端口
|
不转发数据
|
AP端口学习到了其他网桥发送的bpdu而阻塞的端口
提供了从指定桥到根交换机另一条可切换路径;
|
注:指定桥:就是根端口所在的交换机
2、端口状态重新定义
- discarding 不转发用户流量,不学习MAC地址
- learning 不转发用户流量,学习MAC地址
- forwarding 转用户流量,学习MAC地址
3、配置BPDU格式改变,利用flag字段
- 第1位:Topology Change Acknowledgment(TCA)
- 第2位:Agreement(和第7位用于P/A机制)
- 第3位:Forwarding
- 第4位:Learning
- 第5 6位:Port Role(端口角色) 00 未知 01:替代/备份端口 10:根端口 11:指定端口
- 第7位:proposal(第2位用于P/A机制)
- 第8位:Topology Change(TC)

4、配置BPDU发生变化
- BPDU发送方式:无论非根桥设备是否接收到根桥发送的BPDU报文,非根桥设备扔按照hello time时间间隔发送配置BPDU报文;每台设备自主(STP非根桥交换机不能发送BPDU)
- 超时时间:一个端口在超时时间(连续3个hello time的时间)内没有收到上游设备发过来的配置BPDU,那么该邻居认为邻居之间协商失败;不像STP那样需要先等待一个MAX Age
- 处理次优BPDU:当一个端口收到上游指定桥发来的RST bpdu报文时该端口将自身的RST BPDU与收到的RSTP BPDU 进行比较,如果自身BPDU优于收到的RST BPDU那么该端口直接丢弃,立即回应自身缓存的RST BPDU从未加快收敛速度
5、快递收敛
- 边缘端口
- 快速进入转发状态
- 边缘端口UP/DOWN不会导致交换机发送TCN或者TC BPDU,增强STP网络的稳定性
- 一般接服务器、防火墙、路由器等设备
- 注意事项:边缘端口也是发送BPDU的
- 收到自己发送的BPDU端口会阻塞
- 收到其他交换机发送的BPDU,参与普通SPT计算,实现防环;刚接入时有临时环路风险
- 边缘端口能发送BPDU能实现一定程度上防环,但是有的场景不能起到防环作用
- P/A机制
- P/A机制可以快速收敛(两个hello time)
- 链路类型为P2P(全双工),选举RP和DP时才有P/A机制,其他链路类型和端口角色选举按照标准STP
- 选举过程:交换机之间一开始发送RST BPDU,次优的交换机停止发送RST BPDU,此时较优的交换机发送proposal置1的BPDU,次优交换机收到以后,选举自身端口角色并阻塞,选举完成后回复Agreement置1的的BPDU
- 根端口快速切换
- 根端口失效,网络中最优的AP端口成为根端口进入forwarding状态;通过AP端口连接网段上必然有个指定端口可以通往根桥。
6、增强保护功能
- 边缘端口配置
- 边缘端口不参与生成树计算,立刻转发;
- stp edged-port enable 配置边缘端口,在接口下配置
- stp edged-port default 配置边缘端口,在全局配置
- stp edged-port disable 关闭边缘端口,在接口下配置
- stp loop-protection
- 环路保护,接口下配置,软件层次的额外检测
- 在根端口上和AP端口上配置生效
- stp bpdu-protection
- BPDU保护,在全局下配置,只针对边缘端口有效,当边缘端口收到BPDU后接口关闭
- error-down auto-recovery cause bpdu-protection interval mnu 边缘端口收到bpdu后接口down
- stp bpdu-filter enable
- BPDU过滤,不接收不发送bpdu;一般配置在边缘端口,否则有环路风险
- 环路保护 优于 BPDU过滤 优于 BPDU保护
- stp root-protection
- 根保护;在指定口配置
- 对于使能根保护功能的指定端口,其端口角色只能保持为指定端口。
- 一旦使能根保护功能的指定端口收到优先级更高的BPDU时,指定端口状态将进入Discarding状态,不再转发报文。
- 在经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的BPDU,端口会自动恢复到正常的Forwarding状态。
- Forward Delay的时间可通过命令 stp timer forward-delay 进行设置。
- stp tc-protection
- TC保护;
- 交换机收到TC-BPDU 后会执行MAC地址表项和ARP表项的删除操作,当人伪造TC-BPDU报文恶意统计交换机时,会频繁删除MAC地址表和ARP 表项,给网络带来很大隐患
- 开启TC-BPDU 功能后,会在一定时间内处理一次;单位时间为2s。默认2s处理一个
拓扑变更机制
- 非边缘端口迁移到forwarding状态时认为拓扑发生改变
- 在状态发生改变时非边缘端口发送TC BPDU(发送周期为两倍的hello time)收到TC BPDU的交换机清空所有端口(边缘端口和收到TC 报文的端口除外)的MAC地址并继续泛洪TC BPDU,实现全网MAC地址表的更新
MSTP(802.1s)
工作原理与STP一致,快速切换与RSTP一样
MSTP
1、定义了MSTP域在一个域中的交换机必须配置相同的域名
2、在同一个域中配置相同的修订级别
3、在同一个域中要有相同的instance 映射表
4、激活配置
MSTP特点:
1、 同一个域中基于instance维护生成树
2、 同一个域中不同的instance可以设置不用的根桥
3、 同一个域中可以针对不同的instance配置STP的参数
4、 同一个域中每个instance独立维护自己的STP树
5、 没有加入到instance中的vlan,默认属于instance0,instance 0默认存在
COST计算
- 华为默认计算路径为:802.1t;通过stp pathcost-standard dot1d-1998 命令修改为短路径开销方法