15、RSTP
STP回顾
STP树的生成过程
主要通过比较4个参数进行角色选举:根桥ID、根路径开销、网桥ID和端口ID,值越小越优先。
- 选举根桥 (Root Bridge):在一个交换网络中选举一个根桥。
- 选举根端口 (Root Port):在每个非根桥上选举一个根端口。
- 选举指定端口 (Designated Port):为每个网段选举一个指定端口。
- 阻塞非指定端口:阻塞交换机上所有剩余的非根、非指定端口。
选举依据:
- 根桥选举:比较桥ID,最小胜出。
- 根端口选举:依次比较RPC、对端BID、对端PID和本端PID,最小胜出。
- 指定端口选举:依次比较RPC、本端BID和本端PID,最小胜出。
- 在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口被阻塞。
注:端口ID由端口优先级+端口号组成。
STP的端口状态迁移
STP的五种端口状态:
- Disabled状态:端口无法接收和发出任何帧(即:端口不仅不处理BPDU报文,也不转发用户流量),端口处于关闭(down)状态。
- Blocking状态:端口只能接收并处理BPDU,不能发送BPDU,也不能转发用户数据帧(用户流量),是阻塞端口的最终状态。
- Listening状态:端口可以接收并发送BPDU,但不进行MAC地址学习,也不能转发用户数据帧。这是过渡状态,用于确定端口角色,将选举出根桥、根端口和指定端口,同时用于防止临时环路。
- Learning状态:端口可以接收并发送BPDU,也可以进行MAC地址学习,根据收到的用户流量构建MAC地址表,但不能转发用户数据帧(用户流量)。这也是过渡状态,用于防止MAC地址表未建立,网络中出现大量数据帧泛洪。
- Forwarding状态:端口可以接收并发送BPDU,也可以进行MAC地址学习,同时能够转发用户数据帧(用户流量)。只有根端口或指定端口才能进入Forwarding状态。
STP的不足
STP的不足:
- STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。
- 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
- 从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。
- STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
- STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备再进行处理,最终传遍整个STP网络。
STP对计时器的依赖:
- 初始化场景:即便端口角色为指定端口或根端口,仍然需要等待两个Forward Delay时间才能进入转发。
- 终端接入场景:终端接入后,依然需要等到端口从Disabled状态切换到Forwarding状态,才能访问网络服务。(两个Forward Delay时间)
STP重收敛过程慢:
直连故障:需要等待两个Forward Delay时间才能恢复。(30s)
非直连故障:需要等待一个Max Age加上两个Forward Delay时间才能恢复。(50s)
直连故障:
- 两台交换机间有两条链路,其中一条是主用链路,另一条为备用链路。
- 当网络稳定时,交换机SW2检测到根端口的链路发生故障,则被阻塞的端口会开始端口状态迁移,最终进入用户流量转发状态。
非直连故障:
- 当网络正常时,SW3的被阻塞端口会定期收到来自根桥的BPDU。
- 当SW1与SW2之间的链路发生故障时,SW2能够第一时间检测到故障发生,此时它认为自己成为新的根桥,于是向SW3发送自己的配置BPDU(根桥ID为自己的桥ID)。
- SW3的被阻塞端口将收到上述配置BPDU,但该BPDU并不比当前端口所缓存的配置BPDU更优,因此SW3忽略该配置BPDU。
- 当Max Age计时器超时后,SW3端口上缓存的配置BPDU老化,SW3开始向SW2发送配置BPDU,该配置BPDU由根桥SW1发送的配置BPDU触发,其中的根桥ID字段值为SW1的桥ID。
- SW2收到上述配置BPDU后,解析该报文并认定SW1为根桥,于是将其连接SW3的端口切换为根端口。
RSTP对STP的改进
1、端口角色
RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口。
根端口和指定端口的作用同STP中定义,Alternate端口和Backup端口的描述如下:
从配置BPDU报文发送角度来看:
- Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。
- Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。
从用户流量角度来看:
- Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。
- Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。
给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程。
2、端口状态
RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:
- Discarding状态:不转发用户流量也不学习MAC地址;
- Learning状态:不转发用户流量但是学习MAC地址;
- Forwarding状:既转发用户流量又学习MAC地址。
STP端口状态 | RSTP端口状态 |
---|---|
Forwarding | Forwarding |
Leaning | Learning |
Listening | Discarding |
Blocking | Discarding |
Disabled | Discarding |
3、配置BPDU格式
除了保证和STP格式基本一致之外,RSTP作了如下变化:
- Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
- Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
RST BPDU与STP配置BPDU报文格式不同点,包括:BPDU类型和Flag字段。
- BPDU类型,1 Byte,RST BPDU的类型值为0x02。
- 标志,1 Byte,包括:
- bit 7:TCA,表示拓扑变化确认;
- bit 6:Agreement,表示同意,用于P/A机制;
- bit 5:Forwarding,表示转发状态;
- bit 4:Learning,表示学习状态;
- bit 3和bit 2:表示端口角色,00表示未知端口,01表示替代或备份端口,10表示根端口,11表示指定端口;
- bit 1:Proposal,表示提议,用于P/A机制;
- bit 0:TC,表示拓扑变化。
4、配置BPDU处理
拓扑稳定后,配置BPDU报文的发送方式:
- RSTP:非根桥设备自主按照Hello Time规定的时间间隔发送配置BPDU。
- STP:非根桥设备收到上游的配置BPDU后,才会出发发出配置BPDU,向下游发送。
BPDU超时时间:
- RSTP:一个端口在超时时间(即三个周期,超时时间=3倍Hello Time)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败,发送自己的RST BPDU 。
- STP:需要等待Max Age超时,才会认为邻居失效。(Max Age时间远大于3倍Hello Time)
处理次优BPDU:
RSTP:
- 任何端口角色都会处理次优BPDU;
- 某端口收到上游的指定桥发来的RST BPDU时,会与本地缓存RST BPDU进行比较,如果缓存中的优于收到的,则直接丢弃收到的RST BPDU,并回应自身缓存的RST BPDU。进行拓扑收敛。
STP:
- 只有指定端口会立即处理次优BPDU;
- 需要等Max Age超时后,缓存BPDU才会老化,然后发送自身更优的BPDU,进行新一轮的拓扑收敛。
注:回顾“STP的不足”中的非直连故障,理解起来更容易。
5、快速收敛机制
根端口和指定端口快速切换
根端口快速切换:如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。
指定端口快速切换:如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态。
边缘端口
如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。
边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态。
但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。
边缘端口的UP和Down,不会引起网络拓扑的变动。
PA机制
P/A机制详解
SW2的下游端口同步过程:替代端口,状态不变;边缘端口,不参与计算;阻塞非边缘指定端口。
6、拓扑变更机制
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。
7、保护功能
BPDU保护
交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
根保护
对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。
一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
根保护功能确保了根桥的角色不会因为一些网络问题而改变。
环路保护
当由于链路拥塞或者单向链路故障导致根端口收不到来自上游交换设备的RST BPDU时,此时交换设备会重新选择根端口。
如图所示,当SW1和SW3之间的链路发生单向链路故障时,SW3由于根端口在超时时间内收不到来自上游设备的BPDU报文,Alternate端口切换成根端口,根端口切换成指定端口,从而形成了环路。
防TC-BPDU攻击
如果SW3被恶意用户侵占,伪造大量TC置位的RST BPDU并向外发送。SW2收到这些RST BPDU后,会频繁执行MAC地址表项的删除操作,形成巨大负担。
RSTP的收敛过程
当一个端口收到RST BPDU报文时,此端口会比较收到的RST BPDU报文和本地的RST BPDU报文。如果本地的RST BPDU报文优于接收的RST BPDU报文,则端口会丢弃接收的RST BPDU报文,并发送Proposal置位的本地RST BPDU报文来回复对端设备
如图,RSTP下游链路的设备互联端口会进入慢收敛过程,以SW2与SW3为例。
RSTP基础配置命令
1、配置生成树工作模式
[Huawei] stp mod { stp | rstp | mstp}
交换机支持STP、RSTP和MSTP三种生成树工作模式。默认情况工作在MSTP模式。
2、(可选)配置当前设备为根桥
[Huawei] stp root primary
缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
3、(可选)配置当前设备为备份根桥
[Huawei] stp root secondary
缺省情况下,交换设备不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。
4、(可选)配置交换机的STP优先级
stp priority priority
取值范围是0~61440,步长为4096。缺省情况下,交换机的优先级取值是32768。
5、(可选)配置接口路径开销
[Huawei] stp pathcost-standard { dot1d-1998 | dot1t| legacy }
配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。
同一网络内所有交换机的接口路径开销应使用相同的计算方法。
[Huawei-GigabitEthernet0/0/1] stp cost cost
设置当前接口的路径开销值。
6、(可选)配置接口优先级
[Huawei-GigabitEthernet0/0/1] stp priority priority
整数形式,取值范围是0~240,步长为16。缺省情况下,交换机接口的优先级取值是128。
7、启用STP/RSTP
[Huawei] stp enable
使能交换机的STP/RSTP功能。缺省情况下,设备的STP/RSTP功能处于启用状态。
8、配置当前接口为边缘端口
[Huawei-GigabitEthernet0/0/1] stp edged-port enable
缺省情况下,交换设备的所有端口都是非边缘端口。
9、配置BPDU保护功能
stp bpdu-protection
缺省情况下,交换设备的BPDU保护功能处于禁用状态。
10、配置根保护功能
[Huawei-GigabitEthernet0/0/1] stp root-protection
缺省情况下,端口的根保护功能处于去使能状态。当端口的角色是指定端口时,配置的根保护功能才生效。配置了根保护的端口,不可以配置环路保护。
11、配置环路保护功能
[Huawei-GigabitEthernet0/0/1] stp loop-protection
配置交换设备根端口或Alternate端口的环路保护功能。缺省情况下,端口的环路保护功能处于关闭状态。
12、配置TC保护功能
[Huawei] stp tc-protection interval interval-value
配置设备处理阈值指定数量的拓扑变化报文所需的时间。缺省情况下,设备处理最大数量的拓扑变化报文所需的时间是Hello Time。
[Huawei] stp tc-protection threshold threshold
配置交换设备在收到TC类型BPDU报文后,单位时间内,处理TC类型BPDU报文并立即刷新转发表项的阈值。省情况下,设备在指定时间内处理拓扑变化报文的最大数量是1。
配置案例
思考题
-
BCD
-
B。只能配置在指定端口上。