必知必会 | STP与RSTP的区别

2020-05-04 14:59:50 浏览数 (1)

1、端口角色

STP:RP、DP、BP(blocking)

RSTP: RP、DP、BP、AP、EP

2、端口状态

RSTP的状态规范把原来的5种状态缩减为3种。

根据端口是否转发用户流量和学习MAC地址来划分:

  • 如果不转发用户流量也不学习 MAC 地址,那么端口状态就是 Discarding 状态。
  • 如果不转发用户流量但是学习 MAC 地址,那么端口状态就是 Learning 状态。
  • 如果既转发用户流量又学习 MAC 地址,那么端口状态就是 Forwarding 状态。

STP端口状态

RSTP端口状态

端口在拓扑中的角色

Forwarding

Forwarding

包括根端口、指定端口

Learning

Learning

包括根端口、指定端口

Listening

Discarding

包括根端口、指定端口

Blocking

Discarding

包括 Alternate 端口、Backup 端口

Disabled

Discarding

包括 Disable 端口

3、Flag 位

STP

RSTP

4、保护机制

RSTP 提供的保护功能有:

(1)BPDU保护

在交换设备上,通常将直接与用户终端(如 PC 机)或文件服务器等非交换设备相连的端口配置为边缘端口。

正常情况下,边缘端口不会收到 RST BPDU。如果有人伪造 RST BPDU 恶意攻击交换设备,当边缘端口接收到 RST BPDU 时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。

交换设备上启动了 BPDU 保护功能后,如果边缘端口收到 RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。

(2)根保护

由于维护人员的错误配置或网络中的恶意攻击,网络中合法根桥有可能会收到优先级更高的 RST BPDU,使得合法根桥失去根地位,从而引起网络拓扑结构的错误变动。这种不合法的拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。

对于启用 Root 保护功能的指定端口,其端口角色只能保持为指定端口。一旦启用Root 保护功能的指定端口收到优先级更高的 RST BPDU 时,端口状态将进入 Discarding 状态,不再转发报文。在经过一段时间(通常为两倍的 Forward Delay),如果端口一直没有再收到优先级较高的 RST BPDU,端口会自动恢复到正常的 Forwarding 状态。

★说明:Root 保护功能只能在指定端口上配置生效。 ”

(3)环路保护

在运行 RSTP 协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游交换设备的 RST BPDU 维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的 RST BPDU 时,此时交换设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。

如图所示,当 BP2-CP1 之间的链路发生拥塞时(或者是单向链路故障) ,Device C由于根端口 CP1 在超时时间内收不到来自上游设备的 BPDU 报文,Alternate 端口 CP2放开转变成了根端口,根端口 CP1 转变成指定端口,从而形成了环路。

在启动了环路保护功能后,如果根端口或 Alternate 端口长时间收不到来自上游设备的 BPDU 报文时,则向网管发出通知信息(此时根端口会进入 Discarding 状态,角色切换为指定端口),而 Alternate 端口则会一直保持在阻塞状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。直到链路不再拥塞或单向链路故障恢复,端口重新收到 BPDU 报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。

★说明:环路保护功能只能在根端口或 Alternate 端口上配置生效。 ”

(4)防TC-BPDU攻击

交换设备在接收到 TC BPDU 报文后,会执行 MAC 地址表项和 ARP 表项的删除操作。如果有人伪造 TC BPDU 报文恶意攻击交换设备时,交换设备短时间内会收到很多 TC BPDU 报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。

启用防 TC-BPDU 报文攻击功能后,在单位时间内,交换设备处理 TC BPDU 报文的次数可配置。如果在单位时间内,交换设备在收到 TC BPDU 报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于其他超出阈值的 TC BPDU 报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除 MAC 地址表项和 ARP 表项,从而达到保护设备的目的。

5、RSTP EP 端口

(1)接入设备进入 Forwarding 状态,避免等待 30 秒延迟,直接转发

(2)边缘端口进入 Forwarding 状态时不产生 TC

(3)生成树拓扑变化时,进行** P/A** 收敛是不会被阻塞

(4)收到 TC 不删除 MAC 地址表

(5)不向边缘端口转发 TC 报文

(6)收到 BPDU 变为普通端口

6、端口快速切换机制

RSTP中,RP端口down后,AP会立马切换为RP。如果有多个AP会选择PID小的成为RP。

EP端口变为转发状态没有两个forwarding daly

7、P/A 机制

新链路连接成功后,P/A 机制协商过程如下:

(1)p0和p1两个端口马上都先成为指定端口,发送RST BPDU。

(2)S2的p1口收到更优的RST BPDU,马上意识到自己将成为根端口,而不是指定 端口,停止发送RST BPDU。

(3)S1的p0进入Discarding状态,于是发送的RST BPDU 中把proposa置1。

(4) S2收到根桥发送来的携带proposal的RST BPDU,开始将自己的所有端口进入sync 变量置位。

(5)p2已经阻塞,状态不变p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3。

(6)p2和p3都进入Discarding状态之后,端口的synced变量置位,根端口p1的synced也置位,于是便向S1返回Agreement位置位的回应RST BPDU。该RST BPDU携带和刚才 根桥发过来的BPDU一样的信息,除了Agreement位置位之外(Proposal位清零)。

(7)当S1判断出这是对刚刚发出的Proposal的回应,于是端口p0马上进入Forwarding状态。

以上 P/A 过程可以向下游继续传递。

事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发。

而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用 P/A 机制加快了上游端口转到Forwarding状态的速度。

★说明:P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成 功,指定端口的选择就需要等待两个Forward Delay,协商过程与STP一样。 ”

备注:交换机没有自动协商点对点的能力,如果端口状态全双工的,那交换机就工作 在点对点模式。全双工在物理层使用电子脉冲进行协商。

8、TC 处理机制

STP

  1. T 点接口发生变更后,下游设备会不间断地向上游设备发送 TCN BPDU 报文。
  2. 上游设备收到下游设备发来的 TCN BPDU 报文后,只有指定端口处理 TCN BPDU 报 文。其它端口也有可能收到 TCN BPDU 报文,但不会处理。
  3. 上游设备会把配置 BPDU 报文中的 Flags 的 TC 和 TCA 位设置 1,然后发送给下游设 备,告知下游设备停止发送 TCN BPDU 报文。
  4. 上游设备复制一份 TCN BPDU 报文,向根桥方向发送。
  5. 重复步骤 1、2、3、4,直到根桥收到 TCN BPDU 报文。
  6. 根桥把配置 BPDU 报文中的 Flags 的 TC 位置 1 后发送,通知下游设备直接删除桥 MAC 地址表项。

说明:

  • TCN BPDU 报文主要用来向上游设备乃至根桥通知拓扑变化。
  • 置位的TCA标记的配置BPDU报文主要是上游设备用来告知下游设备已经知道拓扑 变化,通知下游设备停止发送 TCN BPDU 报文。
  • 置位的TC标记的配置BPDU报文主要是上游设备用来告知下游设备拓扑发生变化,请下游设备直接删除桥 MAC 地址表项,从而达到快速收敛的目的。

RSTP拓扑变化处理

在 RSTP 中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到 Forwarding 状态。

一旦检测到拓扑发生变化,将进行如下处理:

  • 为本交换设备的所有非边缘指定端口启动一个 TC While Timer,该计时器值是 Hello Time 的两倍。

在这个时间内,清空状态从ForwardingDiscarding的端口上学习到的 MAC地址。同时,由这些端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送 RST BPDU。

  • 其他交换设备接收到 RST BPDU 后,清空所有端口学习到 MAC 地址,除了收到 RST BPDU 的端口。然后也为自己所有的非边缘指定端口和根端口启动 TC While Timer,重复上述过程。

如此,网络中就会产生 RST BPDU 的泛洪。

9、收到次级 BPDU 会立即回复优质 BPDU

当一个端口收到上游的指定桥发来的 RST BPDU 报文时,该端口会将自身存储的 RST BPDU 与收到的 RST BPDU 进行比较。

如果该端口存储的 RST BPDU 的优先级高于收到的 RST BPDU,那么该端口会直接丢弃收到的 RST BPDU,立即回应自身存储的 RST BPDU。当上游设备收到下游设备回应的 RST BPDU 后,上游设备会根据收到的 RST BPDU 报文中相应的字段立即更新自己存储的RST BPDU。

由此,RSTP 处理次等 BPDU 报文不再依赖于任何定时器通过超时解决拓扑收敛,从 而加快了拓扑收敛。

10、Timer

Rstp更短的BPDU超时计时,如果一个端口连续3个Hello Time时间内没有收到上游设备发送过来的配置 BPDU,那么该设备认为与此邻居之间的协商失败。而不像 STP 那样需要先等待一个 Max Age。默认情况下华为有一个时间因子,数值为3,所以超时时间为18S,2x3x3=18

0 人点赞