生成树协议STP/RSTP/MSTP
1. STP(802.1D)
环路危害
-
广播风暴
-
STP主要作用
-
消除环路:通过阻断冗余链路来消除网络中可能存在的环路
-
链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性
桥:交换机
桥的MAC地址:默认为端口编号最小的那个端口的MAC地址
桥 ID(BID):由两部分组成,前 2 个字节是桥的优先级默认32768,后 6 个字节为这个桥的MAC地址
端口 ID (PID):优先级+端口号,优先级默认128
BPDU:网桥协议数据单元
root-id :表示根交换机是谁,使用最优的BID表示
cost :表示发送该BPDU协议的交换机到达根交换的距离
BID :表示发送该BPDU的交换机的名字
Port-id :表示发送方交换机是在那个端口发送出来的,优先级+端口号,优先级默认128
1.1 STP树的生成过程
-
选举根桥(Root)
不断交换STP协议帧,这些协议帧的载荷数据为 BPDU(网桥协议数据单元),STP交换机初始启动均认为自己是根桥,并在发送给别的交换机的 BPDU 中宣告自己是根桥,接收到 BPDU 后比较 BID(取小) , 选举出一台 BID 最小的交换机作为根桥。
当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥
-
确定根端口(RP),每个非根交换机选举一个根端口(负责接收监听根桥的 BPDU)
根端口是非根交换机去往根桥路径最优的端口,每个交换机最多只有一个根端口,根桥上没有根端口。
端口开销和端口的带宽有关,带宽越大,开销越小,STP认为接受数据没有开销。
累计根路径开销 RPC(Root Path Cost) 最小的端口为根端口 ,根据收到的 BPDU 报文再加上该端口本身的端口路径开销,即为累计根路径开销。
RPC 相同时,选择收到发送者(对端)BID 最小的端口为根端口,如果两个端口连接到同一台交换机上(即 BID 相同)则选择收到发送者(对端)PID最小的端口为根端口。
-
确定指定端口(DP,转发 BPDU的端口),每个网段选举一个指定端口(根端口的对端一定是指定端口)
指定端口是交换机向所连网段转发配置 BPDU 的端口(抑制其他端口转发),每个交换网段有且只有一个指定端口,根桥的所有端口都是指定端口。
同根端口选举,首先比较 RPC ,相同即比较 BID(本端),再是 PID(本端) 。
-
阻塞备用端口(AP/BP,预备端口),阻塞非根、非指定端口
1.2 端口状态
-
Forwarding:转发状态
端口既可转发用户流量也可转发BPDU报 文,只有根端口或指定端口才能进入Forwarding状态。
-
Learning:学习状态
在该状态下可以发送和接收BPDU包。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning 状态是为了防止临时环路。该状态会维持一个forward delay(15S)的时间。超时后会过渡到forwarding状态。
-
Listening:侦听状态
生成树选举的开始,端口可以转发BPDU报文,但不能转发用户流量,用于选举设备角色和端口角色。该状态会维持一个forward delay(15S)的时间。超时后会过渡到learning状态。
-
Blocking:阻塞状态
端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
-
Disabled:禁用状态
端口既不处理和转发BPDU报文,也不转发用户流量。端口shutdown,端口UP后会从disable过渡到listening状态。
STP端口状态 | 端口状态对应的行为 |
---|---|
Disabled | 不转发用户流量,不学习MAC地址 |
Blocking | |
Listening | |
Learning | 不转发用户流量,学习MAC地址 |
Forwarding | 转发用户流量,学习MAC地址 |
BPDU的作用
-
用于STP的选举(配置BPDU)
-
维护STP状态
-
通告拓扑改变,刷新MAC地址表(TCN BPDU)
1.3 STP缺陷
-
收敛太慢,一般需要30s~50s的时间,才能恢复连通性
-
端口角色偏少,如根端口DOWN掉后,需要从其他端口中重新选举根端口,没有对应的备份接口
-
端口状态复杂,如前三种状态从用户使用角度对应行为是一样的,呈现不同状态,增加了使用难度
2. RSTP(802.1W)
2.1 RSTP的改进
端口角色
-
预备端口AP:根端口的备份(当RP口挂了,马上成为RP口进行转发)
-
选举 比较RPC,BID,PID
-
-
备份端口(Backup port):DP口的备份
-
边缘端口(edge port):连接终端的端口,此端口马上进入forwarding端口
端口状态
STP端口状态 | RSTP端口状态 | 端口状态对应的行为 |
---|---|---|
Disabled | Discarding | 不转发用户流量,不学习MAC地址、 |
Blocking | Discarding | |
Listening | Discarding | |
Learning | Learning | 不转发用户流量,学习MAC地址 |
Forwarding | Forwarding | 转发用户流量,学习MAC地址 |
2.2 快速收敛机制P/A
-
Proposal/Agreement机制,目的是使一个指定端口尽快进入Forwarding状态
-
指定端口通过与相连的网桥进行一次握手,快速进入转发状态
-
P/A机制要求两台交换设备之间链路必须是点对点的全双工模式
-
加入P/A确认机制后,就不再需要等待Forwarding Delay时间保证无环,协商一般秒级
2.3 拓扑变更优化
-
发现非边缘端口状态改变,马上发送TC报文给所有交换机,收到TC报文的交换机清空MAC地址(STP要等到根桥确认后由根桥发送TC报文)
-
其他设备收到TC报文的端口重复上述过程
2.4 BPDU优化
-
拓扑稳定后,STP只能根桥每Hello Time时间(默认2s)发送配置BPDU,其他非根桥收到后再进行转发,此方式使得STP计算缓慢。RSTP中,拓扑稳定后,所有设备均主动周期性Hello Time发送BPDU
-
更短的BPDU超时计时
如果一个端口连续3个Hello Time没有收到上游设备发送的BPDU,那么该设备认为与此邻居之间协商失败。而STP需要等待一个Max Age(20s)
2.5 BPDU保护功能
-
在边缘端口新接入交换机,发送BPDU报文,引起其他交换机进行生成树计算,从而引起网络震荡
-
BPDU保护原理:边缘端口收到BPDU报文后,立即关闭该端口,从而有效防止网络震荡
-
缺省情况下,交换设备的BPDU保护功能处于关闭状态
2.6 BPDU报文过滤
-
在access接口使用,如果在其他接口会形成环路
-
如果应用在交换机与交换机的端口上,一个物理网段连接的两端都是指定端口,所以会形成环路
-
不接收BPDU,也不发送BPDU
2.7 根桥保护
-
在二层环形网络中接入一台优先级更高的交换机,其他交换机收到更优的RST BPDU报文后,会重新进行生成树计算,使得之前的根桥失去根地位,引起网络拓扑结构错误变动
-
根桥保护功能只能在指定端口上配置(一般是在新交换机接入的那个交换机的指定端口上配置)
-
启用根桥保护的指定端口收到更优的RST BPDU时,端口状态进入Discarding状态,不再转发报文。一段时间后,如果一直没有再收到更优的RST BPDU报文,端口会自动恢复到Forwarding状态
-
缺省情况下,端口的根桥保护功能处于关闭状态
2.8 环路保护
由于系统资源导致的BPDU发送延迟,使对端在发送BPDU周期的3倍过后,会更改端口的角色,从而会影响STP转发路径,可能会导致环路,所以在对端的根端口或者根端口的替换端口上配置
2.9 TC-BPDU泛洪保护
-
边缘端口接入PC,不断伪造和发送TC-BPDU,交换机收到后频繁的删除MAC地址表项会给设备造成很大的负担,给网络稳定带来很大隐患
-
保护原理
在单位时间内,交换机处理TC报文并立即刷新转发表项的阈值,设备只会处理阈值指定的次数(默认单位时间为Hello Time=2s,立即处理一次)。对于其他超出阈值的TC报文,指定超时时间后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的。
2.10 RSTP不足
所有VLAN共享一棵树,无法实现负载分担
3. MSTP(802.1S)
-
具备RSTP的快速收敛机制
-
基于实例(Instance)进行生成树计算,并能把VLAN映射到实例中,从而实现基于VLAN的数据分流
-
生成树实例就是一个或多个VLAN的集合。一个VLAN只能映射到一个实例中
-
每个实例单独进行STP计算,不同实例的根桥可以不同,同一个端口在不同的实例中的端口角色和状态可以不同
3.1 MST域
-
MST域是多生成树域,由交换网络中的多台交换设备以及它们之间的网段所构成。同一个MST域的设备具有一下特征:
-
都启动了MSTP
-
具有相同的域名
-
具有相同的VLAN到生成树实例映射配置
-
具有相同的MSTP修订级别配置
-
-
一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI
-
每个MSTI都有一个标识(MSTID)。默认所有VLAN映射到MST Instan 0,实例0强制存在。
3.2 IST/CST/CIST
-
MSTI
每个实例中的生成树叫做MSTI生成树
-
IST
内部生成树,是MST区域内的一颗生成树,是一个特殊的MSTI,实例0被称为IST。IST是CIST在MST域中的一个片段。
-
CST
公共生成树,是连接交换网络内部的所有MST区域的一个生成树。如果将MST区域看作一个网桥,那么CST就是这些网桥通过STP或RSTP计算出来的一个生成树。
-
CIST
公共内部生成树,IST和CST共同构成了整个网络的CIST,所有MST域的IST加上CST就构成一颗完整的生成树,即CIST。
3.3 MSTP端口角色
-
总根
CIST的根桥
-
Master桥
域内距离总根最近的交换设备
MSTP在RSTP的基础上新增了2中端口。MSTP端口角色共有7种:根端口、指定端口、Alternate端口、Backup端口、边缘端口、Master端口和域边缘端口。前面五种端口同RSTP
端口角色 | 说明 |
---|---|
Master端口 | Master桥上和总根相连的端口,即域边界距离总根最近的接口。 Master端口是域中的报文去往总根的必经之路 Master端口是特殊的域边缘端口,Master端口在IST/CIST上的角色是Root Port,在其他各实例上的角色都是Master端口 |
域边缘端口 | 位于MST域的边缘并连接其他MST域的设备的端口。Master端口一定是域边界端口,但是域边界端口不一定是Master端口 |
本文整理自超有趣虫虫老师网课