33 张图详解 RSTP 、MSTP、替代技术_服务器

STP 的弊端

上次有写过一篇《图解 STP 》的文章,里面有提到 STP 的功能是消除环路链路备份,同时也发现 STP 的一些问题:

  • 网络收敛速度慢:BPDU 的 Max Age 值是 20 秒,接口从侦听到学习状态和从学习到转发状态分别有一个 15 秒的转发延迟时间,因此一个接口从阻塞到转发状态需要 30 ~ 50 秒的时间,这段时间内接口无法正常使用。

33 张图详解 RSTP 、MSTP、替代技术_服务器_02

  • 接口状态不合理:STP 接口的禁用、阻塞、侦听状态类似,功能高度重合。

33 张图详解 RSTP 、MSTP、替代技术_链路_03

  • 拓扑变化依赖计时器:根交换机发送配置 BPDU 的 Hello Time 是 2 秒,非根交换机即使没收到 BPDU ,也要在 Max Age 的 20 秒后,才会重新计算 STP 。

33 张图详解 RSTP 、MSTP、替代技术_解决方案_04

什么是收敛?

收敛是指网络进入稳定状态。比如在 STP 中所有接口获得接口角色,进入转发或阻塞状态。收敛时间是指网络从发生变化到进入稳定状态的时间。

RSTP

鉴于 STP 的优缺点都很明显,弃之又觉得可惜,还是抢救一下吧。于是升级版的 RSTP 出现了,对 STP 进行了大量的改进。

RSTP 增加新的接口角色,其中的替代接口可在交换机的根接口失效时,立即成为新的根接口,获取新的路径到达根桥。RSTP 使用 P/A 机制,让指定接口能够快速进入转发状态,而不用像 STP 那样经过 Forward Delay 时间。RSTP 还新增边缘接口的概念,让交换机接入终端设备的接口立即进入转发状态。

RSTP 接口角色

RSTP 在 STP 的基础上增加了接口角色,4 种接口角色分别是:根接口( RP )、指定接口( DP )、替代接口( Alternate Port ,AP )和备份接口( Backup Port ,BP )。根接口和指定接口与 STP 中定义相同,对于 STP 的非根非指定接口,RSTP 将其分为两种,一种是替代接口,另一种是备份接口。

33 张图详解 RSTP 、MSTP、替代技术_解决方案_05

1、替代接口( Alternate Port ,AP )

替代接口就是根接口的备份,由于收到其它交换机发送的更优 BPDU 而被阻塞的接口。如果根接口发生故障,那么替代接口会成为新的根接口。接口切换过程中,无需延时,无需 BPDU 交互,立马进入到转发状态。

一台交换机如果是非根桥,那么它有且只有一个根接口,但是这台交换机可以没有替代接口,也可以有,当有替代接口时,可以有一个或多个。当交换机的根接口发生故障时,最优的替代接口将成为新的根接口。

33 张图详解 RSTP 、MSTP、替代技术_服务器_06

如上图所示,SW1 是网络中的根桥,SW3 有两个接口接入到网络中,由于 G0/11 比 G0/12 到达根桥的 RPC 更小,G0/11 成为 SW3 的根接口。G0/12 收到 SW2 发送的 BPDU ,经过 SW3 计算后决定阻塞,成为 SW3 的替代接口。

2、备份接口( Backup Port ,BP )

备份接口也是指定接口的备份,备份接口是交换机收到了自己发送的 BPDU 而被阻塞的接口。如果一台交换机的多个接口在同一个物理网段内,其中一个选举为指定接口,其它接口选举为备份接口且处于丢弃状态,备份接口作为这个网段到达根桥的冗余接口。如果交换机的指定接口发生故障,最优的备份接口成为新的指定接口,为根交换机与这条链路提供另一条转发通道,实现与这个网段的数据交互。

备份接口通常在这两种情况下出现,一种是交换机的多个接口连接到一台集线器( Hub )上,但是集线器和共享网络几乎绝迹。另一种情况是同一台交换机的两个接口通过一条网线连接起来,这种通常是人为的误操作。因此备份接口比较少见。

33 张图详解 RSTP 、MSTP、替代技术_字段_07

如上图所示,SW1 是网络中的根桥,SW2 的 G0/11 和 G0/12 接口形成自环,RSTP 能够检测到这个环路,并在这两个接口中选择一个进行阻塞。由于 G0/11 接口的接口 ID 更小,成为 SW2 的指定接口,而 G0/12 接口成为备份接口,备份接口被阻塞。

33 张图详解 RSTP 、MSTP、替代技术_链路_08

如上图所示,SW2 的两个接口连接在同一台集线器( Hub )上,集线器收到数据后会拷贝到其它所有接口,而且集线器不支持 STP/RSTP ,因此 SW2 从 G0/11 接口发出的 BPDU 会被集线器发送到 SW2 的 G0/12 接口,反之亦然。当 SW2 的指定接口 G0/11 出现故障时,备份接口 G0/12 将接替它的工作,负责与相应的网段实现数据交互。

RSTP 接口状态

STP 有 5 种接口状态,分别是禁用、阻塞、侦听、学习和转发,而 RSTP 对接口状态进行了简化,把禁用、阻塞、侦听状态合并为丢弃状态( Discarding )。因为这三类状态的功能区别不大,接口都不学习 MAC 地址,也不转发数据,这也是丢弃状态接口的处理方式。那么 RSTP 就是 3 种状态,即丢弃状态( Discarding )、学习状态( Learning )和转发状态( Forwarding )。学习和转发状态保持不变,和 STP 中的定义相同。

33 张图详解 RSTP 、MSTP、替代技术_链路_09

边缘接口

如果交换机的接口连接的是终端设备,比如 PC 、服务器、打印机等,而不是其它交换机的接口,那么这些接口不太可能造成环路。我们就可以将交换机的接口配置为边缘接口( Edge Port ),边缘接口默认不参加生成树计算。当边缘接口被开启后,立即切换到转发状态并开始收发数据流量,而不用经历转发延迟时间,提升网络效率。边缘接口的开启和关闭都不会触发 RSTP 拓扑变更。

33 张图详解 RSTP 、MSTP、替代技术_解决方案_10

P/A 机制

在 STP 中,交换机的一个接口成为指定接口后,还需要经过侦听和学习状态,即经过 30 秒时间,才能进入转发状态。而 RSTP 引入 P/A 机制( Proposal/Agreement ,握手/赞同),让指定接口与对端接口进行握手,并逐级进行传递避免环路,这个过程不使用计时器。也就是说,完成握手的 RSTP 指定接口从丢弃状态直接进入到转发状态,而不需要经过其它状态,加速生成树的收敛。

33 张图详解 RSTP 、MSTP、替代技术_服务器_11

Proposal 消息和 Agreement 消息都是 BPDU 。交换机通过 BPDU 中的 Flag(标记)字段来标识 BPDU 的不同类型,包括 Proposal BPDU 和 Agreement BPDU 。

33 张图详解 RSTP 、MSTP、替代技术_服务器_12

如上图所示,在 SW1 和 SW2 新增一条链路,由于 SW1 的桥优先级最高,成为这个网络中的根桥,SW1 的 G0/1 接口成为指定接口,SW2 的 G0/2 接口成为根接口。如果是运行 STP ,那么指定接口和根接口必须经历侦听和学习状态才能进入转发状态。

如果网络中运行的是 RSTP ,当 SW1 与 SW2 之间新增一条链路后。

  1. SW1 和 SW2 马上在各自的接口上发送 BPDU ,开始的时候双方都认为自己是根桥。

33 张图详解 RSTP 、MSTP、替代技术_字段_13

  1. 经过 BPDU 交互后,SW2 认为 SW1 才是根桥。这时 SW1 的 G0/1 接口成为指定接口,SW2 的 G0/2 接口则成为根接口,并马上停止发送 BPDU 。这两个接口都处于丢弃状态。

33 张图详解 RSTP 、MSTP、替代技术_生成树_14

  1. 接下来 P/A 过程会发生在 SW1 和 SW2 之间。SW1 从 G0/1 接口发送 Proposal 消息,希望自己能够立刻进入转发状态。

33 张图详解 RSTP 、MSTP、替代技术_链路_15

  1. 而 SW2 在收到 Proposal 消息后,首先会判断接收 Proposal 消息的接口是不是根接口。在确认自己收到 Proposal 的接口是根接口后,SW2 为了避免出现环路,阻塞自己所有非边缘的指定接口,使这些接口都进入到丢弃状态,这个操作称为 P/A 同步机制。边缘接口不参与这个过程。

33 张图详解 RSTP 、MSTP、替代技术_生成树_16

  1. 在 SW2 所有接口完成同步后,SW2 清楚的知道自己的接口不存在环路,马上将根接口 G0/2 切换到转发状态,并从根接口向 SW1 发送 Agreement 消息。

33 张图详解 RSTP 、MSTP、替代技术_生成树_17

  1. SW1 在 G0/1 接口上收到 Agreement 消息后,立刻将 G0/1 接口切换成转发状态,这时 PC1 和 PC2 就可以通信了。

33 张图详解 RSTP 、MSTP、替代技术_服务器_18

整个 P/A 过程很快就完成了,在新增链路后的极短时间内,PC2 就可以和 PC1 通信。另外,由于 SW2 的指定接口 G0/4 还是处于丢弃状态,那么这个接口也会向下游交换机发起一个 P/A 过程。

保护功能

交换机有多种保护功能,用于提升生成树协议的稳定性。

1、BPDU 保护( BPDU Protection )

当边缘接口收到 BPDU 后,会马上变成一个普通的 RSTP 接口,可能引发网络中 RSTP 重新计算,从而对网络造成影响。通常边缘接口连接终端设备,应该不会收到 BPDU ,但是如果误接了交换机,那么这个边缘接口就有可能收到 BPDU ,会引入环路隐患。还有一种情况是恶意用户连接边缘接口后,发起 BPDU 攻击,也会对网络造成很大影响。

通过在交换机上开启 BPDU 保护功能就可以解决这个问题。当交换机开启这个功能后,如果边缘接口收到 BPDU ,那么交换机马上把接口关闭,置为 Error-Down ,同时触发告警。

33 张图详解 RSTP 、MSTP、替代技术_链路_19

如果受到保护的边缘接口因为收到 BPDU 而被关闭,默认情况下是不会自动恢复的,需要在交换机上手动执行命令开启来恢复接口。除此之外,还可以手动设置接口自动恢复功能,在指定时间后自动恢复。

2、根保护( Root Protection )

RSTP 根据根桥计算出无环拓扑,根桥是很重要的。在已经完成收敛的 RSTP 网络中,如果根桥发生变化,那么 RSTP 就会重新计算,重新计算时网络将不可用。通常我们会选择网络中性能最好和位置最重要的设备作为根桥,将其优先级设置为最小值 0 ,但是这个措施并不能保证这个设备永远是网络中的根桥,毕竟根桥的角色是可以抢占的。如果网络中新接入的交换机优先级被配置为 0 ,恰好 MAC 地址比根桥更小,那么新交换机将抢占成为新的根桥,还会造成网络的 RSTP 重新计算,从而对网络造成影响。

33 张图详解 RSTP 、MSTP、替代技术_解决方案_20

在交换机的相关接口部署根保护功能,就可以规避这个问题。当根桥的指定接口开启根保护功能后,这个指定接口如果收到更优的 BPDU ,就会过滤这个 BPDU ,并将接口切换至丢弃状态,这样根桥的地位就可以保持。如果这个指定接口不再收到更优的 BPDU,那么两倍的转发延迟时间后,接口自动恢复到转发状态。

3、环路保护( Loop Protection )

当网络中出现线路单向故障或者网络拥塞时,交换机的根接口和丢弃状态的替代接口将无法正常接收 BPDU ,就会导致交换机重新进行 RSTP 重新计算,接口的角色和状态会发生变化,可能会在网络中引入环路。

33 张图详解 RSTP 、MSTP、替代技术_服务器_21

如上图所示,SW1 是根桥,SW3 的 G0/11 是根接口,G0/12 是替代接口处于丢弃状态。SW3 的 G0/12 接口虽然处于丢弃状态,但是会持续侦听 BPDU 。当网络正常时,SW3 会在 G0/12 接口上周期性的收到 BPDU 。如果 SW2 和 SW3 的链路出现单向故障,从 SW2 到 SW3 不通,从 SW3 到 SW2 正常。那么 SW3 的 G0/12 接口无法收到 SW2 发送的 BPDU ,导致 SW3 认为 G0/12 接口的上游设备故障。过了 Max Age 时间后,SW3 的 G0/12 接口会成为指定接口,并切换到转发状态,然后开始发送流量。但是 SW2 并未发生故障,因此一旦 SW3 的 G0/12 接口切换到转发状态,网络中便出现了环路。

使用环路保护功能可以规避这个问题:

  • 根接口上开启环路保护功能后,如果根接口长时间没有收到 BPDU ,交换机会重新选举根接口,原来的根接口调整为指定接口,且接口状态切换成丢弃状态,从而避免出现环路。
  • 替代接口上开启环路保护功能后,如果替代接口长时间没有收到 BPDU ,交换机会把替代接口调整为指定接口,且接口状态保持在丢弃状态,从而避免出现环路。
4、拓扑变更保护( TC Protection )

一个稳定的网络是不会频繁出现拓扑变更的,一旦网络拓扑出现变更,TC BPDU( TC 置位的 BPDU )会泛洪到全网,而 TC BPDU 会让交换机执行 MAC 地址表删除的操作。如果网络环境很不稳定,导致 TC BPDU 频繁的泛洪,或者是网络中存在恶意用户,发送大量的 TC BPDU 对网络进行攻击,那么会极大消耗交换机的性能。

交换机开启拓扑变更保护功能后,默认将在 2 秒内只进行一次的 TC BPDU 处理,如果在 2 秒内收到了 2 个及以上的 TC BPDU ,那么交换机只会处理一次,对于超出的部分,必须等待 2 秒后才进行处理。

BPDU

RSTP 的配置 BPDU 称为 RST BPDU( Rapid Spanning Tree BPDU ),它的格式和 STP 的配置 BPDU 差不多,只有个别字段做了修改。RST BPDU 的 “ 协议版本 ID ” 字段值是 0x02 ,“ BPDU 类型 ”字段值是 0x02 。主要变化是在 “ 标志 ” 字段,这个字段一共 8 bit ,STP 只使用了最高比特位和最低比特位,而 RSTP 使用了剩余的 6 个比特位,并对这些比特位分别进行了定义。

33 张图详解 RSTP 、MSTP、替代技术_生成树_22

RST BPDU 的 ​​Aggrement​​(同意)和 ​​Proposal​​(提议)比特位用于 P/A( Proposal/Aggrement )机制。​​Port Role​​(接口角色)比特位是 2 bit ,用于标识 RST BPDU 发送接口的接口角色,01 表示根接口,10 表示替代接口,11 表示指定接口,而 00 保留使用。最后的 ​​Forwarding​​(转发)和 ​​Learning​​(学习)比特位表示 RST BPDU 发送接口的接口状态。

RSTP 与 STP 不同,在网络收敛后,无论是根桥还是非根桥,都会周期性的发送配置 BPDU,对于非根桥,不需要在根接口收到 BPDU 之后而产生自己的配置 BPDU ,而是自发的、周期性发送 BPDU 。

MSTP

虽然 RSTP 对 STP 进行了改进,但是还有一个缺陷,那就是所有 VLAN 共用一棵生成树。这样就无法实现负载分担,导致线路带来利用率低、设备资源利用率低。

33 张图详解 RSTP 、MSTP、替代技术_字段_23

如果有一种生成树协议,基于 VLAN 进行生成树的计算,那么这种技术有哪些优缺点?优点很明显,交换机为每一个 VLAN 单独计算一棵生成树,可以实现流量的负载分担。但是也有一个缺陷,如果网络中的 VLAN 数量很多,那么所有交换机都要为每一个 VLAN 计算一棵生成树,那么设备的资源消耗巨大,甚至会影响到正常流量的处理。

33 张图详解 RSTP 、MSTP、替代技术_服务器_24

为了解决这个问题,MSTP( Multiple Instances Spanning Tree Protocol )出现了,兼容 STP 和 RSTP 。生成树不是基于 VLAN 运行的,而是基于 ​​Instance​​(实例)运行的。Instance 是一个或多个 VLAN 的集合。

我们可以将一个或多个 VLAN 映射到一个 Instance ,然后 MSTP 基于 Instance 计算生成树。基于 Instance 的生成树称为 MSTI( Multiple Spanning Tree Instance ,多生成树实例),MSTP 为每一个 Instance 维护独立的 MSTI 。映射到同一个 Instance 的 VLAN 共享一棵生成树。可根据实际需求,在交换机上创建多个 Instance ,然后将指定的 VLAN 映射到相应的 Instance 。一个 Instance 可以包含多个 VLAN ,但是一个 VLAN 只能被映射到一个 Instance 。

在创建 Instance 后,我们可以对 MSTI 进行主根桥次根桥接口优先级Cost 等配置。如果网络中有大量 VLAN ,那么我们可以将 VLAN 按照一定规律分别映射到不同的 Instance 中,从而实现负载分担,而交换机仅对这几个 Instance 进行生成树计算,设备资源消耗大大降低。

33 张图详解 RSTP 、MSTP、替代技术_服务器_25

MSTP 引入了( Region )的概念,我们可以将网络划分成多个 MST 域( Multiple Spanning Tree Region ,多生成树域),一个 MST 域可以包含一台或多台交换机,同一个 MST 域的交换机必须配置相同的域名( Region Name )、相同的修订级别( Revision Level ),以及相同的 VLAN 与 Instance 的映射关系。

替代方案

学完 STP/RSTP/MSTP 后,解决网络中的二层环路问题,想到的解决方案就是生成树协议。但是生成树协议有天生的缺陷,收敛速度慢,虽然 RSTP/MSTP 对 STP 进行了改进,但是在毫秒级切换的要求下,生成树就不适用了。而且生成树的原理是将环路中的接口进行阻塞,导致被阻塞的线路无法承载流量,造成网络资源的浪费。MSTP 在这方面进行了优化,让不同 VLAN 的流量可以在不同线路进行负载分担,可是对于单个 VLAN 来说,始终会有一些线路无法承载流量。现在已经有许多其它技术或解决方案用于替代生成树协议。

1、Smart Link

Smart Link 是为双上行组网定做的解决方案。

33 张图详解 RSTP 、MSTP、替代技术_字段_26

如上图所示,交换机 SW3 一条上行链路连接 SW1 ,另一条上行链路连接 SW2 。在 SW3 上创建 Smart Link 组,将 SW3 的两个上行接口添加到这个组里,G0/1 口指定为 Master 接口、G0/2 口指定为 Slave 接口。默认只有 Master 接口是活跃的( Active ),这个接口可以正常收发流量,而 G0/2 接口会被阻塞( Inactive )。这样网络中的二层环路将被打破。

33 张图详解 RSTP 、MSTP、替代技术_解决方案_27

如上图所示,当 SW3 的 G0/1 接口发生故障,或者线路发生故障,Smart Link 会马上感知到,并且实现毫秒级的快速切换,G0/2 接口将立即切换到 Active 状态,并开始收发流量。在 Smart Link 切换过程中,SW3 还可以使用 Flush 报文去刷新上联设备,即 SW1 和 SW2 的 MAC 地址表等数据,加快网络收敛。

Smart Link 配置简单,切换时间快。由于工作机制的限制,只能适用于特定的双上行组网场景。SW1 、SW2 和 SW3 使用 Smart Link 防环后,也就不需要使用生成树协议了。

2、iStack/CSS

iStack 是华为盒式交换机的堆叠技术。而 CSS( Cluster Switch System ,集群交换系统)是华为框式交换机的集群技术。

什么是堆叠?

所谓堆叠,是指多台物理交换机通过特定的线缆连接,并通过相应的配置,组成逻辑上的一台设备的技术。

33 张图详解 RSTP 、MSTP、替代技术_解决方案_28

STP/RSTP/MSTP 或 Smart Link 都是采用阻塞特定接口的方式实现网络的无环化,使得网络资源得不到充分利用。一旦使用堆叠/集群技术,情况就不一样了。如上图所示,假设 SW1 和 SW2 都是盒式交换机,且都支持 iStack ,那么可以使用堆叠线缆把 SW1 和 SW2 连接起来,然后组建堆叠系统,建立完成后,SW1 和 SW2 不再是两台单独的交换机,而是一个有两个槽位的框式交换机。那么网络结构将大大简化,由于 SW1 和 SW2 在逻辑上是一台设备,设备的管理和配置将变得简单。SW3 分别与 SW1 、SW2 互联的线路,现在可以看做是两台交换机之间的两条链路,我们可以将这两条链路进行聚合,这样网络中将不存在二层环路,也无需部署防环技术。而且所有的链路都处于工作状态,没有接口被阻塞,设备资源和链路资源的利用率将最大化。

3、无二层环路场景

33 张图详解 RSTP 、MSTP、替代技术_生成树_29

在一些网络中,我们会人为的将网络中的二层环路打破,从而规避防环技术的应用。如上图所示,汇聚层交换机 DSW1 、DSW2 与接入层交换机 ASW1 、ASW2 构成一个倒 U 型组网,ASW1 和 ASW2 之间未连线,因此这四台交换机组成的网络中,并不存在二层环路,也就无需使用生成树技术或其它防环技术了。

这个网络中,服务器使用了双上行链路,服务器的两张网卡以主备的方式运行,假设连接 ASW1 的网卡为主网卡。如果 ASW1 和 DSW1 的链路发生故障,服务器是无法感知到的,依然会从主网卡发送数据,而数据到达 ASW1 后被丢弃。一种解决方案就是在服务器上部署相应的应用程序,周期性的从主网卡发出探测报文,来探测到默认网关的可达性,DSW1 和 DSW2 上配置服务器的默认网关,如果发现主网卡到默认网关不可达,则自动将流量切换到备网卡。

另一种解决方案就是使用华为的 Monitor Link 技术。Monitor Link 是一种接口联动技术,交换机部署后会持续监控 Monitor Link 的上行接口(可指定接口),当上行接口发生故障时,交换机马上将下行接口(可指定接口)关闭。ASW1 可部署 Monitor Link 技术,将 DSW1 的接口配置为上行接口,将连接服务器网卡的接口配置为下行接口。这样的话,当 ASW1 的上行接口发生故障,交换机立马将连接服务器的下行接口关闭,从而使得服务器立即感知到故障的发生,然后将连接 ASW2 的网卡切换成主网卡,并在新的主网卡上发送数据。

结尾

STP 可以在网络中形成一棵无环路的树,解决环路故障并实现冗余备份。

33 张图详解 RSTP 、MSTP、替代技术_服务器_30

RSTP 在 STP 功能基础上,通过替代接口让根接口快速进入转发状态、采用 P/A 机制和设置边缘接口等方法,实现了更快的收敛速度。

33 张图详解 RSTP 、MSTP、替代技术_字段_31

MSTP 则在大规模、多 VLAN 环境下形成多个生成树实例,从而提供多 VLAN 负载均衡。

33 张图详解 RSTP 、MSTP、替代技术_服务器_32

MSTP 同时兼容 STP 、RSTP ,运行 MSTP 的设备可以识别 STP 、RSTP 两种协议报,并应用于生成树计算。

另外 RSTP/MSTP 与 STP 的接口状态不同,从 STP 的 5 种变成 3 种。

33 张图详解 RSTP 、MSTP、替代技术_生成树_33

RSTP/MSTP 中,把禁用、阻塞、侦听三种状态合并为丢弃状态,减少状态数量,简化生成树计算,加快收敛速度。

33 张图详解 RSTP 、MSTP、替代技术_解决方案_34

RSTP/MSTP 有更快的收敛速度,简化的端口状态;MSTP 能够实现不同 VLAN 的负载分担。因此尽量使用 MSTP 来避免环路。



end