一种数据报文传输方法和装置转让专利

申请号 : CN201710114920.X

文献号 : CN106878184B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王文龙

申请人 : 新华三技术有限公司

摘要 :

本申请提供一种数据报文传输方法和装置,该方法包括:接收数据报文,并利用所述数据报文的目的IP地址查询分支网段表;若不存在与所述目的IP地址匹配的隧道表项,则为目的地址表中的每个IP地址构造探测报文,所述探测报文携带所述目的IP地址;发送所述探测报文,以使与所述目的IP地址对应的分支路由器返回探测响应报文;接收分支路由器返回的探测响应报文,并利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项,在所述分支网段表中记录所述隧道表项;利用与所述目的IP地址匹配的隧道表项发送所述数据报文。通过本申请的技术方案,解决无法传输数据报文的问题,即解决没有隧道表项时的断流问题,并可以提高P2MP隧道的自适应性。

权利要求 :

1.一种数据报文传输方法,应用于中心路由器,其特征在于,该方法包括:

接收数据报文,并利用所述数据报文的目的IP地址查询分支网段表;

若不存在与所述目的IP地址匹配的隧道表项,则为目的地址表中的每个IP地址构造探测报文,所述探测报文携带所述目的IP地址;发送所述探测报文,以使与所述目的IP地址对应的分支路由器返回探测响应报文;

接收分支路由器返回的探测响应报文,并利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项,在所述分支网段表中记录所述隧道表项;

利用与所述目的IP地址匹配的隧道表项发送所述数据报文。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

在接收到来自分支路由器的第一类报文时,从第一类报文中解析出外层源IP地址,判断目的地址表中是否存在与外层源IP地址匹配的隧道表项;

若不存在与外层源IP地址匹配的隧道表项,则生成与外层源IP地址匹配的隧道表项,并在所述目的地址表中记录生成的隧道表项,并为生成的隧道表项设置老化定时器;

若存在与外层源IP地址匹配的隧道表项,则刷新与外层源IP地址匹配的隧道表项的老化定时器的老化时间。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

在接收到来自分支路由器的第二类报文时,从所述第二类报文中解析出外层源IP地址以及内层源IP地址,并判断所述分支网段表中是否存在与所述外层源IP地址、所述内层源IP地址匹配的隧道表项;

若不存在匹配的隧道表项,则生成与所述外层源IP地址、所述内层源IP地址匹配的隧道表项,并在所述分支网段表中记录生成的隧道表项,并为生成的隧道表项设置老化定时器;若存在匹配的隧道表项,则刷新与所述外层源IP地址、所述内层源IP地址匹配的隧道表项的老化定时器的老化时间。

4.根据权利要求3所述的方法,其特征在于,所述从所述第二类报文中解析出外层源IP地址以及内层源IP地址之后,所述方法还包括:判断所述目的地址表中是否存在与外层源IP地址匹配的隧道表项;

若不存在与外层源IP地址匹配的隧道表项,则生成与外层源IP地址匹配的隧道表项,并在所述目的地址表中记录生成的隧道表项,并为生成的隧道表项设置老化定时器;

若存在与外层源IP地址匹配的隧道表项,则刷新与外层源IP地址匹配的隧道表项的老化定时器的老化时间。

5.根据权利要求3所述的方法,其特征在于,所述方法还包括:

在根据所述中心路由器的配置信息确定需要删除所述分支网段表中的隧道表项,或者,根据删除命令确定需要删除所述分支网段表中的隧道表项,或者,根据隧道表项的老化定时器确定需要删除所述分支网段表中的隧道表项时,则从所述分支网段表中删除待删除的隧道表项,或者,将所述分支网段表中的待删除的隧道表项迁移到指定存储位置。

6.根据权利要求1或5所述的方法,其特征在于,所述利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项的过程,具体包括:从所述探测响应报文中解析出分支路由器的IP地址,并判断指定存储位置是否存在与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项;

如果是,则从所述指定存储位置获得与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项,刷新该隧道表项的老化定时器的老化时间;

如果否,则生成与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项,并为生成的隧道表项设置老化定时器。

7.根据权利要求2或4所述的方法,其特征在于,所述方法还包括:

在隧道表项的老化定时器超时时,根据所述隧道表项的外层源IP地址构造第三类报文,并向所述外层源IP地址对应的分支路由器发送所述第三类报文;若在预设时间内收到所述第三类报文对应的响应报文,则刷新所述隧道表项的老化定时器的老化时间;若在预设时间内未收到所述第三类报文对应的响应报文,则从所述目的地址表中删除所述隧道表项,或者,在隧道表项的老化定时器超时之前的第N秒,根据所述隧道表项的外层源IP地址构造第三类报文,并向所述外层源IP地址对应的分支路由器发送所述第三类报文;若在所述老化定时器超时之前,收到所述第三类报文对应的响应报文,则刷新所述隧道表项的老化定时器的老化时间;若在所述老化定时器超时之前,未收到所述第三类报文对应的响应报文,则从所述目的地址表中删除所述隧道表项;其中,N为大于0的数值。

8.根据权利要求1所述的方法,其特征在于,所述利用所述数据报文的目的IP地址查询分支网段表之后,所述方法还包括:若存在与所述目的IP地址匹配的隧道表项,查询是否存在GRE隧道备份口;

如果不存在GRE隧道备份口,利用与所述目的IP地址匹配的隧道表项发送所述数据报文;

如果存在GRE隧道备份口,则比较隧道表项的优先级与GRE隧道备份口的优先级;

如果隧道表项的优先级高于所述GRE隧道备份口的优先级,则利用与所述目的IP地址匹配的隧道表项发送所述数据报文;如果所述GRE隧道备份口的优先级高于隧道表项的优先级,则利用所述GRE隧道备份口发送所述数据报文。

9.根据权利要求1所述的方法,其特征在于,所述利用所述数据报文的目的IP地址查询分支网段表之后,所述方法还包括:若不存在与目的IP地址匹配的隧道表项,则查询是否存在GRE隧道备份口;

如果存在GRE隧道备份口,利用所述GRE隧道备份口发送所述数据报文;

如果不存在GRE隧道备份口,则执行为目的地址表中的每个IP地址构造探测报文的过程;若在指定时间内接收到分支路由器返回的探测响应报文,则执行利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项的过程;若在指定时间内未接收到分支路由器返回的探测响应报文,则丢弃所述数据报文。

10.根据权利要求1所述的方法,其特征在于,所述方法还包括:

若通过GRE隧道备份口接收到数据报文,则设置该数据报文的入接口索引为所述GRE隧道备份口,并利用该数据报文的目的IP地址查询分支网段表;

若不存在与该目的IP地址匹配的隧道表项,则判断该数据报文的入接口索引是否为所述GRE隧道备份口,如果是,则丢弃该数据报文,如果否,则通过GRE隧道备份口发送该数据报文。

11.一种数据报文传输装置,应用于中心路由器,其特征在于,该装置包括:

接收模块,用于接收数据报文;

判断模块,用于利用所述数据报文的目的IP地址查询分支网段表;

处理模块,用于当不存在与所述目的IP地址匹配的隧道表项时,则为目的地址表中的每个IP地址构造探测报文,所述探测报文携带所述目的IP地址;

发送模块,用于发送所述处理模块为目的地址表中的每个IP地址构造的探测报文,以使与所述目的IP地址对应的分支路由器返回探测响应报文;

所述接收模块,还用于接收分支路由器返回的探测响应报文;

所述处理模块,还用于利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项,并在所述分支网段表中记录所述隧道表项;

所述发送模块,还用于利用所述隧道表项发送所述数据报文。

12.根据权利要求11所述的装置,其特征在于,

所述接收模块,还用于接收来自分支路由器的第一类报文;

所述判断模块,还用于从所述第一类报文中解析出外层源IP地址,并判断目的地址表中是否存在与所述外层源IP地址匹配的隧道表项;

所述处理模块,还用于当不存在与所述外层源IP地址匹配的隧道表项时,生成与外层源IP地址匹配的隧道表项,并在所述目的地址表中记录生成的隧道表项,为生成的隧道表项设置老化定时器;当存在与所述外层源IP地址匹配的隧道表项时,刷新与外层源IP地址匹配的隧道表项的老化定时器的老化时间。

13.根据权利要求11所述的装置,其特征在于,

所述接收模块,还用于接收来自分支路由器的第二类报文;

所述判断模块,还用于从所述第二类报文中解析出外层源IP地址以及内层源IP地址,并判断所述分支网段表中是否存在与所述外层源IP地址、所述内层源IP地址匹配的隧道表项;

所述处理模块,还用于当不存在与所述外层源IP地址、所述内层源IP地址匹配的隧道表项时,则生成与所述外层源IP地址、所述内层源IP地址匹配的隧道表项,并在所述分支网段表中记录生成的隧道表项,并为生成的隧道表项设置老化定时器;当存在与所述外层源IP地址、所述内层源IP地址匹配的隧道表项时,则刷新与所述外层源IP地址、所述内层源IP地址匹配的隧道表项的老化定时器的老化时间。

14.根据权利要求13所述的装置,其特征在于,

所述判断模块,还用于在从所述第二类报文中解析出外层源IP地址以及内层源IP地址后,判断目的地址表中是否存在与外层源IP地址匹配的隧道表项;

所述处理模块,还用于当不存在与外层源IP地址匹配的隧道表项时,生成与外层源IP地址匹配的隧道表项,并在所述目的地址表中记录生成的隧道表项,为生成的隧道表项设置老化定时器;当存在与外层源IP地址匹配的隧道表项时,刷新与外层源IP地址匹配的隧道表项的老化定时器的老化时间。

15.根据权利要求13所述的装置,其特征在于,

所述处理模块,还用于在根据所述中心路由器的配置信息确定需要删除所述分支网段表中的隧道表项,或者,根据删除命令确定需要删除所述分支网段表中的隧道表项,或者,根据隧道表项的老化定时器确定需要删除所述分支网段表中的隧道表项时,则从所述分支网段表中删除待删除的隧道表项,或者,将所述分支网段表中的待删除的隧道表项迁移到指定存储位置。

16.根据权利要求11或15所述的装置,其特征在于,

所述处理模块,具体用于在利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项的过程中,从所述探测响应报文中解析出分支路由器的IP地址,并判断指定存储位置是否存在与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项;如果是,则从所述指定存储位置获得与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项,刷新该隧道表项的老化定时器的老化时间;如果否,则生成与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项,并为生成的隧道表项设置老化定时器。

17.根据权利要求12或14所述的装置,其特征在于,

所述处理模块,还用于在隧道表项的老化定时器超时时,根据所述隧道表项的外层源IP地址构造第三类报文,并向所述外层源IP地址对应的分支路由器发送所述第三类报文;

若在预设时间内收到所述第三类报文对应的响应报文,则刷新所述隧道表项的老化定时器的老化时间;若在预设时间内未收到所述第三类报文对应的响应报文,则从所述目的地址表中删除所述隧道表项;或者,在隧道表项的老化定时器超时之前的第N秒,根据所述隧道表项的外层源IP地址构造第三类报文,并向所述外层源IP地址对应的分支路由器发送所述第三类报文;若在所述老化定时器超时之前,收到所述第三类报文对应的响应报文,则刷新所述隧道表项的老化定时器的老化时间;若在所述老化定时器超时之前,未收到所述第三类报文对应的响应报文,则从所述目的地址表中删除所述隧道表项;其中,N为大于0的数值。

18.根据权利要求11所述的装置,其特征在于,

所述判断模块,还用于在利用所述数据报文的目的IP地址查询分支网段表后,若存在与所述目的IP地址匹配的隧道表项,查询是否存在GRE隧道备份口;

所述发送模块,还用于当不存在GRE隧道备份口时,则利用与所述目的IP地址匹配的隧道表项发送所述数据报文;当存在GRE隧道备份口时,则比较隧道表项的优先级与所述GRE隧道备份口的优先级,如果隧道表项的优先级高于所述GRE隧道备份口的优先级,则利用与所述目的IP地址匹配的隧道表项发送所述数据报文,如果所述GRE隧道备份口的优先级高于隧道表项的优先级,则利用所述GRE隧道备份口发送所述数据报文;

所述判断模块,还用于在利用所述数据报文的目的IP地址查询分支网段表后,若不存在与所述目的IP地址匹配的隧道表项,则查询是否存在GRE隧道备份口;所述发送模块,还用于当存在GRE隧道备份口时,则利用所述GRE隧道备份口发送所述数据报文;当不存在GRE隧道备份口时,则由所述处理模块为目的地址表中的每个IP地址构造探测报文。

说明书 :

一种数据报文传输方法和装置

技术领域

[0001] 本申请涉及通信技术领域,尤其涉及一种数据报文传输方法和装置。

背景技术

[0002] GRE(Generic Routing Encapsulation,通用路由封装)隧道是一种常见隧道,可以对某些网络层协议(如IP)的数据报文进行封装,使这些被封装的数据报文能够在另一网络层协议(如IP)中传输,封装后的数据报文在网络中传输的路径称为GRE隧道,GRE隧道是一个点到点连接,其两端设备分别对数据报文进行封装和解封装。GRE隧道的工作原理如图1所示,数据报文1的源地址为主机1的IP地址,目的地址为主机2的IP地址,在数据报文1到达路由器A时,根据目的IP地址查询路由表,发现出接口是GRE隧道,则为数据报文1封装GRE头,得到数据报文2,GRE头的内容包括版本、协议、序列号等。然后为数据报文2封装IP头,得到数据报文3,IP头的源地址为路由器A的IP地址,目的地址为路由器B的IP地址。路由器A通过GRE隧道将数据报文3发送给路由器B,路由器B对数据报文3进行解封装,得到数据报文1,根据数据报文1的目的IP地址查询路由表,通过出接口将数据报文1发送到主机2。
[0003] 当企业分支机构众多时,可以在企业中心配置中心路由器,并在各个分支机构配置分支路由器,如图2所示的组网。若在中心路由器与每个分支路由器之间单独建立GRE隧道,则随着分支机构数量的增加,GRE隧道的数量会很多,配置工作量很大,而且中心路由器需要为每个GRE隧道单独分配IP地址,浪费地址资源。为此,提出了基于P2MP(Point to multi-point,点到多点)的GRE隧道技术,在每个分支路由器上配置GRE隧道,GRE隧道的目的IP地址为中心路由器的IP地址A,源IP地址为本分支路由器的IP地址,而中心路由器上配置P2MP GRE隧道。基于此,中心路由器接收到来自分支路由器1的数据报文后,从数据报文中解析出分支路由器1的IP地址和主机2的IP地址,建立一条隧道表项,该隧道表项的索引为主机2的IP地址,目的地址为分支路由器1的IP地址。这样,中心路由器在接收到主机1发送给主机2的数据报文后,通过数据报文的目的IP地址查询隧道表项,得到分支路由器1的IP地址,并利用IP地址A和分支路由器1的IP地址对数据报文进行GRE隧道封装并发送。
[0004] 在上述方式下,中心路由器只有接收到来自分支路由器1的数据报文,才可以维护隧道表项,若当前没有维护隧道表项时,先接收到主机1发送给主机2的数据报文,则无法传输数据报文。而且,为了节约表项资源,若一定时间内没有接收到来自分支路由器1的数据报文,中心路由器还会删除已经建立的隧道表项,此时若接收到主机1发送给主机2的数据报文,也无法传输数据报文。

发明内容

[0005] 本申请提供一种数据报文传输方法,应用于中心路由器,该方法包括:
[0006] 接收数据报文,并利用所述数据报文的目的IP地址查询分支网段表;
[0007] 若不存在与所述目的IP地址匹配的隧道表项,则为目的地址表中的每个IP地址构造探测报文,所述探测报文携带所述目的IP地址;发送所述探测报文,以使与所述目的IP地址对应的分支路由器返回探测响应报文;
[0008] 接收分支路由器返回的探测响应报文,并利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项,在所述分支网段表中记录所述隧道表项;
[0009] 利用与所述目的IP地址匹配的隧道表项发送所述数据报文。
[0010] 本申请提供一种数据报文传输装置,应用于中心路由器,该装置包括:
[0011] 接收模块,用于接收数据报文;
[0012] 判断模块,用于利用所述数据报文的目的IP地址查询分支网段表;
[0013] 处理模块,用于当不存在与所述目的IP地址匹配的隧道表项时,则为目的地址表中的每个IP地址构造探测报文,所述探测报文携带所述目的IP地址;
[0014] 发送模块,用于发送所述处理模块为目的地址表中的每个IP地址构造的探测报文,以使与所述目的IP地址对应的分支路由器返回探测响应报文;
[0015] 所述接收模块,还用于接收分支路由器返回的探测响应报文;
[0016] 所述处理模块,还用于利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项,并在所述分支网段表中记录所述隧道表项;
[0017] 所述发送模块,还用于利用所述隧道表项发送所述数据报文。
[0018] 基于上述技术方案,本申请实施例中,在接收到数据报文时,若分支网段表不存在与数据报文的目的IP地址匹配的隧道表项,则可以为目的地址表中的每个IP地址构造探测报文,以使与该目的IP地址对应的分支路由器返回探测响应报文,并利用该探测响应报文获得与该目的IP地址匹配的隧道表项,从而利用该隧道表项发送该数据报文。基于上述方式,只要曾经接收过分支路由器发送的报文,即使当前在分支网段表中没有找到与目的IP地址匹配的隧道表项,也可以通过目的地址表触发学习到隧道表项,解决无法传输数据报文的问题,即解决没有隧道表项时的断流问题,并可以提高P2MP隧道的自适应性。

附图说明

[0019] 为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
[0020] 图1是GRE隧道的工作原理的示意图;
[0021] 图2是基于P2MP的GRE隧道技术的工作原理的示意图;
[0022] 图3是本申请一种实施方式中的数据报文传输方法的流程图;
[0023] 图4是本申请一种实施方式中的目的地址表的结构示意图;
[0024] 图5是本申请一种实施方式中根据keepalive报文建立隧道表项的示意图;
[0025] 图6是本申请一种实施方式中的分支网段表的结构示意图;
[0026] 图7是本申请一种实施方式中的维护分支网段表、目的地址表的示意图;
[0027] 图8是本申请另一种实施方式中的数据报文传输方法的流程图;
[0028] 图9是本申请一种实施方式中的配置两个中心路由器的示意图;
[0029] 图10是本申请另一种实施方式中的数据报文传输方法的流程图;
[0030] 图11是本申请一种实施方式中的中心路由器的硬件结构图;
[0031] 图12是本申请一种实施方式中的数据报文传输装置的结构图。

具体实施方式

[0032] 在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
[0033] 应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0034] 本申请实施例中提出一种数据报文传输方法,该方法可以应用于中心路由器,参见图3所示,为数据报文传输方法的流程图,该方法可以包括以下步骤:
[0035] 步骤301,接收数据报文,利用该数据报文的目的IP地址查询分支网段表。
[0036] 步骤302,若不存在与该目的IP地址匹配的隧道表项,则为目的地址表中的每个IP地址构造探测报文,该探测报文携带该目的IP地址;以及,发送该探测报文,以使与该目的IP地址对应的分支路由器返回探测响应报文。
[0037] 步骤303,接收分支路由器返回的探测响应报文,并利用该探测响应报文获得与该目的IP地址匹配的隧道表项,并在分支网段表中记录该隧道表项。
[0038] 步骤304,利用与该目的IP地址匹配的隧道表项发送该数据报文。
[0039] 在图3所示的流程中,涉及到分支网段表和目的地址表的内容,以下先对分支网段表的维护过程以及目的地址表的维护过程进行详细说明。
[0040] 情况一、目的地址表(传统方式不会维护目的地址表)。
[0041] 在一个例子中,中心路由器在接收到来自分支路由器的第一类报文时,从该第一类报文中解析出外层源IP地址,并判断目的地址表中是否存在与该外层源IP地址匹配的隧道表项;若不存在,则生成与该外层源IP地址匹配的隧道表项,并在目的地址表中记录生成的隧道表项,并为生成的隧道表项设置老化定时器;若存在,刷新与外层源IP地址匹配的隧道表项的老化定时器的老化时间。
[0042] 其中,第一类报文是包括外层源IP地址,且内层源IP地址不是主机地址的报文。如图2所示,假设中心路由器接收到来自分支路由器1的第一类报文,该第一类报文包括外层源IP地址(即分支路由器1的IP地址),且内层源IP地址不是主机2的IP地址,因此无法基于第一类报文建立传统的隧道表项。
[0043] 在一个例子中,第一类报文可以为keepalive(保活)报文,keepalive报文是GRE隧道的保活报文,分支路由器可以通过GRE隧道周期性的向中心路由器发送keepalive报文,如果连续发送预设次数(可以根据经验配置)个keepalive报文后,仍然没有收到中心路由器返回的响应报文,则分支路由器将GRE隧道的接口状态设置为down,表示无法通过GRE隧道向中心路由器发送报文。
[0044] 分支路由器1向中心路由器发送的keepalive报文携带分支路由器1的IP地址、GRE隧道头等内容。分支路由器2向中心路由器发送的keepalive报文携带分支路由器2的IP地址、GRE隧道头等内容。在传统方式中,中心路由器在收到来自分支路由器1/分支路由器2的keepalive报文后,由于keepalive报文只携带分支路由器1/分支路由器2的IP地址,但不包括主机的IP地址,因此无法基于第一类报文建立隧道表项,只是向分支路由器1/分支路由器2返回响应报文。
[0045] 与上述方式不同的是,本申请实施例中,中心路由器可以维护目的地址表,在接收到来自分支路由器1/分支路由器2的keepalive报文后,可以根据keepalive报文建立隧道表项,并在目的地址表中记录该隧道表项。其中,目的地址表是一种组织结构,用于记录各隧道表项,如采用表格的方式记录各隧道表项,如表1所示,或者,也可以采用哈希表的方式记录各隧道表项,如图4所示。对此目的地址表的结构不做限制,在后续过程中,以采用哈希表的方式为例。
[0046] 表1
[0047]  隧道目的地址 GRE隧道头的KEY值 老化定时器
隧道表项11      
隧道表项12      
…      
隧道表项31      
[0048] 针对“中心路由器在接收到来自分支路由器1/分支路由器2的keepalive报文后,根据keepalive报文建立隧道表项,在目的地址表中记录该隧道表项”的过程,参见图5所示,为中心路由器根据keepalive报文建立隧道表项的示意图。
[0049] 步骤501,中心路由器接收来自分支路由器的keepalive报文。
[0050] 步骤502,中心路由器从keepalive报文中解析出分支路由器的IP地址(即该keepalive报文的外层源IP地址),并解析出GRE隧道头的KEY值。
[0051] 其中,keepalive报文包括外层IP头、GRE头和内层载荷。外层IP头的源IP地址也称为外层源IP地址,也就是分支路由器的IP地址。GRE头的内容可以包括版本、协议、序列号、KEY值等,对此内容以及各内容的含义不做限制。内层载荷的源IP地址也称为内层源IP地址,内层载荷的目的IP地址也称为内层目的IP地址,而且,keepalive报文的内层载荷的源IP地址为中心路由器的IP地址(而不是主机的IP地址),内层载荷的目的IP地址为本分支路由器的IP地址,因此,中心路由器可以认为内层源IP地址不是主机地址。
[0052] 步骤503,中心路由器判断目的地址表中是否存在与分支路由器的IP地址匹配的隧道表项;若不存在,则执行步骤504;若存在,则执行步骤505。
[0053] 步骤504,中心路由器生成与分支路由器的IP地址匹配的隧道表项,并在目的地址表中记录该生成的隧道表项,并为该隧道表项设置老化定时器。
[0054] 步骤505,中心路由器刷新与分支路由器的IP地址匹配的隧道表项的老化定时器的老化时间,对此老化定时器的老化时间刷新方式不做限制。
[0055] 经过上述处理,中心路由器可以在目的地址表中记录与分支路由器1的IP地址匹配的隧道表项,与分支路由器2的IP地址匹配的隧道表项。而且,中心路由器每次接收到keepalive报文后,都会刷新对应的老化定时器的老化时间。
[0056] 情况二、分支网段表(与传统方式维护的分支网段表不同)。
[0057] 在一个例子中,中心路由器在接收到来自分支路由器的第二类报文时,从该第二类报文中解析出外层源IP地址以及内层源IP地址,并判断分支网段表中是否存在与该外层源IP地址、该内层源IP地址匹配的隧道表项;若不存在,则生成与该外层源IP地址、该内层源IP地址匹配的隧道表项,并在分支网段表中记录该隧道表项,并为该隧道表项设置老化定时器;若存在,则刷新与该外层源IP地址、该内层源IP地址匹配的隧道表项的老化定时器的老化时间。
[0058] 其中,第二类报文是包括外层源IP地址,且内层源IP地址为主机地址的报文。如图2所示,假设中心路由器接收到来自分支路由器1的第二类报文,该第二类报文包括外层源IP地址(即分支路由器1的IP地址),且包括内层源IP地址(即主机2的IP地址),中心路由器可以基于第二类报文建立隧道表项。
[0059] 在一个例子中,第二类报文可以为数据报文(如主机2向主机1发送的数据报文)或者模拟报文。例如,分支路由器1在接收到主机2向主机1发送的数据报文后,对数据报文进行GRE封装,得到第二类报文,并通过GRE隧道将第二类报文发送给中心路由器。又例如,分支路由器1在较长时间内未接收到主机2向主机1发送的数据报文时,可以生成模拟报文,该模拟报文用于模拟主机2向主机1发送的数据报文,之后,分支路由器1对模拟报文进行GRE封装,得到第二类报文,并通过GRE隧道将第二类报文发送给中心路由器。针对分支路由器2的处理,与分支路由器1的处理过程类似,在此不再赘述。
[0060] 其中,分支路由器1可以基于HWPing(测试组)或者NQA(Network QualityAnalyzer,网络质量分析)等协议生成模拟报文,对此生成方式不做限制。
[0061] 在一个例子中,第二类报文可以携带分支路由器1的IP地址、主机2的IP地址、GRE隧道头等内容。中心路由器在接收到来自分支路由器1的第二类报文之后,由于第二类报文携带分支路由器1的IP地址、主机2的IP地址,因此,中心路由器可以基于第二类报文建立隧道表项。具体的,中心路由器可以维护分支网段表,在接收到来自分支路由器的第二类报文之后,可以根据第二类报文建立隧道表项,并在分支网段表中记录该隧道表项。其中,该分支网段表是一种组织结构,用于记录各隧道表项,如采用表格的方式记录各隧道表项,或者,也可以采用哈希表的方式记录各隧道表项,如图6所示。对此分支网段表的结构不做限制,在后续过程中,以采用哈希表的方式为例进行说明。
[0062] 在一个例子中,中心路由器在接收到来自分支路由器的第二类报文之后,不仅可以根据第二类报文维护分支网段表,还可以根据该第二类报文维护目的地址表。基于此,中心路由器在从第二类报文中解析出外层源IP地址以及内层源IP地址之后,还可以判断目的地址表中是否存在与该外层源IP地址匹配的隧道表项;若不存在,则生成与该外层源IP地址匹配的隧道表项,并在目的地址表中记录生成的隧道表项,并为生成的隧道表项设置老化定时器;若存在,则刷新与该外层源IP地址匹配的隧道表项的老化定时器的老化时间。
[0063] 针对“中心路由器根据第二类报文维护分支网段表、目的地址表”的过程,参见图7所示,为根据第二类报文维护分支网段表、目的地址表的示意图。
[0064] 步骤701,中心路由器接收来自分支路由器的第二类报文。
[0065] 步骤702,中心路由器从第二类报文中解析出分支路由器的IP地址(外层源IP地址)、主机的IP地址(内层源IP地址)、GRE隧道头的KEY值。
[0066] 在一个例子中,第二类报文可以包括外层IP头、GRE头和内层载荷(如主机2发送给主机1的数据报文或者分支路由器生成的模拟报文)。其中,外层IP头的源IP地址也称为外层源IP地址,也就是分支路由器的IP地址。GRE头的内容可以包括版本、协议、序列号、KEY值等,对此内容以及各内容的含义不做限制。内层载荷的源IP地址也称为内层源IP地址,也就是主机的IP地址。
[0067] 步骤703,中心路由器判断分支网段表中是否存在与分支路由器的IP地址(如分支路由器1的IP地址)、主机的IP地址(如主机2的IP地址)匹配的隧道表项。若不存在,则可以执行步骤704;若存在,则可以执行步骤705。
[0068] 步骤704,中心路由器生成与分支路由器的IP地址、主机的IP地址匹配的隧道表项,并在分支网段表中记录该隧道表项,为该隧道表项设置老化定时器。
[0069] 步骤705,中心路由器刷新与分支路由器的IP地址、主机的IP地址匹配的隧道表项的老化定时器的老化时间,具体的刷新方式不做限制。
[0070] 在步骤702之后,还可以执行步骤706,步骤706与步骤703没有先后关系。
[0071] 步骤706,中心路由器判断目的地址表中是否存在与分支路由器的IP地址匹配的隧道表项;若不存在,则执行步骤707;若存在,则执行步骤708。
[0072] 步骤707,中心路由器生成与分支路由器的IP地址匹配的隧道表项,并在目的地址表中记录该生成的隧道表项,并为该隧道表项设置老化定时器。
[0073] 步骤708,中心路由器刷新与分支路由器的IP地址匹配的隧道表项的老化定时器的老化时间,具体的刷新方式不做限制。
[0074] 经过上述处理,中心路由器可以在分支网段表中记录与分支路由器1的IP地址匹配的隧道表项,与分支路由器2的IP地址匹配的隧道表项。中心路由器可以在目的地址表中记录与分支路由器1的IP地址匹配的隧道表项,与分支路由器2的IP地址匹配的隧道表项。而且,中心路由器每次接收到第二类报文后,都会刷新分支网段表、目的地址表的各隧道表项对应的老化定时器的老化时间。
[0075] 针对上述情况一和情况二,当采用哈希表方式维护目的地址表时,如图4所示,中心路由器在接收到第一类报文时,利用第一类报文的特征(如分支路由器的IP地址)对数量n进行hash运算,根据hash运算结果确定隧道表项与节点的对应关系。例如,将分支路由器的IP地址对数量n进行取余处理,假设结果为0,则确定隧道表项与节点1关联,假设结果为1,则确定隧道表项与节点2关联,以此类推。假设隧道表项与节点1关联,则查询节点1下是否存在与第一类报文匹配的隧道表项,在生成第一类报文对应的隧道表项时,也将第一类报文对应的隧道表项记录在节点1下。同理,当采用哈希表方式维护分支网段表时,如图6所示,中心路由器在接收到第二类报文时,利用第二类报文的特征(如主机的IP地址)对数量n进行hash运算,根据hash运算结果确定隧道表项与节点的对应关系,其处理方式与目的地址表的处理类似,不再赘述。
[0076] 针对上述情况一和情况二,目的地址表的隧道表项可以包括但不限于隧道目的地址、GRE头的KEY值、老化定时器,分支网段表的隧道表项可以包括但不限于隧道目的地址、分支网段地址、GRE头的KEY值、老化定时器。从图4和图6可以看出,分支网段表的隧道表项比目的地址表的隧道表项多一个分支网段地址,当然,在实际应用中,目的地址表的隧道表项也可以包括分支网段地址,只是该分支网段地址为全0,而不是主机IP地址,对此不做限制。
[0077] 在一个例子中,在目的地址表的隧道表项以及分支网段表的隧道表项中,隧道目的地址是分支路由器的IP地址,即外层源IP地址。分支网段地址是主机的IP地址(如主机的32位IP地址,或者主机所属网段的网段地址),即内层源IP地址。KEY值用于区分隧道表项的优先级,KEY值越小,则隧道表项的优先级越高,在后续过程中会介绍优先级的使用方式,在此不再赘述。老化定时器用于隧道表项的老化,节约隧道表项的资源,删除长时间闲置的隧道表项。
[0078] 在一个例子中,中心路由器在接收到来自分支路由器的报文之后,还可以先区分该报文是第一类报文还是第二类报文,若是第一类报文,则可以采用图5所示的流程处理,若是第二类报文,则可以采用图7所示的流程处理。
[0079] 在上述过程中,介绍了目的地址表中的隧道表项的维护过程,分支网段表中的隧道表项的维护过程,在实际应用中,还涉及分支网段表中的隧道表项的删除过程、目的地址表中的隧道表项的删除过程,以下对删除过程进行说明。
[0080] 针对分支网段表中的隧道表项的删除过程:在根据中心路由器的配置信息确定需要删除分支网段表中的隧道表项,或者,根据删除命令确定需要删除分支网段表中的隧道表项,或者,根据隧道表项的老化定时器确定需要删除分支网段表中的隧道表项时,则中心路由器可以从分支网段表中删除待删除的隧道表项,或者,可以将分支网段表中的待删除的隧道表项迁移到指定存储位置。
[0081] 针对“根据中心路由器的配置信息确定需要删除分支网段表中的隧道表项”的过程,可以包括:若中心路由器的配置信息发生变化(如接口内网掩码配置变化),则确定删除该接口对应的所有隧道表项,如分支网段表中的隧道表项。
[0082] 针对“根据删除命令确定需要删除分支网段表中的隧道表项”的过程,可以包括:在接收到删除命令后,根据删除命令确定需要删除的隧道表项。例如,若删除命令携带分支路由器的IP地址,则确定需要删除与该分支路由器的IP地址对应的所有隧道表项;若删除命令携带分支路由器的IP地址、主机的IP地址,则确定需要删除与该分支路由器的IP地址、该主机的IP地址对应的隧道表项。
[0083] 针对“根据隧道表项的老化定时器确定需要删除分支网段表中的隧道表项”的过程,可以包括:若隧道表项的老化定时器超时,确定需要删除该隧道表项。
[0084] 在一个例子中,在确定需要删除的隧道表项后,以需要删除隧道表项1为例,则中心路由器可以从分支网段表中删除隧道表项1或者将隧道表项1迁移到指定存储位置。其中,删除隧道表项1是指:从中心路由器上彻底删除隧道表项1,中心路由器上不再存储隧道表项1。将隧道表项1迁移到指定存储位置是指:不在分支网段表中记录隧道表项1,但是仍然在中心路由器的指定存储位置(如内存)中存储隧道表项1,即隧道表项1仍然存储在中心路由器。而且,在指定存储位置记录隧道表项1时,该隧道表项1的分支网段地址可以为主机的IP地址,也可以将隧道表项1的分支网段地址清成全0,对此不做限制。进一步的,在中心路由器的指定存储位置(如内存)中存储隧道表项1后,中心路由器可以通过其它表项或者特定方式找到该指定存储位置(如内存),对此实现方式不做限制,只要可以找到该指定存储位置(如内存)即可。
[0085] 针对目的地址表中的隧道表项的删除过程:在隧道表项的老化定时器超时时,根据该隧道表项的外层源IP地址构造第三类报文,并向该外层源IP地址对应的分支路由器发送该第三类报文。若在预设时间内接收到第三类报文对应的响应报文,则刷新该隧道表项的老化定时器的老化时间,不再删除该隧道表项;若在预设时间内未接收到第三类报文对应的响应报文,则从目的地址表中删除该隧道表项。或者,在隧道表项的老化定时器超时之前的第N秒,根据该隧道表项的外层源IP地址构造第三类报文,并向该外层源IP地址对应的分支路由器发送第三类报文。若在该隧道表项的老化定时器超时之前,接收到该第三类报文对应的响应报文,则刷新该隧道表项的老化定时器的老化时间;若在该老化定时器超时之前,未接收到该第三类报文对应的响应报文,则从目的地址表中删除该隧道表项;其中,N为大于0的数值,如N可以为3秒。
[0086] 针对“根据隧道表项的外层源IP地址构造第三类报文,并向外层源IP地址对应的分支路由器发送第三类报文”的过程,可以根据隧道表项的外层源IP地址(也就是隧道表项中的隧道目的地址,其是分支路由器的IP地址)构造第三类报文,即第三类报文的目的IP地址为分支路由器的IP地址,这样,中心路由器可以将第三类报文发送给分支路由器。进一步的,若分支路由器与中心路由器之间的链路未发生故障,且分支路由器未发生故障,则分支路由器在接收到第三类报文后,可以向中心路由器返回第三类报文对应的响应报文。
[0087] 基于此,若中心路由器发送第三类报文后,在预设时间(如3秒)内或者老化定时器超时之前,接收到第三类报文对应的响应报文,则刷新该隧道表项的老化定时器的老化时间,在该隧道表项的老化定时器的老化时间被刷新后,该隧道表项不会由于老化定时器超时而被删除,即不再删除该隧道表项。若中心路由器在预设时间内或者老化定时器超时之前,未接收到第三类报文对应的响应报文,则表示分支路由器与中心路由器之间的链路发生故障,或者分支路由器发生故障,中心路由器可以从目的地址表中删除该隧道表项。
[0088] 在中心路由器从目的地址表中删除隧道表项后,针对“将分支网段表中的隧道表项迁移到指定存储位置”的实现方式,中心路由器还可以通过该隧道表项的外层源IP地址查询指定存储位置记录的隧道表项。若指定存储位置存在与该隧道表项匹配的隧道表项,则从指定存储位置删除与隧道表项匹配的隧道表项,也就是从中心路由器上彻底删除该隧道表项,不再存储该隧道表项。
[0089] 在一个例子中,分支网段表中的各隧道表项的老化定时器的老化时间可以相同,也可以不同,可根据经验配置。目的地址表中的各隧道表项的老化定时器的老化时间可以相同,也可以不同,可根据经验配置。以分支网段表中的各隧道表项的老化定时器的老化时间相同,目的地址表中的各隧道表项的老化定时器的老化时间相同为例,基于此,目的地址表中的隧道表项的老化定时器的老化时间可以大于等于分支网段表中的隧道表项的老化定时器的老化时间。
[0090] 在上述分支网段表、目的地址表的基础上,以主机1向主机2发送数据报文1为例,参见图8所示,为数据报文传输方法的流程图,该方法可以包括:
[0091] 步骤801,主机1向主机2发送数据报文1。
[0092] 步骤802,中心路由器在接收到数据报文1后,利用该数据报文1的目的IP地址(即主机2的IP地址)查询分支网段表(如图6所示的分支网段表)。
[0093] 步骤803,中心路由器判断该分支网段表中是否存在与该目的IP地址匹配的隧道表项。如果是,则执行步骤804;如果否,则执行步骤805。
[0094] 在一个例子中,中心路由器在利用目的IP地址查询分支网段表时,以采用哈希表方式维护分支网段表为例,中心路由器可以利用数据报文1的特征(如目的IP地址)对数量n进行hash运算,根据hash运算结果确定隧道表项与节点的对应关系,如将数据报文1的目的IP地址对数量n进行取余处理,假设结果为0,确定隧道表项与节点1关联,假设结果为1,确定隧道表项与节点2关联,以此类推。基于此,假设隧道表项与节点1关联,则利用目的IP地址查询分支网段表的节点1,判断节点1下是否存在与目的IP地址匹配的隧道表项。
[0095] 步骤804,中心路由器利用与该目的IP地址匹配的隧道表项发送数据报文1。
[0096] 例如,中心路由器从与该目的IP地址匹配的隧道表项中获得分支路由器1的IP地址,为数据报文1封装GRE头,得到数据报文2,该GRE头的内容可以包括版本、协议、序列号等。为数据报文2封装IP头,得到数据报文3,IP头的源地址为中心路由器的IP地址,目的地址为从隧道表项中获得的分支路由器1的IP地址。然后,中心路由器通过GRE隧道将数据报文3发送给分支路由器1。分支路由器1对收到的数据报文3进行解封装,得到数据报文1,根据数据报文1的目的IP地址查询路由表,通过出接口将数据报文1发送到主机2。
[0097] 步骤805,中心路由器为目的地址表的每个IP地址(如分支路由器1的IP地址、分支路由器2的IP地址)构造探测报文,探测报文携带主机2的IP地址。
[0098] 步骤806,中心路由器利用探测报文的目的IP地址发送该探测报文(如ICMP报文等),以使与主机2的IP地址对应的分支路由器返回探测响应报文。
[0099] 例如,中心路由器为分支路由器1的IP地址构造探测报文1,该探测报文1的目的IP地址为分支路由器1的IP地址,且该探测报文1携带主机2的IP地址。由于目的IP地址为分支路由器1的IP地址,因此探测报文1会发送到分支路由器1,分支路由器1在接收到探测报文1后,发现探测报文1携带的主机2的IP地址是与本分支路由器1连接的主机的IP地址,因此向中心路由器返回探测响应报文。同理,中心路由器为分支路由器2的IP地址构造探测报文2,且分支路由器2在接收到探测报文2后,发现探测报文2携带的主机2的IP地址不是与本分支路由器2连接的主机的IP地址,因此直接丢弃探测报文2。
[0100] 步骤807,中心路由器接收分支路由器1返回的探测响应报文,该探测响应报文携带分支路由器1的IP地址和主机2的IP地址(从探测报文中获知)。
[0101] 步骤808,中心路由器利用该探测响应报文获得与主机2的IP地址匹配的隧道表项(如图6所示的隧道表项),并在分支网段表中记录该隧道表项。
[0102] 在一个例子中,针对“中心路由器利用该探测响应报文获得与主机2的IP地址匹配的隧道表项”的过程,可以包括:中心路由器从探测响应报文中解析出分支路由器的IP地址、主机2的IP地址,并判断指定存储位置是否存在与该分支路由器的IP地址、主机2的IP地址匹配的隧道表项。如果是,则直接从指定存储位置获得与分支路由器的IP地址、主机2的IP地址匹配的隧道表项,在分支网段表中记录该隧道表项,并刷新该隧道表项的老化定时器的老化时间。如果否,则中心路由器生成与分支路由器的IP地址、主机2的IP地址匹配的隧道表项,为该隧道表项设置老化定时器,并在分支网段表中记录该隧道表项(如果不设置指定存储位置存储之前在分支网段表中删除的隧道表项,则可不执行存储位置的判断,直接执行该分支步骤即可)。
[0103] 步骤809,中心路由器利用与主机2的IP地址匹配的隧道表项发送数据报文1。由于经过步骤805-步骤808的处理后,中心路由器可以在分支网段表中记录与主机2的IP地址匹配的隧道表项,因此可以利用与主机2的IP地址匹配的隧道表项发送数据报文1,具体发送过程可以参见步骤804,在此不再赘述。
[0104] 在一个例子中,中心路由器在确定出没有与主机2的IP地址匹配的隧道表项时,可以缓存数据报文1,并为数据报文1启动定时器。在发送探测报文之后,若在定时器超时之前接收到探测响应报文,则取出之前缓存的数据报文1,并执行“利用与主机2的IP地址匹配的隧道表项发送数据报文1”的过程。若在定时器超时之后仍然没有接收到探测响应报文,则删除之前缓存的数据报文1。
[0105] 在实际应用中,为了提高中心路由器的可靠性,还可以在企业中心配置多个中心路由器,如图9所示的应用场景,以配置两个中心路由器为例,可以在分支路由器1上配置两条GRE隧道,一条GRE隧道是分支路由器1与中心路由器1之间的GRE隧道,另一条GRE隧道是分支路由器1与中心路由器2之间的GRE隧道,而且在中心路由器1与中心路由器2之间配置一条GRE隧道。
[0106] 以中心路由器1为主中心路由器,中心路由器2为备中心路由器为例,在正常情况下,通过分支路由器1与中心路由器1之间的GRE隧道传输报文,当分支路由器1与中心路由器1之间的GRE隧道出现故障时,则通过分支路由器1与中心路由器2之间的GRE隧道传输报文。在上述应用场景下,可以将中心路由器1与中心路由器2之间的GRE隧道的接口称为GRE隧道备份口。
[0107] 在上述分支网段表、目的地址表的基础上,以主机1向主机2发送数据报文1为例,参见图10所示,为数据报文传输方法的流程图,该方法可以包括:
[0108] 步骤1001,主机1向主机2发送数据报文1。
[0109] 步骤1002,中心路由器1在接收到数据报文1后,利用该数据报文1的目的IP地址(即主机2的IP地址)查询分支网段表(如图6所示的分支网段表)。
[0110] 步骤1003,中心路由器1判断该分支网段表中是否存在与该目的IP地址匹配的隧道表项。如果是,则执行步骤1004;如果否,则执行步骤1007。
[0111] 步骤1004,中心路由器1查询是否存在GRE隧道备份口。如果不存在GRE隧道备份口,则执行步骤1005;如果存在GRE隧道备份口,则执行步骤1006。
[0112] 步骤1005,中心路由器1利用与目的IP地址匹配的隧道表项发送数据报文1。
[0113] 步骤1006,中心路由器1根据隧道表项的优先级与GRE隧道备份口的优先级发送数据报文1。具体的,中心路由器1可以比较隧道表项的优先级与GRE隧道备份口的优先级;如果隧道表项的优先级高于GRE隧道备份口的优先级,则利用与目的IP地址匹配的隧道表项发送数据报文1;如果GRE隧道备份口的优先级高于隧道表项的优先级,则利用GRE隧道备份口发送数据报文1。
[0114] 在一个例子中,GRE隧道备份口是中心路由器1与中心路由器2之间的GRE隧道,该GRE隧道备份口也会有对应的隧道表项,该隧道表项的内容可以根据实际情况进行配置,例如,该隧道表项可以包括中心路由器1的IP地址、中心路由器2的IP地址、KEY值等内容。基于此,中心路由器1可以比较与目的IP地址匹配的隧道表项的KEY值以及GRE隧道备份口的隧道表项的KEY值,并选取KEY值小的隧道表项,作为优先级高的隧道表项。其中,KEY值用于区分隧道表项的优先级,而且,KEY值越小,则隧道表项的优先级也就越高。
[0115] 其中,若中心路由器1利用GRE隧道备份口发送数据报文1,则中心路由器可以从隧道表项中获得中心路由器1的IP地址、中心路由器2的IP地址,为数据报文1封装GRE头,并封装IP头,该IP头的源地址为中心路由器1的IP地址,目的地址为中心路由器2的IP地址。然后,中心路由器1可以通过GRE隧道将封装后的数据报文发送给中心路由器2。中心路由器2对接收到的数据报文进行解封装,得到数据报文1,然后对数据报文1进行处理,其处理过程与中心路由器1对数据报文1进行处理的过程类似,在此不再重复赘述。
[0116] 步骤1007,中心路由器1查询是否存在GRE隧道备份口。如果存在GRE隧道备份口,则执行步骤1008;如果不存在GRE隧道备份口,则执行步骤1009。
[0117] 步骤1008,中心路由器1利用GRE隧道备份口发送数据报文1。
[0118] 步骤1009,中心路由器1为目的地址表的每个IP地址构造探测报文,该探测报文携带主机2的IP地址,并利用探测报文的目的IP地址发送该探测报文,以使与主机2的IP地址对应的分支路由器返回探测响应报文。
[0119] 步骤1010,中心路由器1接收分支路由器1返回的探测响应报文(其中携带分支路由器1的IP地址和主机2的IP地址),并利用该探测响应报文获得与主机2的IP地址匹配的隧道表项,并在分支网段表中记录该隧道表项。
[0120] 步骤1011,中心路由器1利用该隧道表项发送数据报文1。
[0121] 在一个例子中,针对步骤1009的情况,中心路由器1可以先缓存数据报文1,并为数据报文1启动定时器。在发送探测报文之后,若在定时器超时之前接收到探测响应报文,则中心路由器1取出之前缓存的数据报文1,并执行“利用与主机2的IP地址匹配的隧道表项发送数据报文1”的过程。若在定时器超时之后仍然没有接收到探测响应报文,则中心路由器1删除之前缓存的数据报文1。
[0122] 在一个例子中,针对上述步骤1006、步骤1008,若中心路由器1利用GRE隧道备份口发送数据报文1,则中心路由器2在获得数据报文1后,中心路由器2的处理与中心路由器1的处理相同,若中心路由器2确定出分支网段表中没有与数据报文1的目的IP地址匹配的隧道表项,且存在GRE隧道备份口,则会通过GRE隧道备份口将数据报文1发送给中心路由器1,从而导致环路问题。
[0123] 针对上述发现,本申请实施例中,中心路由器2在通过GRE隧道备份口接收到数据报文时,还可以设置数据报文的入接口索引为该GRE隧道备份口。进一步的,中心路由器2在利用数据报文的目的IP地址查询分支网段表后,若分支网段表不存在与该目的IP地址匹配的隧道表项,且存在GRE隧道备份口,则中心路由器2还可以判断数据报文的入接口索引是否为GRE隧道备份口,如果是,则丢弃该数据报文,而不再通过GRE隧道备份口将数据报文发送给中心路由器1,从而避免环路问题。此外,若数据报文的入接口索引不是GRE隧道备份口,中心路由器2才会通过GRE隧道备份口将数据报文发送给中心路由器1。
[0124] 基于上述技术方案,本申请实施例中,在接收到数据报文时,若分支网段表不存在与数据报文的目的IP地址匹配的隧道表项,则可以为目的地址表中的每个IP地址构造探测报文,以使与该目的IP地址对应的分支路由器返回探测响应报文,并利用该探测响应报文获得与该目的IP地址匹配的隧道表项,从而利用该隧道表项发送该数据报文。基于上述方式,只要曾经接收过分支路由器发送的报文,即使当前在分支网段表中没有找到与目的IP地址匹配的隧道表项,也可以通过目的地址表触发学习到隧道表项,解决无法传输数据报文的问题,即解决没有隧道表项时的断流问题,并可以提高P2MP隧道的自适应性。
[0125] 基于与上述方法同样的申请构思,本申请实施例还提供一种数据报文传输装置,可以应用在中心路由器上。其中,该数据报文传输装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的中心路由器的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图11所示,为本申请提出的数据报文传输装置所在的中心路由器的一种硬件结构图,除了图11所示的处理器、非易失性存储器外,中心路由器还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该中心路由器还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
[0126] 如图12所示,为本申请提出的数据报文传输装置的结构图,该装置包括:
[0127] 接收模块11,用于接收数据报文;
[0128] 判断模块12,用于利用所述数据报文的目的IP地址查询分支网段表;
[0129] 处理模块13,用于当不存在与所述目的IP地址匹配的隧道表项时,则为目的地址表中的每个IP地址构造探测报文,所述探测报文携带所述目的IP地址;
[0130] 发送模块14,用于发送所述处理模块13为目的地址表中的每个IP地址构造的探测报文,以使与所述目的IP地址对应的分支路由器返回探测响应报文;
[0131] 所述接收模块11,还用于接收分支路由器返回的探测响应报文;
[0132] 所述处理模块13,还用于利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项,并在所述分支网段表中记录所述隧道表项;
[0133] 所述发送模块14,还用于利用所述隧道表项发送所述数据报文。
[0134] 所述接收模块11,还用于接收来自分支路由器的第一类报文;
[0135] 所述判断模块12,还用于从所述第一类报文中解析出外层源IP地址,并判断目的地址表中是否存在与所述外层源IP地址匹配的隧道表项;
[0136] 所述处理模块13,还用于当不存在与所述外层源IP地址匹配的隧道表项时,生成与外层源IP地址匹配的隧道表项,在目的地址表中记录生成的隧道表项,为生成的隧道表项设置老化定时器;当存在与所述外层源IP地址匹配的隧道表项时,刷新与外层源IP地址匹配的隧道表项的老化定时器的老化时间。
[0137] 所述接收模块11,还用于接收来自分支路由器的第二类报文;
[0138] 所述判断模块12,还用于从所述第二类报文中解析出外层源IP地址以及内层源IP地址,并判断所述分支网段表中是否存在与所述外层源IP地址、所述内层源IP地址匹配的隧道表项;
[0139] 所述处理模块13,还用于当不存在与所述外层源IP地址、所述内层源IP地址匹配的隧道表项时,则生成与所述外层源IP地址、所述内层源IP地址匹配的隧道表项,并在所述分支网段表中记录生成的隧道表项,并为生成的隧道表项设置老化定时器;当存在与所述外层源IP地址、所述内层源IP地址匹配的隧道表项时,则刷新与所述外层源IP地址、所述内层源IP地址匹配的隧道表项的老化定时器的老化时间。
[0140] 所述判断模块12,还用于在从所述第二类报文中解析出外层源IP地址以及内层源IP地址后,判断目的地址表中是否存在与外层源IP地址匹配的隧道表项;
[0141] 所述处理模块13,还用于当不存在与外层源IP地址匹配的隧道表项时,生成与外层源IP地址匹配的隧道表项,在目的地址表中记录生成的隧道表项,为生成的隧道表项设置老化定时器;当存在与外层源IP地址匹配的隧道表项时,刷新与外层源IP地址匹配的隧道表项的老化定时器的老化时间。
[0142] 所述处理模块13,还用于在根据所述中心路由器的配置信息确定需要删除所述分支网段表中的隧道表项,或者,根据删除命令确定需要删除所述分支网段表中的隧道表项,或者,根据隧道表项的老化定时器确定需要删除所述分支网段表中的隧道表项时,则从所述分支网段表中删除待删除的隧道表项,或者,将所述分支网段表中的待删除的隧道表项迁移到指定存储位置。
[0143] 所述处理模块13,具体用于在利用所述探测响应报文获得与所述目的IP地址匹配的隧道表项的过程中,从所述探测响应报文中解析出分支路由器的IP地址,并判断指定存储位置是否存在与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项;如果是,则从所述指定存储位置获得与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项,刷新该隧道表项的老化定时器的老化时间;如果否,则生成与所述分支路由器的IP地址、所述目的IP地址匹配的隧道表项,并为生成的隧道表项设置老化定时器。
[0144] 所述处理模块13,还用于在隧道表项的老化定时器超时时,根据所述隧道表项的外层源IP地址构造第三类报文,并向所述外层源IP地址对应的分支路由器发送所述第三类报文;若在预设时间内收到所述第三类报文对应的响应报文,则刷新所述隧道表项的老化定时器的老化时间;若在预设时间内未收到所述第三类报文对应的响应报文,则从所述目的地址表中删除所述隧道表项;或者,
[0145] 在隧道表项的老化定时器超时之前的第N秒,根据所述隧道表项的外层源IP地址构造第三类报文,并向所述外层源IP地址对应的分支路由器发送所述第三类报文;若在所述老化定时器超时之前,收到所述第三类报文对应的响应报文,则刷新所述隧道表项的老化定时器的老化时间;若在所述老化定时器超时之前,未收到所述第三类报文对应的响应报文,则从所述目的地址表中删除所述隧道表项;其中,N为大于0的数值。
[0146] 所述判断模块12,还用于在利用数据报文的目的IP地址查询分支网段表后,若存在与所述目的IP地址匹配的隧道表项,查询是否存在GRE隧道备份口;
[0147] 所述发送模块14,还用于当不存在GRE隧道备份口时,则利用与所述目的IP地址匹配的隧道表项发送所述数据报文;当存在GRE隧道备份口时,则比较隧道表项的优先级与所述GRE隧道备份口的优先级,如果隧道表项的优先级高于所述GRE隧道备份口的优先级,则利用与所述目的IP地址匹配的隧道表项发送所述数据报文,如果所述GRE隧道备份口的优先级高于隧道表项的优先级,则利用所述GRE隧道备份口发送所述数据报文;
[0148] 所述判断模块12,还用于在利用所述数据报文的目的IP地址查询分支网段表后,若不存在与所述目的IP地址匹配的隧道表项,则查询是否存在GRE隧道备份口;所述发送模块14,还用于当存在GRE隧道备份口时,则利用所述GRE隧道备份口发送所述数据报文;当不存在GRE隧道备份口时,则由所述处理模块13为目的地址表中的每个IP地址构造探测报文。
[0149] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0150] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0151] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0152] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0153] 而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
[0154] 这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0155] 本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可以采用完全硬件实施例、完全软件实施例、或者结合软件和硬件方面的实施例的形式。而且,本申请可以采用在一个或者多个其中包含有计算机可用程序代码的计算机可用存储介质(可以包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0156] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。