生成树技术:RSTP协议基础知识

RSTP概述

由于STP协议的缺点,引入了RSTP协议。

RSTP全称Rapid Spanning-Tree Protocol,快速生成树协议。该协议在IEEE 802.1W中有描述。

RSTP是从STP发展而来,实现的基本思想一致。
RSTP具备STP的所有功能,可以兼容STP运行。
RSTP和STP有所不同:
(1) 减少了端口状态。RSTP只有丢弃(Discarding)、学习(Listening)、转发(Forwarding)三个状态;
(2) 增加了端口角色。RSTP的端口角色有:根端口(Root Port)、指定端口(Designated Port)、替代端口(Alternate Port)、备份端口(Backup Port);
(3) BPDU格式及发送方式不同
(4) 配置BPDU的处理方式发生了变化。

  • 拓扑稳定后,STP根桥会周期性的向网络发送BPDU,而非根桥不会主动发送BPDU消息,只会周期性的在自己的根端口上收到BPDU,然后根据收到的BPDU,生成自己的BPDU并通过指定端口沿着STP树向下游转发。而RSTP在拓扑稳定后,无论是根桥还是非根桥,都将周期性地发送配置BPDU,也就是说对于非根桥而言,它们不用在根端口收到BPDU之后,才被触发而产生自己的配置BPDU,而是自发地、周期性发送BPDU。
  • 如果一个端口在超时时间(超时时间=Hello Time × 3 × Timer Factor)内有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商 失败。而不像STP那样需要先等待一个Max Age。
  • RSTP在BPDU的处理上的另一点改进是对于次优(Interior)BPDU的处理。
    • 运行STP的交换机在每个端口上保存一份BPDU,对于根端口及非指定端口而言,交换机保存的是发送自上游交换机的BPDU,而对于指定端口而言,交换机保存的是自己根据根端口的BPDU所计算出的BPDU。如果端口收到一份BPDU,而且该端口当前保存的BPDU比接收的BPDU更优,那么后者对于前者而言,就是次优BPDU。在STP中,当指定端口收到次优BPDU时,它将立即发送自己的BPDU。而对于非指定端口,当其收到次优BPDU时,它将等待端口所保存的BPDU老化后,再重新计算新的BPDU,并将新的BPDU发送出去,这将导致非指定端口需要最长20秒的时间(即Max age)才能启动状态迁移
    • 在RSTP中,无论端口的角色如何,只要端口收到次优BPDU,便立即发送自己的BPDU,这使得RSTP的收敛更快。

(5)引入快速收敛机制,包括Proposal/Agreement机制、根端口快速切换机制、新增边缘端口。

RSTP的端口角色

RSTP在STP的基础上,增加了两种接口角色:替代端口(Alternate Port)和备份(Backup Port)端口。因此,RSTP共有4个端口角色:根端口、指定端口、替代端口、备份端口

  • 转发状态的端口

    • 根端口(Root Port, 简写为RP):所在交换机上离根交换机最近的端口,处于转发状态。
    • 指定端口(Designated Port,简写为DP):转发所连接的网段发往根交换机方向的数据,从根交换机方向发往所连接的网段的数据,处于转发状态。
  • 丢弃状态的端口

    • 替代端口(Alternate Port,简写为AP):根端口的备份,不处于转发状态。由于收到了其他设备所发送的BPDU从而被阻塞的根端口。如果设备的根端口发生故障,那么替代根端口可以成为新的根根端口,这加快了网络的收敛过程。

      注意:一台设备如果是非根桥,那么它有且只能有一个根根端口。但是该设备可以没有替代根端口,也可以有,当存在替代根端口时,可以存在一个或多个。当设备的根根端口发生故障时,最优的替代根端口将成为新的根根端口。

    • 备份端口(BackupPort,简写为BP):指定端口的备份,不处于转发状态(在实际环境中,该角色比较少见,除非认为构造)。备份端口是一台设备上由于收到了自己所发送的BPDU从而被阻塞的端口。如果一台交换机拥有多个端口接入同一个网段,并且在这些端口中有一个被选举为该网段的指定端口,那么这些端口中的其他端口将被选举为备份端口,备份端口将作为该网段到达根桥的冗余端口。通常情况下,备份接口处于丢弃状态。
      在这里插入图片描述

RSTP的端口状态

RSTP相对于STP来说,减少了端口状态。RSTP只有丢弃(Discarding)、学习(Listening)、转发(Forwarding)三个状态。

STP端口状态RSTP端口状态端口状态对应的行为
DisabledDiscarding不转发用户流量也不学习MAC地址
Blocking
Listening
LearningLearning不转发用户流量但学习MAC地址
ForwardingForwarding既转发用户流量也学习MAC地址

BPDU

RSTP的配置BPDU被称为RST BPDU,它的格式与STP的配置BPDU大体相同,只是其中个别字段做了修改,以便适应新的工作机制和特性。

RST BPDU的格式如下:

+--------------------------------+
|              DMAC              |
+--------------------------------+
|              SMAC              |
+--------------------------------+
|            Length              |
+--------------------------------+
|           LLC header           |
+--------------------------------+-----------------------
|       Protocol Identifier      |                ^
+--------------------------------+                |
|  Protocol Version Identifier   |                |
+--------------------------------+                |
|           BPDU Type            |                |
+--------------------------------+                |
|              Flags             |                |
+--------------------------------+                |
|          Root Identifier       |                |
+--------------------------------+                |
|          Root Path Cost        |                |
+--------------------------------+                |
|       Bridge Identifier        |                |
+--------------------------------+                |
|        Port Identifier         |                |
+--------------------------------+                |
|           Message Age          |                |
+--------------------------------+               BPDU
|            Max Age             |              payload
+--------------------------------+                |
|          Hello Time            |                |
+--------------------------------+                |
|        Forward Delay           |                |
+--------------------------------+----------      |
|       Version 1 Length         |    RSTP/MSTP   |
|                                |    Extension   |
+--------------------------------+-----------------------
|               FCS              |
+--------------------------------+

相比于STP协议的配置BPDU消息来说,

  • RST BPDU的Protocol Version Identifier(协议版本号ID)字段的值为0x02;
  • RST BPDU的BPDU Type(BPDU类型)字段的值为0x02;
  • 在标志(Flags)字段,该字段一共8bit,STP中只使用了其中的最低比特位和最高比特位,而RSTP在STP的基础上,使用了剩余的6个比特位,并且分别对这些比特位进行了定义。
RST BPDU的"标志"字段从高位到低位依次是:
| TCA(1bit) | Aggreement(1bit) | Forwarding(1bit) | Learning(1bit) | Port Role(2bit) | Proposal(1bit) | TC(1bit) |

STP只使用了该字段的最高及最低比特位(最高位是TCA字段,表示拓扑变更响应。最低位TC字段,表示拓扑变更)。在RST BPDU中这两个比特位的定义及作用不变。另外,Aggrement(同意)及Proposal(提议)比特位用于RSTP的P/A(Proposal/Aggrement)机制,该机制大大地提升了RSTP的收敛速度。Port Role比特位的长度为2bit,它用于标识该RST BPDU发送接口的端口角色,01表示根端口,10表示替代端口或备份端口,11表示指定端口,而00则被保留使用。Forwarding(转发)及Learning(学习)比特位用于表示该RST BPDU发送端口的端口状态。

  • 多了一个Version 1 Length 字段(长度为1字节),该字段是指的Version1 BPDU的长度,值固定为0。只在RSTP和MSTP的BPDU中出现,STP的BPDU没有此字段。

RSTP如何实现快速收敛

边缘端口的引入

在前面我们知道,运行STP协议的端口,即使该端口接的是终端设备,也需要至少等待30秒的时间才能进入转发状态。

RSTP为了解决这种情况,引入了边缘端口的概念(Edge Port)。边缘端口需要手工配置。

边缘端口不参与生成树计算,当边缘端口被激活后,它可以立即切换到转发状态并开始收发业务流量,而不用经历转发延迟时间,因此工作效率大大提升了。在实际项目中,通常把用于连接终端设备的端口配置为边缘端口。

但如果边缘接口连接了交换设备并且收到了BPDU,则该接口立即变成一个普通的生成树接口,在这个过程中,可能引发网络中的RSTP重计算,从而对网络造成影响。为了避免对网络造成影响,一般是在配置边缘端口的同时,对该端口配置BPDU保护功能,该功能在后面的章节中会讲解。

RSTP的拓扑变更机制

如前文描述STP所说:

STP检测拓扑是否发生变化,由以下两个标准来判断:

(1)网桥至少有一个指定端口,并且某端口从其他状态(Blocking、Listening、Learning)转移到Forwarding状态。
(2)某端口从Forwarding、Learning、Listening状态转移到Blocking状态。
当以上两个条件至少满足一个时,STP交换机就会触发TCN BPDU。

STP的拓扑变更机制如下:先由变更点朝根桥方向发送TCN消息,收到该消息的上游交换机就会回复TCA消息进行确认,最后TCN消息到达根桥后,再由根桥发送TC消息通知设备删除桥MAC地址表项。

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

一旦检测到拓扑发生变化,运行RSTP的网络设备的变更机制如下:

(1)为本交换机的所有非边缘端口启动一个TC While Timer(Hello Time *2)。
(2)在这个时间内,清空所有端口上学习到的MAC地址
(3)同时,这些端口向外发送BPDU,其中TC置位
(4)一旦TC While Timer超时,则停止发送RST BPDU
(5)其他交换机接收到BPDU后,清空所有非边缘端口(除接收端口)学习到的MAC地址,然后也为自己所有的非边缘端口启动TC While Timer,重复上述过程。
(6)最终,网络中就会产生BPDU的泛洪。

P/A机制

Proposal/Agreement机制简称P/A机制,其目的是使一个指定端口尽快从丢弃状态进入 转发状态。P/A机制时交换机之间的一种握手机制。

如下图所示,根桥S1和S2之间新添加了一条链路。在当前状态下,S2的另外几个端口p2是Alternate端口,p3是指定端口且处于Forwarding状态, p4是边缘端口。
在这里插入图片描述

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

  • (1) p0和p1两个端口马上都先成为指定端口,发送RST BPDU。
  • (2) S2的p1口收到更优的RST BPDU,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU。
  • (3) S1的p0进入Discarding状态,于是发送的RST BPDU中把Proposal置 1。
  • (4) S2收到根桥发送来的携带Proposal的RST BPDU,立即启动一个同步过程。此时RSTP的机制是确保指定端口(SW1的p0)能够快速地进入转发状态,为了达到这个目的,必须确保该端口进入转发状态后网络中不存在环路,因此S2的思路是:先将本地的所有非边缘接口全部阻塞,然后答复S1它这里不存在环路,后者可以放心大胆地将接口切换到转发状态。已经处于丢弃状态的接口缺省即已完成同步,而边缘接口则不参与该过程,除此之外,交换机处于转发状态的指定端口需切换到丢弃状态以完成同步。S2收到S1发送的Proposal置位的BPDU后便立即启动同步过程,因为p2已经阻塞,状态不变;p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3。
  • (6)现在SW2的所有端口均已完成了同步,SW2清楚地知道本地的端口不存在环路,因此它立即将根端口p1切换到转发状态,并从该端口向S1发送Agreement置位的BPDU。
  • (7)当S1判断出这是对刚刚发出的Proposal的回应,于是端口p0马上进入Forwarding 状态。
  • (8)由于S2的指定端口p3此时依然处于丢弃状态,因此该端口也将向下游交换机发起一个P/A过程。

从实现上来看,P/A机制的过程其实是由几个变量控制的(IEEE 802.1w标准的17.9章节):proposing、proposed、sync、synced、agreed。

a) proposing. 当一个指定端口处于Discarding或Learning状态的时候,该变量置位。向下游交换机发送Proposal位被置位的RST BPDU。

b) proposed. 当端口收到对端的指定端口发来的携带Proposal的RST BPDU的时候,该变量置位。该变量指示本网段上的指定端口希望进入Forwarding状态。

c) sync. 当Proposed被设置以后,收到proposal的根端口会依次为自己的其他端口置位sync变量。如果端口是非边缘的指定端口是则会进入Discarding状态。

d) synced. 当端口完成转到Discarding后, 会设置自己的synced变量。Alternate、Backup 和边缘端口会马上设置该变量。根端口监视其他端口的synced,当所有其他端口的synced全被设置,根端口会设置自己的synced,然后传回RST BPDU,其中Agreement位被置位。

e) agreed. 当指定端口接收到一个RST BPDU时,如果该BPDU中的Agreement位被置位且端口角色字段是“根端口”,该变量被设置。Agreed变量一旦被置位,指定端口马上转入Forwarding状态。

事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发。而RSTP的主要目的就是消除这个瓶颈, 通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口转到 Forwarding状态的速度。

RSTP选举原理和STP本质上相同,选举根桥->选举非根交换机上的根端口->选举指定端口->选举预备端口和备份端口。但RSTP在选举的过程中加入了“发起请求-回复同意”(P/A机制)这种确认机制,由于每个步骤有确认,就不需要依赖计时器来保证网络拓扑无环才去转发,只需要考虑BPDU发送报文并计算无环拓扑的时间(一般都是秒级)。

根端口快速切换机制

如果RSTP网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口并直 接进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口 可以通往根桥。

如下图所示,当SWC与SWA的直连链路down掉,其AP端口切换成RP端口并进入转发状态可在秒级时间内完成收敛。
在这里插入图片描述

次优(Interior)BPDU的处理机制

RSTP在BPDU的处理上的另一点改进是对于次优(Interior)BPDU的处理。

  • 运行STP的交换机在每个端口上保存一份BPDU,对于根端口及非指定端口而言,交换机保存的是发送自上游交换机的BPDU,而对于指定端口而言,交换机保存的是自己根据根端口的BPDU所计算出的BPDU。如果端口收到一份BPDU,而且该端口当前保存的BPDU比接收的BPDU更优,那么后者对于前者而言,就是次优BPDU。在STP中,当指定端口收到次优BPDU时,它将立即发送自己的BPDU。而对于非指定端口,当其收到次优BPDU时,它将等待端口所保存的BPDU老化后,再重新计算新的BPDU,并将新的BPDU发送出去,这将导致非指定端口需要最长20秒的时间(即Max age)才能启动状态迁移
  • 在RSTP中,无论端口的角色如何,只要端口收到次优BPDU,便立即发送自己的BPDU,这使得RSTP的收敛更快。
    在这里插入图片描述

RSTP保护

为了更好的保证RSTP协议在网络不稳定的情况下,尽可能的保证流量的正常转发,在标准协议中新增了4种保护功能。

保护机制应用端口作用
BPDU保护边缘端口边缘端口收到BPDU后,把边缘端口shutdown
根保护指定端口一旦收到更优的BPDU,把端口进入Discarding
TC保护全局在单位时间内,只处理指定次数的TC BPDU报文
环路保护根端口或者预备端口如果根端口或预备端口长时间收不到来自上游设备的BPDU报文时,端口会进入Discarding状态,角色切换为指定端口,不转发报文,从而不会在网络中形成环路

BPDU保护

  • 保护场景:有人伪造RST BPDU恶意攻击交换机,引起网络震荡。
    如图所示:S3上将与PC相连的端口设置为边缘端口,当边缘端口接收到RST BPDU时,交换机会自动将边缘端口设置为非边缘端口,并重新进行生成树计算。当攻击者发送的RST BPDU报文中的桥优先级高于现有网络中根桥优先级时会改变当前网络拓扑,可能会导致业务流量中断。

    当交换机上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被立即关闭,但是边缘端口属性不变。
    在这里插入图片描述

  • 解决方案:如果边缘端口收到BPDU报文,边缘端口将会被立即关闭。

根保护

  • 保护场景:由于错误配置或者恶意攻击,合法根桥失去根低位,引起网络拓扑变动。
  • 解决方案:如果指定端口收到更优的RST BPDU,端口状态将进入Discarding状态,不再转发报文。
    注意:根保护功能只能在指定端口上配置生效。

如图所示,DeviceA和DeviceB处于网络核心层,两者间的链路带宽为1000M,DeviceA为网络中的根桥。DeviceC处于接入层,DeviceC和DeviceA、DeviceC和DeviceB之间的链路带宽为100M。正常情况下,DeviceB和DeviceC之间的链路被阻塞。
当DeviceD新接入DeviceC时,由于DeviceD的桥优先级高于DeviceA,此时DeviceD会被选举为新的根桥,如果两个核心交换机DeviceA和DeviceB之间的千兆链路被阻塞,会导致VLAN中的流量都通过两条100M链路传输,可能会引起网络拥塞及流量丢失。

此时可以在DeviceC连接DeviceD的端口上,配置根保护。对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入Discarding状态,不再转发报文。在经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
在这里插入图片描述

TC保护

  • 保护场景:有人伪造TC-BPDU报文恶意攻击交换机时,交换机短时间内会收到很多TC-BPDU报文,交换机收到TC BPDU报文后,会执行MAC地址表项删除操作,频繁的删除操作会给设备和网络稳定性带来很大的负担和隐患。

  • 解决方案:在单位时间内,RSTP进程处理TC-BPDU报文的次数可配置。

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

环路保护

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

    如图所示,当BP2-CP1之间的链路发生拥塞时,DeviceC由于根端口CP1在超时时间内收不到来自上游设备的BPDU报文,Alternate端口CP2放开转变成了根端口,根端口CP1转变成指定端口,从而形成了环路。
    在这里插入图片描述

  • 解决方案:配置环路保护。

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

  • 在替代接口上开启环路保护功能后,如果替代接口长时间没有收到 BPDU ,交换机会把替代接口调整为指定接口,且接口状态保持在丢弃状态,从而避免出现环路。

RSTP的不足

802.1W与802.1D相比有了巨大的进步,他解决了交换网络的快速收敛问题。
但RSTP和STP还存在一个共同的不足,就是两种协议都是单生成树协议,所有VLAN共享一颗生成树。不能形成基于VLAN的多生成树协议。

比如,如下图所示,可能右侧链路对于VLAN10和VLAN20都是Discarding状态。如果要是能让VLAN 20的流量全走左边,VLAN 10的流量全走右边就好了。这样就能实现链路的负载分担了。
在这里插入图片描述
又比如,在局域网内应用STP或RSTP,生成树结构在图中用虚线表示,S6为根桥。S2和S5之间、S1和S4之间的链路被阻塞,图中标注的“VLAN”为链路允许通过的VLAN报文。
HostA和HostB同属于VLAN2,由于S2和S5之间的链路被阻塞,S3和S6之间的链路又不允许VLAN2的报文通过,因此HostA和HostB之间无法互相通讯。
在这里插入图片描述
基于上述的缺点,提出了MSTP协议。

参考文献:

1、《HCNP路由交换学习指南》

2、华为 S7700 V200R019C10 配置指南-以太网交换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值