一种增强RSTP中故障快速收敛的方法
技术领域
本发明涉及计算机网络通讯技术领域,尤其涉及一种增强RSTP(Rapid Spanning Tree Protocol,快速生成树协议)中故障快速收敛的方法。
背景技术
在标准RSTP中(参考标准文档:ANSI/IEEE Std 802.1D, 1998 Edition. “Part 3: Media Access Control (MAC) Bridges”.1998 与IEEE Std 802.1w-2001.“ Part 3: Media Access Control (MAC) BridgesAmendment 2: Rapid Reconfiguration”.2001:6-14 ),多台设备组成环形拓扑结构,在不同的链路故障时,收敛时间会有很大的差异,有些故障的收敛时间很长,无法满足快速收敛的要求。
参阅图1,为一个典型的环形结构拓扑示意图,假设3台设备A,B,C(以下简称A,B,C)生成树优先级A小于B小于C,在生成树选举完成之后, A被选为根桥(Root),C上与B相连的端口为替换端口(Alternate Port),生成树状态为阻塞状态(Discarding),当以下两种不同的链路故障:
1. 如图2所示,如果A与C之间的链路断开,替换端口会切换成根端口(Root Port),并进入转发状态(Forwanding),收敛时间很小,且无需报文交互。
2. 如图3所示,如果A与B之间的链路断开, B会选自己为根桥,并发送根桥信息为自己的BPDU(Bridge Protocol Data Unit,网桥协议数据单元), C的替换端口只有等消息老化(Message Age老化时间为3倍hello time,hello time是根发送BPDU的间隔), 3倍hello time之后仍没有收到根桥或指定桥(Designated Bridge)的BPDU,此时C选举的根桥为A,而B发出BPDU的根桥信息为B自己, C会作为更差的报文丢弃之后,通过重新选举,根端口变成指定端口(Designated Port),C再与B通过报文协商(提议-同意机制),快速进入转发状态。这样A和B之间的收敛时间最大可能需要3倍hello time,会多达几秒。无法满足实际应用的需要,实际应用中要求收敛时间必须在1s以内。
以上两种故障的恢复过程类似,第一种故障收敛很快, B和C之间故障和恢复的收敛时间也很快,故不在本发明考虑范围之内。本发明主要为了解决上述第二种故障(如图3)中收敛时间过长的问题,以满足任意点故障均可快速收敛的要求。现有方法处理第二种故障收敛的方法如下:
1. B发现自己的根端口断开,将根端口切换成指定端口,进行重新选举,会选举自己为根桥,并开始从所有端口发送BPDU(根信息为B,若端口断开则不发)。
2. C在收到此BPDU,发现在替换端口收到了更差的BPDU,将报文丢弃,并回应更优的BPDU(根桥信息为A)。
3. C的替换端口在3倍hello time没有收到根桥的BPDU(报文根桥信息为A, 指定桥为B),信息老化定时器超时,进行重新选举,C的根端口没有变化,替换端口在选举完成后变成了指定端口,同时向B发送BPDU(根桥为A,指定桥为C)。由于之前的替换端口变成指定端口,端口状态仍为阻塞状态,发送的BPDU中Proposal位被置为1.
4. B在收到C的BPDU,发现比自己优,收包端口选举为根端口,同时发现报文中Proposal位被置为1,通过RSTP标准中的“提议-同意机制”,B的根端口立即进入转发状态,并回应C置Agreement位为1的BPDU.
5. C收到B回应的Agreement位为1的BPDU之后,收包端口立即进入转发状态。
通过上述交互过程,A与B恢复通讯,整个过程中需要C的替换端口Message Age定时器超时之后才能触发重新选举,耗时比较久,一般为几秒,很难满足实际应用的需求。
发明内容
本发明所要解决的技术问题是提供一种流程处理更快速的增强RSTP中故障快速收敛的方法,本发明无需等待消息老化,大大减少了故障收敛时间,从而可满足用户对快速收敛的需求。
为了解决上述技术问题,本发明采用了以下技术方案:
在多台设备组成的环形拓扑结构中,发生链路故障时,要满足快速收敛的要求而减少收敛时间,包括以下步骤:
A、上游设备发现自己的根端口已断开,重新选举,原来的根端口变成指定端口,选举自己为根桥,并开始从所有端口定时发送根桥信息为自己的BPDU报文,若端口断开则不发;
B、下游设备的替换端口收到BPDU报文,判断是否是收到更差的BPDU报文,如果是,则执行步骤C;如果不是,则执行步骤D;
C、立即进行重新选举,替换端口变成指定端口,同时发Proposal位为1的BPDU报文;
D、更新Message Age定时器;
E、上游设备判断是否收到回应的BPUD报文,如果是,则执行步骤F;如果不是,则执行步骤G;
F、判断收到BPUD报文信息是否比自己优,如果是,则执行步骤H;如果不是,则执行步骤I;
G、通过Forward Delay定时器老化,切换端口状态:Discarding->Learning->Forwarding;
H、收包端口被选举为根端口,若BPUD报文中Proposal位为1,则回应Agreement位为1的BPDU报文,同时将根端口以外的指定端口置成Discarding状态;
I、若BPUD报文中的Agreement位为1,则端口立即置成Forwarding状态。
通过与现有方法对比可以发现,本发明的流程处理更快速,无需等待Message Age定时器老化,大大减少了收敛时间,收敛时间一般为几十ms到几百ms,可以满足实际应用中收敛时间必须在1s以内的要求。
在结合附图阅读本发明的实施方式的详细描述后,本发明的特点和优点将变得更加清楚。
附图说明
图1是环形结构拓扑示意图;
图2是第一种链路断开状态的拓扑示意图;
图3是第二种链路断开状态的拓扑示意图;
图4是步骤S1的拓扑示意图;
图5是步骤S2的拓扑示意图;
图6是步骤S3的拓扑示意图;
图7是步骤S4的拓扑示意图;
图8是本发明的方法流程图。
具体实施方式
下面以一个实施方式对本发明作进一步详细的说明,但应当说明,本发明的保护范围不仅仅限于此。
在标准RSTP中,接收到BPDU报文时,只处理更优的BPDU(见IEEE Std 802.1D中函数received_config_bpdu(port_no, config)),而更差的BPDU则丢弃。
在一个运行生成树的网络中,根桥信息是由根桥向下游设备传递,根桥是上游设备,与之相连的其他设备为它的下游设备,其他相邻的设备中离根桥近的为上游设备,远的为下游设备,下游设备再向他们的下游设备传递,一级一级的扩散。如果某台下游设备在根端口或者替换端口(这两种类型的端口才会收到根的BPDU报文)收到更差的BPDU报文,这表明根桥或者指定桥已经发生变化,应该重新选举,及时更新根端口变化的信息。当根端口断开,也一样需要重新选举。依照上述可以改进的处理流程,当出现图3所示的故障时,可采用以下步骤:
S1. 如图4所示,B发现自己的根端口断开,将重新选举,原来的根端口变成指定端口,会选举自己为根桥,并开始从所有端口定时发送根桥信息为自己的BPDU报文,若端口断开则不发;
S2. 如图5所示,C在收到B的BPDU报文后,发现替换端口收到了更差的BPDU报文,立即进行重新选举,由于A与C之间的链路正常,C的根端口没有变化,替换端口在选举完成后变成了指定端口,同时向B发出根桥信息为A,指定桥为C的BPDU报文。由于之前的替换端口变成指定端口,端口状态仍为阻塞状态,发送BPDU报文时会将Proposal位置为1;
S3. 如图6所示,B在收到C回应的BPDU报文后,发现比自己优,进行重新选举,收包端口被选举为根端口,由于报文中Proposal位被置为1,通过RSTP标准中的“提议-同意机制”(IEEE Std 802.1w-2001),B的根端口在其他指定端口同步完之后,立即进入转发状态,并回应C 置Agreement位为1的BPDU。
S4. 如图7所示,C收到B回应的Agreement位为1的BPDU之后,收包端口立即进入转发状态。
通过上述交互过程,A与B恢复通讯,由于整个交互过程中B与C只通过3个BPDU交互就恢复链路,耗时极短,大大提高了收敛性能,收敛时间一般为几十到几百ms,不同的型号设备对端口断开的感知和上报的时间会有差异,导致收敛时间不一致,最大一般都不会超过1s,完全可以满足用户对快速收敛的要求。
本发明的改进对于其他生成树的拓扑结构以及MSTP同样适用。
虽然结合附图描述了本发明的实施方式,但是本领域的技术人员可以在所附权利要求的范围之内作出各种变形或修改,只要不超过本发明的权利要求所描述的保护范围,都应当在本发明的保护范围之内。