一种基于隧道的报文转发方法和标签交换路由器转让专利

申请号 : CN200710097244.6

文献号 : CN101035081B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周从洋

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明提供一种基于隧道的报文转发方法和标签交换路由器,对已建隧道的入口标签交换路由器(LSR)、已建隧道的出口LSR及非已建隧道中的LSR所构成的隧道进行标签交换通道(LSP)静态配置,并在配置已建隧道入口LSR时,将已建隧道的入口LSR到达自身下游设备的路径信息设置为标识已建隧道的信息,完成新隧道的建立;当新隧道需要转发报文时,根据LSP隧道转发方法对报文进行转发,并在报文到达已建隧道的入口LSR时,根据已建隧道的入口LSR到达自身下游设备的路径信息将报文从已建隧道进行转发,直至新隧道出口LSR。应用本发明方案,可以将已建隧道嵌入新隧道中,从而可以有效地利用已建隧道,达到节约隧道资源的目的。

权利要求 :

1.一种基于隧道的报文转发方法,其特征在于,如果将要建立的新隧道所在的路径中存在已建隧道,该方法为:对已建隧道的入口标签交换路由器LSR、已建隧道的出口LSR以及非已建隧道中的LSR所构成的隧道进行标签交换通道LSP静态配置,并在配置已建隧道入口LSR时,将已建隧道的入口LSR到达自身下游设备的路径信息设置为标识已建隧道的信息,完成新隧道的建立;

当新隧道需要转发报文时,根据LSP隧道转发方法对报文进行转发,并在报文到达已建隧道的入口LSR时,根据已建隧道的入口LSR到达自身下游设备的路径信息将报文从已建隧道进行转发。

2.根据权利要求1所述的方法,其特征在于,如果新隧道的入口LSR与已建隧道的入口LSR相同,则对已建隧道的入口LSR配置的方法为:按照LSP静态配置方法在已建隧道的入口LSR配置LSP表项,并将所述LSP表项的转发等价类FEC的值设置为一个网段地址,所述网段地址包括新隧道将要转发的报文的目的地址,将所述LSP表项中到达自身下游设备的路径信息设置为标识已建隧道的信息。

3.根据权利要求1所述的方法,其特征在于,如果新隧道的入口LSR与已建隧道的入口LSR不相同,则对已建隧道的入口LSR配置的方法为:按照LSP静态配置方法在已建隧道的入口LSR配置LSP表项,并将所述LSP表项的FEC的值设置为空,将所述LSP表项中表示到达自身下游设备的路径信息设置为标识已建隧道的信息。

4.根据权利要求1至3任一项所述的方法,其特征在于,所述对已建隧道的入口LSR、已建隧道的出口LSR以及非已建隧道中的LSR所构成的隧道进行LSP静态配置的方法为:标签在隧道倒数第二跳弹出的LSP静态配置隧道的方法,或者为标签在隧道最后一跳弹出的LSP静态配置的方法。

5.根据权利要求1至3任一项所述的方法,其特征在于,所述已建隧道的入口LSR到达自身下游设备的路径信息为下一跳地址,所述标识已建隧道的信息为已建隧道FEC范围内的地址。

6.根据权利要求5所述的方法,其特征在于,所述已建隧道的入口LSR根据到达自身下游设备的路径信息从已建隧道转发报文的方法为:已建隧道的入口LSR判断针对新隧道的LSP表项中到达自身下游设备的路径信息是否与已建隧道的FEC匹配,如果匹配,则利用针对已建隧道的LSP表项中的出标签对报文进行封装,再将报文发送出去;所述针对新隧道的LSP表项为所述LSP静态配置过程中获得的LSP表项。

7.根据权利要求1至3任一项所述的方法,其特征在于,所述已建隧道的入口LSR到达自身下游设备的路径信息为出接口,所述标识已建隧道的信息为已建隧道的隧道名。

8.根据权利要求7所述的方法,其特征在于,所述已建隧道的入口LSR根据到达自身下游设备的路径信息从已建隧道转发报文的方法为:已建隧道的入口LSR判断针对新隧道的LSP表项中到达自身下游设备的路径信息是否与已建隧道的隧道名匹配,如果匹配,则利用针对已建隧道的LSP表项中的出标签对报文进行封装,再将报文发送出去;所述针对新隧道的LSP表项为所述LSP静态配置过程中获得的LSP表项。

9.根据权利要求1至3任一项所述的方法,其特征在于,所述已建隧道为一条或一条以上已建隧道。

10.一种标签交换路由器,其特征在于,该标签交换路由器是在对已建隧道的入口标签交换路由器LSR、已建隧道的出口LSR以及非已建隧道中的LSR所构成的隧道进行标签交换通道LSP静态配置时,作为已建隧道的入口LSR被配置,并在配置时将到达自身下游设备的路径信息设置为标识已建隧道的信息;包括:接收单元,用于接收来自上游设备的报文;

LSP隧道转发处理单元,用于根据LSP隧道转发方法对报文进行处理,并根据自身下游设备的路径信息确定报文从已建隧道进行转发;

发送单元,用于将报文从已建隧道发送给下游设备。

11.根据权利要求10所述的标签交换路由器,其特征在于,所述LSP隧道转发处理单元包括:标签处理单元,用于将接收到的报文根据存储单元中针对新隧道的LSP表项中出标签进行标签替换;还用于在确定报文从已建隧道转发时,根据存储单元中针对已建隧道的LSP表项中出标签封装报文;

判别单元,用于判别到达自身下游设备的路径信息是否与已建隧道匹配,如果匹配,则确定报文从已建隧道转发,并将报文从已建隧道转发的信息通知给标签处理单元;

存储单元,用于存储已建隧道的LSP表项和新建隧道的LSP表项。

说明书 :

技术领域

本发明涉及通信领域技术,特别是涉及一种基于隧道的报文转发方法和标签交换路由器。

背景技术

目前,为了更加高效、安全地转发报文,可以先在网络中建立隧道,再通过隧道进行报文转发。比如:在多协议标签交换(MPLS,MultiprotocolLabel Switching)网络中,可以先建立一条标签交换通道(LSP,LabelSwitching Path),再通过标签交换通道进行报文转发,所述标签交换通道也可以称为LSP隧道。
建立LSP隧道可以采用运行动态信令协议或静态配置的方式。但不管采用哪种方式,都需要在隧道路径中的标签交换路由器(LSR,LabclSwitching Edge Router)上配置LSP表项。LSP表项一般包括转发等价类(FEC,Forwarding Equivalence Class)、到达自身下游设备的路径信息、入标签、出标签等信息。这里所述FEC的值通常情况下就是一个网段地址,凡是报文的目的地址属于FEC所限定的网段地址范围,就可以通过隧道进行转发,否则就不能通过隧道转发。这样,当隧道入口LSR需要转发报文时,可以根据自身LSP表项中FEC确定是否允许报文通过隧道转发,如果允许,则利用自身LSP表项中的出标签封装报文,并按照到达自身下游设备的路径信息将报文转发给下游设备。当下游设备接收到来自上游设备转发的报文时,可以利用自身LSP表项中的入标签确定报文是否为通过隧道转发的报文,如果是,则利用自身LSP表项中的出标签重新封装报文,在进行标签转换后再将报文转发出去,并依次类推,直至隧道出口LSR。
也就是说,采用LSP隧道技术可以不必进行复杂的路由查找,只需进行简单的标签交换就可以高效、安全地转发报文。
但现有技术中,利用隧道进行报文转发需要具备两个必要条件:一是需要在隧道入口和隧道出口之间建立一条完整的隧道;二是需要在隧道入口利用FEC指定该隧道可以转发的报文。
在上述条件的限定下,如果要从起点A通过隧道将报文X转发到终点B,现有技术需要在起点A到终点B之间建立一条新的隧道,并且利用FEC指定新隧道可以转发报文X。而实际应用中,在起点A到终点B之间的路径上可能存在已经建立的隧道,但由于已建立的隧道并不能完整地连通起点A到终点B之间的路径,或者已建立隧道的FEC并不允许转发报文X,新隧道就无法利用已经建立的隧道进行报文转发,从而导致隧道资源的浪费。

发明内容

有鉴于此,本发明的第一个发明目的是提供一种基于隧道的报文转发方法,可以在新隧道转发报文时,利用已经建立的隧道以节约隧道资源。
本发明的第二个发明目的是提供一种标签交换路由器,可以在新隧道转发报文时,利用已经建立的隧道以节约隧道资源。
为了达到上述第一个发明目的,本发明提出的技术方案为:
一种基于隧道的报文转发方法,如果将要建立的新隧道所在的路径中存在已建隧道,该方法为:
对已建隧道的入口标签交换路由器LSR、已建隧道的出口LSR以及非已建隧道中的LSR所构成的隧道进行标签交换通道LSP静态配置,并在配置已建隧道入口LSR时,将已建隧道的入口LSR到达自身下游设备的路径信息设置为标识已建隧道的信息,完成新隧道的建立;
当新隧道需要转发报文时,根据LSP隧道转发方法对报文进行转发,并在报文到达已建隧道的入口LSR时,根据已建隧道的入口LSR到达自身下游设备的路径信息将报文从已建隧道进行转发。
上述方案中,如果新隧道的入口LSR与已建隧道的入口LSR相同,则对已建隧道的入口LSR配置的方法为:
按照LSP静态配置方法在已建隧道的入口LSR配置LSP表项,并将所述LSP表项的转发等价类FEC的值设置为一个网段地址,所述网段地址包括新隧道将要转发的报文的目的地址,将所述LSP表项中到达自身下游设备的路径信息设置为标识已建隧道的信息。
上述方案中,如果新隧道的入口LSR与已建隧道的入口LSR不相同,则对已建隧道的入口LSR配置的方法为:
按照LSP静态配置方法在已建隧道的入口LSR配置LSP表项,并将所述LSP表项的FEC的值设置为空,将所述LSP表项中表示到达自身下游设备的路径信息设置为标识已建隧道的信息。
上述方案中,所述对已建隧道的入口LSR、已建隧道的出口LSR以及非已建隧道中的LSR所构成的隧道进行LSP静态配置的方法为:
标签在隧道倒数第二跳弹出的LSP静态配置隧道的方法,或者为标签在隧道最后一跳弹出的LSP静态配置的方法。
上述方案中,所述已建隧道的入口LSR到达自身下游设备的路径信息为下一跳地址,所述标识已建隧道的信息为已建隧道FEC范围内的地址。
上述方案中,所述已建隧道的入口LSR根据到达自身下游设备的路径信息从已建隧道转发报文的方法为:
已建隧道的入口LSR判断针对新隧道的LSP表项中到达自身下游设备的路径信息是否与已建隧道的FEC匹配,如果匹配,则利用针对已建隧道的LSP表项中的出标签对报文进行封装,再将报文发送出去;所述针对新隧道的LSP表项为所述LSP静态配置过程中获得的LSP表项。
上述方案中,所述已建隧道的入口LSR到达自身下游设备的路径信息为出接口,所述标识已建隧道的信息为已建隧道的隧道名。
上述方案中,所述已建隧道的入口LSR根据到达自身下游设备的路径信息从已建隧道转发报文的方法为:
已建隧道的入口LSR判断针对新隧道的LSP表项中到达自身下游设备的路径信息是否与已建隧道的隧道名匹配,如果匹配,则利用针对已建隧道的LSP表项中的出标签对报文进行封装,再将报文发送出去;所述针对新隧道的LSP表项为所述LSP静态配置过程中获得的LSP表项。
上述方案中,所述已建隧道为一条或一条以上已建隧道。
为达到本发明第二个发明目的,提出的技术方案为:
一种标签交换路由器,该标签交换路由器是在对已建隧道的入口标签交换路由器LSR、已建隧道的出口LSR以及非已建隧道中的LSR所构成的隧道进行标签交换通道LSP静态配置时,作为已建隧道的入口LSR被配置,并在配置时将到达自身下游设备的路径信息设置为标识已建隧道的信息;包括:
接收单元,用于接收来自上游设备的报文;
LSP隧道转发处理单元,用于根据LSP隧道转发方法对报文进行处理,并根据自身下游设备的路径信息确定报文从已建隧道进行转发;
发送单元,用于将报文从已建隧道发送给下游设备。
上述方案中,所述LSP隧道转发处理单元包括:
标签处理单元,用于将接收到的报文根据存储单元中针对新隧道的LSP表项中出标签进行标签替换;还用于在确定报文从已建隧道转发时,根据存储单元中针对已建隧道的LSP表项中出标签封装报文;
判别单元,用于判别到达自身下游设备的路径信息是否与已建隧道匹配,如果匹配,则确定报文从已建隧道转发,并将报文从已建隧道转发的信息通知给标签处理单元;
存储单元,用于存储已建隧道的LSP表项和新建隧道的LSP表项。
综上所述,本发明提出一种基于隧道的报文转发方法和标签交换路由器,由于在建立新隧道时,可以采用LSP静态配置的方法将已建隧道嵌入新隧道中,在新隧道转发报文时,就可以利用已建隧道进行转发,从而有效地利用已建隧道,达到节约隧道资源的目的。

附图说明

图1是本发明方法的流程图;
图2是本发明方法实施例一的流程图;
图3是本发明方法实施例一在新隧道转发报文时标签变化的示意图;
图4是本发明方法实施例二的流程图;
图5是本发明方法实施例二在新隧道转发报文时标签变化的示意图;
图6是本发明方法实施例三的流程图;
图7是本发明方法实施例三在新隧道转发报文时标签变化的示意图;
图8是本发明方法实施例四在新隧道转发报文时标签变化的示意图;
图9是本发明标签交换路由器的结构示意图;
图10是本发明标签交换路由器装置实施例的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的基本思想是:如果需要在网络中建立新隧道,并且将要建立的新隧道所在的路径中存在已建隧道,则在建立新隧道的过程中,将已建隧道嵌入新隧道,作为新隧道的一部分,从而可以利用已建隧道转发新隧道将要转发的报文,达到节约隧道资源的目的。
图1是本发明的流程图。如图1所示,本发明实现基于隧道的报文转发方法可以包括以下步骤:
步骤101:对已建隧道的入口LSR、已建隧道的出口LSR以及非已建隧道中的LSR所构成的隧道进行LSP静态配置,并在配置已建隧道入口LSR时,将已建隧道的入口LSR到达自身下游设备的路径信息设置为标识已建隧道的信息,完成新隧道的建立。
需要注意的是,本步骤是先将已建隧道的入口LSR、已建隧道的出口LSR以及非已建隧道中的LSR作为一条隧道进行LSP静态配置,并没有对已建隧道的中间LSR进行配置。
实际应用中,将已建隧道的入口LSR、已建隧道的出口LSR以及非已建隧道中的LSR所构成的隧道进行LSP静态配置的方法可以根据是否采用标签在倒数第二跳弹出(PHP,Penultimate Hop Popping)的方法分为两种情况:
对于第一种情况,即标签在隧道的倒数第二跳弹出,那么,隧道的最后一跳,即隧道出口LSR接收到的报文将是没有标签封装的报文,无需对报文进行标签处理,也就无需配置针对该隧道的LSP表项。也就是说,在这种情况下,只需要在已建隧道的入口LSR和非已建隧道中的LSR上配置针对新隧道的LSP表项即可。
对于第二种情况,即标签在隧道的最后一跳弹出,那么,隧道的出口LSR接收到的报文是由隧道倒数第二跳进行标签封装的报文,需要对报文进行标签弹出操作。也就是说,在这种情况下,需要在已建隧道的入口LSR,已建隧道的出口LSR以及非已建隧道中的LSR上全部配置针对新隧道的LSP表项。
为了可以在新隧道转发报文时利用已建隧道,在对已建隧道的入口LSR进行配置时,需要将已建隧道的入口LSR到达自身下游设备的路径信息设置为标识已建隧道的信息。这里,根据新隧道和已建隧道的位置关系,可以将对已建隧道的入口LSR进行静态配置分为两种情况:
第一种情况:如果新隧道的入口LSR与已建隧道的入口LSR相同,则对已建隧道的入口LSR配置的方法为:
按照LSP静态配置方法为已建隧道的入口LSR配置LSP表项,并将所述LSP表项的转发等价类FEC的值设置为一个网段地址,所述网段地址包括新隧道将要转发的报文的目的地址,将所述LSP表项中表示已建隧道的入口LSR到达自身下游设备的路径信息设置为标识已建隧道的信息。
第二种情况:如果新隧道的入口LSR与已建隧道的入口LSR不相同,则对已建隧道的入口LSR进行配置的方法为:
按照LSP静态配置方法为已建隧道的入口LSR配置LSP表项,并将所述LSP表项的FEC的值设置为空,将所述LSP表项中表示已建隧道的入口LSR到达自身下游设备的路径信息设置为标识已建隧道的信息。
另外,现有技术在对某个LSR进行静态配置时,到达该LSR自身下游设备的路径信息可以为下一跳地址,也可以为出接口,在LSP表项中指定其中之一即可。其原因在于:如果利用下一跳地址来指定到达下游设备的路径信息,那么在进行报文转发时,可以根据下一跳地址从自身已有的地址转发表中查询到对应的出接口,然后通过出接口转发给下游设备;如果直接利用出接口来指定到达下游设备的路径信息,在报文转发时,无需查询地址转发表,直接根据出接口转发即可。这里所述下一跳地址通常为下游设备与上游设备的互连地址,而出接口通常为设备自身的物理接口或逻辑接口。
在这种情况下,如果本发明仍然按照上述方法将已建隧道入口LSR到达下游设备的路径信息设置为下游设备与已建隧道入口LSR的互连地址、已建隧道入口LSR自身物理接口或逻辑接口,就无法在新隧道转发报文时利用已建隧道。所以,在本步骤中,需要将已建隧道入口LSR到达下游设备的路径信息设置为标识已建隧道的信息,已建隧道的FEC范围内的地址或已建隧道的隧道名等都可以用来作为标识已建隧道的信息。
此时,已建隧道的入口LSR、已建隧道的出口LSR以及非已建隧道中的LSR已经作为一条隧道完成了配置。但与现有技术中隧道静态配置不同的是,本发明中已建隧道的入口LSR到达下游设备的路径信息为标识已建隧道的信息。也就是说,虽然已建隧道的入口LSR、已建隧道的出口LSR以及非已建隧道中的LSR已经作为一条隧道完成了配置,但这条隧道本身并不能直接转发报文,还需要嵌入已建隧道,以完成整个新隧道的建立。
步骤102:当新隧道需要转发报文时,根据LSP隧道转发方法对报文进行转发,并在报文到达已建隧道的入口LSR时,根据已建隧道的入口LSR到达自身下游设备的路径信息将报文从已建隧道进行转发,直至新隧道出口LSR。
通过步骤101建立好新隧道后,就可以利用新隧道进行报文转发。利用新隧道进行报文转发的方法与现有技术相似,其区别在于:当报文转发到已建隧道的入口LSR时,需要根据已建隧道的入口LSR到达自身下游设备的路径信息将报文从已建隧道进行转发。
实际应用中,如果已建隧道的入口LSR到达自身下游设备的路径信息为下一跳地址,所述标识已建隧道的信息为已建隧道FEC范围内的地址,则已建隧道的入口LSR根据到达自身下游设备的路径信息从已建隧道转发报文的方法可以为:
已建隧道的入口LSR判断针对新隧道的LSP表项中到达自身下游设备的路径信息是否与已建隧道的FEC匹配,如果匹配,则利用针对已建隧道的LSP表项中的出标签对报文进行封装,再将报文发送出去;所述针对新隧道的LSP表项为所述LSP静态配置过程中获得的LSP表项。
如果所述已建隧道的入口LSR到达自身下游设备的路径信息为出接口,所述标识已建隧道的信息为已建隧道的隧道名,则所述已建隧道的入口LSR根据到达自身下游设备的路径信息从已建隧道转发报文的方法为:
已建隧道的入口LSR判断针对新隧道的LSP表项中到达自身下游设备的路径信息是否与已建隧道的隧道名匹配,如果匹配,则利用针对已建隧道的LSP表项中的出标签对报文进行封装,再将报文发送出去;所述针对新隧道的LSP表项为所述LSP静态配置过程中获得的LSP表项。
另外,实际应用中,新建隧道中也可以包括一条以上已建隧道,并将一条以上的已建隧道嵌入新隧道,其方法与一条已建隧道嵌入新隧道的方法相同,此处不再赘述。
为了更好地说明本发明方案,下面用几个较佳实施例进行详细描述。
实施例一
本实施例中,将要建立的新隧道包括LSR1~LSR5,LSR2与LSR1的互连地址为10.45.0.2/24,LSR3与LSR2的互连地址为10.45.1.3/24,LSR4与LSR3的互连地址为10.45.2.4/24,LSR5与LSR4的互连地址为10.45.3.5/24。其中,LSR1为新隧道的入口LSR,LSR5为新隧道的出口LSR;LSR1~LSR4已经建立了隧道,LSR1为已建隧道的隧道入口LSR,LSR4为已建隧道的隧道出口LSR;新隧道的入口LSR和已建隧道的入口LSR相同,均为LSR1。
本实施例中,假设LSR1~LSR4通过运行动态信令协议来建立隧道,FEC为1.0.0.5/32,并采用PHP方法在倒数第二跳弹出标签。LSR1~LSR4中针对已建隧道的LSP表项可用表一~表四所示:
其中,LSR1针对已建隧道的LSP表项为:
  FEC   下一跳地址   入标签   出标签   1.0.0.5/32   10.45.0.2   -   1027
表一
LSR2针对已建隧道的LSP表项为:
  FEC   下一跳地址   入标签   出标签   1.0.0.5/32   10.45.1.3   1027   1024
表二
LSR3针对已建隧道的LSP表项为:
  FEC   下一跳地址   入标签   出标签   1.0.0.5/32   10.45.2.4   1024   3
表三
LSR4针对已建隧道的LSP表项为:
  FEC   下一跳地址   入标签   出标签   1.0.0.5/32   -   3   -
表四
从表一至表四可以看出,由于LSR1~LSR4采用动态信令协议建立隧道,LSR1~LSR4中LSP表项的FEC都为1.0.0.5/32,自身分配的标签为自身的入标签,并且为上游设备的出标签,但LSR 1的入标签为空,LSR4的出标签也为空。由于LSR1~LSR4这条已建隧道采用PHP方法在倒数第二跳,即LSR3弹出标签,所以,按照LSP标签分配的规定,应该将LSR3的出标签分配为3,LSR4的入标签也分配为3。当然,至于实际应用中如何按照动态信令协议建立LSR1~LSR4的隧道属于现有技术,此处不再赘述。
另外,假设本实施例建立的新隧道需要转发目的地址属于172.16.10.0/24范围内的报文,并且在转发报文时在新隧道最后一跳弹出标签;另外,本实施中,在进行LSP静态配置时,假设到达自身下游设备的路径信息为下一跳地址,即下游设备互连地址。
图2为本实施例的流程图,图3为本实施例在新隧道转发报文时标签变化的示意图。参见图2和图3,本实施例可以包括以下步骤:
步骤201:按照LSP静态配置方法对L SR1、LSR4和LSR5所构成的隧道进行静态配置,并在对LSR1配置时,将LSR1中针对新隧道的LSP表项中的FEC设置为的172.16.10.0/24,下一跳地址设置为已建隧道FEC范围内的地址。
这里,由于已建隧道FEC为1.0.0.5/32,为32位掩码,那么下一跳地址就应该为1.0.0.5。而实际应用中,如果已建隧道FEC不是32位掩码的网段地址,则只需要将下一跳地址设置为网段地址范围中任意一个地址即可。本步骤中,由于已建隧道的入口LSR为LSR1,已建隧道的出口LSR为LSR4,非已建隧道中的LSR只有LSR5,所以,可以先将LSR1、LSR4和LSR5作为一条隧道进行LSP静态配置。另外,由于本实施例在新隧道中采用在隧道最后一跳弹出标签的方法,所以,在对LSR1、LSR4和LSR5所构成的隧道进行LSP静态配置时,需要在LSR1、LSR4和LSR5上都配置针对新隧道的LSP表项。其中,LSR1的LSP表项可以如表五所示:
  FEC   下一跳地址   入标签   出标签   172.16.10.0/24   1.0.0.5   -   2049
表五
LSR4的LSP表项可以如表六所示:
  FEC   下一跳地址   入标签   出标签   -   10.45.3.5   2049   2048
表六
LSR5的LSP表项可以如表七所示:
  FEC   下一跳地址   入标签   出标签   -   -   2048   -
表七
从表五至表七可以看出,由于LSR1为新隧道的入口LSR,需要将LSR1针对新隧道的LSP表项中的FEC设置为172.16.10.0/24,即指定允许新隧道转发报文的目的地址范围,而LSR4和LSR5针对新隧道的LSP表项中的FEC为空即可。同时,由于LSR1为已建隧道的入口LSR,为了在新隧道转发报文时利用已建隧道,还需要将LSR1中针对新隧道的LSP表项中的下一跳地址设置为1.0.0.5,即属于已建隧道FEC范围内的地址。另外,表五至表七中的其它信息可以直接根据LSP静态配置的方法填入LSP表项,比如:LSR4和LSR5分别为新隧道分配标签,LSR4分配的标签为2049,LSR5分配的标签为2048。其中,LSR5将分配的标签作为自身的入标签,并作为上游设备LSR4的出标签;LSR4将分配的标签作为自身的入标签,并作为上游设备LSR1的出标签;由于LSR1为新隧道的入口LSR,其入标签应该为空;由于LSR5为新隧道的出口LSR,其出标签应该为空。至于LSP表项中其它信息的设置可以参见LSP静态配置方法,此处不再赘述。
步骤202:LSR1将新隧道需要转发的报文利用针对新隧道的LSP表项中的出标签进行报文封装。
本步骤中,LSR1将利用表五中的出标签2049封装报文。
步骤203:LSR1判断出针对新隧道的LSP表项中的下一跳地址与已建隧道的LSP表项中的FEC匹配,确定报文需要通过已建隧道进行转发。
实际应用中,已建隧道的入口LSR中可能存在多个可以匹配的FEC。在这种情况下,还可以选择最长掩码匹配的FEC。也就是说,此后在通过已建隧道进行转发报文时,可以按照匹配成功的最长掩码的FEC对应的LSP表项进行报文转发。
步骤204:LSR1利用针对已建隧道的LSP表项中的出标签再次对报文进行封装,根据已建隧道LSP表项中下一跳地址将报文从已建隧道转发,直至已建隧道的出口LSR,即LSR4。
本步骤中,当报文从已建隧道转发时,报文最外一层封装的是已建隧道的标签。比如:LSR1利用表一中的出标签1027对报文进行封装,再转发给LSR2;LSR2利用表二中的出标签1024,将报文最外一层标签1027替换为1024,再转发给LSR3;LSR3弹出最外一层标签1024,再将报文转发给LSR4在已建隧道转发报文的过程中,并不影响步骤203中封装报文的标签2049,所以,在LSR4接收到的报文应该为一个利用标签2049封装过的报文。
步骤205:LSR4利用针对新隧道的LSP表项中的出标签替换报文最外一层标签,并将报文转发给LSR5。
本步骤中,LSR4将利用表六中出标签2048替换报文最外一层标签2049。
步骤206:LSR5根据针对新隧道的LSP表项,直接弹出报文最外一层标签。
本步骤中,当LSR5弹出报文最外一层标签2048,将获得一个没有被标签封装的报文,即完成隧道转发报文的过程。当然,如果LSR5并不是报文的目的地址,LSR5还需要按照IP转发的方法继续转发报文,此处不再赘述。
实施例二
本实施例中,将要建立的新隧道包括LSR1~LSR5,LSR2与LSR1的互连地址为10.45.0.2/24,LSR3与LSR2的互连地址为10.45.1.3/24,LSR4与LSR3的互连地址为10.45.2.4/24,LSR5与LSR4的互连地址为10.45.3.5/24。其中,LSR1为新隧道的入口LSR,LSR5为新隧道的出口LSR;LSR2~LSR4已经建立了隧道,LSR2为已建隧道的隧道入口LSR,LSR4为已建隧道的隧道出口LSR;新隧道的入口LSR和已建隧道的入口LSR不相同。
本实施例中,假设LSR2~LSR4通过运行动态信令协议来建立隧道,隧道名为Tunnel3/0/0,FEC为1.0.0.5/32;本实施例采用PHP方法在倒数第二跳弹出标签。LSR2~LSR4中针对已建隧道的LSP表项与实施例一相似,此处不再赘述。
本实施例中,假设建立的新隧道需要转发目的地址属于172.16.10.0/24范围内的报文,并且在转发报文时采用PHP方法在隧道倒数第二跳弹出标签。另外,本实施例中,在对已建隧道入口LSR进行配置时,假设到达自身下游设备的路径信息为出接口。
图4为本实施例的流程图,图5为本实施例新隧道转发时标签变化的示意图。参见图4和图5,本实施例可以包括以下步骤:
步骤401:按照LSP静态配置方法对LSR1、LSR2、LSR4、LSR5所构成的隧道进行静态配置,并在对LSR2进行静态配置时,将LSR2配置的LSP表项中的FEC设置为空,出接口设置为已建隧道的隧道名。
本步骤中,由于已建隧道的入口LSR为LSR2、已建隧道的出口LSR为LSR4,非已建隧道中的LSR包括LSR1和LSR5。另外,由于本实施例在新隧道中采用在倒数第二跳弹出标签的方法,新隧道的最后一跳,即LSR5中无需配置针对新隧道的LSP表项。所以,本实施例中,只需要在LSR1、LSR2和LSR4中分别设置针对新建隧道的LSP表项即可。其中,LSR1针对新隧道的LSP表项可以如表八所示:
  FEC   下一跳地址   入标签   出标签   172.16.10.0/24   10.45.0.2   -   2049
表八
LSR2针对新隧道的LSP表项可以如表九所示:
  FEC   出接口   入标签   出标签   -   Tunnel3/0/0   2049   2050
表九
LSR4针对新隧道的LSP表项可以如表十所示:
  FEC   下一跳地址   入标签   出标签   -   10.45.3.5   2050   3
表十
从表八至表十可以看出,由于LSR1为新隧道的入口LSR,需要将LSR1针对新隧道的LSP表项中的FEC设置为172.16.10.0/24,即指定允许新隧道转发报文的目的地址范围,而LSR2和LSR4针对新隧道的LSP表项中的FEC为空即可。由于LSR2为已建隧道的入口LSR,为了在新隧道转发报文时利用已建隧道,还需要将LSR2针对新隧道的LSP表项中的出接口设置为Tunnel3/0/0,即已建隧道的隧道名。另外,LSR4和LSR2分别为新隧道分配标签,LSR4分配的标签为2050,LSR2分配的标签为2049。其中,LSR4将分配的标签作为自身的入标签,并作为上游设备LSR2的出标签;LSR2将分配的标签作为自身的入标签,并作为上游设备LSR1的出标签;由于LSR1为新隧道的入口LSR,其入标签应该为空;由于本实施例采用在隧道倒数第二跳弹出标签的方法,就需要按照LSP静态配置的方法,将LSR4的出标签设置为3。至于LSP表项中其它信息的设置也可以参见LSP静态配置方法,此处不再赘述。
步骤402:LSR1将新隧道需要转发的报文利用针对新隧道的LSP表项中的出标签进行报文封装,根据新隧道LSP表项中下一跳地址将报文转发给LSR2。
本步骤中,LSR1将利用表八中的出标签2049封装报文。
步骤403:LSR2利用针对新建隧道的LSP表项中的出标签替换报文的最外一层标签。
本步骤中,LSR2将利用表九中的出标签2050替换报文的最外一层标签2049。
步骤404:LSR2判断出针对新隧道的LSP表项中出接口与已建隧道的隧道名匹配,确定报文需要通过已建隧道进行转发。
本步骤中,LSR2判断针对新隧道的LSP表项中出接口是否与已建隧道的隧道名匹配,实际上就是判断自身是否存在与出接口相同的隧道名。
步骤405:LSR2利用针对已建隧道的LSP表项中的出标签再次进行报文封装,将报文从已建隧道转发,直至已建隧道的出口LSR,即LSR4。
本步骤中,当报文从已建隧道转发时,报文最外一层封装的是已建隧道的标签。比如:LSR2利用表二中的出标签1024对报文进行封装,再转发给LSR3;LSR3弹出最外一层标签1024,再将报文转发给LSR4。在已建隧道转发报文的过程中,并不影响步骤603中封装报文的标签2050,所以,在LSR4接收到的报文应该为一个利用标签2050封装的报文。
步骤406:LSR4根据针对新隧道的LSP表项,直接弹出报文最外一层标签,并将弹出标签后的报文转发给LSR5。
与实施例一相似,如果LSR5并不是报文的目的,LSR5还需要按照IP转发的方法继续转发报文,此处不再赘述。
实施例三
本实施例中,将要建立的新隧道包括LSR1~LSR4,LSR2与LSR1的互连地址为10.45.0.2/24,LSR3与LSR2的互连地址为10.45.1.3/24,LSR4与LSR3的互连地址为10.45.2.4/24。其中,LSR1为新隧道的入口LSR,LSR4为新隧道的出口LSR;LSR1~LSR4已经建立了隧道,LSR1为已建隧道的隧道入口LSR,LSR4为已建隧道的隧道出口LSR;新隧道与已建隧道完全重叠,新隧道的入口LSR和已建隧道的入口LSR相同,均为LSR1。
本实施例中假设LSR1~LSR4通过运行动态信令协议来建立隧道,FEC为1.0.0.5/32,并采用PHP方法在倒数第二跳弹出标签。LSR1~LSR4中针对已建隧道的LSP表项仍然可以用表一~表四所示,此处不再赘述。
另外,假设本实施例建立的新隧道需要转发目的地址属于172.16.10.0/24范围内的报文,并且在转发报文时采用PHP方法在倒数第二跳弹出标签。在LSP静态配置时,到达自身下游设备的路径信息为下一跳地址。
图6为本实施例的流程图,图7为本实施例新隧道转发时标签变化的示意图。参见图6和图7,本实施例可以包括以下步骤:
步骤601:按照LSP静态配置方法对LSR1和LSR4所构成的隧道进行静态配置,并在对LSR1配置时,将LSR1中针对新隧道的LSP表项中的FEC设置为的172.16.10.0/24,下一跳地址设置为已建隧道FEC范围内的地址。
本步骤中,已建隧道的入口LSR为LSR1,已建隧道的出口LSR为LSR4。由于新隧道和已建隧道完全重叠,新隧道中不存在非已建隧道中的LSR,所以,可将LSR1和LSR4作为一条隧道进行LSP静态配置。另外,由于本实施例在新隧道中采用在隧道倒数第二跳弹出标签,所以,在对LSR1、LSR4所构成的隧道进行LSP静态配置时,仅需要在LSR1上配置针对新隧道的LSP表项即可。LSR1针对新隧道的LSP表项如表十一所示:
  FEC   下一跳地址   入标签   出标签   172.16.10.0/24   1.0.0.5   -   3
表十一
这里,由于LSR1为新隧道的入口LSR,所以需要将针对新隧道的LSP表项中FEC设置为172.16.10.0/24,即指定允许新隧道转发报文的目的地址范围;同时,由于LSR1为已建隧道的入口LSR,为了在新隧道转发报文时利用已建隧道,需要将LSR1中针对新隧道的LSP表项中的下一跳地址设置为1.0.0.5,即属于已建隧道FEC范围内的地址;另外,由于本实施例采用在隧道倒数第二跳弹出标签的方法,还需要将LSR1中针对新隧道的LSP表项中的出标签设置为3。至于LSP表项中其它信息的设置也可以参见LSP静态配置方法,此处不再赘述。
步骤602:当新隧道需要转发时,LSR2判断出针对新隧道的LSP表项中下一跳地址与已建隧道的LSP表项中的FEC匹配,确定报文需要通过已建隧道进行转发。
本步骤中,由于LSR1针对新隧道LSP表项中的出标签为3,无需对报文进行封装。在这种情况下,LSR1无需对报文进行任何关于标签的处理,直接按照下一跳转发即可。
步骤603:LSR1利用针对已建隧道的LSP表项中的出标签进行报文封装,根据已建隧道LSP表项中下一跳地址将报文从已建隧道转发,直至已建隧道的出口LSR,即LSR4。
本步骤中,LSR1可以利用表一中的出标签1027对报文进行封装,再转发给LSR2;LSR2利用表二中的出标签1024,将报文最外一层标签1027替换为1024,再转发给LSR3;LSR3弹出最外一层标签1024,再将报文转发给LSR4。这样,LSR4接收到的报文应该为一个没有被标签封装过的报文。
在本实施例中,由于新隧道和已建隧道完全重叠,只需要在已建隧道的入口LSR中配置针对新隧道的LSP表项,并在LSP表项中指定新隧道允许转发报文的目的地址范围,就可以达到扩展已建隧道转发报文的范围,可以达到完全利用已建隧道来转发新隧道报文的效果。
实施例四
本实施例中,将要建立的新隧道包括LSR1~LSR10,LSR2与LSR1的互连地址为10.45.0.2/24,LSR3与LSR2的互连地址为10.45.1.3/24,并依次类推。其中,LSR1为新隧道的入口LSR,LSR10为新隧道的出口LSR;LSR2~LSR5已经建立了隧道,LSR2为已建隧道的隧道入口LSR,LSR5为已建隧道的隧道出口LSR;LSR6~LSR9也已经建立了隧道,LSR6为已建隧道的隧道入口LSR,LSR9为已建隧道的隧道出口LSR,新隧道的入口LSR和已建隧道的入口LSR不相同。
本实施例中,假设LSR2~LSR5通过运行动态信令协议来建立隧道,隧道名为Tunnel3/0/0,FEC为1.0.0.5/32;LSR6~LSR9通过静态配置来建立隧道,FEC为1.0.0.6/32;LSR2~LSR5、LSR6~LSR9中针对已建隧道的LSP表项仍然与实施例一相似,此处不再赘述。
本实施例中,假设建立的新隧道需要转发目的地址属于172.16.10.0/24范围内的报文,并且在转发报文时采用PHP方法在隧道倒数第二跳弹出标签。另外,本实施例中,在对已建隧道入口LSR进行配置时,假设到达自身下游设备的路径信息为下一跳地址。
本实施例中,可以按照LSP静态配置方法对LSR1、LSR2、LSR5、LSR6、LSR9、LSR10所构成的隧道进行静态配置,并在对LSR1配置时,将LSR2中针对新隧道的LSP表项中的FEC设置为的172.16.10.0/24,下一跳地址设置为1.0.0.5,将LSR6中针对新隧道的LSP表项中的FEC设置为的172.16.10.0/24,下一跳地址设置为1.0.0.6。
建立新隧道后,就可以利用新隧道进行报文转发,其方法与实施例一至实施例三中的方法相似,只是会在转发的过程中会经过两个已建隧道,此处不再赘述。
图8为本实施例新隧道转发时标签变化的示意图。如图8所示,本实施例中,当LSR1需要转发报文时,利用针对新隧道的LSP表项中出标签2049封装报文,并发送给LSR2;LSR2利用新隧道的LSP表项中出标签2050替换报文中的外层标签2049,并在确定需要从已建隧道转发报文时,利用针对已建隧道的LSP表项中出标签1024再次封装报文,并将报文从已建隧道转发,直至LSR5;LSR5利用针对新隧道的LSP表项中出标签将报文中最外一层标签2050替换为2051,再转发给LSR6;LSR6利用针对新隧道的LSP表项中出标签将报文中最外一层标签2051替换为2052,并在确定需要从已建隧道转发报文时,利用针对已建隧道的LSP表项中出标签3010再次封装报文,并将报文从已建隧道转发,直至LSR9;LSR9弹出最外一层标签2052,并将报文转发给LSR10。
本发明实施例一至实施例四中,已建隧道可以通过动态信令协议的方法建立隧道,也可以利用LSP静态配置的方法来建立。当然,在已建隧道中转发报文时,既可以采用在隧道倒数第二跳弹出标签的方法,也可以采用在隧道最后一跳弹出标签的方法。
针对上述方法,本发明还提供一种标签交换路由器。
图9是本发明中标签交换路由器的结构示意图。如图9所示,该标签交换路由器包括:
接收单元901,用于接收来自上游设备的报文;
LSP隧道转发处理单元902,用于根据LSP隧道转发方法对报文进行处理,并根据自身下游设备的路径信息确定报文从已建隧道进行转发;
发送单元903,用于将报文从已建隧道发送给下游设备。
图10是应用本发明方案的标签交换路由器的装置实施例。如图10所示,该装置包括:接收单元901、LSP隧道转发处理单元902、发送单元903其中,LSP隧道转发处理单元902还可以包括:
标签处理单元9021,用于将接收到的报文根据存储单元中针对新隧道的LSP表项中出标签进行标签替换;还用于在确定报文从已建隧道转发时根据存储单元中针对已建隧道的LSP表项中的出标签封装报文;
判别单元9022,用于判别到达自身下游设备的路径信息是否与已建隧道匹配,如果匹配,则确定报文从已建隧道转发,并将报文从已建隧道转发的信息通知给标签处理单元;
存储单元9023,用于存储已建隧道的LSP表项和新建隧道的LSP表项。
当标签交换路由器的接收单元901收到上游设备转发的报文时,可以由标签处理单元9021根据存储单元9023保存的针对新隧道的LSP表项中出标签进行标签替换,同时由判别单元9022判别到达自身下游设备的路径信息是否与已建隧道匹配,如果匹配,则确定报文从已建隧道转发,并将报文从已建隧道转发的信息通知给标签处理单元9021;标签处理单元9021在确定报文从已建隧道转发时,根据存储单元9023中针对已建隧道的LSP表项中出标签封装报文,再通过发送单元903将报文发送给下游设备。
应用本发明实施例方案,可以采用LSP静态配置的方法,将已建隧道嵌入新隧道中。这样,在新隧道转发报文时,就可以利用已建隧道进行转发从而可以有效地利用已建隧道,达到节约隧道资源的目的。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。