RSTP
RSTP快速生成树树协议
- 生成树:为了防止二层网络中存在链路冗余时出现环路
- STP:生成树协议,802.1D标准定义
- RSTP:快速生成树协议,802.1w标准定义
- MSTP:多实例生成树协议,802.1s标准定义
STP的工作原理
- 选举根桥
- 比较根桥ID=桥优先级+MAC地址
- 桥优先级:2B,以小为优,默认32768,步长4096,取值范围0~61440
- MAC地址:6B,以小为优
- 在非根交换机上选举一个根端口(RP)
- RP有且只有一个
- 先比较RPC(跟路径开销),以小为优
- 比较对端BID(桥ID),以小为优
- 比较对端的PID,以小为优
- PID(2B)=端口优先级(1B)+端口号(1B)
- 端口优先级:默认128,步长16,取值范围0~240,以小为优
- 端口号:以小为优
- 比较本端的PID
- RP有且只有一个
- 在每条链路上选举一个指定端口(DP)
- 先比较RPC,以小为优;
- 本端的BID,以小为优;
- 本端的PID,以小为优;
- 阻塞所有非根非指定端口(AP)
STP报文类型
- 配置BPDU:计算生成和维护最短路径树
- TCN BPDU:通知拓扑出现变更
STP计时器
- message age:消息生存时间,BPDU报文每经过一台交换机加1
- MAX age:最大生存时间,20s
- hello time:根桥周期发送BPDU的间隔时间,默认2s
- forward delay:转发延迟,端口状态迁移的延迟时间,15s
RSTP对STP的改进
端口角色的改变:
-
新增了两种端口角色
- AP:替代端口,作为RP的备份
- 提供了去往根桥的另外一条备份路径
- 当接收到其他交换机发送的配置BPDU时,成为AP口
- BP:备份端口,作为DP的备份
- 为根桥提供了去往目的网段的另一条备选路径
- 当接收到自己发送的配置BPDU时,成为BP口
- AP:替代端口,作为RP的备份
端口状态的改进
- 由STP中的5种状态缩减至3种:
- discarding状态:禁用状态,不转发业务流量,也不学习MAC地址
- learning状态:学习状态,只学习MAC地址,但是不转发业务流量
- forwarding状态:转发状态,学习MAC地址,转发业务流量
报文类型的变化
-
RSTP的报文类型:RST配置BPDU
-
报文内容的变化
-
报文类型字段:
-
BPDU type==0x00:配置BPDU
-
BPDU type==0x80:TCN BPDU
-
BPDU type==0x02:RST/MST 配置BPDU
当STP接收到type==0x02的配置BPDU时,直接丢弃
RSTP可以向下兼容
-
-
flag:8bit
-
由STP中只使用最高位和最低位两个比特位,改为8个比特位都使用
-
TCA aggregate(同意) forwarding learning port role proposal TC 7bit 6bit 5bit 4bit 3-2bit 1bit 0bit 确认收到TCN BPDU报文 用于P/A协商机制 端口状态 端口状态 端口角色 用于P/A协商机制 用于通知拓扑出现变更 -
第7bit位:TCA,确认收到TCN BPDU报文
-
第6bit位:aggregate(同意),用于P/A 协商机制
-
5bit位:forwarding
-
第4bit位:learning
-
4、5位共同表示端口状态
-
第2|3bit位:端口角色:
00 :未知,保留
01:AP/BP
10:RP
11:DP
-
-
-
配置BPDU报文处理过程的变化
- 非根交换机无需等待根桥的配置BPDU,可以独立自主的按照Hello time的间隔周期性发送配置BPDU
- 配置BPDU的老化时间不再依赖MAX age,老化时间变更为3倍的Hello time(缺省 6s)
- RSTP交换机可以处理次优配置BPDU
快速收敛机制
-
根端口和指定端口的快速切换:
- AP口作为RP口的备份,当RP出现故障,最优的AP成为新的RP口进入转发状态
- BP口作为DP的备份,当DP口出现故障,最优的BP成为新的DP口进入转发状态
-
引入边缘特性(edge port)
- 应用场景
- 通常用于连接终端设备,如PC、服务器、路由器等,通常将交换网络的边界,不会再连接其他二层网络的端口配置成边缘端口
- 边缘端口的特点
- 边缘端口可以直接进入转发状态(forwading)
- 边缘端口时DP口,会周期性发送配置BPDU
- 当边缘端口接收到配置BPDU时,会丧失边缘端口特性
- 边缘端口不参与STP计算,接收到TC置位的配置BPDU时,不会清除端口MAC地址表项
- 边缘端口进入到forwarding状态,不会触发拓扑变更机制(不会触发TC置位的配置BPDU)
- P/A协商时,不会阻塞边缘端口
- 应用场景
-
P/A协商机制:
-
作用:让指定端口快速进入转发状态
-
P/A协商必须在全双工点到点的链路上进行
-
协商过程:一根桥为起点,自上而下,逐跳进行
-
-
首先交换机A/B/C运行RSTP后,都认为自己是根桥,所有端口都是DP,发送RST配置BPDU
-
通过交互RST BPDU后,知晓交换机A位根桥,于是B/C先与A进行P/A协商
-
A朝B/C发送P置位的RST BPDU
-
B/C接收到A发送的P置位的RST BPDU后,同步变量,阻塞除边缘端口以外的所有端口
-
B/C的RP口进入forwarding状态,并回复A置位的RST BPDU
-
A接收到A置位的RST BPDU后,DP口进入转发状态
至此,A与B/C之间的P/A协商已完成
B/C之间继续进行P/A协商
- B和C之间交互P置位的RST BPDU,确定B的端口为DP,C的端口为AP口
- B设备不停向C发送P置位的RST BPDU,优于C的端口为AP口,不会给B回复A置位的RST BPDU,故B的DP口只能等待2个forwarding delay后进入转发状态
-
-
拓扑变更机制
-
在STP中判断拓扑出现改变的标准是接口UP/Down
-
在RSTP中,判断拓扑出现改变的唯一标准是非边缘端口进入forwarding状态
-
所以当检测到非边缘端口进入forwarding状态会触发拓扑变更机制
-
出现拓扑变更的设备
-
给设备会删除状态出现改变的接口学习到的MAC地址表项,并且向出边缘端口外的其他端口泛洪TC置位的RST BPDU,同时给每个转发TC置位的RST BPDU报文的皆苦开启TC while timer计时器(通常收hello time的两倍),计时器超时后则停止发送TC置位的RST BPDU报文
-
接收到TC置位的RST BPDU的设备,除了边缘端口和接收该报文的接口以外,清楚其他所有端口学习到的MAC地址表项,并泛洪TC置位的RST BPDU,同时开启TC while timer计时器
-
重复以上动作,直至TC置位的RST BPDU泛洪至全网
注意:如果是边缘端口故障,则不会触发拓扑变更机制
-
-
保护机制
-
BPDU保护
-
默认关闭,需要手动开启,在系统视图下配置,配置命令
[huawei]stp bpdu-protection
-
当边缘端口接收到RST BPDU时,会丧失边缘端口特性,配置了BPDU保护功能后,边缘端口如果接收到BPDU报文,直接关闭(error-down),此时能通过手动开启(undo shutdown),端口再次进入forwarding状态,边缘端口特性不会丢失
-
-
根保护
-
默认关闭,需要手动开启,在指定端口下配置,配置命令
-
int g0/0/4 stp root-prote
-
-
作用:保护根桥地位不被抢占,防止非法用户或错误接入导致更高优先级设备抢占根桥地位,可能导致数据外泄和网络拥塞等问题
-
配置跟保护后,当DP接收到更优的BPDU报文后,端口角色不改变,并且将端口状态切换至discarding,一段时间后(通常是2个forward delay)没有再接收到更优的BPDU,端口再次进入forwarding状态
-
-
环路保护
-
默认关闭,需要手动开启,在根端口和阻塞端口下配置,配置命令
-
int g0/0/01 stp loop-protection
-
-
作用:用于防止优于单通链路故障或者网络拥塞导致的环路
-
优于非根交换机单通链路故障或者网络拥塞导致长时间没有接收到根桥的RST BPDU报文,RP成为DP,AP切换成RP,此时都处于forwarding状态,从而造成单向的环路问题
- 配置了环路保护功能后,RP成为DP后停留在discarding状态,AP成为新的RP后处于forwarding状态,从而防止了单向环路产生,直到单向链路故障恢复或者网络拥塞解除,接收到根桥的BPDU后,重新确定端口角色
-
-
防TC BPDU攻击
-
默认关闭,需要手动开启,在系统视图下配置,配置命令
-
stp tc-protection-------------开启TC BPDU保护功能 stp tc-protection threshold 2---------配置单位时间内处理的次数 stp timer hello 200-----------------配置单位时间间隔(单位厘秒,默认200)
-
-
作用:防止网络设备因频繁接收到TC 置位的BPDU导致,MAC地址表项频繁变更,造成网络震荡
-
配置TC-bpdu保护功能后,在单位时间内只能处理优先次数的TC-BPDU报文,默认单位时间为一个hello time只处理一次TC BPDU报文,时间间隔处理次数都已手动配置,对于超出的部分,只能等计时器超出后再统一一次性处理
-
MSTP多实例生成树
STP/RSTP的缺陷
- 只能生成一棵树,所有vlan数据都按照该生成树进行转发,可能导致的问题:
- 无法实现vlan间负载分担,链路利用率低,设备利用率低
- 存在次优路径
- 部分vlan业务无法通信
MSTP的优点
- 都能够生成多颗生成树,实现负载分担,提高链路利用率,各个生成树之间相互独立
MSTP的缺点
- 配置过于复杂,开销(BPDU报文传输的开销和计算的开销)额外大一些,CST上没有负载分担能力(只实现了域内的负载分担,没有实现域间的负载分担),域间通信存在次优路径
- 华为提出自己的私有协议VBST,一个vlan计算一颗生成树
术语解释
-
MST域:
- 通过域名、修订级别、实例与vlan的映射关系可以唯一标识一个MST域
- 一个交换网络可以划分成多个MST域,一个域中可以生成1棵或多棵树
-
MSTI:多生成树实例
- 一个MST域中可以有多个实例,每个实例就是一棵生成树,一个实例可以与多个vlan映射,一个vlan只能属于一个实例,不同实例通过instance id标识
-
CST:公共生成树
- 将MST域看作一台交换机,域与域之间计算出的生成树称为公共生成树
-
IST:内部生成树
- 是一个特殊的MSTI,也就是MSTI 0,除了绑定到其他实例的vlan,剩余所有的vlan都属于MSTI 0
-
CIST:公公和内部生成树
- 就是IST+CST,通告生成树协议计算的,连接交换网络中所有设备的单生成树
-
SST:单生成树
- 运行STP/RSTP的交换设备计算出的生成树或者MST域中只存在一台交换设备,生成的最短路径树称为单生成树(CST也是单生成树)
-
总根
- CIST的根桥,在MSTP网络中桥优先级最高的设备
-
域根
- 分为IST域根和MSTI域根
- IST域根:IST生成树中距离总根所在域最近的交换设备
- 单域情况下:IST中优先级最高的交换机就是IST域根,此时也是总根
- 多域情况下:
- IST域根与总根处于同一个域时,总根即是IST域根
- IST域根与总根处于不同的域时,IST中离总根所在域最近的交换设备是IST域根
- 比较规则:
- 比较根路径开销,本桥去往总根所在域的开销总和
- 开销一样,则比较桥ID
- 比较规则:
- MSTI域根:每一个MST域中,每一棵实例树的根桥就是MSTI域根
- IST域根:IST生成树中距离总根所在域最近的交换设备
- 分为IST域根和MSTI域根
-
主桥
-
MSTI 0中距离总根最近的交换设备
-
如果MSTI 0所在域即是总根所在域,则总根就是主桥
注意:总根一定是IST的根桥,但IST根桥不一定是总根
-
新增两种端口角色
- 域边缘端口:
- 与其他域或者SST相连的端口,处于域的边缘(也就是CST上的所有非阻塞端口),域边缘端口在CIST中的角色可以是RP也可以是DP
- master端口:
- 特殊的域边缘端口是域来凝结总根所有路径中最近的端口,在CIST中的端口角色是RP,在其他实例是master端口
MSTP中端口的状态域RSTP中的级别一致
- discarding:
- 禁用状态,可以接收配置BPDU,不学习MAC地址,不转发业务流量,RP\DP\AP\BP\边缘端口\master端口
- learning:
- 学习状态,可以接收、转发配置BPDU,可以学习MAC地址,不可以转发业务流量,RP\DP\域边缘端口\master端口
- forwarding:
- 转发状态,可以接收、转发配置BPDU,可以学习MAC地址和转发业务流量,RP\DP\域边缘端口\master端口
MSTP BPDU报文参数
-
protocol id:2B,协议标识符,固定为0,0x0000
-
protocol version id:1B,协议版本标识符,stp为0x00,RSTP为0x02,Mstp为0x03
-
BPDU type:1B,BPDU报文类型
- 0x00:STP的配置BPDU
- 0x80:STP的TCN BPDU
- 0x02:RST/MST配置BPDU
-
CIST flag:1B,CIST标志字段
-
CIST root id:8B,CIST的总根的BID
-
CIST external path cost:4B,CIST外部路径开销指从本设备所属的MST域到CIST总根所属的MST域的累计路径开销。CIST外部路径开销根据链路带宽计算
-
CIST regional root id:8B,CIST域根的BID,即IST master的ID。如果总根在这个域内,那么域根ID就是总根BID
-
CIST port id:2B,本端口在IST中的指定端口ID
-
message age:2B,BPDU报文的生存时间
-
MAX age:2B,BPDU报文的最大生存时间,超时则认为到根交换机的来南路故障
-
hello time:2B,BPDU报文发送的间隔时间,缺省2s
-
forward delay:2B,转发延迟定时器,缺省15s
-
version 1 length:1B,version 1 BPDU的长度
以上36字节为RSTP BPDU的长度
-
version 3 length:2B,MSTP BPDU的长度
-
MST configuration id :51 B,MST配置标识符。标识MST域的标识信息,包含4个字段
-
CIST internal path cost:4B,CIST内部路径开销指从本端口到主桥(IST master交换设备)的累计路径开销。CIST内部路劲开销根据链路带宽计算
-
CIST bridge id:8B,CIST的指定交换设备的ID
-
CIST remaining hops:1B,BPDU报文在CIST中剩余跳数
-
MSTI configuration messages:16B,如果有n个MSTI就占用n*16B
MSTP拓扑计算过程
-
选举总根
- 比较跟交换设备ID
-
域与域之间计算CST,每个域内计算IST,CST+IST构成了CIST
-
参与CIST计算的优先级向量为:
- 跟交换设备ID:CIST root id
- 外部根路径开销:ERPC,本桥所在域去往总根所在域的域间路径开销总和
- 同一个域中的所有交换设备,保存的ERPC都是相同的
- 域根ID:CIST 域根BID,IST的ROOT BID
- 内部根路径开销:IRPC,本桥去往主桥的路径开销总和
- 指定交换设备BID:对端设备的BID
- 指定端口ID:对端的PID
- 接收端口ID:本端的PID
IST计算过程:
-
选举IST域根
-
先比较ERPC(总根所在域,ERPC都为0,所以总根即是域根)
-
ERPC一样,则比较CIST BID
-
-
非域根交换机上选举RP
- 先比较IRPC,以小为优
- IRPC一样,则比较指定交换设备ID
- 指定交换设备ID一样,则比较指定PID(端口ID)
- 指定PID一样,则比较接收PID
-
每条链路上选举一个DP
- 先比较IRPC
- IRPC一样,则比较指定BID(使用本BID与指定BID比较)
- 与指定BID一样,则用接收PID与指定PID比较
-
阻塞非根非指定端口文章来源:https://www.toymoban.com/news/detail-473800.html
CST计算过程:
-
把每个域看作一个大的交换机,总根所在域即为根桥
-
确定根域(总根所在域)
- 选举总根
确定域边缘端口
-
非根域上选举RP
-
比较ERPC,以小为优
-
ERPC一样,则比较域根ID
-
域根ID一样,则比较指定BID
-
指定BID一样,则比较指定PID
-
指定PID一样,则比较接收PID
对于除实例0以外的其他实例来讲,该接口为Master端口
-
-
每条域间链路上选举一个DP
- 比较ERPC,以小为优
- ERPC一样,则用接收端BID与指定PID比较
- 与指定BID一样,则用接收端PID与指定PID比较
-
阻塞非根非指定端口
-
-
-
每个MST域单独计算MSTI文章来源地址https://www.toymoban.com/news/detail-473800.html
- 参与MSTI计算的优先级向量
- 域根ID:MSTI root id
- 内部根路径开销:IRPC,本桥去往MSTI域根设为路径开销总和
- 指定交换设备ID
- 指定端口ID
- 接收端口ID
- 参与MSTI计算的优先级向量
MSTP域内的流量转发路径
- 各VLAN业务按照对应的实例计算的生成树进行转发
- MSTP域间的流量的转发路径
- 绑定了实例的VLAN业务在域内先到该实例树的根桥,再找主桥,从主桥的master端口转发出去:
- 接收域种如果存在与该vlan绑定的实例,则按对应MSTI转发(转发给对应的MSTI域根)
- 接收域中不存在该vlan绑定的实例,则按CIST进行转发
- 绑定了实例的VLAN业务在域内先到该实例树的根桥,再找主桥,从主桥的master端口转发出去:
- MSTP域间的流量的转发路径
到了这里,关于RSTP与MSTP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!