华为 RS RSTP原理与配置复习笔记

 STP(Spanning Tree Protocol)是生成树协议,主要作用是防止交换网络中的冗余链路形成环路工作。

 STP协议虽然能够解决环路问题,但是由于网络拓扑收敛较慢,影响了用户通信质量,而且如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这也是用户无法忍受的。由于STP的不足,IEEE2001年发布的802.1w标准定义了RSTPRSTPSTP基础上进行了诸多改进优化,使得协议更加清晰、规范,同时也实现了二层网络拓扑的快速收敛。

 STP存在的问题:

1.STP从初始状态到完全收敛至少需经过30s:初始状态下,交换机都认为自己是根桥,所以每个端口都会往外发送BPDU报文,这个BPDU报文里面携带了报文的优先级,开销值等一些参数,同时每一个交换机也会从对端的接口里接收到对方的BPDU,接收之后,进行一个比较,计算,确定谁是根桥,确定各个端口的端口角色,在这个过程中, 交换机会从listening到learning需要等待一个forward delay(每个15s),STP为避免临时环路,必须等待足够长的时间(即确保BPDU能同步发送至全网各节点)确保全网的端口状态全部确定,才能进入转发。确定全网状态之后,在STP进入转发前还需根据收到的用户流量构建MAC地址表,仍需等待计时器超时(forward delay:15s)才能进入转发,交换机的端口状态会从learning到forwarding状态(岗前培训),初始状态下,收敛速度需要至少30秒;

2.交换机有BP端口,RP端口down掉场景下,BP端口切换成RP端口并进入转发状态至少需要经过30s:如下图所示,交换机C上的根端口坏掉了,对于交换机C来说,它是可以直接感知到的,那么就会将自身的BP转化成RP,为确保拓扑变化信息已经扩散到全网,且所有设备都已完成拓扑更新,故新的根端口还需等待计时器超时后才能进入转发,原来的阻塞端口(BP)变成新的根端口,且处于blocking状态,并经过2Forward Delay时间(30s)才进入转发状态,

华为 RS RSTP原理与配置复习笔记

3.交换机无BP端口,RP端口down掉场景,

如下图所示:交换机B上只有DP和RP,但是现在SWB上的根端口(RP)down了,那么对于SWB来说,它和根桥的联系就断了,所以交换机B会向外发送一个BPDU,它会认为自己是根桥,发送给SWC之后,但是对于交换机C来说,它会认为SWA是根桥,但是对于SWC来说又不能告诉SWB,SWA才是根桥,等到,交换机C上端口缓存的更优的BPDU老化超时(20s),STP中,交换机除指定端口外的其他端口收到次优BPDU都不会做处理 ,端口缓存的BPDU超时后,会重新进入收敛,等待2Forward Delay (30S)时间后进入转发状态,这个过程一共需要50秒。

华为 RS RSTP原理与配置复习笔记 

 4.运行STP的交换机连接用户终端的场景

在STP里面,不管是什么端口,想要进入转发状态就必须等待两次延时,(每次15秒,共30秒)防止端口直接进入转发状态,会发生环路,那么对于交换机连接终端的链路进入转发需要经过30s,事实上,只要保证该端口下连接的是终端设备就不会出现环路,即没有必要进行STP计算和等待计时器超时,对于交换机来说,只要意识到某个端口连接的是主机终端设备的话,那么这个端口就不会发生环路,直接进入转发状态就行了,但是在APT里面没有这个机制。

5.STP的拓扑变更机制

在STP里面,如果拓扑发生变化,先由变更点朝根桥方向发送TCN消息,收到该消息的上游交换机就会回复TCA消息进行确认;最后TCN消息到达根桥后,再由根桥发送TC消息通知设备删除桥MAC地址表项,只有根桥才能发送TA消息,其他交换机在收到根桥的消息之后,才会清空mac地址表项,机制复杂,效率低下。

6.端口角色

在STP里面有根端口,指定端口,和备份端口,只有三种端口角色,当交换机上的RP端口down掉后,还需要从其他三个端口中重新选举且需等待计时器超时后才能进入转发。

7.端口状态

对于STP来说有五种状态,在这五种状态里面针对数据流量来说,Disabled、Blocking和Listening这三种状态是既不转发用户流量也不学习mac地址,对应的行为都是一样的,所以,可以把这三种状态合并为一个状态,在RSTP里面就是这样做的。

STP端口状态

端口状态对应的行为

Disabled

不转发用户流量也不学习MAC地址

Blocking

Listening

Learning

不转发用户流量但是学习MAC地址

Forwarding

既转发用户流量又学习MAC地址

 

RSTPSTP的改进

RSTP定义了两种新的端口角色:备份端口(Backup Port)和预备端口(Alternate Port),如下图所示:

华为 RS RSTP原理与配置复习笔记

对于预备端口和备份端口来说,这两种端口都是处于阻塞状态的,都是不能转发流量的,那么预备端口是根端口的替代端口备份端口是指定端口的备份端口,如果这个端口的最优BPDU是从对方那里收到的,那么这个端口就是预备端口,那么如果收到的最优BPDU是来自于本身交换机的另外一个接口,那么这个端口就是备份端口,如上图所示,交换机C的根端口从根桥那里收到了一个最优的BPDU,做了一个更新之后,从E0/1接口发了出去,但是由于下端连的设备是HUB,那么这个BPDU又会从E0/2的接口发送回去,那么对于SWC来说,他从E0/2这个端口收到的BPDU就是它本身的BPDU,那么E0/2这个端口就是备份端口。

 

端口状态的重新划分

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

STP端口状态

RSTP端口状态

端口状态对应的行为

Disabled

Discarding

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

Blocking

Listening

Learning

Learning

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

Forwarding

Forwarding

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

从用户角度来讲,ListeningLearningBlocking状态并没有区别,都同样不转发用户流量。

RSTP里面把这个Disabled,Blocking,listening三种状态合并成了一种状态Discarding状态,这个状态下是不处理用户流量的,但是会转发和发送BPDU,在STP里面,listening状态对于BPDU是可收可发的,Blocking状态下只能收,不能往外发,那么在RSTP里面,因为合并了这三种状态,所以是可收可发的。

P/A机制

P/A机制主要是为了解决初始状态下,交换网络收敛慢的问题。

P:proposal 请求

A:agreement 同意

Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。

这个P位和A位在BPDU报文里面的flag字段里面,把之前在STP里面没有用上的位利用上了。

P/A机制的工作原理,如下图所示:

华为 RS RSTP原理与配置复习笔记

在交换网络的初始状态下,对于图中的SWA和SWB都会认为主机是这个交换网络里的老大(根桥),都会往外去发送P置位的BPDU报文,表示我可以让我的这个端口进入转发状态吗?那么往外发送BPDU的这个端口,就是指定端口了,当二者在收到对方的BPDU报文之后,会进行一个比较,比较桥优先级,在这里,桥优先级值越小越优先,对于上图中的SWA来说,它的桥优先级值是0,而SWB的优先级值是4096,那么对于这两个交换机来说,SWB就知道SWA要比它本身更优,SWA是根桥,那么对于SWA来说,就会忽略SWB的BPDU报文,那么对于SWB来说,原来的指定端口就会变成一个根端口,并且阻塞除了边缘端口外的其他端口,防止出现环路,并且会给SWA回复一个A置位的BPDU,表示,你可以让你的这个端口进入转发状态了。当SWA的这个端口收到这个A置位的BPDU之后,就会立马进入转发状态。

事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少两个Forward Delay,所有端口才能进行转发。由于有来回确认机制和同步变量机制,就无需依靠计时器来保障无环。(BPDU两秒发送一次)

 那么在实际的应用中,P/A机制是怎么应用的呢?

如下图所示,

华为 RS RSTP原理与配置复习笔记

阶段一:设备刚刚启动,RSTP协议刚刚启用,所有交换机都认为自己是根桥,向其他交换机发送P置位的BPDU,并把发送P消息的端口变成DP口,同时接口处在Discarding状态。
阶段二:交换机SWA收到SWBSWCP消息会置之不理,因为他的桥优先级最高。交换机SWBSWC收到SWAP消息后,由于认同SWA是最优的根桥,会根据P/A协商流程回复A消息,并把发送端口变成RP端口,同时接口处在Forwarding状态。
阶段三:SWASWBSWASWBP/A协商已经完成,接下来是SWBSWCP/A协商。
SWBSWC都会发送根桥为SWAP消息给对方。
SWC收到SWBP消息后,发现P消息里虽然根桥和自己认可的一样,但是发送者的桥优先级比自己优(SWB>SWC),所有马上停止发送P消息,但是由于已经有端口是RP口,也不会回A消息。(A置位的BPDU只有根端口会发)
SWB收到SWCP消息后,发现P消息里虽然根桥和自己认可的一样,但是发送者的桥优先级比自己低(SWB>SWC),会不停的发送P消息。
以上状态在等待2Forward Delay时间后,SWB端口为DP端口,处在Forwarding状态, SWC端口为AP端口,处在Discarding状态。

实际上SWBSWC之间的协商等同于退回到STP的模式,但是反正是Discarding状态,根本不影响其他业务转发。 

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

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

 根端口快速切换机制

如下图所示,0SWCSWA的直连链路down掉,其AP端口切换成RP端口并进入转发状态可在秒级时间内完成收敛:

华为 RS RSTP原理与配置复习笔记

 次等BPDU处理机制

如下图所示:SWBSWA的直连链路down掉,SWCAP端口切换成DP端口并进入转发状态可在秒级时间内完成:

华为 RS RSTP原理与配置复习笔记 

 

假设作为根桥的SWA,和SWB之间的链路Down掉了,那么对于SWB来说,就会往外武器发送一个Proposal位置1的BPDU,那么对于SWC来说,AP端口虽然处于Discarding状态,但是它是可以接收和发送BPDU的,它在收到 次优BPDU后会马上发送本地最优的BPDU给对端,同时端口角色从AP变更为DP,这个BPDU里面的P位也是置1的,SWB收到更优的BPDU,会立即重新定义端口角色,将原DP端口改为RP端口,然后发送Agreement置位的BPDU,SWC收到Agreement报文后会立即进入转发。

边缘端口的引入

RSTP中,交换机连接终端的链路可立即进入转发状态:如果交换机的对端设备连接的是终端设备的话,那么终端设备是不会造成环路的,所以我们可以把终端设备和交换机之间的端口定义为新的概念,叫做边缘端口,对于这个边缘端口一上线,就会进入转发状态,没有延时,如果边缘端口收到了BPDU的报文,那么对于这个边缘端口来说,就不能立马进入转发状态,因为有可能会造成环路,就会成为普通的STP端口,并且重新进行生成树的计算。

华为 RS RSTP原理与配置复习笔记

边缘端口的角色不是交换机和交换机之间协商出来的,而是通过人为设置出来的,所以, 只能通过给端口通过命令敲进去告诉交换机这个端口是边缘端口。

拓扑变更机制的优化

判断拓扑变化唯一标准:一个非边缘端口迁移到Forwarding状态。

如下图所示,SWE在向外发送TC置位的RST的BPDU的时候,对于SWB来说,在收到了SWE的TC置位的RST的BPDU之后,会对除了收到SWE报文的接口以外的接口还有边缘端口的mac地址表都清零,SWB也会往外去扩散这个TC置位的RST BPDU,把该清空的mac地址表都清空掉,

华为 RS RSTP原理与配置复习笔记

网络发生拓扑变化时,变更点交换机直接向全网发送TC置位的BPDU报文,而不是先通知到根桥,然后由根桥向全网发送TC报文,这样在一定程度上节省了收敛时间 。

拓扑变化引发的问题

如下图所示,每个设备上的mac地址表都已经学习好了,那么现在网络中的PCB想要去访问PCA,根据mac地址表项,SWC会把数据交给SWA,SWA会把数据交给SWB,但是由于SWB上的RP端口Down掉了,所以流量会被丢弃,那么针对这个拓扑变化,PCB的流量就不能正常去访问PCA。

华为 RS RSTP原理与配置复习笔记 

那么对于这种问题,该如何解决?如下图所示,

华为 RS RSTP原理与配置复习笔记

一旦检测到拓扑发生变化,首先将进行如下处理:
清空状态发生变化的端口上学习到的MAC地址。
同时,由这些端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU
如上图所示,SWBE1端口出现故障之后,RSTP的处理过程如下:
SWB重新计算生成树,选举E2为新的根端口。
SWB删除MAC地址表中E1端口所对应的表项。
生成树重新计算完成之后(需要进入转发状态的端口已经进入了转发状态),SWB的所有非边缘端口向外发送TC置位的RST BPDU
 
 

如下图所示, SWC在收到TC置位的BPDU之后,会清空除了收到报文外的其他所有非边缘端口学到的mac地址,

 华为 RS RSTP原理与配置复习笔记

 

 同样的SWA在收到TC置位的BPDU报文之后,也会有相同的动作,如下图所示。

华为 RS RSTP原理与配置复习笔记 

注意:边缘端口down掉不会触发拓扑变更,而且故障恢复后,同样也不会触发拓扑变更。 

 

BPDU保护

应用场景:防止有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到该报文时,会自动设置为非边缘端口,并重新进行生成树计算,引起网络震荡,如下图所示:黑客在边缘端口接入一台运行生成树的交换机,新接入的交换机发送BPDU报文会引起其他交换机进行生成树计算,并引起网络震荡,边缘端口收到BPDU会自动将其设置为非边缘端口,并重新进行生成树计算,对于其他的设备来说,收到了新的BPDU报文之后,会重新进行生成树计算,那么在这个过程中,会有短暂的时间,网络的动荡的。

华为 RS RSTP原理与配置复习笔记

实现原理:配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会被立即关闭,立刻被关闭就意味着不会参与生成树的计算,不参与生成树的计算就不会让交换网络发生动荡,如下图所示,

华为 RS RSTP原理与配置复习笔记

如果这个接进来的交换机是攻击者的交换机,那么这个BPDU保护是非常有效的,但是如果是一个真正的,有用处的交换机,那么这个交换机就被拒绝了参与生成树的计算, 所以要预先做好规划,如果这个端口后期需要接入交换机,那你就不要在这个接口上配置BPDU保护。

根保护 

应用场景:由于维护人员的错误配置或网络中的恶意攻击,网络中合法根桥有可能会收到优先级更高的RST BPDU,使得合法根桥失去根地位,从而引起网络拓扑结构的错误变动,如下图所示,SWA是根桥,然后这边新接入了一个优先级更优的交换机,由于交换机在选举的时候,是抢占机制,对于其他的交换机来说,收到了更优的RST BPDU,重新进行生成树计算,这样的话,会引起网络拓扑结构的错误变动,

华为 RS RSTP原理与配置复习笔记

那么针对以上的情景,我们可以通过在指定端口上配置根保护,来解决以上问题。 

实现原理:一旦启用Root保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入Discarding状态,不再转发报文。在经过一段时间,通常为两倍的Forward Delay,如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态,如下图所示,

华为 RS RSTP原理与配置复习笔记

Root保护功能只能在指定端口上配置生效。

 

TC-BPDU泛洪保护  

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

 如下图所示:

华为 RS RSTP原理与配置复习笔记

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

 

 RSTP配置如下:

如下图所示,LSW1、LSW2和LSW3组成了一个环形的交换网络,为了消除环路对网络的影响,故使交换机都运行RSTP,最终将环形网络结构修剪成无环路的树形网络结构。

 

华为 RS RSTP原理与配置复习笔记 LSW1上的配置如下:

stp enable   

开启生成树协议,对于华为的新款交换机来说,这个生成树协议是缺省开启的,但是对于一些老的设备,需要手动开启

stp mode rstp  将生成树的协议模式改为快速生成树

stp root primary  将这台交换机设备强制性的设置为根桥

stp tc-protection   使能交换设备对TC类型BPDU报文的保护功能。缺省情况下,交换设备的TC保护功能处于去使能状态。

LSW2上的配置如下:

 

stp enable

stp mode rstp

stp bpdu-protection   在全局开启BPDU防护,配合边缘端口一起使用

interface GigabitEthernet 0/0/1

 stp edged-port enable  配置端口为边缘端口

interface GigabitEthernet0/0/3
 stp root-protection     在指定端口下,配置根保护

 

 LSW3上的配置:

stp enable

stp mode rstp

stp bpdu-protection

interface GigabitEthernet 0/0/3

 stp edged-port enable

 结果验证:

在LSW1上查看生成树信息,如下图所示:

华为 RS RSTP原理与配置复习笔记

 华为 RS RSTP原理与配置复习笔记

 在LSW2和LSW3上查看接口信息,如下图所示,会看到BPDU和根保护的配置。

华为 RS RSTP原理与配置复习笔记