CN117041142A - 报文转发方法、装置、设备、介质和程序产品 - Google Patents

报文转发方法、装置、设备、介质和程序产品 Download PDF

Info

Publication number
CN117041142A
CN117041142A CN202310914693.4A CN202310914693A CN117041142A CN 117041142 A CN117041142 A CN 117041142A CN 202310914693 A CN202310914693 A CN 202310914693A CN 117041142 A CN117041142 A CN 117041142A
Authority
CN
China
Prior art keywords
node
message
label
forwarding
plane domain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310914693.4A
Other languages
English (en)
Inventor
杨冰
龚霞
袁世章
冯若钊
黄旭光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Telecom Technology Innovation Center
China Telecom Corp Ltd
Original Assignee
China Telecom Technology Innovation Center
China Telecom Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Telecom Technology Innovation Center, China Telecom Corp Ltd filed Critical China Telecom Technology Innovation Center
Priority to CN202310914693.4A priority Critical patent/CN117041142A/zh
Publication of CN117041142A publication Critical patent/CN117041142A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/34Source routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及一种报文转发方法、装置、设备、介质和程序产品,涉及通信技术领域。该方法包括:响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签,接着根据报文内容和各节点的标签创建报文的转发报文,并基于转发报文进行报文的转发。其中,报文转发路径中各节点分布在至少两个平面域中,且每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整。采用本方法能够在一定程度上减轻各平面域的边缘节点压力。

Description

报文转发方法、装置、设备、介质和程序产品
技术领域
本申请涉及通信技术领域,特别是涉及一种报文转发方法、装置、设备、介质和程序产品。
背景技术
随着通信技术的发展,基于互联网协议第6版(Internet Protocol Version 6,IPv6)的段路由(Segment Routing,SR)技术的普及,出现了基于IPv6转发平面的段路由(Segment Routing IPv6,SRv6)平面域与多协议标签交换(Multi-Protocol LabelSwitching,MPLS)平面域共存的场景,在此情况下,报文通常需要跨平面域进行转发。
相关技术中,在报文进行跨控制平面域转发时,需要经过各平面域的节点,使得报文到达目的节点。
然而,相关技术中,在报文进行跨平面域转发时,存在各平面域的边缘节点压力较大的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种报文转发方法、装置、设备、介质和程序产品,减轻边缘节点的压力。
第一方面,本申请实施例提供了一种报文转发方法,应用于报文转发路径中的起始节点,该方法包括:
响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签;报文转发路径中各节点分布在至少两个平面域中;
根据报文内容和各节点的标签创建报文的转发报文;每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整;
基于转发报文进行报文的转发。
在其中一个实施例中,根据报文内容和各节点的标签创建报文的转发报文,包括:
获取起始节点的平面域;
在起始节点的平面域为基于互联网协议第6版的分段路由SRv6平面域的情况下,按照SRv6平面域的路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文;
在起始节点的平面域为多协议标签交换MPLS平面域的情况下,按照MPLS平面域的MPLS标签头格式和路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文。
在其中一个实施例中,按照SRv6平面域的路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文,包括:
根据各节点的标签,获取属于SRv6平面域的第一节点和属于MPLS平面域的第二节点;
根据第一节点的标签和第二节点的标签,获取第一标签列表;
按照SRv6平面域的路由扩展头格式,封装第一标签列表和报文内容,得到报文的转发报文。
在其中一个实施例中,根据第一节点的标签和第二节点的标签,获取第一标签列表包括:
根据报文转发路径获取各节点的顺序;
对第二节点的标签进行压缩,得到压缩后的第二节点的标签;
按照各节点的顺序,将压缩后的第二节点的标签与第一节点的标签进行封装,形成第一标签列表。
在其中一个实施例中,按照MPLS平面域的MPLS标签头格式和路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文,包括:
根据各节点的标签和各节点的顺序,获取属于SRv6平面域的第三节点、属于MPLS平面域且处于第三节点之前的第四节点、属于MPLS平面域且处于第三节点之前的第五节点;
按照路由扩展头格式,获取第三节点的标签和第五节点的标签封装后的第二标签列表;以及按照MPLS标签头格式获取第四节点的标签形成的标签栈;
根据封装后第二标签列表、标签栈和报文内容,得到报文的转发报文。
在其中一个实施例中,按照路由扩展头格式,获取第三节点的标签和第五节点的标签封装后的第二标签列表,包括:
将第五节点的标签进行压缩,得到压缩后的第五节点的标签;
按照各节点的顺序,将压缩后的第五节点的标签与第三节点的标签进行封装,形成第二标签列表;
按照SRv6平面域的路由扩展头格式封装第二标签列表,得到封装后的第二标签列表。
在其中一个实施例中,按照MPLS标签头格式获取第四节点的标签形成的标签栈,包括:
按照各节点的顺序,对第四节点的标签进行排序;
按照MPLS标签头格式对排序后的第四节点的标签进行封装,得到标签栈。
在其中一个实施例中,对于任一节点,若节点为SRv6平面域的边缘节点,则边缘节点是按照SRv6平面域的报头调整方式对接收到的转发报文进行报头信息调整的。
在其中一个实施例中,按照SRv6平面域的报头调整方式对接收到的转发报文进行报头信息调整,包括:将接收到的转发报文中属于MPLS平面域内节点的标签信息解析后复制到报头中,且对报头中SRv6平面域的节点的标签进行更新,形成MPLS平面域的报文格式。
在其中一个实施例中,对报头中SRv6平面域的节点的标签进行更新,包括:删除报头中SRv6平面域的节点的标签;或者,修改报头中SRv6平面域的目的地址。
在其中一个实施例中,对于任一节点,若节点为MPLS平面域的边缘节点,则边缘节点是按照MPLS平面域的报头调整方式对接收到的转发报文进行报头信息调整的。
在其中一个实施例中,按照MPLS平面域的报头调整方式对接收到的转发报文进行报头信息调整,包括:将接收到的转发报文中属于MPLS平面域内节点的标签信息进行剥离形成SRv6平面域的报文格式。
第二方面,本申请实施例还提供了一种报文转发装置,该装置包括:
指令响应模块,用于响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签;报文转发路径中各节点分布在至少两个平面域中;
报文生成模块,用于根据报文内容和各节点的标签创建报文的转发报文;每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整;
报文转发模块,用于基于转发报文进行报文的转发。
第三方面,本申请实施例还提供了一种计算机设备。该计算机设备包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述第一方面中任一项实施例中的方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质。该计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项实施例中的方法的步骤。
第五方面,本申请实施例还提供了一种计算机程序产品。该计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项实施例中的方法的步骤。
上述报文转发方法、装置、设备、介质和程序产品,响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签,接着根据报文内容和各节点的标签创建报文的转发报文,并基于转发报文进行报文的转发。其中,报文转发路径中各节点分布在至少两个平面域中,且每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整。该方法中,转发报文是根据报文内容和报文转发路径中各节点的标签创建的,由于报文转发路径中各节点分布在至少两个平面域,相当于转发报文也会通过至少两个平面域,实现跨平面转发。基于此,该方法是基于转发报文进行报文转发,那么在转发报文跨平面转发的情况下,报文也支持跨平面转发。进一步地,各平面域的边缘节点按照所属的报头调整方式对接收到的转发报文进行报头信息调整,相当于在转发报文进行报文转发的过程中,边缘节点只需要按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整,即可实现报文的跨平面域转发,从而避免了边缘节点通过维护映射表进行不同平面域的节点的标签的转换,减少边缘节点的压力,提升整个报文转发过程的速度。
附图说明
图1为一个实施例中计算机设备的内部结构图;
图2为一个实施例中报文转发方法的流程示意图;
图3为一个实施例中报文获取步骤的流程示意图;
图4为一个实施例中SRv6平面域的报文格式示意图;
图5为一个实施例中MPLS平面域的报文格式示意图;
图6为另一个实施例中MPLS平面域的报文格式示意图;
图7为另一个实施例中报文获取步骤的流程示意图;
图8为一个实施例中标签列表获取步骤的流程示意图;
图9为另一个实施例中报文获取步骤的流程示意图;
图10为另一个实施例中标签列表获取步骤的流程示意图;
图11为一个实施例中标签栈获取步骤的流程示意图;
图12为一个实施例中报文转发的场景示意图;
图13为另一个实施例中报文转发的场景示意图;
图14为一个实施例中报文转发装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的报文转发方法,可以应用于计算机设备中。该计算机设备可以是服务器,其内部结构图可以如图1所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储报文转发数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种报文转发方法。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
段路由(Segment Routing,SR)是基于源路由理念而设计的在网络上转发数据包的一种架构,本质上是一种处理方式,通过将网络路径分成一个个段(Segment),并且为这些段和网络中的转发节点分配段标识符(Segment ID,SID),通过对段和网络节点进行有序排列(Segment List),得到报文的转发路径。
SR技术支持基于多协议标签交换(Multi-Protocol Label Switching,MPLS)和基于互联网协议第6版(Internet Protocol Version 6,IPv6)两种控制平面域,基于MPLS平面的SR称为SR-MPLS(Segment Routing MPLS),其SID为MPLS标签(Label);基于IPv6平面的SR称为SRv6,其SID为IPv6地址。
基于此,在SRv6平面域与MPLS平面域共存的场景下,报文通常需要跨平面域进行转发。
相关技术中,当报文需要跨平面转发时,通常是在各平面的边缘节点维护映射表项,并根据该映射表项对报文进行映射转换,实现报文跨平面转发。
然而,相关技术中各平面域的边缘节点需要花费大量算力维护映射表项,维护压力较大,并且大多情况下只支持MPLS平面域映射为分段路由IPv6尽力转发的平面(SegmentRouting IPv6 Best Effort,SRv6 BE),实现报文单跳转发。
基于此,本申请实施例考虑到边缘节点维护压力大,以及报文跨平面转发的局限性,根据报文内容和各节点的标签创建报文的转发报文,并基于转发报文进行报文的转发。由于本申请实施例中的报文转发路径中各节点分布在至少两个平面域中,支持报文从MPLS平面域转发至分段路由IPv6流量工程策略(Segment Routing IPv6 Traffic EngineeringPolicy,SRv6 TE),且本申请实施例中每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整,无需边缘进行标签映射以及维护,在一定程度上释放了边缘节点的计算压力。
需要说明的是,本申请实施例所带来的有益效果或者所解决的技术问题并不限定于这一个,还可以是其它隐含或者关联的问题,具体可以参见下述实施例的描述。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
在一个实施例中,如图2所示,提供了一种报文转发方法,应用于报文转发路径中的起始节点,该方法包括:
S201,响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签;报文转发路径中各节点分布在至少两个平面域中。
本申请实施例中,报文转发过程是基于段路由技术进行的,具体是根据报文的起始节点和目的节点,确定报文的网络路径,并将网络路径分成一个个段,根据网络中的各节点在各段上的标识,为各节点分配节点标签,通过对节点标签进行有序排列,得到报文转发路径。
进一步地,报文转发路径中各节点分布在至少两个平面域,意味着报文需要从一个平面域的节点转发至另一平面域的节点,即报文跨平面转发。
例如,若报文转发路径中一部分节点分布在SRv6平面域,另一部分节点分布在MPLS平面域,那么,报文可以从SRv6平面域转发至MPLS平面域、也可以从MPLS平面域转发至SRv6平面域、还可以从SRv6平面域转发至MPLS平面域再转发回SRv6平面域、从MPLS平面域转发至SRv6平面域再转发回MPLS平面域等进行多种跨平面域转发。
需要说明的是,报文转发路径是在报文转发之前确定的,在实际转发过程中,报文转发路径也是和报文内容同时封装在起始节点进行转发的。
可选的,起始节点响应于报文的转发指令,获取转发指令携带的报文内容,并根据目的节点确定报文转发路径,以及该报文转发路径中各节点的标签。
S202,根据报文内容和各节点的标签创建报文的转发报文;每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整。
在获取报文内容和各节点的标签的情况下,根据各节点的标签创建报文的报头信息,并将报文的报头信息与报文内容进行叠加,获取转发报文。
应当知道的是,不同平面域的段标识符是不同的,基于不同段标识符调整报头信息的方式也是不同的。比如在MPLS平面域,MPLS平面域的段标识符为MPLS标签,且MPLS标签长度是32位,对应的报头调整方式为:报文在MPLS平面域每进行一跳,则对应剥离一个MPLS标签。然而,在SRv6平面域,SRv6平面域的段标识符为IPv6地址,且IPv6地址长度为128位,对应的报头调整方式为:报文在SRv6平面域每进行一跳,则对应更新一次IPv6目的地址。
基于此,本申请实施例中,报文转发路径中每个节点的标签是与各节点对应所属平面域的段标识符相匹配的,以便于各节点对接收到的转发报文进行读取,并根据报文的报头信息进行调整,更新转发报文的格式,进行下一次转发或者接收处理等操作。
需要说明的是,可以根据节点在报文路径信息中的相对位置,将各节点划分为起始节点、目的节点以及起始节点与目的节点之间的转发节点。
考虑到报文转发路径中的各节点分布在至少两个平面域,可以进一步根据节点在所属平面域相对位置,从转发节点中确定边缘节点。边缘节点是指两个平面域之间进行交互的情况下,连接一个域与另一个域的节点。
示例性地,报文转发路径为节点R1(MPLS平面域)-节点R2(MPLS平面域)-节点R3(SRv6平面域)-节点R4(SRv6平面域)-节点R5(SRv6平面域),那么节点R1为起始节点、节点R2为MPLS平面域的边缘节点、节点R3为SRv6平面域的边缘节点、节点R4为SRv6平面域的转发节点、节点R5为目的节点。
S203,基于转发报文进行报文的转发。
基于转发报文中报文转发路径,获取起始节点的下一节点的标签,并根据下一节点的标签确定下一节点,向下一节点发送转发报文。
可选的,起始节点根据报文转发路径中段指针指向的标签列表确定对应的目的地址,并将该目的地址作为下一节点的地址,从而确定下一节点。
可选的,根据报文转发路径中的节点标签确定下一节点在转发路径上的标识,进而确定下一节点。
本申请实施例中,响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签,接着根据报文内容和各节点的标签创建报文的转发报文,并基于转发报文进行报文的转发。其中,报文转发路径中各节点分布在至少两个平面域中,且每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整。该方法中,转发报文是根据报文内容和报文转发路径中各节点的标签创建的,由于报文转发路径中各节点分布在至少两个平面域,相当于转发报文也会通过至少两个平面域,实现跨平面转发。基于此,该方法是基于转发报文进行报文转发,那么在转发报文跨平面转发的情况下,报文也支持跨平面转发。进一步地,各平面域的边缘节点按照所属的报头调整方式对接收到的转发报文进行报头信息调整,相当于在转发报文进行报文转发的过程中,边缘节点只需要按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整,即可实现报文的跨平面域转发,从而避免了边缘节点通过维护映射表进行不同平面域的节点的标签的转换,减少边缘节点的压力,提升整个报文转发过程的速度。
在报文转发过程中,通常是将报头信息和报文内容进行封装,创建转发报文,以确保报文转发路径的各节点支持对转发报文进行识别、转发等处理。基于此,下面通过一个实施例,对转发报文的创建步骤进行说明。
在一个实施例中,如图3所示,根据报文内容和各节点的标签创建报文的转发报文,包括:
S301,获取起始节点的平面域。
本申请实施例中的平面域是指支持SR技术的报文转发的通信平面域,比如基于IPv6平面的SRv6平面域、基于MPLS平面的SR MPLS平面域(简称MPLS平面域)等。
各通信平面包括多个节点,支持相互通信,同时一个节点存在于一个通信平面,不同平面域的报文格式也是不同的。
请参见图4,图4为SRv6平面域标准的报文格式示意图,由图4可知,SRv6平面域的报文格式包括SRv6平面域的路由报文扩展头(IPv6扩展头)和报文内容,且路由报文扩展头中包括SRv6域的节点标签列表(Segment List),且标签列表是根据路径地址逆序压入的,该标签列表中包括各SRv6节点的IPv6地址。在实际转发过程中,标签列表中的标签不发生变动,基于此,根据段指针的更新,更新目的地址。具体的,报文每跳到一个SRv6平面域节点,段指针指向标签列表中的上一个IPv6地址,并将其作为报文下一跳的目的地址。
请参见图5,以MPLS平面域包括两个MPLS标签为例,图5为MPLS平面域标准的报文格式示意图,由图5可知,MPLS平面域的报文格式包括MPLS标签栈和报文内容,且标签栈中的各MPLS标签是依次排列的。在实际转发过程中,报文每跳到一个MPLS平面域节点,将剥离MPLS标签栈中的第一个MPLS标签。
由于不同平面域的报文格式不同,需要确定起始节点所属的平面域,并根据平面域的报文格式对报文进行封装,以保证转发报文能够在平面域进行转发。
可选的,根据起点节点的平面域标识确定起始节点所属的平面域。
S302,在起始节点的平面域为基于互联网协议第6版的分段路由SRv6平面域的情况下,按照SRv6平面域的路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文。
根据SRv6平面域的路由扩展头格式,将各节点的标签以IPv6地址的形式存储至标签列表中,并将标签列表域报文内容进行封装,得到报文的转发报文。
可选的,按照包括各节点的标签的标签列表在前、报文内容在后的规则,将各节点的标签和报文内容进行汇总,得到报文的转发报文。
S303,在起始节点的平面域为多协议标签交换MPLS平面域的情况下,按照MPLS平面域的MPLS标签头格式和路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文。
根据SRv6平面域的路由扩展头格式,将各节点的标签以IPv6地址的形式存储至标签列表中,并按照MPLS平面域的MPLS标签头格式,将MPLS平面域的节点的标签、包括各节点的标签的标签列表和报文内容进行封装,得到报文的转发报文。
请参见图6,图6为按照MPLS平面域的MPLS标签头格式和SRv6平面域的路由扩展头格式得到的转发报文的报文格式示意图,相当于融合了上述图4和图5的信息。由图6可知,在起始节点所属MPLS平面域的情况下,构建的转发报文包括MPLS标签栈、包括标签列表的SRv6路由扩展头以及报文内容。
本申请实施例在构建转发报文的过程中,考虑了不同平面域所支持的报文格式的差异性,并依据各平面域所支持的报文格式,针对性地对报文进行封装,以保障转发报文的可转发性。进一步地,转发报文的封装过程是依据报文内容和各节点的标签进行的,相当于转发报文是包括整个报文路径的各节点信息,以此确定的转发报文是完整全面的。综上,这样确定的转发报文既能够跨平面转发,还可以在不同平面域适应性进行读取,不需要各节点进行额外的映射或者转换操作,大大降低了控制面中边缘节点的运算压力。
由前述实施例可知,起始节点所属平面域不同的情况下,转发报文的封装依据也是不同的。基于此,下面通过一个实施例,对起始节点处于SRv6平面域的情况下,对转发报文的获取步骤进行说明。
在一个实施例中,如图7所示,按照SRv6平面域的路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文,包括:
S701,根据各节点的标签,获取属于SRv6平面域的第一节点和属于MPLS平面域的第二节点。
根据各节点的标签,确定各节点的标签是MPLS标签还是SRv6平面域的IPv6地址,若节点的标签是IPv6地址,则确定节点属于SRv6平面域,并将SRv6y平面域对应的节点确定为第一节点;若节点的标签是MPLS标签,则确定节点属于MPLS平面域,并将MPLS平面域对应的节点确定为第二节点。
应当知道的是,MPLS平面域内节点的标签是32位,SRv6平面域内节点的标签是128位。
可选的,根据各节点的标签的长度,确定节点所属平面域。对于任一节点而言,若节点标签的长度为128位,则确定该节点为SRv6平面域的第一节点;若节点标签的长度为32位,则确定该节点为MPLS平面域的第二节点。
S702,根据第一节点的标签和第二节点的标签,获取第一标签列表。
第一标签列表包括报文转发路径中的各节点的标签,并且,作为SRv6平面域在转发报文的过程中的转发依据,在报文转发过程中,第一标签列表的内容是不变的。
根据第一节点、第二节点在报文路径转发中的顺序,对第一节点标签和第二节点的标签进行排序,获取第一标签列表。
S703,按照SRv6平面域的路由扩展头格式,封装第一标签列表和报文内容,得到报文的转发报文。
按照SRv6平面域的路由扩展头格式,将第一标签列表叠加至报文内容之前,获取报文的转发报文。其中,转发报文的格式可参见上述图4所示的报文格式示意图。
本申请实施例中,将SRv6平面域的第一节点的标签、MPLS平面域的第二节点的标签生成的第一标签列表,用于SRv6平面域的节点按照SRv6平面域的报头调整格式对报头进行调整,并进行报文转发,在一定程度上减缓SRv6平面域的边缘节点的计算压力。
在获取第一标签列表的过程中,由于第一节点的标签和第二节点的标签属于不同的平面域,且二者的标签长度存在差异,因此,需要对第一节点的标签和第二节点的标签统一为SRv6域所支持的标签格式,以保证转发报文包括所有节点标签,便于SRv6域的节点按照第一标签列表进行转发。基于此,下面通过一个实施例,对第一标签列表的获取步骤进行说明。
在一个实施例中,如图8所示,根据第一节点的标签和第二节点的标签,获取第一标签列表包括:
S801,根据报文转发路径获取各节点的顺序。
根据报文转发路径确定报文途径转发节点的顺序,即各节点的顺序。
S802,对第二节点的标签进行压缩,得到压缩后的第二节点的标签。
第二节点的标签是MPLS平面域的MPLS标签,每一标签长度为32位,第一节点的标签是SRv6平面域的IPv6地址,每一标签长度位128位。
起始节点所属平面域为SRv6平面域,意味着报文每一跳的最小单元为128位的标签,为保证第一标签列表的全面性以及第一标签列表中各标签长度的一致性,需要将第二节点的标签进行压缩,具体是将四个第二节点的标签(4×32位)汇总为一个长度为128位的标签。并在压缩后的第二节点的标签中,指定最后一个标签的后四位(二进制)记录压缩后的第二节点的标签的数量。
可选的,若第二节点的标签为5个,则为保证第二节点的标签均处于第一标签列表,需要两个IPv6地址的长度(不满补0),也就是压缩后的第二节点的标签后四位为0010,以表征压缩后的标签占用段路由扩展头(Segment Routing Header,SRH)中的两个SID。
S803,按照各节点的顺序,将压缩后的第二节点的标签与第一节点的标签进行封装,形成第一标签列表。
按照各节点的顺序,确定压缩后的第二节点的标签与各第一节点的标签的转发顺序,并以此进行逆序封装,形成第一标签列表。
本申请实施例中,在起始节点处于SRv6平面域的情况下,对第一节点的标签进行压缩,并按照各节点的顺序,将压缩后的第二节点的标签与第一节点的标签进行封装,得到第一标签列表,这样创建第一标签列表的方式贴切报文实际转发的路径,在一定程度上提升了报文在SRv6平面域的转发速度。
在报文转发过程中,起始节点所属平面域不同的情况下,转发报文的封装依据也是不同的。前述实施例对起始节点处于SRv6平面域的情况下,对转发报文的获取步骤进行了说明,下面通过一个实施例,对起始节点处于MPLS平面域的情况下,对转发报文的获取步骤进行说明。
在一个实施例中,如图9所示,按照MPLS平面域的MPLS标签头格式和路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文,包括:
S901,根据各节点的标签和各节点的顺序,获取属于SRv6平面域的第三节点、属于MPLS平面域且处于第三节点之前的第四节点、属于MPLS平面域且处于第三节点之前的第五节点。
在起始节点所属平面域为MPLS平面域,且报文需要依次经过MPLS平面域、SRv6平面域的节点、达到MPLS平面域的目标节点的情况下,根据各节点的标签和各节点的顺序,将处于SRv6平面域的节点确定为第三节点、将处于第三节点之前的MPLS平面域的节点确定为第四节点、将处于第三节点之后的MPLS平面域的节点确定为第五节点。
需要强调的是,上述第三节点、第四节点和第五节点是根据节点所属平面域以及转发顺序确定的三种节点类型,每一类型可以包括一个或多个节点。
S902,按照路由扩展头格式,获取第三节点的标签和第五节点的标签封装后的第二标签列表;以及按照MPLS标签头格式获取第四节点的标签形成的标签栈。
根据上述第三节点、第四节点和第五节点的节点类型以及转发顺序,确定报文是依次途径第四节点、第三节点和第五节点的路径进行转发的。
第四节点处于起始节点所属的MPLS平面域,且MPLS平面域依据MPLS标签进行报文转发的,那么就按照MPLS标签头格式对第四节点的标签进行整合,形成标签站。
第三节点和第五节点处于起始节点所属的MPLS平面域之后的平面域,下面分别对第三节点的标签和第五节点的标签的处理方式进行说明。
第三节点处于SRv6平面域,且SRv6平面域依据标签列表进行报文转发,因此需要按照SRv6平面域的路由扩展头格式对第三节点的标签进行整合,形成第三节点对应的标签列表。
第五节点虽然处于MPLS平面域,但是第五节点处于SRv6平面域之后,也就是说,第五节点的标签需要经过SRv6平面域才会进入MPLS平面域。此时为了保证SRv6平面域中包括转发报文是在转发之前就确定好的,因此也需要按照SRv6平面域的路由扩展头格式对第五节点的标签进行整合,形成第五节点对应的标签列表。
综合上述对第三节点和第五节点的分析可知,需要按照路由扩展头格式,对第三节点的标签和第五节点的标签进行封装,得到第二标签列表。也就是说,第二标签列表既包括第三节点对应的标签列表,还包括第五节点对应的标签列表,且根据报文的转发顺序,识别第三节点的标签的操作在识别第五节点的标签的操作之前。
S903,根据封装后第二标签列表、标签栈和报文内容,得到报文的转发报文。
按照标签栈、封装后第二标签列表第二标签列表和报文内容的顺序,将上述信息进行封装,得到报文的转发报文。
本申请实施例中,根据节点的顺序和节点的标签,将节点划分为第三节点、第四节点和第五节点三种类型,相当于将各节点将起始节点所属MPLS平面域中的第四节点的标签进行封装,得到标签栈、将起始节点所属MPLS平面域之后的第三节点的标签和第五节点的标签,获取封装后的第二标签列表,用于MPLS平面域的节点按照MPLS平面域的报头调整格式对报头进行调整,进行报文转发,在一定程度上减缓SRv6平面域的边缘节点的计算压力。
由前述实施例可知,第二标签列表包括起始节点所属MPLS平面域之后的第三节点的标签和第五节点的标签,且第二标签列表是按照SRv6平面域的路由扩展头格式获取得到。基于此,下面通过一个实施例,对第二标签列表的获取方式进行说明。
在一个实施例中,如图10所示,按照路由扩展头格式,获取第三节点的标签和第五节点的标签封装后的第二标签列表,包括:
S1001,将第五节点的标签进行压缩,得到压缩后的第五节点的标签。
第五节点是在起始节点为MPLS平面域的情况下,报文经过SRv6平面域转发后的,再次转发至MPLS平面域的节点。也就意味着,第五节点的标签是MPLS标签,其标签长度为32位。
那么,与前述步骤S802中对第二节点的标签进行压缩的方式一样,以四个第五节点的标签为一组,汇总一个长度为128位的标签,作为一个SID存储在IPv6扩展头中的SRH列表中。
可选的,若第五节点的标签为4个,那么为保证第二节点的标签均处于第一标签列表,需要一个IPv6地址(也就是SID)的长度存储第五节点的标签,同时还需要一个IPv6地址,来表征压缩后的第五节点标签占用SRH中SID的数量,具体是将该IPv6地址的后四位定义为0010,以表征压缩后的标签占用SRH中的两个SID。
S1002,按照各节点的顺序,将压缩后的第五节点的标签与第三节点的标签进行封装,形成第二标签列表。
按照各节点的顺序,确定转发报文先经过第三节点、再经过第五节点的转发顺序,结合SRv6平面域按照列表逆序执行的特点,按照压缩后的第五节点的标签在第三节点的标签前的规则,将压缩后的第五节点的标签、第三节点的标签进行汇总,形成第二标签列表。
示例性地,压缩后的第五节点的标签为MPLS-SID,第三节点的标签为C::,则第二标签列表的顺序为:{MPLS-SID,C::},即转发报文经过标签为C::对应的节点转发至标签为MPLS-SID对应的节点。
S1003,按照SRv6平面域的路由扩展头格式封装第二标签列表,得到封装后的第二标签列表。
将第二标签列表按照路由头格式进行封装,得到封装后的第二标签列表。
本申请实施例中,在起始节点处于MPLS平面域的情况下,该MPLS平面域之后的平面域中的节点的标签均以路由扩展头格式进行封装,得到第二标签列表,这样创建第二标签列表的方式能够更全面表征报文实际转发的路径,且支持SRv6平面域的各节点对第二标签列表进行解析和读取。
由前述实施例可知,标签栈包括起始节点所属MPLS平面域的第四节点的标签,且标签栈是按照MPLS标签头格式获取得到的。基于此,下面通过一个实施例,对标签栈的获取方式进行说明。
在一个实施例中,如图11所示,按照MPLS标签头格式获取第四节点的标签形成的标签栈,包括:
S1101,按照各节点的顺序,对第四节点的标签进行排序。
按照报文转发路径中各节点的顺序,确定第四节点的转发顺序,并根据第四节点的转发顺序,对第四节点的标签进行排序。
S1102,按照MPLS标签头格式对排序后的第四节点的标签进行封装,得到标签栈。
MPLS标签头格式是指由MPLS标签构成的,具有转发顺序的标签序列格式,具体可参见上述图5示出的报文格式示意图。将第四节点的标签按照顺序进行汇总,得到标签栈。
本申请实施例中,按照各节点的顺序、MPLS标签头格式,对第四节点的标签进行封装,得到标签栈,使得MPLS平面域中的第四节点能够按照标签栈中的标签,快速定位到下一转发节点,加快报文在第四节点所属MPLS平面域的转发速度。
以上是针对报文转发的过程中,以报文转发路径中的起始节点为执行主体一侧相关实施例的说明。本申请实施例在此基础上还以不同平面域的边缘节点为执行主体提供了上述过程相对应的实施例。下面通过一个实施例,对SRv6平面域的边缘节点的执行动作进行说明。
在一个实施例中,对于任一节点,若节点为SRv6平面域的边缘节点,则边缘节点是按照SRv6平面域的报头调整方式对接收到的转发报文进行报头信息调整的。
SRv6平面域的边缘节点在接收到上一节点发送的转发报文之后,同时执行以下操作:根据转发报文的报头信息,确定确定出接口,也就是下一转发节点;并根据报头信息获取MPLS平面域的节点标签,并将其复制到报头信息中;根据报头信息确定MPLS标签在标签列表中的数量,更新报头信息中的段指令所指向的节点的标签。
可选的,SRv6平面域的边缘节点将接收到的转发报文中属于MPLS平面域内节点的标签信息解析后复制到报头中,且对报头中SRv6平面域的节点的标签进行更新,形成MPLS平面域的报文格式。
SRv6平面域的边缘节点根据SID标签中定义的指定四位,确定属于MPLS平面域内节点的标签占据的SID的数量,并对SID列表中后面指定数量的SID执行去0操作,且以32位为一个标签长度,获取SID中的MPLS标签,接着将MPLS标签复制到报头,形成MPLS平面域的报文格式。同时,根据MPLS标签占据的SID数量对SRv6平面域的节点的段指针(SegmentLeft)进行更新,以更新IPv6的目的地址。
在实际转发过程中,报文每跳至一个SRv6平面域的节点,将会对应更新报头信息中的段指令所指向的节点的标签,并根据段指令所指向的节点的标签,对报头中SRv6平面域的节点的标签进行更新。
可选的,SRv6平面域的边缘节点对报头中SRv6平面域的节点的标签进行更新,包括:删除报头中SRv6平面域的节点的标签。
在报文处于MPLS-SRv6-MPLS的转发场景下,报文从SRv6平面域的边缘节点跳至MPLS平面域的节点的情况下,意味着SRv6平面域中的节点已经跳转完毕了,自然地,也就不需要报头中SRv6平面域的节点的标签了。基于此,SRv6平面域的边缘节点将删除报头中SRv6平面域的节点的标签,以减轻报文的报头信息的存储负担。
可选的,SRv6平面域的边缘节点对报头中SRv6平面域的节点的标签进行更新,包括:修改报头中SRv6平面域的目的地址。
在报文处于SRv6-MPLS-SRv6的转发场景下,报文从SRv6平面域的边缘节点跳至MPLS平面域的节点的情况下,意味着SRv6平面域中的节点还未跳转完毕,基于此,SRv6平面域的边缘节点将修改报头中SRv6平面域的目的地址修改为MPLS平面域的之后的SRv6平面域的节点的标签,以保证报文能够在整个报文转发过程中的连贯性。
本申请实施例中,通过SRv6平面域的边缘节点对报头中SRv6平面域的节点的标签进行更新,形成MPLS平面域的报文格式,能够保证整个报文转发过程中的连贯性。此外,各边缘节点只需按照所属平面域的报头调整方式进行调整,无需边缘节点进行不同平面域的标签映射以及映射维护的操作,一定程度上减轻了边缘节点的压力。
在报文跨平面转发过程中,自然地会涉及SRv6平面域的转发节点、MPLS平面域的转发节点,前述实施例对SRv6平面域的边缘节点的执行动作进行了说明,下面通过一个实施例,对MPLS平面域的边缘节点的执行动作进行说明。
在一个实施例中,对于任一节点,若节点为MPLS平面域的边缘节点,则边缘节点是按照MPLS平面域的报头调整方式对接收到的转发报文进行报头信息调整的。
可选的,将接收到的转发报文中属于MPLS平面域内节点的标签信息进行剥离形成SRv6平面域的报文格式。
无论是MPLS-SRv6-MPLS的转发场景,还是SRv6-MPLS-SRv6的转发场景,对于MPLS平面域内的边缘节点而言,MPLS平面域的边缘节点仅需要按照MPLS平面域的报头调整方式,剥离报头中边缘节点对应的标签。这样剥离得到的报头恰好是满足SRv6平面域的路由扩展头格式,支持SRv6平面域的节点基于接收到的转发报文进行报文转发,此外,剥离标签栈中的MPLS标签,减少报文的报头信息的存储容量,在一定程度上加快了报文转发速度。
本申请实施例中,通过MPLS平面域的边缘节点对报头中MPLS平面域的节点的标签进行剥离,形成SRv6平面域的报文格式,能够保证整个报文转发过程中的连贯性。此外,各边缘节点只需按照所属平面域的报头调整方式进行调整,无需边缘节点进行不同平面域的标签映射以及映射维护的操作,一定程度上减轻了边缘节点的压力。
在一个实施例中,如图12所示,以报文依次经过MPLS-SRv6-MPLS的转发场景为例,对报文转发过程进行说明。
图12中,R1~R8为报文转发路径的各节点,其中R1为MPLS平面域中的节点,且R1为报文转发路径中的起始节点;R2为MPLS平面域的节点,且R2为MPLS平面域的边缘节点,“MPLS标签2”为R2在报文转发路径上的SID;R3为SRv6平面域中的节点,“A::”为R3在报文转发路径上的SID;R4为SRv6平面域中的节点,“B::”为R4在报文转发路径上的SID;R5为SRv6平面域中的节点,且R5为SRv6平面域中的边缘节点,“C::”为R5在报文转发路径上的SID;R6为MPLS平面域中的节点,“MPLS标签3”为R6在报文转发路径上的SID;R7为MPLS平面域中的节点,“MPLS标签4”为R7在报文转发路径上的SID;R8为MPLS平面域中的节点,也是目的节点。
R1封装一层MPLS标签:MPLS标签2,并将IPv6 SRH报文头当做普通IPv6地址与压缩后的MPLS标签栈进行封装,其内容可以由控制器下发控制。其中压缩后的MPLS标签栈的内容为:MPLS标签3和MPLS标签4。
在报文依据MPLS标签2转发至R2的情况下,R2将MPLS标签2剥离,显示出IPv6路由扩展头,并依据IPv6路由扩展头中的IPv6目的地址,确定与目的地址匹配的出接口R3,进而将报文转发给SRv6域的R3。
其中,R2接收到的IPv6的目的地址与R1发送的转发报文中IPv6路由扩展头中的IPv6的目的地址是相同的,均为初始的SRv6在平面域中的第一个节点R3的SID,也就是A::。
R3接收的报文为正常的SRv6 TE报文,更新IPv6路由扩展头中SRH对应的段指针(Segment Left,SL),将SL指向的SID确定为新的IPv6目的地址,并依据新的IPv6目的地址,确定与之匹配的出接口R4,进而将报文转发给SRv6域的R4。
R4接收的报文为正常的SRv6 TE报文,更新IPv6路由扩展头中SRH对应的的SL,将SL指向的SID确定为新的IPv6目的地址,并依据新的IPv6目的地址,确定与之匹配的出接口R5,进而将报文转发给SRv6域的R5。
R5收到报文后,查看C::1为本地END.TM SID,则执行END.TM SID指定的操作:依据该SID末四位的值1,SL=1,将SL=0所指示的MPLS标签栈复制到IPv6路由扩展头之外,同时把末尾的0去掉,形成两个MPLS标签,且由于SL值小于2,意味着SRv6平面域中的节点已经跳转完毕了,也就不需要报头中SRv6平面域的节点的标签,此时则删除报头中SRv6平面域的节点的标签,并将该报文依据C::1指定的出接口,转发给位于MPLS平面域的R6。
R6收到的报文格式为普通的MPLS转发报文格式,依据MPLS标签栈指导转发,将报文传递给R8,完成报文的转发。
本申请实施例,可以在不改变大的转发逻辑的情况下,通过定义新的功能SID,实现报文在不同平面域的互通,减小额外的控制面的改动,不用维护大量的映射表,进而减少各平面域的边缘节点的维护压力。
在一个实施例中,如图13所示,以报文依次经过SRv6-MPLS-SRv6的转发场景,对报文转发过程进行说明:
图13中,N1~N8为报文转发路径的各节点,其中N1为SRv6平面域中的节点,且N1为报文转发路径中的起始节点;N2为SRv6平面域的节点,且N2为SRv6平面域的边缘节点,“B::1”为N2在报文转发路径上的SID;N3为MPLS平面域中的节点,“MPLS标签10”为N3在报文转发路径上的SID;N4为MPLS平面域中的节点,“MPLS标签20”为N4在报文转发路径上的SID;N5为MPLS平面域中的节点,且N5为MPLS平面域中的边缘节点,“MPLS标签30”为N5在报文转发路径上的SID;N6为SRv6平面域中的节点,,“C::”为N6在报文转发路径上的SID;N7为SRv6平面域中的节点,“D::”为R7在报文转发路径上的SID;N8为SRv6平面域中的节点,也是目的节点,“E::”为N8在报文转发路径上的SID。
N1将MPLS标签栈封装IPv6 SRH报文头进行转发,其中,MPLS标签栈的内容为:MPLS标签10、MPLS标签20以及MPLS标签30,IPv6目的地址中的B::1是N2上的END.TM SID。N1根据B::1的标识,确定下一转发节点为N,在此情况下,将报文转发至N2。
N2收到报文后,判定B::1为本地END.TM SID,并读取SID后四位的值,确定MPLS标签栈占用了一个SID,则更新IPv6的目的地址,并将SL=4的SID复制到IP报文头外,即标签栈中的MPLS标签,同时把末尾的0去掉,形成三个MPLS标签,同时修改SL的值为2,把SL=2指向的SID标签拷贝到IPv6 DA中。此时N2依据B::1指定的出接口,转发给位于MPLS域的N3。
N3收到报文后,依据MPLS标签指导转发,将报文转发至N4。
N4收到报文后,依据MPLS标签指导转发,将报文转发至N5。
N5收到报文后,去除最后一个MPLS标签,并将报文从给该标签指定的出接口转发给位于SRv6域的N6。
此时N6收到的报文是一个标准的SRv6 TE的转发报文格式,依据SRH中SID列表指导转发,将报文最终发给N8,完成报文转发。
本申请实施例,可以在不改变大的转发逻辑的情况下,通过定义新的功能SID,实现报文在不同平面域的互通,减小额外的控制面的改动,不用维护大量的映射表,进而减少各平面域的边缘节点的维护压力。
在一个实施例中,提供了一种报文转发方法,应用于报文转发路径中的起始节点,包括以下步骤:
(1)、响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签。
其中,报文转发路径中各节点分布在至少两个平面域中,且每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整。
(2)、获取起始节点的平面域。
(3)、在起始节点的平面域为基于互联网协议第6版的分段路由SRv6平面域的情况下,根据各节点的标签,获取属于SRv6平面域的第一节点和属于MPLS平面域的第二节点。
(4)、根据报文转发路径获取各节点的顺序。
(5)、对第二节点的标签进行压缩,得到压缩后的第二节点的标签。
(6)、按照各节点的顺序,将压缩后的第二节点的标签与第一节点的标签进行封装,形成第一标签列表。
(7)、按照SRv6平面域的路由扩展头格式,封装第一标签列表和报文内容,得到报文的转发报文。
(8)、在起始节点的平面域为多协议标签交换MPLS平面域的情况下,根据各节点的标签和各节点的顺序,获取属于SRv6平面域的第三节点、属于MPLS平面域且处于第三节点之前的第四节点、属于MPLS平面域且处于第三节点之前的第五节点。
(9)、将第五节点的标签进行压缩,得到压缩后的第五节点的标签。
(10)、按照各节点的顺序,将压缩后的第五节点的标签与第三节点的标签进行封装,形成第二标签列表。
(11)、按照SRv6平面域的路由扩展头格式封装第二标签列表,得到封装后的第二标签列表。
(12)、按照各节点的顺序,对第四节点的标签进行排序。
(13)、按照MPLS标签头格式对排序后的第四节点的标签进行封装,得到标签栈。
(14)、根据封装后第二标签列表、标签栈和报文内容,得到报文的转发报文。
(15)、基于转发报文进行报文的转发。
在报文转发过程中,若节点为SRv6平面域的边缘节点,则边缘节点将接收到的转发报文中属于MPLS平面域内节点的标签信息解析后复制到报头中,且对报头中SRv6平面域的节点的标签进行更新,形成MPLS平面域的报文格式。
其中,对报头中SRv6平面域的节点的标签进行更新,包括:删除报头中SRv6平面域的节点的标签;或者,修改报头中SRv6平面域的目的地址。
若节点为MPLS平面域的边缘节点,则边缘节点将接收到的转发报文中属于MPLS平面域内节点的标签信息进行剥离形成SRv6平面域的报文格式。
本申请实施例中,响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签,接着根据报文内容和各节点的标签创建报文的转发报文,并基于转发报文进行报文的转发。其中,报文转发路径中各节点分布在至少两个平面域中,且每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整。该方法中,转发报文是根据报文内容和报文转发路径中各节点的标签创建的,由于报文转发路径中各节点分布在至少两个平面域,相当于转发报文也会通过至少两个平面域,实现跨平面转发。基于此,该方法是基于转发报文进行报文转发,那么在转发报文跨平面转发的情况下,报文也支持跨平面转发。进一步地,各平面域的边缘节点按照所属的报头调整方式对接收到的转发报文进行报头信息调整,相当于在转发报文进行报文转发的过程中,边缘节点只需要按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整,即可实现报文的跨平面域转发,从而避免了边缘节点通过维护映射表进行不同平面域的节点的标签的转换,减少边缘节点的压力,提升整个报文转发过程的速度。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的报文转发方法的报文转发装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个报文转发装置实施例中的具体限定可以参见上文中对于报文转发方法的限定,在此不再赘述。
在一个实施例中,如图14所示,提供了一种报文转发装置,包括:指令响应模块1401、报文生成模块1402和报文转发模块1403,其中:
指令响应模块1401,用于响应于报文的转发指令,获取报文的报文内容、报文转发路径中各节点的标签;报文转发路径中各节点分布在至少两个平面域中;
报文生成模块1402,用于根据报文内容和各节点的标签创建报文的转发报文;每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整;
报文转发模块1403,用于基于转发报文进行报文的转发。
在一个实施例中,报文生成模块1402,包括平面域获取单元、第一封装单元和第二封装单元,其中:
平面域获取单元,用于获取起始节点的平面域;
第一封装单元,用于在起始节点的平面域为基于互联网协议第6版的分段路由SRv6平面域的情况下,按照SRv6平面域的路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文;
第二封装单元,用于在起始节点的平面域为多协议标签交换MPLS平面域的情况下,按照MPLS平面域的MPLS标签头格式和路由扩展头格式,对报文内容和各节点的标签进行封装,得到报文的转发报文。
在一个实施例中,第一封装单元,包括第一划分子单元、第一列表子单元和第一生成子单元,其中:
第一划分子单元,用于根据各节点的标签,获取属于SRv6平面域的第一节点和属于MPLS平面域的第二节点;
第一列表子单元,用于根据第一节点的标签和第二节点的标签,获取第一标签列表;
第一生成子单元,用于按照SRv6平面域的路由扩展头格式,封装第一标签列表和报文内容,得到报文的转发报文。
在一个实施例中,第一列表子单元,还包括顺序获取子单元、第一压缩子单元和第一获取子单元,其中:
顺序获取子单元,用于根据报文转发路径获取各节点的顺序;
第一压缩子单元,用于对第二节点的标签进行压缩,得到压缩后的第二节点的标签;
第一获取子单元,用于按照各节点的顺序,将压缩后的第二节点的标签与第一节点的标签进行封装,形成第一标签列表。
在一个实施例中,第二封装单元,包括第二划分子单元、第二列表子单元和第二生成子单元,其中:
第二划分子单元,用于根据各节点的标签和各节点的顺序,获取属于SRv6平面域的第三节点、属于MPLS平面域且处于第三节点之前的第四节点、属于MPLS平面域且处于第三节点之前的第五节点;
第二列表子单元,用于按照路由扩展头格式,获取第三节点的标签和第五节点的标签封装后的第二标签列表;以及按照MPLS标签头格式获取第四节点的标签形成的标签栈;
第二生成子单元,用于根据封装后第二标签列表、标签栈和报文内容,得到报文的转发报文。
在一个实施例中,第二列表子单元,还包括第二压缩子单元、列表形成子单元和第二获取子单元,其中:
第二压缩子单元,用于将第五节点的标签进行压缩,得到压缩后的第五节点的标签;
列表形成子单元,用于按照各节点的顺序,将压缩后的第五节点的标签与第三节点的标签进行封装,形成第二标签列表;
第二获取子单元,用于按照SRv6平面域的路由扩展头格式封装第二标签列表,得到封装后的第二标签列表。
在一个实施例中,第二列表子单元,还包括标签排序子单元和标签栈获取子单元,其中:
标签排序子单元,用于按照各节点的顺序,对第四节点的标签进行排序;
标签栈获取子单元,用于按照MPLS标签头格式对排序后的第四节点的标签进行封装,得到标签栈。
在一个实施例中,对于任一节点,若节点为SRv6平面域的边缘节点,则边缘节点是按照SRv6平面域的报头调整方式对接收到的转发报文进行报头信息调整的。
在一个实施例中,按照SRv6平面域的报头调整方式对接收到的转发报文进行报头信息调整,包括:将接收到的转发报文中属于MPLS平面域内节点的标签信息解析后复制到报头中,且对报头中SRv6平面域的节点的标签进行更新,形成MPLS平面域的报文格式。
在一个实施例中,对报头中SRv6平面域的节点的标签进行更新,包括:删除报头中SRv6平面域的节点的标签;或者,修改报头中SRv6平面域的目的地址。
在一个实施例中,对于任一节点,若节点为MPLS平面域的边缘节点,则边缘节点是按照MPLS平面域的报头调整方式对接收到的转发报文进行报头信息调整的。
在一个实施例中,按照MPLS平面域的报头调整方式对接收到的转发报文进行报头信息调整,包括:将接收到的转发报文中属于MPLS平面域内节点的标签信息进行剥离形成SRv6平面域的报文格式。
上述报文转发装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
上述实施例提供的一种计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
上述实施例提供的一种计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
上述实施例提供的一种计算机程序产品,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (16)

1.一种报文转发方法,其特征在于,应用于报文转发路径中的起始节点,所述方法包括:
响应于报文的转发指令,获取所述报文的报文内容、所述报文转发路径中各节点的标签;所述报文转发路径中各节点分布在至少两个平面域中;
根据所述报文内容和所述各节点的标签创建所述报文的转发报文;每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整;
基于所述转发报文进行所述报文的转发。
2.根据权利要求1所述的方法,其特征在于,所述根据所述报文内容和所述各节点的标签创建所述报文的转发报文,包括:
获取所述起始节点的平面域;
在所述起始节点的平面域为基于互联网协议第6版的分段路由SRv6平面域的情况下,按照所述SRv6平面域的路由扩展头格式,对所述报文内容和所述各节点的标签进行封装,得到所述报文的转发报文;
在所述起始节点的平面域为多协议标签交换MPLS平面域的情况下,按照所述MPLS平面域的MPLS标签头格式和所述路由扩展头格式,对所述报文内容和所述各节点的标签进行封装,得到所述报文的转发报文。
3.根据权利要求2所述的方法,其特征在于,所述按照所述SRv6平面域的路由扩展头格式,对所述报文内容和所述各节点的标签进行封装,得到所述报文的转发报文,包括:
根据各所述节点的标签,获取属于所述SRv6平面域的第一节点和属于所述MPLS平面域的第二节点;
根据所述第一节点的标签和所述第二节点的标签,获取第一标签列表;
按照所述SRv6平面域的路由扩展头格式,封装所述第一标签列表和所述报文内容,得到所述报文的转发报文。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一节点的标签和所述第二节点的标签,获取第一标签列表包括:
根据所述报文转发路径获取各所述节点的顺序;
对所述第二节点的标签进行压缩,得到压缩后的第二节点的标签;
按照所述各所述节点的顺序,将所述压缩后的第二节点的标签与所述第一节点的标签进行封装,形成所述第一标签列表。
5.根据权利要求2所述的方法,其特征在于,所述按照所述MPLS平面域的MPLS标签头格式和所述路由扩展头格式,对所述报文内容和所述各节点的标签进行封装,得到所述报文的转发报文,包括:
根据各所述节点的标签和各所述节点的顺序,获取属于SRv6平面域的第三节点、属于所述MPLS平面域且处于所述第三节点之前的第四节点、属于所述MPLS平面域且处于所述第三节点之前的第五节点;
按照所述路由扩展头格式,获取所述第三节点的标签和所述第五节点的标签封装后的第二标签列表;以及按照所述MPLS标签头格式获取所述第四节点的标签形成的标签栈;
根据所述封装后第二标签列表、所述标签栈和所述报文内容,得到所述报文的转发报文。
6.根据权利要求5所述的方法,其特征在于,所述按照所述路由扩展头格式,获取所述第三节点的标签和所述第五节点的标签封装后的第二标签列表,包括:
将所述第五节点的标签进行压缩,得到压缩后的第五节点的标签;
按照各所述节点的顺序,将所述压缩后的第五节点的标签与所述第三节点的标签进行封装,形成第二标签列表;
按照所述SRv6平面域的路由扩展头格式封装所述第二标签列表,得到所述封装后的第二标签列表。
7.根据权利要求5所述的方法,其特征在于,所述按照所述MPLS标签头格式获取所述第四节点的标签形成的标签栈,包括:
按照各所述节点的顺序,对所述第四节点的标签进行排序;
按照所述MPLS标签头格式对排序后的所述第四节点的标签进行封装,得到所述标签栈。
8.根据权利要求1-7任一项所述的方法,其特征在于,对于任一节点,若所述节点为SRv6平面域的边缘节点,则所述边缘节点是按照所述SRv6平面域的报头调整方式对接收到的转发报文进行报头信息调整的。
9.根据权利要求8所述的方法,其特征在于,所述按照所述SRv6平面域的报头调整方式对接收到的转发报文进行报头信息调整,包括:将所述接收到的转发报文中属于MPLS平面域内节点的标签信息解析后复制到报头中,且对所述报头中SRv6平面域的节点的标签进行更新,形成MPLS平面域的报文格式。
10.根据权利要求9所述的方法,其特征在于,所述对所述报头中SRv6平面域的节点的标签进行更新,包括:删除所述报头中SRv6平面域的节点的标签;或者,修改所述报头中SRv6平面域的目的地址。
11.根据权利要求1-7任一项所述的方法,其特征在于,对于任一节点,若所述节点为MPLS平面域的边缘节点,则所述边缘节点是按照所述MPLS平面域的报头调整方式对接收到的转发报文进行报头信息调整的。
12.根据权利要求11所述的方法,其特征在于,所述按照所述MPLS平面域的报头调整方式对接收到的转发报文进行报头信息调整,包括:将所述接收到的转发报文中属于MPLS平面域内节点的标签信息进行剥离形成SRv6平面域的报文格式。
13.一种报文转发装置,其特征在于,所述装置包括:
指令响应模块,用于响应于报文的转发指令,获取所述报文的报文内容、报文转发路径中各节点的标签;所述报文转发路径中各节点分布在至少两个平面域中;
报文生成模块,用于根据所述报文内容和所述各节点的标签创建所述报文的转发报文;每个节点的标签与所属平面域的段标识符相匹配,用于各节点中的边缘节点按照所属平面域的报头调整方式对接收到的转发报文进行报头信息调整;
报文转发模块,用于基于所述转发报文进行所述报文的转发。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述的方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
16.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
CN202310914693.4A 2023-07-24 2023-07-24 报文转发方法、装置、设备、介质和程序产品 Pending CN117041142A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310914693.4A CN117041142A (zh) 2023-07-24 2023-07-24 报文转发方法、装置、设备、介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310914693.4A CN117041142A (zh) 2023-07-24 2023-07-24 报文转发方法、装置、设备、介质和程序产品

Publications (1)

Publication Number Publication Date
CN117041142A true CN117041142A (zh) 2023-11-10

Family

ID=88623609

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310914693.4A Pending CN117041142A (zh) 2023-07-24 2023-07-24 报文转发方法、装置、设备、介质和程序产品

Country Status (1)

Country Link
CN (1) CN117041142A (zh)

Similar Documents

Publication Publication Date Title
US10819634B2 (en) Packet edit processing method and related device
JP7481436B2 (ja) Srネットワークでパケットを転送する方法、デバイス、及びシステム
US20190280976A1 (en) Algorithmic Longest Prefix Matching in Programmable Switch
JP6369532B2 (ja) ネットワーク制御方法、ネットワークシステムと装置及びプログラム
US20140071988A1 (en) Compressing Singly Linked Lists Sharing Common Nodes for Multi-Destination Group Expansion
WO2019085975A1 (zh) 一种网络拓扑显示方法及网络管理设备
WO2021088629A1 (zh) DetNet数据包处理方法及装置
US11012358B2 (en) Forwarding table management
US10084613B2 (en) Self adapting driver for controlling datapath hardware elements
US9270586B2 (en) Method for abstracting datapath hardware elements
CN114710467B (zh) Ip地址存储方法、装置和硬件网关
CN108322394A (zh) 路由表建立、查找、删除及状态变更方法和装置
CN112787927A (zh) 一种分段路由报文转发方法、装置及预设逻辑电路单元
CN113411259A (zh) 一种报文转发方法、装置及设备
CN106487769B (zh) 一种访问控制列表acl的实现方法及装置
CN108322393A (zh) 路由链路管理方法和系统、虚拟路由网关和宿主机网关
CN109726144B (zh) 一种数据报文的处理方法和装置
CN107294746B (zh) 一种部署业务的方法及设备
CN117041142A (zh) 报文转发方法、装置、设备、介质和程序产品
CN102111339B (zh) 报文发送方法及网络设备
WO2016173196A1 (zh) 地址映射关系的学习方法及装置
JP5528644B2 (ja) 記憶域削減のためのデータ・パケットの作成および変更に関する方法、コンピュータ・システム、およびコンピュータ・プログラム(製品)(メモリ節約パケット変更)
JP5144225B2 (ja) 情報検索装置、及び情報検索装置へのエントリ情報の登録方法
CN114915584A (zh) 报文转发方法、装置及系统
CN111797497A (zh) 一种用于电磁暂态并行仿真的通讯方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination