线路震荡的情况下路由快速收敛的方法及装置与流程

文档序号:13763278阅读:403来源:国知局
线路震荡的情况下路由快速收敛的方法及装置与流程

技术领域

本发明涉及网络通讯领域的,尤其是指一种路由快速收敛的方法及装置。



背景技术:

随着网络技术的发展,越来越多用户采用高速广播链路专线(一般带宽在10Mbps(含)以上)代替低速DDN专线(一般带宽在2Mbps左右),用于数据传输。这里广播链路专线是指路由设备能在上面建立一个以上IS-IS邻居或OSPF邻居,并且需要选举DIS(Designated Intermediate System,指定中间系统)或DR(Designated Router)用于路由学习的线路。

如图1所示是现有技术中使用广播链路专线的一个典型应用拓扑图。为了确保数据通信可靠,实现不中断通信,分支机构和总部机构之间通过两条主备线路进行通信,主线路是大带宽广播链路专线,备线路是低带宽DDN专线。

正常情况下,总部机构和分支机构之间的数据通过主线路进行传输,在主线路发生震荡情况下(如由于线路存在问题导致报文传输时断时续或者传输时间不稳定等),数据要快速切换到备份线路进行传输以免数据丢失,确保总部机构和分支机构之间的业务正常进行,线路恢复正常之后,数据切换回主线路进行传输。

为切换线路,首先要进行路由学习,这里使用广泛使用的IS-IS协议;另外,为进行快速切换,首先需要快速的探测到线路问题,从而引入了BFD技术,通过BFD探测发生震荡的可能导致问题的线路状态。但实际上即使在线路震荡期间,IS-IS邻接状态仍然可以保持着,这是因为邻接状态变化要经过较长的时间,属于数秒级,远低于BFD的数毫秒级的间隔,在这较长的时间里,控制面的协议报文是可以正常收发的。但是,因为转发数据报文需要使用稳定的线路,不然就会丢失报文,所以路由还是需要切换到备份线路。

Router-A和Router-B之间在主线路上成功建立IS-IS邻居之后,IS-IS路由协议通知BFD检测主线路的质量。这里假设,Router-A优先级比Router-B高,被选举主线路的DIS。主线路发生震荡,BFD会通告IS-IS;Router-A IS-IS根据BFD线路震荡通告,删除DIS的LSP(Link State Pakcet,链路状态报文)中的邻居信息(即Router-B),同时Router-B删除自己的链路状态报文中的DIS邻居信息(即Router-A)。Router-B和Router-A收到对方的最新的链路状态报文之后,进行路由计算,计算出选择备份线路进行数据传输。线路恢复正常之后,BFD通知IS-IS,Router-A和Router-B恢复链路状态报文中邻居信息。Router-B和Router-A收到对方的最新的链路状态报文之后,进行路由计算,重新选择主线路进行数据传输。

根据IS-IS邻接状态机,在同一条广播链路中只能选择一台优先级最高的设备作为DIS,该DIS为该广播链路生成的PSN(即Pseudo Subnet Node,虚拟子网节点)邻居节点,链路上的其他设备添加虚拟子网节点作为其邻居节之一,以该虚拟子网节点邻居节点作为路由计算的中转节点,生成最优路由。

在图1应用场景中,如果总部机构或者分支机构由于接入主机增加,需要增加路由设备。简化假设拓扑如图2。

在图2中,分支机构和总部机构分别有两台路由设备,这样,在同一条广播链路上就有四台设备。为了探测客户机与服务器之间的主线路状态,Router-B、Router-D分别与Router-A进行主线路上的BFD检测。

于该拓扑中,假设Router-A优先级最高,为主线路上的DIS。主线路发生震荡,在现有公开技术中,Router-A收到BFD通告之后,删除DIS的链路状态报文的链路状态报文中的邻居信息(即Router-B、Router-D),Router-B、Router-C、Router-D删除自己的链路状态报文的链路状态报文中的DIS邻居信息(即Router-A),Router-C的链路状态报文保持正常(因为Router-C不需要也未进行BFD探测)。四台设备收到Router-A、Router-B、Router-D更新的链路状态报文,启动路由计算,由于Router-B、Router-D的链路状态报文中都删除DIS的虚拟子网节点邻居节点信息,没有的虚拟子网节点邻居节点的中转,Router-B就无法将到达分支机构的路由切换指向到Router-D,则路由出现中断或无法收敛。服务器B到客户机A的数据将被Router-B丢弃。这种情况会一直持续到线路恢复正常。

综上所述可见,现有的路由收敛技术存在如下缺陷:

IS-IS和BFD在同一条广播链路上联动,一旦线路发生震荡情况,如果链路一端有两台(含)以上路由设备,并且都不是DIS设备,那么非DIS端路由就会出现路由中断或无法收敛的问题。

可见根据现有的协议标准无法满足以上主动切换线路的需求。专利号201110408494.3,名称为“一种路由确定方法及路由设备”的专利提供了一种通过扩展标准协议来解决本案问题的方法,具体为:

即通过在IS-IS HELLO协议报文增加一种新型TLV(称之为链路ID TLV),同一条广播链路上的邻居收到之后,根据链路ID将在该链路上建立的邻居分为本地邻居(链路ID与本地相同的邻居)和远端邻居(链路ID与本地不同的邻居),然后在链路发生震荡情况下,如果DIS不在本地邻居中,则在本地邻居中重新选举一个DIS,本地邻居根据新的DIS进行路由学习,实现了路由收敛。

上述方法,关键技术点是:通过HELLO协议报文中新型链路ID TLV,实现本地邻居和远端邻居的区分;在线路震荡期间,同一条广播链路上维护独立的两个DIS用于本地邻居和远端邻居的路由学习,解决非DIS端设备路由无法收敛问题。

然而,该方案的缺点在于:要引入新的链路ID TLV,且要在同一广播链路上维护多个DIS。因此,该方法不仅增加了协议报文,并且将邻居状态机复杂化——需要进行配置;需要远程设备(发生震荡的广播链路的另一端的那些设备,可能与本地设备不同厂商)采用一样的方式,降低了设备兼容性。因为如果远程设备不进行相同的扩展的话,则会由于远近两端不同时支持新扩展的TLV从而依然无法解决上述问题。



技术实现要素:

本发明的目的在于克服了上述缺陷,提供一种无需增加协议报文,实现简单的路由快速收敛的方法及装置。

本发明的目的是这样实现的:一种路由快速收敛的方法,它包括依次的设备链路状态报文生成步骤及最短路径优先计算步骤;

所述设备链路状态报文生成步骤包括,在线路震荡期间,若本设备为DIS端则删除其链路状态报文中的远程设备邻居表项,从而生成新的链路状态报文,并泛洪该新生成的链路状态报文;若;若本设备为非DIS端,则在其自生成的链路状态报文中删除该发生震荡的广播链路上的DIS端设备的虚拟子网节点的邻居节点项并增加同一广播链路上其它各非DIS的邻居为邻居项形成新的链路状态报文泛洪;

所述最短路径优先计算步骤包括,进行SPF计算且若链路状态报文为双向连通的,则当存在非DIS端生成的新的链路状态报文集合中,各非DIS邻居不是通过PSN中转建立连接的LAN类型或是各自直接建立连接的P2P类型的邻接表项时,验证通过;

上述方法中,所述设备链路状态报文生成步骤具体包括,

A)、本设备根据收到的线路震荡通告确定发生震荡的线路及震荡远程设备;

B)、判断本设备是否为广播线路上的DIS端设备,是则转到步骤D,否则转到步骤C;

C)、查询由震荡远程设备生成的发生震荡的线路链路上的震荡远程设备的虚拟子网节点的链路状态报文,获取震荡远程设备的虚拟子网节点的链路状态报文的邻居列表,而后将本设备自生成的本设备的链路状态报文中震荡远程设备的虚拟子网节点的邻居项删除,并将震荡远程设备的虚拟子网节点的链路状态报文的邻居列表中除本设备之外的其它邻居添加到本设备的链路状态报文中,从而生成新的本设备的链路状态报文,而后转到步骤E;

D)、查询由本设备生成的发生震荡的线路链路上的本设备的虚拟子网节点的链路状态报文,将震荡远程设备邻居表项从中删除,从而生成新的本设备的虚拟子网节点的链路状态报文,而后转到步骤E;

E)、泛洪新生成的本设备的虚拟子网节点的链路状态报文;

上述方法中,所述最短路径优先计算步骤具体包括,

F)、接收其他设备泛洪的链路状态报文并将其更新至本地链路状态库中;

G)、进行SPF计算;包括对链路状态报文校验是否声明与邻居存在双向连通,是则获取连通性信息而后进行验证邻居的连通性;

所述连通性信息包括震荡广播链路ID、本设备的类型(DIS或非DIS)、对应的邻居ID、以及链路状态报文中声明的连通类型(如P2P或LAN);

所述验证邻居的连通性时,对应获取连通性信息中本设备的类型不为DIS时,判断该邻居ID满足:存在于震荡广播链路、该邻居ID的类型也不为DIS,链路状态报文中声明的与该邻居的连通类型为P2P类型,且本设备(进行SPF计算的节点:根节点)上存在对应于该邻居ID的LAN类型的邻接表项时认定为验证通过。

本发明还提供了一种路由快速收敛的装置,它包括相连的设备链路状态报文生成模块及最短路径优先计算模块;

所述设备链路状态报文生成模块,用于在广播链路震荡期间,若本设备为DIS端则删除其链路状态报文中的远程设备邻居表项,从而生成新的链路状态报文,并泛洪该新生成的链路状态报文;若本设备为非DIS端,则在其自生成的链路状态报文中删除该发生震荡的广播链路上的DIS端设备的虚拟子网节点的邻居节点项并增加同一广播链路上其它各非DIS的邻居为邻居项形成新的链路状态报文泛洪而后转到最短路径优先计算模块;

所述最短路径优先计算模块,用于进行SPF计算且若链路状态报文为双向连通的,则当存在非DIS端生成的新的链路状态报文集合中,各非DIS邻居不是通过PSN中转建立连接的LAN类型或是各自直接建立连接的P2P类型的邻接表项时,验证通过;

上述中,所述设备链路状态报文生成模块具体包括,

接收单元,用于本设备根据收到的线路震荡通告确定发生震荡的线路及震荡远程设备,而后转到DIS判断单元;

DIS判断单元,用于判断本设备是否为广播线路上的DIS端设备,是则转到DIS处理单元,否则转到非DIS处理单元;

非DIS处理单元,用于查询由震荡远程设备生成的发生震荡的线路链路上的震荡远程设备的虚拟子网节点的链路状态报文,获取震荡远程设备的虚拟子网节点的链路状态报文的邻居列表,而后将本设备自生成的本设备的链路状态报文中震荡远程设备的虚拟子网节点的邻居项删除,并将震荡远程设备的虚拟子网节点的链路状态报文的邻居列表中除本设备之外的其它邻居添加到本设备的链路状态报文中,从而生成新的本设备的链路状态报文,而后转到泛洪单元;

DIS处理单元,用于查询由本设备生成的发生震荡的线路链路上的本设备的虚拟子网节点的链路状态报文,将震荡远程设备邻居表项从中删除,从而生成新的本设备的虚拟子网节点的链路状态报文,而后转到泛洪单元;

泛洪单元,用于泛洪新生成的本设备的虚拟子网节点的链路状态报文;

上述中,所述最短路径优先计算模块具体包括,

更新单元,用于接收其他设备泛洪的链路状态报文并将其更新至本地链路状态库中,而后转到SPF计算单元;

SPF计算单元,用于进行SPF计算;包括对链路状态报文校验是否与邻居存在双向连通,是则获取连通性信息而后进行验证邻居的连通性,对应获取连通性信息中本设备的类型不为DIS时,判断该邻居ID满足:存在于震荡广播链路、该邻居ID的类型也不为DIS,链路状态报文中声明的与该邻居的连通类型为P2P类型,且本设备(进行SPF计算的节点:根节点)上存在对应于该邻居ID的LAN类型的邻接表项时认定为验证通过;

所述连通性信息包括震荡广播链路ID、本设备的类型(DIS或非DIS)、对应的邻居ID、以及链路状态类型(如P2P或LAN)。

本发明的有益效果在于在线路震荡的情况下,通过构造生成新的LSP报文并泛洪,并在SPF计算时使用新的连通性校验方法,解决了广播链路非DIS端多台设备在链路震荡期间路由中断的问题。

附图说明

下面结合附图详述本发明的具体结构

图1为现有技术中IS-IS与BFD联动的典型拓扑图;

图2为现有技术中多设备间IS-IS与BFD联动的典型拓扑图;

图3为本发明的一实施例处理时序图。

具体实施方式

为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。

本发明涉及一种路由快速收敛的方法,它包括依次的设备链路状态报文生成步骤及最短路径优先计算步骤;

所述设备链路状态报文生成步骤包括,在线路震荡期间,若本设备为DIS端则删除其链路状态报文中的邻居信息;若本设备为非DIS端,则在其自生成的链路状态报文中删除该发生震荡的广播链路上的DIS端设备的虚拟子网节点的邻居节点项并增加同一广播链路上其它各非DIS的邻居为邻居项形成新的链路状态报文泛洪;

所述最短路径优先计算步骤包括,进行SPF计算且若链路状态报文为双向连通的,则当存在LAN类型或P2P类型的邻接表项时,验证通过。

可见,本专利方案的优点在于

1、在广播链路震荡期间,只需要通过改造本设备自生成的链路状态报文(LSP)和调整本设备SPF校验算法,就能解决链路震荡期间非DIS端设备路由中断或无法收敛的问题。由于不需要扩展原有的标准协议,只是做了界限于本机设备的修改;不需要配置,只需要本地设备间(发生震荡的广播链路的同一端的那些设备)采取相同的实现方式;不存在与其它设备交互的修订;由以上几点也从而降低了出错可能性,也降低了复杂度。

2、保持Hello报文、邻接状态机不变、只是修改了本地设备间的链路状态报文生成方式和SPF的算法,不需要远程设备(发生震荡的广播链路的另一端的那些设备,可能与本地设备不同厂商)采用一样的方式,提高了设备兼容性(只需要本地设备间采取同样的方式)。

上述方法中,所述设备链路状态报文生成步骤具体包括,

A)、本设备根据收到的线路震荡通告确定发生震荡的线路及震荡远程设备;

B)、判断本设备是否为广播线路上的DIS端设备,是则转到步骤D,否则转到步骤C;

C)、查询由震荡远程设备生成的发生震荡的线路链路上的震荡远程设备的虚拟子网节点的链路状态报文,获取震荡远程设备的虚拟子网节点的链路状态报文的邻居列表,而后将本设备自生成的本设备的链路状态报文中震荡远程设备的虚拟子网节点的邻居项删除,并将震荡远程设备的虚拟子网节点的链路状态报文的邻居列表中除本设备之外的其它邻居添加到本设备的链路状态报文中,从而生成新的本设备的链路状态报文,而后转到步骤E;

D)、查询由本设备生成的发生震荡的线路链路上的本设备的虚拟子网节点的链路状态报文,将震荡远程设备邻居表项从中删除,从而生成新的本设备的虚拟子网节点的链路状态报文,而后转到步骤E;

E)、泛洪新生成的本设备的虚拟子网节点的链路状态报文。

由此,使得拓扑中非DIS的路由设备生成的新的链路状态报文集合中,各非DIS邻居不是通过PSN中转建立连接(LAN类型),而是各自直接建立连接(P2P类型),从而使在LSP层面,拓扑是双向连通的(即相互识别为邻居项)。

上述方法中,所述最短路径优先计算步骤具体包括,

F)、接收其他设备泛洪的链路状态报文并将其更新至本地链路状态库中;

G)、进行SPF计算;包括对链路状态报文校验是否与邻居存在双向连通,是则获取连通性信息而后进行验证邻居的连通性;

所述连通性信息包括震荡广播链路ID、本设备的类型、对应的邻居ID、以及链路状态类型;

所述验证邻居的连通性时,对应获取联通信息中本设备的类型不为DIS时,判断该邻居ID满足:存在于震荡广播链路、该邻居ID的类型也不为DIS、链路状态报文中声明的与该邻居的连通类型为P2P类型,且本设备(进行SPF计算的节点:根节点)上存在对应于该邻居ID的LAN类型的邻接表项时认定为验证通过。

习知的,在SPF计算时,进行计算的设备为根节点设备。在计算与根节点连接的邻居设备的连通性时,一般要进行如下检验:不但要求在LSP层面是双向连通的,还要求在邻接性层面验证双向连通性:根节点上存在对应类型的邻接表项(比如LSP层面连通性为P2P,则需要存在P2P类型的对应邻接表项)。而本专利中为了适应上述新生成的设备链路状态报文,各个路由设备根据新收到的LSP进行拓扑和路由计算,并且在SPF计算时,若是处在线路震荡期间,则计算的检验调整为:要求在LSP层面是连通的,还要求在邻接性层面验证连通性:根节点上存在对应邻接表项;并且,如果LSP层面连通性是P2P,要求存在LAN类型或P2P类型的邻接表项(即此时不要求邻居项类型必须是P2P类型,LAN类型的也可以)。

具体实施例

本实施例基于IS-IS的路由设备上,其提供IS-IS模块,并且该IS-IS模块提供有BFD处理模块、LSP处理模块及SPF处理模块及功能。

如图3,在线路发生震荡期间,IS-IS模块会收到BFD模块线路震荡通告,指明哪个远程设备BFD震荡(这同时就指定了哪个线路发生震荡);同时假定远程设备为R1,本设备为R-self

IS-IS进行如下处理:

1)“BFD处理模块”:

收到BFD模块线路震荡通告,确定发生震荡的线路,假设为Link1,震荡远程设备为R1;通告“LSP处理模块”链路切换;执行2)。

2)“LSP处理模块”:

a)若本设备R-self是该广播线路上的非DIS设备(那么远程设备R1是DIS设备),则:

查询由R1生成的Link1链路上的R1的PSN的LSP,获取该R1的PSN的LSP的邻居列表(记为R1-PSN-neigh-List,包括了R1在Link1链路上的所有邻居,包括R-self,但没有R1);将R-self自生成的R-self LSP中的邻居项R1的PSN删除,并将R1-PSN-neigh-List表中除R-self之外的其它邻居添加到R-self自生成的R-self LSP中,并重新生成新的R-self LSP。而后跳到执行c)。

b)若本设备R-self是该广播线路上的DIS设备,则:

查询由本设备R-self生成的Link1链路上的R-self的PSN的LSP,将R1邻居表项从中删除,从而生成新的R-self PSN LSP,而后跳到执行c)。

c)立即泛洪新生成的LSP。

接下来涉及IS-IS的“SPF计算处理模块”。具体为在计算根节点的邻居、并检验连通性时:

a)在LSP层面校验与邻居存在双向连通性,通过连通性信息可计算获取:

震荡广播链路ID(如Link1)、本设备的类型(DIS或非DIS)、对应的邻居ID、以及LSP层面连通性类型(如P2P或LAN)。

b)在邻接性层面校验与邻居存在连通性,添加如下允许项(即如下条件满足则校验通过):

若本设备为非DIS,且对应于该邻居ID的邻居存在于Link1且不是DIS、且LSP层面与该邻居连通性是P2P,若根节点上存在对应于该邻居ID的LAN类型的邻接表项,则也算校验通过。

该实施例仅以IS-IS协议为例,实际上OSPF协议与IS-IS协议很多方面类似,以OSPF代替上文中的IS-IS进行网络部署,则也存在与本发明要解决的问题类似的问题,并且其解决方案也可采取由本文中提及的方法或原理进行相应地套用。

本发明还提供了一种路由快速收敛的装置,它包括相连的设备链路状态报文生成模块及最短路径优先计算模块;

所述设备链路状态报文生成模块,用于在广播链路震荡期间,若本设备为DIS端则删除其链路状态报文中的邻居信息;若本设备为非DIS端,则在其自生成的链路状态报文中删除该发生震荡的广播链路上的DIS端设备的虚拟子网节点的邻居节点项并增加同一广播链路上其它各非DIS的邻居为邻居项形成新的链路状态报文泛洪而后转到最短路径优先计算模块;

所述最短路径优先计算模块,用于进行SPF计算且若链路状态报文为双向连通的,则当存在LAN类型或P2P类型的邻接表项时,验证通过。

上述中,所述设备链路状态报文生成模块具体包括,

接收单元,用于本设备根据收到的线路震荡通告确定发生震荡的线路及震荡远程设备,而后转到DIS判断单元;

DIS判断单元,用于判断本设备是否为广播线路上的DIS端设备,是则转到DIS处理单元,否则转到非DIS处理单元;

非DIS处理单元,用于查询由震荡远程设备生成的发生震荡的线路链路上的震荡远程设备的虚拟子网节点的链路状态报文,获取震荡远程设备的虚拟子网节点的链路状态报文的邻居列表,而后将本设备自生成的本设备的链路状态报文中震荡远程设备的虚拟子网节点的邻居项删除,并将震荡远程设备的虚拟子网节点的链路状态报文的邻居列表中除本设备之外的其它邻居添加到本设备的链路状态报文中,从而生成新的本设备的链路状态报文,而后转到泛洪单元;

DIS处理单元,用于查询由本设备生成的发生震荡的线路链路上的本设备的虚拟子网节点的链路状态报文,将震荡远程设备邻居表项从中删除,从而生成新的本设备的虚拟子网节点的链路状态报文,而后转到泛洪单元;

泛洪单元,用于泛洪新生成的本设备的虚拟子网节点的链路状态报文。

上述中,所述最短路径优先计算模块具体包括,

更新单元,用于接收其他设备泛洪的链路状态报文并将其更新至本地链路状态库中,而后转到SPF计算单元;

SPF计算单元,用于进行SPF计算;包括对链路状态校验是否与邻居存在双向连通,是则获取连通性信息而后进行验证邻居的连通性,对应获取联通信息中本设备的类型不为DIS时,判断该邻居ID满足:存在于震荡广播链路、该邻居ID的类型也不为DIS、与该邻居的链路状态类型为P2P且根节点上存在对应于该邻居ID的LAN类型的邻接表项时认定为验证通过;

所述连通性信息包括震荡广播链路ID、本设备的类型、对应的邻居ID、以及链路状态类型。

该装置的有益效果与方法相同,在此不做冗述。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1