报文传输方法和装置与流程

文档序号:17896472发布日期:2019-06-13 16:01阅读:102来源:国知局
报文传输方法和装置与流程
本申请实施例涉及通信
技术领域
,尤其是涉及一种报文传输方法和装置。
背景技术
:段路由(segmentrouting,sr)采用源路径选择机制,预先由源节点设置转发报文所要经过的段(segment)的段标识(segmentidentifier,sid),sid采用标签表示,当报文经过网络节点时,网络节点根据标签对报文进行转发。目前,为了保证传输的可靠性,源节点与目的节点之间存在主路径和备路径。当主路径正常时,则通过主路径向目的节点发送报文。当主路径发生故障,且备路径未发生故障时,则通过备路径向目的节点发送报文。具体的,报文的转发表项包括主路径对应的标签(即主路径的下一跳节点的标签)和备路径对应的标签(即构成备路径的段路由的标签)。当主路径正常时,则利用主路径对应的标签向目的节点发送报文,当主路径发生故障且备路径未发生故障时,则利用备路径对应的标签向目的节点发送报文。但是,在报文中封装的标签数量是受到限制的,如最多在报文中封装3个标签,一旦构成备路径的段路由的标签数量超过3个,则无法在报文中封装备路径对应的所有标签,从而导致无法通过标签正确转发报文。技术实现要素:有鉴于此,本申请提供一种报文传输方法和装置,当通过备路径传输报文时,可以通过te隧道传输报文,从而通过备路径正确转发报文。第一方面,本申请提供一种报文传输方法,应用于第一节点,所述第一节点与第二节点之间已建立流量工程te隧道,所述方法包括:获取第一报文,确定所述第一报文对应的转发表项;所述转发表项包括主路径转发表项和备路径转发表项,所述备路径转发表项包括的出接口是所述te隧道的隧道标识;若所述主路径转发表项对应的主路径发生故障,且所述第二节点不是所述第一报文包括的目的地址对应的目的节点,则从所述备路径转发表项中获取第二节点上指向目的节点的段路由标签和所述te隧道对应的隧道标签;在所述第一报文中添加所述段路由标签和所述隧道标签,得到第二报文;通过所述隧道标识对应的te隧道,向所述第二节点发送所述第二报文,以使所述第二节点利用所述段路由标签向所述目的节点发送所述第二报文。结合第一方面,在第一种可能的实现方式中,所述确定所述第一报文对应的转发表项之后,所述方法还包括:若所述主路径转发表项对应的主路径发生故障,且所述第二节点是所述第一报文包括的目的地址对应的目的节点,则从所述备路径转发表项中获取所述te隧道对应的隧道标签;在所述第一报文中添加所述隧道标签,得到第三报文;通过所述隧道标识对应的te隧道,向所述目的节点发送所述第三报文。结合第一方面,在第二种可能的实现方式中,所述确定所述第一报文对应的转发表项,包括:从所述第一报文中获取入标签,并确定所述入标签对应的转发表项;或者,从所述第一报文中获取目的地址,并确定所述目的地址对应的转发表项。结合第一方面,在第三种可能的实现方式中,所述确定所述第一报文对应的转发表项之前,所述方法还包括:确定所述目的节点所在的节点空间,所述节点空间包括多个网络节点;从所述节点空间的多个网络节点中选择一个网络节点作为第二节点;生成所述备路径转发表项,所述备路径转发表项包括的出接口是所述第一节点与所述第二节点之间建立的te隧道的隧道标识。结合第一方面以及第三种可能的实现方式,在第四种可能的实现方式中,所述生成所述备路径转发表项,包括:若所述第一节点与所述第二节点之间的构成备路径的段路由的标签数量超过预设阈值,则生成所述备路径转发表项。结合第一方面以及第三种可能的实现方式、第四种可能的实现方式,在第五种可能的实现方式中,所述生成所述备路径转发表项,包括:判断所述第一节点与所述第二节点之间是否已经建立te隧道;如果是,则生成所述备路径转发表项;所述备路径转发表项包括的出接口是已经建立的te隧道的隧道标识;如果否,则在所述第一节点与所述第二节点之间建立te隧道,并生成所述备路径转发表项;所述备路径转发表项包括的出接口是当前建立的te隧道的隧道标识。结合第一方面以及第三种可能的实现方式,在第六种可能的实现方式中,所述从所述节点空间的多个网络节点中选择一个网络节点作为第二节点,包括:从所述节点空间的多个网络节点中选择任意一个网络节点作为第二节点;或者,从所述节点空间的多个网络节点中选择所述目的节点作为第二节点;或者,从所述节点空间的多个网络节点中选择汇聚节点作为第二节点,所述汇聚节点是与所述节点空间之外的其它网络节点连接的网络节点。第二方面,本申请提供一种报文传输装置,应用于第一节点,所述第一节点与第二节点之间已建立流量工程te隧道,所述装置包括:确定模块,用于获取第一报文,确定所述第一报文对应的转发表项;所述转发表项包括主路径转发表项和备路径转发表项,所述备路径转发表项包括的出接口是所述te隧道的隧道标识;获取模块,用于若所述主路径转发表项对应的主路径发生故障,且所述第二节点不是所述第一报文包括的目的地址对应的目的节点,则从所述备路径转发表项中获取第二节点上指向目的节点的段路由标签和所述te隧道对应的隧道标签;添加模块,用于在所述第一报文中添加所述段路由标签和所述隧道标签,得到第二报文;发送模块,用于通过所述隧道标识对应的te隧道,向所述第二节点发送所述第二报文,以使所述第二节点利用所述段路由标签向所述目的节点发送所述第二报文。结合第二方面,在第一种可能的实现方式中,所述获取模块,还用于若所述主路径转发表项对应的主路径发生故障,且所述第二节点是所述第一报文包括的目的地址对应的目的节点,则从所述备路径转发表项中获取所述te隧道对应的隧道标签;所述添加模块,还用于在所述第一报文中添加所述隧道标签,得到第三报文;所述发送模块,还用于通过所述隧道标识对应的te隧道,向所述目的节点发送所述第三报文。结合第二方面,在第二种可能的实现方式中,所述确定模块确定所述第一报文对应的转发表项时具体用于:从所述第一报文中获取入标签,并确定所述入标签对应的转发表项;或者,从所述第一报文中获取目的地址,并确定所述目的地址对应的转发表项。结合第二方面,在第三种可能的实现方式中,还包括:生成模块,用于确定所述目的节点所在的节点空间,所述节点空间包括多个网络节点;从所述节点空间的多个网络节点中选择一个网络节点作为第二节点;生成所述备路径转发表项,所述备路径转发表项包括的出接口是所述第一节点与所述第二节点之间建立的te隧道的隧道标识。结合第二方面以及第三种可能的实现方式,在第四种可能的实现方式中,所述生成模块生成所述备路径转发表项时具体用于:若所述第一节点与所述第二节点之间的构成备路径的段路由的标签数量超过预设阈值,则生成所述备路径转发表项。结合第二方面以及第三种可能的实现方式、第四种可能的实现方式,在第五种可能的实现方式中,所述生成模块生成所述备路径转发表项时具体用于:判断所述第一节点与所述第二节点之间是否已经建立te隧道;如果是,则生成所述备路径转发表项;所述备路径转发表项包括的出接口是已经建立的te隧道的隧道标识;如果否,则在所述第一节点与所述第二节点之间建立te隧道,并生成所述备路径转发表项;所述备路径转发表项包括的出接口是当前建立的te隧道的隧道标识。结合第二方面以及第三种可能的实现方式,在第六种可能的实现方式中,所述生成模块从所述节点空间的多个网络节点中选择一个网络节点作为第二节点时具体用于:从所述节点空间的多个网络节点中选择任意一个网络节点作为第二节点;或者,从所述节点空间的多个网络节点中选择所述目的节点作为第二节点;或者,从所述节点空间的多个网络节点中选择汇聚节点作为第二节点,所述汇聚节点是与所述节点空间之外的其它网络节点连接的网络节点。第三方面,本申请提供一种网络节点,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述的方法步骤。第四方面,本申请提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令可以促使所述处理器,实现上述的方法步骤。由以上技术方案可见,本申请中,转发表项包括主路径转发表项和备路径转发表项,备路径转发表项包括的出接口是te隧道的隧道标识,若主路径转发表项对应的主路径发生故障,则利用备路径转发表项对应的备路径转发报文。在利用备路径转发表项对应的备路径转发报文时,是通过te隧道转发报文,即不需要在报文中添加大量段路由标签,从而减少报文中的段路由标签数量,避免段路由标签数量达到上限值,从而可以通过备路径正确转发报文。附图说明为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。图1a-图1c是本申请一种实施方式中的应用场景示意图;图2是本申请一种实施方式中的报文传输方法的流程图;图3是本申请另一种实施方式中的报文传输方法的流程图;图4是本申请另一种实施方式中的报文传输方法的流程图;图5是本申请一种实施方式中的报文传输装置的结构图;图6是本申请一种实施方式中的网络节点的硬件结构图。具体实施方式在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请实施例。本申请实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。本申请实施例中提出一种报文传输方法,该方法可以应用于多协议标签交换(multi-protocollabelswitching,mpls)网络,mpls网络包括多个网络节点(如路由器、交换机等)。这些网络节点至少包括头节点、尾节点、源节点和目的节点。源节点是标签转发的入节点,即采用sr技术实现报文转发的第一个网络节点;目的节点是标签转发的出节点,即采用sr技术实现报文转发的最后一个网络节点。头节点和尾节点是流量工程(trafficengineering,te)隧道两端的节点,te隧道一端的网络节点为头节点,另一端的网络节点为尾节点。参见图1a所示,为本申请实施例的应用场景示意图。针对主机131与主机133的交互过程,网络节点101是源节点,网络节点123是目的节点。针对主机132与主机134的交互过程,网络节点102是源节点,网络节点124是目的节点。若在网络节点101与网络节点121之间建立te隧道,网络节点101是te隧道的头节点,网络节点121是te隧道的尾节点。若在网络节点101与网络节点122之间建立te隧道,网络节点101是头节点,网络节点122是尾节点。在上述应用场景下,假设源节点为网络节点101,目的节点为网络节点123,且网络节点101与网络节点123之间存在主路径和备路径。主路径包括:网络节点101-网络节点112-网络节点122-网络节点123。备路径包括:网络节点101-网络节点111-网络节点114-网络节点121-网络节点122-网络节点123。从图1a可以看出,当主路径正常时,则网络节点101通过主路径将报文发送给网络节点123。当主路径发生故障时,如网络节点101与网络节点112之间的链路故障,则网络节点101通过备路径将报文发送给网络节点123。在传统方式中,为了实现报文传输过程,网络节点101建立转发表项,该转发表项包括与主路径对应的主路径转发表项、与备路径对应的备路径转发表项,主路径转发表项和备路径转发表项均采用sr技术建立,对此主路径转发表项的内容不做限制,在后续过程中,简单介绍备路径转发表项的内容。针对网络节点101创建的备路径转发表项,包括网络节点111对应的标签a1(即网络节点111的入标签)、网络节点114对应的标签a2、网络节点121对应的标签a3、网络节点122对应的标签a4、网络节点123对应的标签a5。参见图1b所示,网络节点101在接收到报文1后,确定报文1命中的转发表项,该转发表项包括主路径转发表项和备路径转发表项。若主路径转发表项对应的主路径发生故障,且备路径转发表项对应的备路径未发生故障,则通过该备路径转发表项转发报文1。具体的,基于该备路径转发表项,网络节点101在报文1中依次封装标签a5、标签a4、标签a3、标签a2、标签a1,得到报文2,报文2中针对该备路径的最外层标签是标签a1,最内层标签是标签a5。然后,通过标签a1对应的出接口转发报文2,如将报文2发送给网络节点111。网络节点111接收到报文2后,剥掉报文2最外层的标签a1,得到报文3;并通过报文3最外层的标签a2查询转发表项,得到标签a2对应的出接口。通过标签a2对应的出接口转发报文3,如将报文3发送给网络节点114。网络节点114接收到报文3后,剥掉报文3最外层的标签a2,得到报文4;并通过报文4最外层的标签a3查询转发表项,得到标签a3对应的出接口。通过标签a3对应的出接口转发报文4,如将报文4发送给网络节点121。网络节点121接收到报文4后,剥掉报文4最外层的标签a3,得到报文5;并通过报文5最外层的标签a4查询转发表项,得到标签a4对应的出接口。通过标签a4对应的出接口转发报文5,如将报文5发送给网络节点122。网络节点122接收到报文5后,剥掉报文5最外层的标签a4,得到报文6;并通过报文6最外层的标签a5查询转发表项,得到标签a5对应的出接口。通过标签a5对应的出接口转发报文6,如将报文6发送给网络节点123。网络节点123接收到报文6后,剥掉报文6最外层的标签a5,得到报文1,即未携带标签的原始报文。通过报文1的目的ip地址,将报文1转发给主机133。至此,各网络节点通过报文中携带的标签,最终成功将报文转发给主机133。从上述内容可以看出,为了通过备路径传输报文,则网络节点101需要在报文中封装标签a5、标签a4、标签a3、标签a2、标签a1。但是,某些应用场景下,在报文中封装的标签数量是受到限制的。例如,当网络节点101采用专用集成电路(applicationspecificintegratedcircuit,asic)转发芯片时,最多在报文中封装3个标签,一旦待封装的标签数量超过3个,则无法在报文中封装所有标签,从而导致无法通过标签正确转发报文,用户业务发生中断。显然,在上述报文转发过程中,由于待封装的标签数量为5个,因此,网络节点101无法在报文中封装这5个标签,导致无法正确将报文发送给主机133。针对上述发现,本申请实施例中,可以在网络节点101与网络节点122之间建立te隧道。这样,网络节点101不需要在报文中封装大量标签,只需要在报文中封装少量标签,从而减少报文中的标签数量,使得报文正确传输。针对网络节点101创建的备路径转发表项,包括网络节点123对应的标签a5(即网络节点123的入标签),而不包括标签a1、标签a2、标签a3、标签a4。此外,该备路径转发表项还可以包括te隧道的标签,如标签b1。参见图1c所示,网络节点101在接收到报文1后,确定报文1命中的转发表项,该转发表项包括主路径转发表项和备路径转发表项。若主路径转发表项对应的主路径发生故障,且备路径转发表项对应的备路径未发生故障,则通过该备路径转发表项转发报文1。具体的,基于该备路径转发表项,网络节点101在报文1中依次封装标签a5、标签b1,得到报文7。报文7中针对该备路径的外层标签是标签b1,内层标签是标签a5。然后,由于该备路径转发表项包括的出接口是te隧道(即网络节点101与网络节点122之间的te隧道)的隧道标识,因此,可以通过该隧道标识对应的te隧道将报文7发送给网络节点111。网络节点111在接收到报文7后,确定与标签b1对应的转发表项,这个转发表项包括的动作项是替换标签b1,因此,需要将标签b1交换为标签b2,得到报文8。而且,由于这个转发表项包括的出接口是te隧道的隧道标识,因此,可以通过该隧道标识对应的te隧道将报文8发送给网络节点114。其中,在实际应用中,标签b1与标签b2可以相同,也可以不同。网络节点114在接收到报文8后,确定与标签b2对应的转发表项,这个转发表项包括的动作项是替换标签b2,因此,需要将标签b2交换为标签b3,得到报文9。而且,由于这个转发表项包括的出接口是te隧道的隧道标识,因此,可以通过该隧道标识对应的te隧道将报文9发送给网络节点121。其中,在实际应用中,标签b2与标签b3可以相同,也可以不同。网络节点121在接收到报文9后,确定与标签b3对应的转发表项,这个转发表项包括的动作项是替换标签b3,因此,需要将标签b3交换为标签b4,得到报文10。而且,由于这个转发表项包括的出接口是te隧道的隧道标识,因此,可以通过该隧道标识对应的te隧道将报文10发送给网络节点122。网络节点122接收到报文10后,确定与标签b4对应的转发表项,由于网络节点122是te隧道的尾节点,这个转发表项包括的动作项是剥掉标签b3,因此,不再进行标签交换,而是剥掉报文10的标签b4,得到报文11。然后,通过报文11最外层的标签a5查询转发表项,得到标签a5对应的出接口。通过标签a5对应的出接口转发报文11,如将报文11发送给网络节点123。网络节点123接收到报文11后,剥掉报文11最外层的标签a5,得到报文1,即未携带标签的原始报文。通过报文1的目的ip地址将报文1转发给主机133。至此,各网络节点通过te隧道,最终成功将报文转发给主机133。从上述内容可以看出,网络节点101通过te隧道将报文发送至网络节点122。网络节点122在接收到报文后,由于报文中包括标签a5,因此,可以利用标签a5将报文发送给网络节点123。网络节点123在接收到报文后,将报文发送给主机133。显然,基于上述处理,不需要在报文中封装标签a1、标签a2、标签a3、标签a4,从而减少报文中封装的标签数量,能够正确转发报文。为了实现上述报文转发过程,本申请实施例中,可以涉及生成备路径转发表项、基于备路径转发表项进行报文传输等过程,以下对上述过程进行说明。参见图2所示,为本申请实施例中的生成转发表项的流程示意图,该方法可以应用于第一节点(即te隧道的头节点),该方法可以包括以下步骤:步骤201,确定目的节点所在的节点空间,该节点空间包括多个网络节点。可选的,可以配置某个网络节点(如网络节点101、网络节点102、网络节点111等)为第一节点,并在第一节点配置目的节点的信息(如ip地址等)。实际应用中,也可以将多个网络节点均配置为第一节点,每个第一节点的处理过程相同,为了方便描述,后续以将网络节点101配置为第一节点为例。针对主机131与主机133的交互过程,在第一节点配置网络节点123的ip地址,表示网络节点123为目的节点。针对主机132与主机134的交互过程,在第一节点配置网络节点124的ip地址,表示网络节点124为目的节点。在一个例子中,第一节点可以获取mpls网络的网络拓扑,如图1a所示的网络拓扑,对此网络拓扑的获取方式不做限制。例如,各网络节点发送链路状态广播(linkstateadvertisement,lsa)报文,该lsa报文携带网络节点的链路状态信息。基于各网络节点的链路状态信息,第一节点可以获取到网络拓扑。进一步的,第一节点在获取到网络拓扑后,利用该网络拓扑确定目的节点所在的节点空间(这个节点空间也称为q空间)。例如,以目的节点为根节点建立反向最短路径优先(shortestpathfirst,spf)树,所有从根节点不经过保护链路可达的节点集合称为q空间,对此q空间的确定方式不做限制。参见图1a所示,假设目的节点为网络节点123或者网络节点124,则网络节点121、网络节点122、网络节点123、网络节点124、网络节点125、网络节点126、网络节点127和网络节点128组成的节点集合,就是节点空间。步骤202,从节点空间的多个网络节点中选择一个网络节点作为第二节点,第二节点为te隧道的尾节点,表示在第一节点与第二节点之间建立te隧道。可选的,第一节点确定目的节点所在的节点空间后,可以从节点空间中选择一个网络节点作为第二节点。例如,从节点空间的多个网络节点中选择任意一个网络节点作为第二节点。或者,从节点空间的多个网络节点中选择目的节点(如网络节点123或网络节点124)作为第二节点。或者,从节点空间的多个网络节点中选择汇聚节点作为第二节点,汇聚节点是与所述节点空间之外的其它网络节点连接的网络节点,即汇聚节点与非节点空间中的网络节点连接。参见图1a所示,网络节点112不是节点空间中的网络节点,网络节点122与网络节点112连接,即网络节点122是汇聚节点。同理,网络节点121是汇聚节点。但是,网络节点123-网络节点128未与非节点空间中的网络节点连接,即不是汇聚节点。综上所述,将网络节点122或者网络节点121作为第二节点。步骤203,生成备路径转发表项,该备路径转发表项包括的出接口是第一节点(即头节点)与第二节点(即尾节点)之间建立的te隧道的隧道标识。可选的,对于第一节点来说,需要生成转发表项,该转发表项包括主路径转发表项和备路径转发表项。主路径转发表项的生成过程与传统方式相同,在此不再赘述。与传统方式不同的是,第一节点在生成备路径转发表项时,备路径转发表项包括的出接口是te隧道的隧道标识,该隧道标识对应一个te隧道。可选的,在一个例子中,对于te隧道来说,该te隧道可以对应一个标签,为了区分方便,可以将这个标签称为隧道标签。因此,第一节点在生成备路径转发表项时,该备路径转发表项还可以包括该隧道标签,如上述标签b1。可选的,在一个例子中,若第二节点不是目的节点,则第一节点在生成备路径转发表项时,该备路径转发表项还可以包括第二节点上指向目的节点的标签,为了区分方便,可以将这个标签称为段路由标签,该段路由标签是基于sr技术得到的,对此段路由标签的获取方式不做限制。若第二节点是目的节点,则第一节点在生成备路径转发表项时,该备路径转发表项不包括该段路由标签。如图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点123为目的节点,网络节点122为第二节点,网络节点101与网络节点122之间建立te隧道a,则网络节点101生成表1所示的转发表项。表1匹配项段路由标签隧道标签出接口角色ip地址133………主ip地址133标签a5标签b1隧道标识a备…...………在表1中,ip地址133表示主机133的ip地址,角色“主”表示主路径转发表项,对此主路径转发表项的内容不做限制。角色“备”表示备路径转发表项,隧道标识a是te隧道a的隧道标识,标签b1是te隧道a的隧道标签,是与te隧道a有关的标签。标签a5是网络节点122(即第二节点)上指向目的节点(即网络节点123)的段路由标签,是与te隧道a无关的标签。如图1c所示,针对主机132与主机134的交互过程,假设网络节点101为第一节点,网络节点124为目的节点,网络节点122为第二节点,网络节点101与网络节点122之间建立te隧道a,则网络节点101生成表2所示的转发表项。表2匹配项段路由标签隧道标签出接口角色标签a0………主标签a0标签a5标签b1隧道标识a备…...………在表2中,标签a0表示网络节点101的标签(即段路由标签),网络节点102接收到主机132发送给主机134的报文时,需要在该报文中添加这个标签a0,且标签a0是报文最外层的标签。这样,网络节点101在接收到该报文后,将该报文中携带的标签a0作为入标签,查询到表2所示的转发表项。在表2中,针对标签a5、标签b1、隧道标识a,可以参见上述实施例。如图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点123为目的节点,网络节点123为第二节点,网络节点101与网络节点123之间建立te隧道b,则网络节点101生成表3所示的转发表项。表3匹配项隧道标签出接口角色ip地址133……主ip地址133标签c1隧道标识b备…...…...在表3中,隧道标识b是te隧道b的隧道标识,标签c1是te隧道b的隧道标签,是与te隧道b有关的标签。与表1相比,由于第二节点是目的节点,二者均是网络节点123,因此,备路径转发表项中并未包括段路由标签。如图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点123为目的节点,网络节点121为第二节点,网络节点101与网络节点121之间建立te隧道c,则网络节点101生成表4所示的转发表项。表4隧道标识c是te隧道c的隧道标识,标签d1是te隧道c的隧道标签,是与te隧道c有关的标签。标签a4和标签a5是网络节点121(即第二节点)上指向目的节点(即网络节点123)的段路由标签,与te隧道c无关。其中,标签a4是网络节点122的段路由标签。标签a5是网络节点123的段路由标签。在一个例子中,当第二节点不是目的节点时,则备路径转发表项可以参见表1、表2、表4所示。当第二节点是目的节点时,则备路径转发表项可以参见3所示。进一步的,当第二节点不是目的节点时,若主路径与备路径之间存在交点,即网络节点122,则备路径转发表项可以参见表1和表2所示;若主路径与备路径之间不存在交点,即则备路径转发表项可以参见表4所示。综上所述,本申请实施例中,由于备路径转发表项包括te隧道的隧道标识,因此,若主路径转发表项对应的主路径发生故障,如网络节点101与网络节点112之间的链路发生故障,则网络节点101利用备路径转发表项对应的备路径转发报文时,是通过该隧道标识对应的te隧道将报文发送给第二节点,这样,就不需要在报文中添加大量标签,从而可以减少报文中封装的标签数量。可选地,在一个例子中,第一节点生成备路径转发表项,可以包括但不限于:判断第一节点与第二节点之间是否已经建立te隧道。如果是,则生成备路径转发表项,所述备路径转发表项包括的出接口是已经建立的te隧道的隧道标识。如果否,则在第一节点与第二节点之间建立te隧道,并生成备路径转发表项,所述备路径转发表项包括的出接口是当前建立的te隧道的隧道标识。例如,参见图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点123为目的节点,网络节点122为第二节点。由于网络节点101与网络节点122之间未建立te隧道,因此,在网络节点101与网络节点122之间建立te隧道a,对此建立过程不做限制。然后,基于当前建立的te隧道a的隧道标识,生成表1所示的备路径转发表项。针对主机132与主机134的交互过程,假设网络节点101为第一节点,网络节点124为目的节点,网络节点122为第二节点。由于网络节点101与网络节点122之间已经建立te隧道a,因此,不需要重新建立te隧道,而是直接基于当前建立的te隧道a的隧道标识,生成表2所示的备路径转发表项。综上所述,本申请实施例中,针对多个主机交互过程(如主机131与主机133的交互过程、主机132与主机134的交互过程等),可以共用同一个te隧道,从而可以减少需要建立的te隧道的数量,并节约te隧道的的资源。可选地,在一个例子中,第一节点生成备路径转发表项,可以包括:若第一节点与第二节点之间的构成备路径的段路由的标签数量超过预设阈值,则生成备路径转发表项,所述备路径转发表项包括的出接口是te隧道的隧道标识。否则,第一节点可以采用传统方式生成备路径转发表项,也就是说,备路径转发表项包括的出接口不是te隧道的隧道标识,对此传统方式不做限制。例如,参见图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点123为目的节点,网络节点122为第二节点。网络节点101确定网络节点101与网络节点123之间的备路径,如备路径为网络节点101-网络节点111-网络节点114-网络节点121-网络节点122-网络节点123。网络节点101判断构成备路径的段路由的标签数量是否超过预设阈值。具体的,网络节点101采用sr技术得到备路径对应的所有标签,参见上述实施例,这些标签包括标签a1、标签a2、标签a3、标签a4和标签a5,即构成备路径的段路由的标签数量为5个。网络节点101可以获知标签数量的上限,如网络节点101采用asic转发芯片时,标签数量的上限为3个,即预设阈值为3个。然后,网络节点101确定构成备路径的段路由的标签数量超过预设阈值。综上所述,本申请实施例中,当构成备路径的段路由的标签数量超过预设阈值时,才采用本申请的技术方案生成备路径转发表项,即备路径转发表项包括的出接口是已经建立的te隧道的隧道标识。当构成备路径的段路由的标签数量不超过预设阈值时,采用传统方式生成备路径转发表项,对此不做限制。可选的,在一个例子中,可以由其它类型设备(如控制器或者网管设备等)执行步骤201和步骤202,具体过程与第一节点的执行过程相同,在此不再重复赘述。控制器或者网管设备选择一个网络节点作为第二节点(即步骤202)之后,可以将第二节点的信息通知给第一节点,以触发第一节点执行步骤203。参见图3所示,为本申请实施例中的报文传输方法(即基于转发表项进行报文传输)的流程示意图,该方法可以应用于第一节点(即头节点),该第一节点与第二节点(即尾节点)之间已建立te隧道,该方法可以包括:步骤301,获取第一报文,并确定与该第一报文对应的转发表项。其中,该转发表项包括主路径转发表项和备路径转发表项,该备路径转发表项包括的出接口是te隧道(即第一节点与第二节点之间的te隧道)的隧道标识。此外,该备路径转发表项还可以包括第二节点上指向目的节点的段路由标签。该备路径转发表项还可以包括该te隧道对应的隧道标签。如图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点123为目的节点,网络节点122为第二节点,即第二节点不是第一报文包括的目的地址(即主机133的ip地址)对应的目的节点。主机131向主机133发送第一报文时,网络节点101(即第一节点)接收第一报文,利用第一报文的目的ip地址(如ip地址133)查询转发表,得到表1所示的转发表项,该转发表项包括主路径转发表项和备路径转发表项。备路径转发表项包括网络节点122上指向目的节点(即网络节点123)的段路由标签(如标签a5)、te隧道a的隧道标识a、te隧道a对应的隧道标签(如标签b1)。如图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点123为目的节点,网络节点121为第二节点。网络节点101接收到第一报文后,利用第一报文的目的ip地址查询转发表,得到表4所示的转发表项,转发表项包括主路径转发表项和备路径转发表项。备路径转发表项包括网络节点122上指向目的节点(网络节点123)的段路由标签(如标签a4、标签a5)、te隧道c的隧道标识c、te隧道c对应的隧道标签(如标签d1)。步骤302,若主路径转发表项对应的主路径发生故障,且第二节点不是第一报文包括的目的地址对应的目的节点,则从备路径转发表项中获取第二节点上指向目的节点的段路由标签和te隧道对应的隧道标签。或,若主路径转发表项对应的主路径未发生故障,则利用主路径转发表项将第一报文发送给目的节点。步骤303,在第一报文中添加该段路由标签和该隧道标签,得到第二报文。步骤304,通过备路径转发表项中的隧道标识对应的te隧道,向第二节点发送所述第二报文,以使第二节点利用该段路由标签向目的节点发送第二报文。如图1c所示,网络节点101(即第一节点)周期性的检测主路径是否发生故障,如采用双向转发检测(bidirectionalforwardingdetection,bfd)技术检测主路径是否发生故障。若主路径未发生故障,则网络节点101利用主路径转发表项转发报文,对此发送过程不做限制。若主路径发生故障,且备路径未发生故障,则网络节点101在接收到第一报文后,可以利用备路径转发表项将第一报文发送给网络节点123(即目的节点),以下对此发送过程进行说明。例如,网络节点101确定与第一报文对应的转发表项,该转发表项包括主路径转发表项和备路径转发表项。若主路径转发表项对应的主路径发生故障,且备路径转发表项对应的备路径未发生故障,则通过该备路径转发表项转发第一报文。具体的,参见表1所示,备路径转发表项包括标签a5(即段路由标签)、标签b1(即隧道标签)和隧道标识a。因此,网络节点101在第一报文中添加标签a5和标签b1,得到第二报文。第二报文中针对备路径的外层标签是标签b1,内层标签是标签a5。然后,由于备路径转发表项包括的出接口是te隧道a的隧道标识a,因此,网络节点101可以通过隧道标识a对应的te隧道a发送第二报文,即将第二报文发送给网络节点111。网络节点111接收到第二报文后,确定标签b1对应的转发表项,转发表项的动作项是替换标签b1,将标签b1交换为标签b2,通过te隧道a将修改后的第二报文发送给网络节点114。同理,网络节点114通过te隧道a将报文发送给网络节点121,网络节点121通过te隧道a将报文发送给网络节点122。网络节点122接收到报文后,由于网络节点122是te隧道a的尾节点,因此不再进行标签交换,而是剥掉最外层的标签,得到修改后的报文。通过修改后的报文的标签a5查询转发表项,得到标签a5对应的出接口,通过标签a5对应的出接口将修改后的报文发送给网络节点123。网络节点123接收到修改后的报文后,剥掉最外层的标签a5,得到第一报文,即未携带标签的原始报文,通过第一报文的目的ip地址将第一报文转发给主机133。至此,通过te隧道,成功将报文转发给主机133。其中,关于网络节点111、网络节点114、网络节点121、网络节点122、网络节点123的报文处理过程,可以参见上述实施例,在此不再重复赘述。其中,关于网络节点111、网络节点114、网络节点121、网络节点122、网络节点123的转发表项建立过程,可以参见传统方式,在此不再赘述。又例如,假设备路径转发表项4所示,即备路径转发表项包括标签a4和标签a5(即段路由标签)、标签d1(即隧道标签)和隧道标识c。因此,网络节点101在第一报文中添加标签a4、标签a5和标签d1,得到第二报文。第二报文中针对备路径的最外层标签是标签d1,最内层标签是标签a5。然后,网络节点101通过te隧道c发送第二报文,即将第二报文发送给网络节点111。网络节点111通过te隧道c将报文发送给网络节点114,网络节点114通过te隧道c将报文发送给网络节点121。网络节点121接收到报文后,由于网络节点121是te隧道c的尾节点,因此不再进行标签交换,而是剥掉最外层的标签d1,得到修改后的报文。通过该报文的标签a4查询转发表项,得到标签a4对应的出接口,通过标签a4对应的出接口将报文发送给网络节点122。网络节点122在接收到报文后,剥掉报文最外层的标签a4,得到修改后的报文;通过该报文最外层的标签a5查询转发表项,得到标签a5对应的出接口。通过标签a5对应的出接口转发该报文,如将该报文6发送给网络节点123。网络节点123接收到报文后,剥掉该报文最外层的标签a5,得到未携带标签的原始报文(即第一报文)。通过报文的目的ip地址,将报文转发给主机133。由以上技术方案可见,本申请实施例中,转发表项包括主路径转发表项和备路径转发表项,备路径转发表项包括的出接口是te隧道的隧道标识,若主路径转发表项对应的主路径发生故障,则利用备路径转发表项对应的备路径转发报文。在利用备路径转发表项对应的备路径转发报文时,是通过te隧道转发报文,即不需要在报文中添加大量段路由标签,从而减少报文中的段路由标签数量,避免段路由标签数量达到上限值,从而可以通过备路径正确转发报文。参见图4所示,为本申请实施例中的报文传输方法(即基于转发表项进行报文传输)的流程示意图,该方法可以应用于第一节点(即头节点),该第一节点与第二节点(即尾节点)之间已建立te隧道,该方法可以包括:步骤401,获取第一报文,并确定与该第一报文对应的转发表项。其中,该转发表项包括主路径转发表项和备路径转发表项,该备路径转发表项包括的出接口是te隧道(即第一节点与第二节点之间的te隧道)的隧道标识。此外,该备路径转发表项还可以包括该te隧道对应的隧道标签。如图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点123为目的节点,网络节点123为第二节点,即第二节点是第一报文包括的目的地址(即主机133的ip地址)对应的目的节点。主机131向主机133发送第一报文时,网络节点101(即第一节点)接收第一报文,利用第一报文的目的ip地址(如ip地址133)查询转发表,得到表3所示的转发表项,转发表项包括主路径转发表项和备路径转发表项。备路径转发表项包括te隧道b的隧道标识b、te隧道b对应的隧道标签(如标签c1)。步骤402,若主路径转发表项对应的主路径发生故障,且第二节点是第一报文包括的目的地址对应的目的节点,则从备路径转发表项中获取te隧道对应的隧道标签(如标签c1)。或者,若主路径转发表项对应的主路径未发生故障,则利用主路径转发表项将第一报文发送给目的节点,对此发送过程不再赘述。步骤403,在该第一报文中添加该隧道标签,得到第三报文。步骤404,通过备路径转发表项中的隧道标识对应的te隧道,向目的节点发送该第三报文。其中,目的节点也就是te隧道的尾节点,即第二节点。如图1c所示,若主路径发生故障,备路径未发生故障,则网络节点101在接收到第一报文后,可以利用备路径转发表项将第一报文发送给网络节点123。例如,网络节点101确定与第一报文转发表项,该转发表项包括主路径转发表项和备路径转发表项。若主路径转发表项对应的主路径发生故障,备路径转发表项对应的备路径未发生故障,则通过该备路径转发表项转发第一报文。具体的,参见表3所示,备路径转发表项包括标签c1(即隧道标签)和隧道标识b,网络节点101在第一报文中添加标签c1,得到第三报文。由于备路径转发表项包括的出接口是te隧道b的隧道标识b,因此,网络节点101通过隧道标识b对应的te隧道b发送第三报文,即将第三报文发送给网络节点111。网络节点111、网络节点114、网络节点121、网络节点122在接收到第三报文后,均通过te隧道b转发第三报文,对此第三报文的转发过程不再赘述。网络节点123在接收到第三报文后,由于网络节点123是te隧道b的尾节点,因此,网络节点123不再进行标签交换,而是剥掉最外层的标签,得到第一报文,即未携带标签的原始报文,然后,通过第一报文的目的ip地址将第一报文转发给主机133。至此,通过te隧道,成功将报文转发给主机133。由以上技术方案可见,本申请实施例中,转发表项包括主路径转发表项和备路径转发表项,备路径转发表项包括的出接口是te隧道的隧道标识,若主路径转发表项对应的主路径发生故障,则利用备路径转发表项对应的备路径转发报文。在利用备路径转发表项对应的备路径转发报文时,是通过te隧道转发报文,即不需要在报文中添加大量段路由标签,从而减少报文中的段路由标签数量,避免段路由标签数量达到上限值,从而可以通过备路径正确转发报文。可选的,在一个例子中,确定与第一报文对应的转发表项,可以包括但不限于:从该第一报文中获取入标签,并确定与该入标签对应的转发表项;或者,从该第一报文中获取目的地址,并确定该目的地址对应的转发表项。例如,如图1c所示,针对主机131与主机133的交互过程,假设网络节点101为第一节点,网络节点101为源节点,网络节点123为目的节点,网络节点122为第二节点。主机131向主机133发送第一报文,网络节点101(即源节点)接收第一报文,从第一报文中获取目的地址(如目的ip地址),并利用第一报文的目的ip地址(如ip地址133)查询转发表,得到与该目的ip地址对应的转发表项,如表1所示的转发表项,该转发表项的匹配项可以为目的ip地址。又例如,如图1c所示,针对主机132与主机134的交互过程,假设网络节点101为第一节点,网络节点102为源节点,网络节点124为目的节点,网络节点122为第二节点。主机132向主机134发送第一报文,网络节点102(即源节点)接收第一报文,从第一报文中获取目的地址(如目的ip地址),利用第一报文的目的地址查询转发表,得到与该目的地址对应的转发表项,利用该转发表项在报文中添加标签a0,将修改后的第一报文发送给网络节点101。网络节点101(即第一节点)接收到第一报文后,从第一报文中获取入标签(如标签a0)。网络节点101利用该入标签查询转发表,得到与该入标签对应的转发表项,如表2所示的转发表项,该转发表项的匹配项可以为入标签。相应地,基于与上述方法同样的申请构思,本申请实施例还提出一种报文传输装置,可以应用于第一节点,所述第一节点与第二节点之间已建立te隧道,参见图5所示,为所述报文传输装置的结构图,所述装置包括:确定模块51,用于获取第一报文,确定所述第一报文对应的转发表项;所述转发表项包括主路径转发表项和备路径转发表项,所述备路径转发表项包括的出接口是所述te隧道的隧道标识;获取模块52,用于若所述主路径转发表项对应的主路径发生故障,且所述第二节点不是所述第一报文包括的目的地址对应的目的节点,则从所述备路径转发表项中获取第二节点上指向目的节点的段路由标签和所述te隧道对应的隧道标签;添加模块53,用于在所述第一报文中添加所述段路由标签和所述隧道标签,得到第二报文;发送模块54,用于通过所述隧道标识对应的te隧道,向所述第二节点发送所述第二报文,以使所述第二节点利用所述段路由标签向所述目的节点发送所述第二报文。可选地,所述获取模块52,还用于若所述主路径转发表项对应的主路径发生故障,且所述第二节点是所述第一报文包括的目的地址对应的目的节点,则从所述备路径转发表项中获取所述te隧道对应的隧道标签;所述添加模块53,还用于在所述第一报文中添加所述隧道标签,得到第三报文;所述发送模块54,还用于通过所述隧道标识对应的te隧道,向所述目的节点发送所述第三报文。可选地,所述确定模块51确定所述第一报文对应的转发表项时具体用于:从所述第一报文中获取入标签,并确定所述入标签对应的转发表项;或者,从所述第一报文中获取目的地址,并确定所述目的地址对应的转发表项。可选的,在一个例子中,所述报文传输装置还包括(在图中未视出):生成模块,用于确定所述目的节点所在的节点空间,所述节点空间包括多个网络节点;从所述节点空间的多个网络节点中选择一个网络节点作为第二节点;生成所述备路径转发表项,所述备路径转发表项包括的出接口是所述第一节点与所述第二节点之间建立的te隧道的隧道标识。可选的,所述生成模块生成所述备路径转发表项时具体用于:若所述第一节点与所述第二节点之间的构成备路径的段路由的标签数量超过预设阈值,则生成所述备路径转发表项。可选的,所述生成模块生成所述备路径转发表项时具体用于:判断所述第一节点与所述第二节点之间是否已经建立te隧道;如果是,则生成所述备路径转发表项;所述备路径转发表项包括的出接口是已经建立的te隧道的隧道标识;如果否,则在所述第一节点与所述第二节点之间建立te隧道,并生成所述备路径转发表项;所述备路径转发表项包括的出接口是当前建立的te隧道的隧道标识。可选的,所述生成模块从所述节点空间的多个网络节点中选择一个网络节点作为第二节点时具体用于:从所述节点空间的多个网络节点中选择任意一个网络节点作为第二节点;或者,从所述节点空间的多个网络节点中选择所述目的节点作为第二节点;或者,从所述节点空间的多个网络节点中选择汇聚节点作为第二节点,所述汇聚节点是与所述节点空间之外的其它网络节点连接的网络节点本申请实施例提供的网络节点(如第一节点),从硬件层面而言,硬件架构示意图可以参见图6所示,可以包括:机器可读存储介质和处理器,其中:机器可读存储介质:存储指令代码。处理器:与机器可读存储介质通信,读取和执行机器可读存储介质中存储的所述指令代码,实现本申请上述示例公开的报文传输操作。这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1