路由处理方法和装置与流程

文档序号:11138458阅读:303来源:国知局
路由处理方法和装置与制造工艺

本申请涉及网络通信技术,特别涉及路由处理方法和装置。



背景技术:

边界网关协议(BGP:Border Gateway Protocol)引入了路径附加(Add-path:Additional-path)特性。Add-path特性允许向BGP邻居通告到达同一目的地址的多条路由。

如图1所示的组网中RT2和RT1建立了BGP邻居,且RT2使能Add-path特性,RT2分别和RT3、RT4建立了BGP邻居,则当RT2收到BGP邻居即RT3和RT4发布的路由时,RT3和RT4发布的路由为到达同一目的地址的不同路由,RT2将来自RT3和RT4发布的路由都发送给RT1,从而使得RT1能够在RT1至RT4之间的链路故障时快速切换到RT1至RT3之间的链路。

BGP规定,对于网络设备发布多条到达同一目的地址的路由给BGP邻居时,网络设备会为该发布的多条到达同一目的地址的路由分配路由标识(path-id)并发送给BGP邻居,以方便BGP邻居区分路由。

再如图1所示,以RT3发布的路由为路由1,RT4发布的路由为路由2为例,路由1和路由2为到达同一目的地址的不同路由,则RT2为路由1分配path-id1,为路由2分配置path-id2,path-id1与path-id2不同,分别用于表示路由1、路由2。RT2将路由1和path-id1,路由2和path-id2发送给RT1,当RT1收到路由1和path-id1,路由2和path-id2后,区分出如下两条路由并利用该两条路由进行流量转发:

path-id1:路由1,

path-id2:路由2。

由于路由的path-id是由发布该路由的网络设备确定的,这样,当发布路由的网络设备发生倒换进入优雅重启动(GR:Graceful Restart)后,之前为路由分配的path-id因为倒换而被删除,如此,就会出现网络设备在GR前后为同一条路由分配的path-id不同。比如,图1中的RT2在GR前为路由1分配的path-id为path-id1,而在GR后为路由1分配的path-id为path-id2。而对于同一条路由,path-id反复变化最终会影响网络中路径的确定,也会导致BGP整个网络不稳定。



技术实现要素:

本申请提供了路由处理方法和装置,以防止路由的path-id在网络设备执行GR前后发生变化。

本申请提供的技术方案包括:

一种路由处理方法,该方法应用于使能了边界网关协议BGP路径附加Add-path特性的网络设备,包括:

在优雅重启动GR后,从指定的备份装置中获取路由标识映射表;

学习BGP邻居发布的路由、以及确定所述BGP邻居为所述路由分配的第一标识path-id;

在获取的路由标识映射表中查找所述BGP邻居和第一path-id匹配的映射表项,若查找到,将所述映射表项中的第二path-id作为所述路由的path-id并发布,若未查找到,

分配第二path-id,生成包含所述BGP邻居、第一path-id和第二path-id的映射表项并记录至获取的路由标识映射表,将分配的第二path-id作为所述路由的path-id并发布,将生成的映射表项记录至所述备份装置中的路由标识映射表。

一种路由处理装置,该装置应用于使能了边界网关协议BGP路径附加Add-path特性的网络设备,包括:

获取单元,用于在优雅重启动GR后,从指定的备份装置中获取路由标识映射表;

确定单元,用于学习BGP邻居发布的路由、以及确定所述BGP邻居为所述路由分配的第一标识path-id;

查找单元,用于在所述获取单元获取的路由标识映射表中查找所述BGP邻居和第一path-id匹配的映射表项,

处理单元,用于在所述查找单元查找到所述映射表项时,将所述映射表项中的第二path-id作为所述路由的path-id并发布,在所述查找单元未查找到所述映射表项时,分配第二path-id,生成包含所述BGP邻居、第一path-id和第二path-id的映射表项并记录至所述获取单元获取的路由标识映射表,将分配的第二path-id作为所述路由的path-id并发布,将生成的映射表项记录至所述备份装置中的路由标识映射表。

由以上技术方案可以看出,本发明中,网络设备维护一个路由标识映射表并同步给备份装置,当网络设备执行GR后,若学习到路由,则当路由标识映射表中存在本网络设备在GR前为该路由分配的path-id,则依然将本网络设备之前为该路由分配的path-id作为当前学习到的路由的path-id,实现了网络设备执行GR前后同一路由的path-id不变。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为BGP应用组网示意图;

图2为本发明提供的方法流程图;

图3为本发明提供的装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

本发明能够防止路由的path-id在网络设备执行GR前后发生变化。下面先对本发明提供的方法进行描述:

参见图2,图2为本发明提供的方法流程图。图2所示的方法流程应用使能了BGP Add-path特性的网络设备。

如图2所示,该流程可包括以下步骤:

步骤201,网络设备在GR后,从指定的备份装置中获取路由标识映射表。

作为一个实施例,这里的备份装置可为本网络设备上指定的存储模块比如Flash卡等。其中,存储模块具有非易失特性,其存储的路由标识映射表不因本网络设备GR而丢失。

作为另一个实施例,这里的备份装置可为独立于本网络设备的装置,用于备份本网络设备上的路由标识映射表,比如独立于本网络设备的备用主控板。

可以看出,不管备份装置是网络设备上的存储模块,还是独立于网络设备的装置,都具有一个特点:存储的路由标识映射表与网络设备的GR无关,不因网络设备GR而丢失。

步骤202,网络设备学习BGP邻居发布的路由(记为第一路由)、以及确定BGP邻居为第一路由分配的第一path-id。

在步骤202中,第一路由只是为便于描述路由进行的命名,并非用于限定。同样,第一path-id也只是为便于描述第一路由的path-id进行的命名,并非用于限定。

按照BGP规定,BGP邻居之间是通过BGP的更新(UPDATE)报文发布路由。因此,本步骤202中的第一路由也是由BGP邻居通过BGP UPDATE报文发布路由的。只不过BGP邻居在发布第一路由时,如果还为第一路由分配了path-id即上述的第一path-id,则还需要对BGP UPDATE报文进行改进,以使BGP UPDATE报文携带第一path-id,当然,若未为第一路由分配path-id,则就没有必要在BGP UPDATE报文携带第一path-id。

基于此,本步骤202中网络设备学习BGP邻居发布的第一路由、以及确定BGP邻居为第一路由分配的第一path-id包括:

接收BGP邻居发送的BGP UPDATE报文;

获取BGP UPDATE报文携带的路由即为上述的第一路由;

若BGP UPDATE报文携带path-id,则将BGP UPDATE报文携带的path-id确定为上述第一path-id;

若BGP UPDATE报文未携带path-id,则将设定id确定为上述第一path-id。

其中,设定id具体实现时可根据实际情况设置,一般设置成一个非法的path-id即可,比如设置为0或者0xFFFFFFFF。

步骤203,网络设备在获取的路由标识映射表中查找BGP邻居和第一path-id匹配的映射表项(记为第一映射表项),若查找到,执行步骤204,若未查找到,执行步骤205。

步骤204,网络设备将第一映射表项中的第二path-id作为第一路由的path-id并发布。

作为一个实施例,步骤204具体为:网络设备将第一映射表项中的第二path-id重新作为第一路由的path-id,并与第一路由一起携带在BGP UPDATE报文中发布给其他BGP邻居。

本步骤204是网络设备在路由标识映射表中查找到第一映射表项的前提下执行的。当路由标识映射表中存在第一映射表项,也意味着网络设备在GR前已为第一路由分配了path-id即上述的第二path-id,基于此,为保证第一路由在本网络设备执行GR前后的path-id不变,则即使网络设备在步骤202中新学习到第一路由,本步骤204也不再重新为该第一路由分配path-id,而是直接采用在GR前已为第一路由分配的path-id即上述的第二path-id作为第一路由的path-id并发布给其他BGP邻居。通过步骤201至步骤204,能够实现网络设备执行GR前后网络设备发布的第一路由的path-id不变。

步骤205,网络设备分配第二path-id,生成包含BGP邻居、第一path-id和第二path-id的映射表项并记录至获取的路由标识映射表,将分配的第二path-id作为所述路由的path-id并发布给其他BGP邻居,将生成的映射表项记录至备份装置中的路由标识映射表。

本步骤205是网络设备在路由标识映射表中未查找到第一映射表项的前提下执行的。当路由标识映射表中不存在第一映射表项,也意味着网络设备在GR前还未为第一路由分配path-id,基于此,本步骤204就需要为第一路由分配path-id,以方便其他BGP邻居识别和区分第一路由。

作为一个实施例,在步骤205中,将生成的映射表项记录至备份装置中的路由标识映射表可包括:

判断当前是否到达设定的同步时间,如果是,将生成的映射表项记录至备份装置中的路由标识映射表,如果否,等待直至到达设定的同步时间时,将生成的映射表项记录至备份装置中的路由标识映射表。其中,设定的同步时间可根据实际需求设置。

本步骤205中将生成的映射表项同步至备份装置,为实现网络设备执行GR前后同一路由的path-id不变提供支持(具体见步骤201至步骤204),实现通过在备份装置同步少量的映射表项可以防止网络设备执行GR前后同一路由的path-id发生变化。

至此,完成图2所示流程。

通过图2所示流程可以看出,在本发明中,网络设备维护一个路由标识映射表并同步给备份装置,当网络设备执行GR后,若学习到路由,则当路由标识映射表中存在本网络设备在GR前为该路由分配的path-id,则依然将本网络设备之前为该路由分配的path-id作为当前学习到的路由的path-id,实现了网络设备执行GR前后同一路由的path-id不变。

下面通过比较现有技术和图2所示流程来说明图2所示流程所实现的在网络设备GR前后同一路由的path-id不变:

现有技术:

如图1所示,RT2分别与RT1、RT3、RT4建立BGP邻居(比如IBGP邻居),RT5分别与RT3、RT4建立BGP邻居(比如EBGP邻居)。

以RT5发布一条前缀为1.1.1.1/32的路由为例:

RT5将一条前缀为1.1.1.1/32的路由携带在BGP UPDATE报文中发送给RT3和RT4。为便于描述,这里将RT5发布的一条前缀为1.1.1.1/32的路由记为路由1_1。

RT3和RT4通过接收RT5发送的BGP UPDATE报文学习路由1_1。为便于描述,这里将RT3学习的路由1_1记为路由1_3,RT4学习的路由1_1记为路由1_4。

RT3将路由1_3携带在BGP UPDATE报文发送给RT2,RT4将路由1_4携带在BGP UPDATE报文发送给RT2。

RT2通过接收RT3发送的BGP UPDATE报文学习路由1_3,为路由1_3分配一个Path-id(记为Path-id1_3)并与路由1_3携带在BGP UPDATE报文(记为BGP UPDATE报文1_3)中发送给RT1。

RT2通过接收RT4发送的BGP UPDATE报文学习路由1_4,为学习的路由1_4分配一个Path-id(记为Path-id1_4)并与路由1_4携带在BGP UPDATE报文(记为BGP UPDATE报文1_4)中发送给RT1。

RT1接收RT2发送的BGP UPDATE报文1_3,学习路由1_3、并确定路由1_3的Path-id为Path-id1_3;

RT1接收RT2发送的BGP UPDATE报文1_4,学习路由1_4、并确定路由1_4的Path-id为Path-id1_4。

表1示出了RT1至RT4的路由:

表1

基于表1,假如按照最优路由原则确定从RT1到1.1.1.1/32的最优路由为:RT1->RT2->RT4->RT5。

当RT2进入GR后,RT2与RT1、RT3、RT4之间的邻居断开,此时RT1至RT4的路由如表2所示:

表2

RT2执行完GR后,假如先和RT3建立IBGP邻居关系,RT2学习来自RT3发布的前缀为1.1.1.1/32的路由即上述的路由1_3,为路由1_3重新分配Path-id(假如为Path-id1_4),RT2将路由1_3、为路由1_3重新分配的Path-id1_4携带在BGP UPDATE报文(记为BGP UPDATE报文2_3)中发送给RT1。RT1设备收到BGP UPDATE报文2_3,学习路由1_3、并确定出路由1_3的Path-id为Path-id1_4,则将原有的path-id为Path-id1_4的路由即上述路由1_4(Path-id1_4)给替换掉。此时,RT1至RT4的路由如表3所示:

表3

通过表3可以看出,此时,RT1存在的到1.1.1.1/32的两条路由均是来自于RT3。因此,当按照最优路由确定RT1到1.1.1.1/32的最优路由时,只能确定最优路由为:RT1->RT2->RT3->RT5,即RT1到1.1.1.1/32的最优路由从原来的RT1->RT2->RT4->RT5切换到RT1->RT2->RT3->RT5。

当RT2后续和RT4建立IBGP邻居关系并学习到路由1.1.1.1/32即上述的路由1_4之后,RT2为该路由1_4重新分配Path-id(假如为Path-id1_3)。RT2将路由1_4、为路由1_4重新分配的Path-id1_3携带在BGP UPDATE报文(记为BGP UPDATE报文2_4)中发送给RT1。RT1设备收到BGP UPDATE报文2_4学习路由1_4、并确定路由1_4的Path-id为Path-id1_3,将原有的path-id为Path-id1_3的路由即上述路由1_3(Path-id1_3)给替换掉。此时,RT1至RT4的路由如表4所示:

表4

如此,基于表4可以看出,RT1存在的到1.1.1.1/32的两条路由此时又分别来自于RT3和RT4,按照最优路由原则,确定RT1到1.1.1.1/32的最优路由为RT1->RT2->RT4->RT5,即RT1到1.1.1.1/32的最优路由从原来的RT1->RT2->RT3->RT5又切换到RT1->RT2->RT4->RT5。

可以看出,在现有技术中,RT2执行GR前后由于同一路由的Path-id发生变化,导致BGP邻居RT1至1.1.1.1/32的最优路径反复切换,影响RT1的流量转发,也会造成整个网络不稳定。

基于此,本发明公开了如图2所示流程,其完全能够解决上述现有技术的缺陷:

仍以上述RT5发布一条前缀为1.1.1.1/32的路由为例,则,

RT5向RT3和RT4分别发布一条前缀为1.1.1.1/32的路由;

当RT3学习路由1_3后,RT3将路由1_3携带在BGP UPDATE报文发送给RT2;

当RT4学习路由1_4后,RT4将路由1_4携带在BGP UPDATE报文发送给RT2。

RT2通过接收RT3发送的BGP UPDATE报文学习路由1_3,发现RT3发布的BGP UPDATE报文并未携带Path-id,则默认RT3为路由1_3分配的Path-id为设定id比如0。

RT2为路由1_3分配一个Path-id(记为Path-id1_3),生成包含RT3、Path-id1_3、设定id的映射表项(记为映射表项1)并记录至本地已获取的路由标识映射表,之后RT2将该映射表项1记录至备份装置中的路由标识映射表。

RT2将路由1_3、Path-id1_3携带在BGP UPDATE报文(记为BGP UPDATE报文1_3)中发送给RT1;

RT2通过接收RT4发送的BGP UPDATE报文学习路由1_4,发现RT4发送的BGP UPDATE报文并未携带Path-id,则默认RT4为路由1_4分配的Path-id为设定id比如0。

RT2为路由1_4分配一个Path-id(记为Path-id1_4),生成包含RT4、Path-id1_4、设定id的映射表项(记为映射表项2)并记录至本地获取的路由标识映射表,之后RT2将该映射表项2记录至备份装置中的路由标识映射表。

RT2将路由1_4、Path-id1_4携带在BGP UPDATE报文(记为BGP UPDATE报文1_4)中发送给RT1。

RT1接收RT2发送的BGP UPDATE报文1_3,学习路由1_3、并确定路由1_3的Path-id为Path-id1_3;

RT1接收RT2发送的BGP UPDATE报文1_4,学习路由1_4、并确定路由1_4的Path-id为Path-id1_4。

表5示出了RT1至RT4的路由:

表5

假如按照最优路由原则确定RT1到1.1.1.1/32的最优路由为RT1->RT2->RT4->RT5。

当RT2进入GR,RT2与RT1、RT3、RT4之间的邻居断开,此时RT1至RT4的路由如上述表2所示。

RT2执行完GR后,从备份装置中获取路由标识映射表。

RT2假如先和RT3建立BGP邻居,则RT2学习来自RT3发布的前缀为1.1.1.1/32的路由即上述的路由1_3,发现RT3并未为路由1_3分配Path-id,则默认RT3为路由1_3分配的Path-id为设定id比如0。

RT2以RT3、设定id为关键字在路由标识映射表中查找包含该关键字的映射表项即上述的映射表项1;

RT2将映射表项1中的Path-id1_3确定为路由1_3的Path-id,与路由1_3一起携带在BGP UPDATE报文即上述的BGP UPDATE报文1_3发送给RT1。

RT1设备收到BGP UPDATE报文1_3,学习路由1_3、并确定路由1_3的Path-id为Path-id1_3,发现当前已记录了来自RT3发布的Path-id为Path-id1_3的路由1_3,则可直接刷新该RT3发布的Path-id为Path-id1_3的路由1_3的老化标志即可。这里的老化标志可为一个老化定时器,当RT1记录一个路由时会为该路由启动一个老化定时器。

此时,RT1至RT4的路由如表6所示:

表6

可以看出,RT2在执行GR前后,发布的路由1_3的Path-id并未发生变化,始终为Path-id1_3,这样就不会出现现有技术中RT2重新为路由1_3分配Path-id比如Path-id1_4的情况。如此,对于RT1,RT1不再像现有技术那样因为路由1_3的Path-id发生变化比如从Path-id1_3变化为Path-id1_4而替换掉原本该Path-id1_4对应的路由1_4,使得RT1始终存在到1.1.1.1/32的两条路由不变,RT1到1.1.1.1/32的最优路由不变,仍为RT1->RT2->RT4->RT5。

同样,当RT2后续和RT4建立BGP邻居并学习到路由1.1.1.1/32即上述的路由1_4之后,发现RT4并未为路由1_4分配Path-id,则默认RT4为路由1_4分配的Path-id为设定id比如0。

RT2以RT4、设定id为关键字在路由标识映射表中查找包含该关键字的映射表项即上述的映射表项2;

RT2将映射表项2中的Path-id1_4确定为路由1_4的Path-id,与路由1_4一起携带在BGP UPDATE报文即上述的BGP UPDATE报文1_4发送给RT1。

RT1设备收到BGP UPDATE报文1_4学习路由1_4、并确定路由1_4的Path-id为Path-id1_4,发现当前已记录了来自RT4发布的Path-id为Path-id1_4的路由1_4,则可直接刷新该RT4发布的Path-id为Path-id1_4的路由1_4的老化标志即可。此时,RT1至RT4的路由如表7所示:

表7

通过表7可以看出,RT2在执行GR前后,发布的同一路由即路由1_4的Path-id并未发生变化,始终为Path-id1_4,不会出现现有技术中RT2重新为路由1_4分配Path-id比如Path-id1_3的情况。如此,对于RT1,RT1不再像现有技术那样因为路由1_4的Path-id发生变化比如从Path-id1_4变化为Path-id1_3而替换掉原本该Path-id1_3对应的路由1_4,使得RT1始终存在到1.1.1.1/32的两条路由不变,RT1到1.1.1.1/32的最优路由依然不变,依然为RT1->RT2->RT4->RT5。

可以看出,通过如图2所示流程,RT2执行GR前后同一路由的Path-id不变,BGP邻居即RT1确定至1.1.1.1/32的最优路径始终不变,相比现有技术,保证了RT1的流量转发和整个网络不稳定。

以上对本发明提供的方法进行了描述。下面对本发明提供的装置进行描述:

参见图3,图3为本发明提供的装置结构图。该装置应用于使能了BGP Add-path特性的网络设备,包括:

获取单元,用于在优雅重启动GR后,从指定的备份装置中获取路由标识映射表;

确定单元,用于学习BGP邻居发布的路由、以及确定所述BGP邻居为所述路由分配的第一标识path-id;

查找单元,用于在所述获取单元获取的路由标识映射表中查找所述BGP邻居和第一path-id匹配的映射表项,

处理单元,用于在所述查找单元查找到所述映射表项时,将所述映射表项中的第二path-id作为所述路由的path-id并发布,在所述查找单元未查找到所述映射表项时,分配第二path-id,生成包含所述BGP邻居、第一path-id和第二path-id的映射表项并记录至所述获取单元获取的路由标识映射表,将分配的第二path-id作为所述路由的path-id并发布,将生成的映射表项记录至所述备份装置中的路由标识映射表。

优选地,所述指定的备份装置为本设备上指定的存储模块,所述存储模块具有非易失特性,存储的路由标识映射表不因本设备GR而丢失;或者,

所述指定的备份装置为独立于本设备的装置,用于备份本设备上的路由标识映射表。

优选地,所述确定单元通过以下步骤学习BGP邻居发布的路由、以及确定BGP邻居为所述路由分配的第一标识path-id包括:

接收BGP邻居发送的BGP更新UPDATE报文;

获取BGP UPDATE报文携带的路由;

若BGP UPDATE报文携带path-id,则将BGP UPDATE报文携带的path-id确定为所述第一path-id;

若BGP UPDATE报文未携带path-id,则将设定id确定为所述第一path-id。

优选地,所述处理单元将生成的映射表项记录至所述备份装置中的路由标识映射表包括:

判断当前是否到达设定的同步时间,如果是,将生成的映射表项记录至所述备份装置中的路由标识映射表,如果否,等待直至到达设定的同步时间时,将生成的映射表项记录至所述备份装置中的路由标识映射表。

至此,完成本发明提供的装置描述。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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