HCIP-7.5交换机RSTP快速生成树协议原理

1、RSTP快速生成树(rapid spanning Tree Protocol

RSTP(802.1w)是STP的升级版本。最根本的原因是BPDU的变化。最早在IEEE 802.1W-2001中提出,这种协议在网络结构发生变化时,能更快的收敛网络。它比802.1d多了一种端口类型:备份端口(backup port)类型,用来做指定端口的备份。

RSTP的主要功能:
1、 发现并生成局域网的一个最佳树型拓扑结构;
2、 发现拓扑故障并随之进行恢复,自动更新网络拓扑结构,启用备份链路,同时保持最佳树型结构。

2、RSTP基本计算过程

选举预备端口备份端口
DP(指定端口)用来发送或者中继最优的BPDU。
RSTP基本计算过程
SWC E0/1为DP中继BPDU -->LANA 云 -->SWD 同时也通过LANA 云–>E0/2 给自己。

Backup备份端口:这种由于学习到自己发送的配置BPDU报文而阻塞的端口。

上图中,E0/2在RSTP网络中作为备份端口。阻止接收到自己发送的配置BPDU报文。E0/1和E0/2口同时接入到以太网的同一网段,E0/1为指定端口,E0/2优先级低,则E0/2端口为备份端口。

Alternate预备端口:是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。

上图中,SWC学习到SWB发送的置BPDU报文,在进行计算后,为防止环路形成而阻塞的端口。与STP一样。

可以发现交换机端口角色-增加了Backup备份端口角色。
RSTP中的端口

端口角色描述
Root Port 根端口是所在交换机上离根交换机最近的端口,稳定时处于转发状态。
Designated Port指定端口转发所连接的网段发往根交换机方向的数据和从交换机方向发往所连接的网段的数据,稳定时处于转发状态。
Backup备份端口不处于转发状态,所属交换机为端口所连网段的指定交换机。指定端口的备份端口。
Alternate预备端口不处于转发状态,所属交换机不是端口所连网段的指定交换机。

边缘端口的引入

边缘端口(Edge Port)是指不直接与任何交换机连接,也不通过端口所连接的网络间接与任何交换机相连的端口。 当把一个交换机端口配置成为边缘端口之后,一旦端口被启用,则端口立即成为指定端口(Designated Port) ,立即进入转发状态。 和STP的配置命令相同但是在STP中是补丁,而在RSTP 是定义。

每次边缘端口PC关机后,由末节交换机将TCN上报到根桥,又由根桥发送TC扩散到全网二层网络,每个交换机都要刷新MAC地址。定义了边缘端口可以防止这一现象产生,并拒绝接入BPDU。

总结:边缘端口不参与RSTP运算,可以由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。

3、RSTP端口状态描述

3.1、交换机端口状态(五转三)去掉了侦听状态

在RSTP中只有三种端口状态,Discarding、Learning和Forwarding。802.1D中的禁止端口,监听端口,阻塞端口在802.1W中统一合并为禁止端口

端口状态描述
Discarding丢弃状态此状态下端口对接收到的数据做丢弃处理,端口不转发数据帧,不学习MAC地址表。
Learning学习状态此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU。
Forwarding转发状态此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU。

端口状态迁移原则

  • 在没有临时环路风险的情况下,使原本处于不转发状态下的端口在成为指定端口或根端口之后,尽可能快的进入Forwarding状态,加快收敛速度。

  • 存在环路风险,需要等待其他交换机完成计算。

因此,如何确认网络中有没有环路风险是RSTP的重要内容。

3.2、P/A机制(Proposal/Agreement机制)

Proposal-Agreement” 提议和同意。
提议和同意.

当SWD成为根桥后,SWD的E0/1由阻塞端口变成指定端口,正处于Discarding或Learning状态的时候,向SWC的E0/1发出传递Proposal位被置位的BPDU。这条BPDU作用提议是SWC的E0/1指定端口希望进入Forwarding状态。

当下游交设备SWC的E0/1端口收到这条被置位的BPDU后,将其它其他端口(如果端口是非边缘)的E0/2指定端口变成禁止端口则会进入Discarding状态,防止产生环路。然后会设置自己的synced变量,然后传回其中Agreement位被置位的BPDU。这时SWC的E0/1端口由原来的指定端口转化为根端口。

SWD收到Agreement位被置位的BPDU,SWD的E0/1马上转入Forwarding状态。

SWC的E0/2端口由禁止端口变成指定端口,从Discarding状态正处于Discarding或Learning状态的时候,向SWA的E0/1发出传递Proposal位被置位的BPDU。

SWA状态和上面一样忽略。

协商机制的前提-点到点链路
使用“Proposal-Agreement”的前提 是泛洪这两种消息的链路均为点到点链路,点到点链路是指两个交换机直接相连的链路。之所以必须使用点到点链路,是因为点到多点链路有环路风险。

点到多点链路有环路风险。
环路风险

如图所示,SWA向外发出一个Proposal提议之后,由于SWC是网络边缘,因此迅速返回一个Agreement,使SWA的新指定端口进入转发状态,但是此时SWB、 SWD和SWE等尚未完成Proposal- Agreement的泛洪过程,因此,网络中存在环路风险。

STP端口状态的切换必须被动的等待时间的超时。而RSTP端口状态的切换却是一种主动的协商。STP中的非根网桥只能被动的中继BPDU。而RSTP中的非根网桥对BPDU的中继具有一定的主动性。

RSTP(快速生成树协议)是生成树协议的一种改进版,旨在提高生成树协议的收敛速度。RSTP的基本计算包括以下几个方面:

桥优先级(Bridge Priority):RSTP中,每个桥都有一个桥优先级,其默认值为32768。桥优先级用于确定生成树算法中根桥的位置和生成树的根端口。桥的优先级越低,就越有可能成为根桥。

端口优先级(Port Priority):RSTP中,每个端口都有一个端口优先级,其默认值为128。端口优先级用于确定在每个桥中将成为根端口和设计端口的端口。端口优先级越低,就越有可能成为根端口或者设计端口。

端口状态:RSTP中,每个端口都有一个状态,其包括两个状态码:指定端口(designated port)和非指定端口(non-designated port)。指定端口是指在某个时刻被选为某个网段的活动端口,而非指定端口则是被堵塞或处于备份状态。

转发延迟时间:RSTP中,每个端口在状态转移时会有一个转发延迟时间,其默认值为2秒。这个时间用于等待其他端口是否有更优的路径,以免产生环路。

最大转发延迟时间:RSTP中,每个桥会有一个最大转发延迟时间,其默认值为15秒。如果一个端口的转发延迟时间超过了15秒,就会被认为是断开的。

基于以上的基本计算,RSTP可以实现快速的收敛和恢复。在RSTP中,当一个端口或者桥状态改变时,可以快速计算出新的生成树,从而保证网络的高可靠性和高性能。

4、RSTP的报文

RSTP的报文

Version: 协议版本,STP为0x00,RSTP为0x02,MSTP为0x03。

Message type: BPDU类型:

  • 0x00:STP的Configuration BPDU
  • 0x80:STP的TCN BPDU(Topology Change Notification BPDU)
  • 0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU)

Flag: 标志位,只使用了最低位和最高位,最低为TC标志,最高为TCA标志。

  • Bit7:TCA (Topology Change Acknowledgement)
  • Bit6:Agreement
  • Bit5:Forwarding
  • Bit4:Learning
  • Bit3和Bit2:端口角色
    00:未知
    01(低位为1高位为0):Alternate / Backup
    10(低位为0高位为1):根端口
    11:指定端口
  • Bit1:Proposal
  • Bit0:TC (Topology Change)

RSTP的报文抓包
Version 1 Length:Version1 BPDU的长度,值固定为0。只在RSTP和MSTP的BPDU中出现,STP的BPDU没有此字段。

5、RSTP与STP变化

  • 由802.1D升级到802.1w
  • 最重要的区别即快速收敛(本质在于BPDU结构的变化)
  • 端口角色的增加(RP、DP、AP,现在增加一个backup备份端口)
  • 端口状态的变迁(5种变为3种,disable和LIS被去掉)
  • 边缘端口的定义(在802.1D是补丁,在802.1w是定义的边缘端口,命令是一样的)
  • RSTP的proposal提议和aggrement同意机制(发生在点到点链路)
  • 配置BPDU报文的发送方式
    RSTP在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照hello time规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。
  • 更短的BPDU超时计时
    如果一个端口连续3个Hello Time时间内没有收上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。而不像STP那样需要先等待一个Max Age。
  • BPDU进行比较
    如果该端口存储的RST BPDU的优先级高于收到的RST BPDU,那么该端口会直接丢弃收到的RSTP BPDU,立即回应自身存储的RSTP BPDU。当上游设备收到下游设备回应的RSTP BPDU后,上游设备会根据收到的RSTP BPDU报文中相应的字段立即更新自己存储的RSTP BPDU。
  • 维持树
    rstp 中每台非根桥都会以自己的hello time时间间隔向其他非根桥发送 BPDU,以确认树的存在。
    如果突然某个拓扑结构发生了改变,如一个端口down掉了,那么该交换机会向其他交换机发送,TC BPDU来清空各个交换机的MAC地址表。

STP兼容
如果某个树结构中,两台交换机用RSTP协议,第三台使用STP协议,那么两台交换机与第三台连接的端口会向下兼容使用STP工作模式。

6、配置RSTP-基本配置

配置RSTP

[Huawei]sysn s1
[S1]stp mode rstp 
[S1]stp priority 4096

[S2]stp mode rstp 
[S2]stp priority 8192

[SW3]stp mode rstp
[SW4]stp mode rstp
[s1]dis stp bri
 MSTID  Port                        Role  STP State     Protection
   0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE
   0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
<s1>dis stp int g0/0/1
<s1>dis stp int g0/0/1
-------[CIST Global Info][Mode RSTP]-------
CIST Bridge         :4096 .4c1f-cc6a-7d23   CIST Bridge是交换机自己的ID
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :4096 .4c1f-cc6a-7d23 / 0     CIST Root是根交换机的ID
CIST RegRoot/IRPC   :4096 .4c1f-cc6a-7d23 / 0
CIST RootPortId     :0.0
BPDU-Protection     :Disabled
TC or TCN received  :35
TC count per hello  :0
STP Converge Mode   :Normal 
Time since last TC  :0 days 0h:0m:42s
Number of TC        :35
Last TC occurred    :GigabitEthernet0/0/1
----[Port1(GigabitEthernet0/0/1)][FORWARDING]----
 Port Protocol       :Enabled
 Port Role           :Designated Port
 Port Priority       :128
 Port Cost(Dot1T )   :Config=auto / Active=20000
 Designated Bridge/Port   :4096.4c1f-cc6a-7d23 / 128.1
 Port Edged          :Config=default / Active=disabled
 Point-to-point      :Config=auto / Active=true
 Transit Limit       :147 packets/hello-time
 Protection Type     :None
 Port STP Mode       :RSTP 
 Port Protocol Type  :Config=auto / Active=dot1s
 BPDU Encapsulation  :Config=stp / Active=stp
 PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 20
 TC or TCN send      :1
 TC or TCN received  :0
 BPDU Sent           :54             
          TCN: 0, Config: 0, RST: 54, MST: 0
 BPDU Received       :1             
          TCN: 0, Config: 0, RST: 1, MST: 0
[s1]dis stp
-------[CIST Global Info][Mode RSTP]-------
CIST Bridge         :4096 .4c1f-cc6a-7d23          交换机自己的ID
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :4096 .4c1f-cc6a-7d23 / 0      根交换机的ID   0代表自己
CIST RegRoot/IRPC   :4096 .4c1f-cc6a-7d23 / 0      0自已的MAC和优先级
CIST RootPortId     :0.0                         根的PortId
BPDU-Protection     :Disabled
TC or TCN received  :26
TC count per hello  :0
STP Converge Mode   :Normal 
Time since last TC  :0 days 0h:0m:49s
Number of TC        :22
<s3>dis stp bri
 MSTID  Port                        Role  STP State     Protection
   0    Ethernet0/0/1               DESI  FORWARDING      NONE
   0    Ethernet0/0/2               ROOT  FORWARDING      NONE
   0    Ethernet0/0/3               DESI  FORWARDING      NONE
   0    Ethernet0/0/4               BACK  DISCARDING      NONE

s3上出现3种端口,E0/0/1、E0/0/3为Designated Port指定端口,处于转发状态FORWARDING;E0/0/2为Root Port 根端口,处于处于转发状态;E0/0/4为Backup备份端口,不处于转发状态,所属交换机为端口所连网段的指定交换机。

<s4>dis stp bri
 MSTID  Port                        Role  STP State     Protection
   0    Ethernet0/0/1               DESI  FORWARDING      NONE
   0    Ethernet0/0/2               ROOT  FORWARDING      NONE
   0    Ethernet0/0/3               ALTE  DISCARDING      NON

s4上Ethernet0/0/3为Alternate预备端口,不处于转发状态,所属交换机不是端口所连网段的指定交换机。

配置边缘端口
生成树的计算主要发生在交换机互连的链路之.上,而连接PC的端口没有必要参与 生成树计算,为了优化网络,降低生成树计算对终端设备的影响,现在网络管理员把交换机上连接PC的接口配置为边缘端口。

[SW4]interface Ethernet 0/0/1
[SW4-Ethernet0/0/1]stp edged-port enable

7、RSTP如何实现快速收敛

7.1、STP的收敛机制

在802.1D中,只有当SW从根端口收到BPDU时,非根桥才能转发BPDU。只有根桥才会发送BPDU,其它非根桥只是转发,每隔2S就发送一次,如果20秒收不到就进入Learning状态。如果线路发生改变,根端口就发送消息给根桥,通知拓扑表出问题,根桥加快转发/过滤表的老化速度从300秒变到15秒,根桥再发送消息给其它非根桥。

STP的初次收敛,STP的收敛时间(30s-50s):
STP的初次收敛

  • 初始阶段Disable未启用状态,启动交换机,三台交换机的端口都阻塞状态,防止环路,然后转入侦听状态,等待根桥发送BPDU,然后入经过20s最大存活时间后,没有收到根桥发送BPDU;
  • 三台交换机都认为自己是根桥,将端口转变成为指定端口,发送以自己为根桥的BPDU,于是S1发送给S2,比根桥ID中的优先级、再比根桥ID中的MAC地址。S2发送给S3作比较,S3发送给S1作比较。这时选出了根桥。这时交换机端口处于Learning学习状态
  • 根桥选出后,进行选举根端口、和选举指定端口,这时交换机端口处于处于Forwarding转发状态
    Blocking–>20s Listening–>15s Learnin–>15s Forwarding
    STP的收敛机制

拓扑变更机制
在802.1D中,只有当SW从根端口收到BPDU时,非根桥才能转发BPDU。如果线路发生改变,根端口就发送消息给根桥,通知拓扑表出问题,根桥加快转发/过滤表的老化速度从300秒变到15秒,根桥再发送消息给其它非根桥。

在STP中,已经选举出根桥的交换机出现链路故障从初始状态到收敛状态至少需要30s。

7.2、RSTP的收敛机制

在802.1w中,每个SW(交换机)都会每隔2S就发送一次包含当前信息的BPDU。

RSTP端口状态:3种:

  • Discarding丢弃状态,Learning学习状态,Forwarding转发状态。
    RSTP实现快速收敛关键在于引入了Proposal/Agreement机制、根端口快速切换机制、边缘端口。
    STP的初次收敛

  • 初始阶段Discarding丢弃状态,启动交换机,1、3两个端口马上都先成为指定端口,发送RST BPDU。

  • S2收到RST BPDU进行比较将3端口变成为根端口,停止发送RST BPDU。

  • S1的1端口进入Discarding丢弃状态,发送RST BPDU中把Proposal和Agreement置1,提议1端口进入转发状态。

  • S2的3端口收到根桥发送来的携带Proposal的RST BPDU,S2开始将自己的所有端口进入sync变量置位,(即同步变量:临时阻塞除边缘端口外的其他端口)。

  • 4端口进入Discarding状态,3端口进入Forwarding状态并向S1返回Agreement位置位的回应RST BPDU。3端口由原来的指定端口转化为根端口。

  • S1收到回应RST BPDU,1端口马上进入Forwarding状态。

RSTP不用像STP一样为避免环路,需要等待至少一个Forward Delay所有端口才能进行转发。

拓扑变更机制的优化

在802.1w中,不存在TCN BPDU,因为RSTP域内状态的同步无需由Root Bridge发起。Topology Change(TC)的通告发生在毗邻Bridge之间,每个SW(交换机)都会每隔2S就发送一次包含当前信息的BPDU。

当某个端口由阻塞状态变成转发状态,该端口就会启动PA机制检查机制,发出提议对此接口进入Forwarding状态,等待对端进行同步。

8、RSTP对STP保护机制

1.根端口保护:如果黑客用一台优先级比较高的交换机连接到树里或者错误配置,网络中合法根桥有可能会收到优先级更高的RST BPDU,使得合法根桥失去根地位,从而引起网络拓扑结构的错误变动。这种不合法的拓扑变化,会导致原来应该通过高速链路的流量被牵引到低速链路上,造成网络拥塞。为了防止交换机的端口角色发生改变,可以在交换机里配置根保护,配置了根保护的交换机的某个端口如果收到比现有根桥更忧的BPDU会主动把端口状态置为 discading 直到黑客的交换机撤离。
在这里插入图片描述

实现原理: 一旦启用Root保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入Discarding状态,不再转发报文。在经过一段时间,如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。(Root保护功能只能在指定端口上配置生效。)

配置:
Root保护功能一般只在根桥的端口上配置。配置了Root保护的端口,不可以配置环路保护。

[s1]int g0/0/1
[s1-GigabitEthernet0/0/1]stp root-protection

2.边缘端口保护:如果对交换机的某个端口设置了边缘端口,而这个边缘端口却收到了BPDU会导致边缘端口的功能失效,甚至从边缘端口发来一些TC报文来刷新网络交换机的MAC地址攻击网络,为了防止这一情况,可以对边缘端口做保护配置,相当于绑定边缘端口。保护后收到BPDU的边缘端口就会直接置为 err-down (直接关闭,需要管路员手动恢复) 。因此不能再非边缘端口配置此保护。
边缘端口保护

当攻击者发送的RST BPDU报文中的桥优先级高于现有网络中根桥优先级时会改变当前网络拓扑,可能会导致业务流量中断。这是网络中一种简单的拒绝服务DoS(Denial of Service)攻击方式。

[SW2]interface Ethernet 0/0/1                         
[SW2-Ethernet0/0/1]stp edged-port enable            //接口下配置边缘端口
[SW2-Ethernet0/0/1]q
[SW2]stp bpdu-protection            //全局下配置交换设备边缘端口的BPDU保护功能。

一旦接口进入保护状态后,需要执行undo shutdown命令手动恢复,也可以在接口视图下执行restart命令重启接口。
配置使能端口自动恢复功能,并设置延迟时间。

[SW4]error-down auto-recovery cause bpdu-protection interval 10

3.环路保护:如果阻塞端口可以发BPDU 却一直收不到别人的BPDU,这样会导致BPDU超时,从而使得阻塞状态转变成转发状态,从而造成树结构有转变成环形结构。因此可以在AP端口配置环路保护,配置环路保护后AP端口如果持续收不到 BPDU 就会认为链路故障单方向故障,从而使端口状态保持 discarding。

环路保护

如果S1–>S2之间由于链路拥塞或者单向链路故障,导致S2的3端口收不到上游交换设备的RST BPDU时,会重新选择根端口。原先的4端口会转变为指定端口,由原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。

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

配置:

[SW2]interface Ethernet 0/0/1                         
[SW2-Ethernet0/0/1]stp loop-protection            //配置交换设备根端口或Alternate端口的环路保护功能

注意:配置了根保护的端口,不可以配置环路保护。

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

启用防TC-BPDU报文攻击功能后,在单位时间内,RSTP进程处理TC类型BPDU报文的次数可配置(缺省的单位时间是2秒,缺省的处理次数是3次)。如果在单位时间内,RSTP进程在收到TC类型BPDU报文数量大于配置的阈值,那么RSTP进程只会处理阈值指定的次数;对于其他超出阈值的TC类型BPDU报文,定时器到期后,RSTP进程只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护交换机的目的。

配置:

[SW2]stp tc-protection interval 10   //设备处理阈值指定数量的拓扑变化报文所需的时间。
[SW2]stp tc-protection threshold 5   //处理拓扑变化报文的最大数量是5。

在10秒内只会处理最开始收到的5个拓扑变化报文,对于后面收到的报文则会等10秒超时后再统一处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0与1之旅

创作不易请给予一点帮助和鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值