掌桥专利:专业的专利平台
掌桥专利
首页

报文封装、解封装方法、装置、存储介质及电子装置

文献发布时间:2023-06-19 11:39:06


报文封装、解封装方法、装置、存储介质及电子装置

技术领域

本发明实施例涉及通信领域,具体而言,涉及一种报文封装、解封装方法、装置、存储介质及电子装置。

背景技术

IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(Internet Engineering Task Force,简称为IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。IPv6的技术经过多年的发展,目前最新的标准是RFC8200。由于IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。

BIER(Bit Indexed Explicit Replication,位索引显式复制)(RFC8279)是一种新型组播数据转发技术,该技术将网络边缘的节点都只用一个bit位来表示,组播流量在中间网络传输,额外封装一个特定的BIER头,这个报文头以bit位串的形式标注了该组播流的所有目的节点,中间网络转发节点根据bit位进行路由,保障流量能够发送到所有目的节点。中间节点转发设备事先通过路由协议,如三层网络中的OSPF(OSPF Open ShortestPath First,开放式最短路径优先)协议,ISIS(Intermediate System-to-IntermediateSystem,中间系统到中间系统)协议,形成用于指导BIER转发的BIFT(Bit IndexForwarding Table,位索引转发表)表,在收到封装BIER头的流量时,依据BIFT来完成报文到目的节点的转发。 BIER这种数据面转发技术因为没有组播树的建立问题,消除了组播树建立的时延,并且在网络出现链路或者节点问题时,收敛速度同OSPF或ISIS协议,比原来的组播树重建降低了巨大的时延。

IPv6技术研究已经多年,RFC8200里定义的分片机制,在报文过大,路径无法直接传输时,提供很好的机制将报文变成多个小报文进行传输,另外ESP(RFC4303)也为报文的安全提供了保障机制。这两个扩展头单独使用的时候并没有问题,但如果将其与BIER技术结合起来,存在报文无法组织,可能出现逻辑混乱无法解析的情况。

draft-xie-bier-ipv6-encapsulation-08中提出将分片或者AH/ESP(Authentication Header/Encapsulating Security Payload,认证头/封装安全)扩展头作为IPv6普通扩展头放在DOH的BIER选项头后,再要求只有到BIER出口设备才需要处理分片/AH/ESP扩展头,这样的实现方式对网络的中间设备(非入口/出口设备)有特殊要求,即按照RFC8200国际标准规定的的IPv6报文处理流程,中间设备将在处理完DOH后接着处理分片/AH/ESP扩展头,但实际上分片/AH/ESP扩展头并不需要中间设备进行处理,由此造成冗余判断或处理,设备性能降低,并且可能造成错误处理。而如果采取其他手段比如配置,或者强制命令让中间设备不处理位于DOH的BIER选项头后的分片/AH/ESP扩展头,这个流程又并非通用流程,会影响到其他没有携带BIER头的正常IPv6报文处理。另外,如果在携带BIER选项头的DOH后再封装IPv6头,再将分片/AH/ESP扩展头放在该IPv6头之后的话,IPv6头里的目的IPv6地址填写又成为问题,填写为0,需要设备针对在这种情况的IPv6地址做特殊处理,单独分配一个特殊地址又会增加控制复杂度。

draft-zzhang-tsvwg-generic-transport-functions-00提出一种通用的分片头机制 GFH(Generic Fragmentation Header),可以与其他技术结合,从而解决报文在传输路径上的处理逻辑问题。例如可以很容易的和BIERin6技术(draft-zhang-bier-bierin6-07)结合使用。但当BIER头(格式与RFC8296中定义相同或者类似)采用 draft-xie-bier-ipv6-encapsulation中类似的方法与IPv6结合时,则还没有提出高效简洁的解决方案。

发明内容

本发明实施例提供了一种报文封装、解封装方法、装置、存储介质及电子装置,以至少解决相关技术中通用的分片头机制与封装在IPv6扩展头中的BIER头如何结合使用的问题。

根据本发明的一个实施例,提供了一种报文封装方法,所述方法包括:

与通用分片头GFH、通用封装安全头(Generic Encapsulating SecurityPayload,简称为GESP)或通用认证头(Generic Authentication Header,简称为GAH)结合,将位索引显式复制BIER头封装在互联网协议第6版IPv6报文的IPv6扩展头中。

根据本发明的另一个实施例,还提供了一种报文解封装方法,所述方法包括:

从互联网协议第6版IPv6报文的IPv6扩展头中解封装出位索引显式复制BIER头,其中,所述BIER头与通用分片头GFH、通用封装安全头GESP或通用认证头GAH结合,封装在所述 IPv6扩展头中。

根据本发明的另一个实施例,还提供了一种报文封装装置,所述装置包括:

第一封装模块,用于与通用分片头GFH、通用封装安全头GESP或通用认证头GAH结合,将位索引显式复制BIER头封装在互联网协议第6版IPv6报文的IPv6扩展头中。

根据本发明的另一个实施例,还提供了一种报文解封装装置,所述装置包括:

解封装模块,用于从互联网协议第6版IPv6报文的IPv6扩展头中解封装出位索引显式复制BIER头,其中,所述BIER头与通用分片头GFH、通用封装安全头GESP或通用认证头GAH 结合,封装在所述IPv6扩展头中。

根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

本发明实施例,与通用分片头GFH、通用封装安全头GESP或通用认证头GAH结合,将位索引显式复制BIER头封装在互联网协议第6版IPv6报文的IPv6扩展头中,可以解决相关技术中通用的分片头机制与封装在IPv6扩展头中的BIER头如何结合使用的问题,实现在BIER头封装在IPv6扩展头中时,与通用的分片头/通用封装安全头/通用认证头相结合,简洁高效的实现BIER组播报文的分片、封装安全和认证功能。

附图说明

图1是本发明实施例的报文封装或解封装方法的移动终端的硬件结构框图;

图2是根据本发明实施例的报文封装方法的流程图;

图3是根据本发明实施例的报文解封装方法的流程图;

图4是根据本实施例的报文封装的示意图一;

图5是根据本实施例的报文封装的示意图二;

图6是根据本实施例的BIER技术传输网络的示意图;

图7是根据本优选实施例的数据报文封装的流程图一;

图8是根据本实施例的设备对报文进行解封装处理的流程图一。

图9是根据本优选实施例的数据报文封装的流程图二;

图10是根据本实施例的设备对报文进行解封装处理的流程图二;

图11是根据本优选实施例的数据报文封装的流程图三;

图12是根据本实施例的设备对报文进行解封装处理的流程图三;

图13是根据本优选实施例的数据报文封装的流程图四;

图14是根据本实施例的设备对报文进行解封装处理的流程图四;

图15是根据本实施例的报文封装装置的框图;

图16是根据本实施例的报文解封装装置的框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明的实施例。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

本申请实施例中所提供的方法实施例可以在路由器、移动终端、计算机终端或者类似的运算装置中执行。以运行在路由器上为例,图1是本发明实施例的报文封装或解封装方法的移动终端的硬件结构框图,如图1所示,路由器可以包括一个或多个(图1中仅示出一个) 处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述路由器还可以包括用于通信功能的传输设备 106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述路由器的结构造成限定。例如,路由器还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的报文封装或解封装方法对应的计算机程序,处理器102通过运行存储在存储器104 内的计算机程序,从而执行各种功能应用处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至路由器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种运行于上述路由器或网络架构的网络切片连接方法,图2是根据本发明实施例的报文封装方法的流程图,如图2所示,该流程包括如下步骤:

步骤S202,与通用分片头GFH、通用封装安全头GESP或通用认证头GAH结合,将位索引显式复制BIER头封装在互联网协议第6版IPv6报文的IPv6扩展头中。

在一示例性实施例中,所述IPv6扩展头为HBH(Hop-by-Hop Options Header,逐跳选项头)、DOH(Destination Options Header地址选项头)或RH(Routing Header,路由头)。

在一示例性实施例中,所述BIER头的Proto字段设置为用于指示所述GFH、所述GESP 或所述GAH的值G_TBD_X,其中,所述GFH、所述GESP以及所述GAH的值G_TBD_X不同。

在一示例性实施例中,封装所述GFH、所述GESP或所述GAH,其中,所述GFH、所述GESP 或所述GAH中的Next Header用于指示BIER传输的报文类型。

在一示例性实施例中,所述IPv6扩展头的Next Header字段设置为59。

在一示例性实施例中,在所述IPv6扩展头的外层封装IPv6头,其中,所述IPv6头中的 Next Header字段用于指示所述IPv6头之后是所述HBH、所述DOH或所述RH。

在一示例性实施例中,所述BIER头的Proto字段设置为0或其他保留值。

在一示例性实施例中,封装所述GFH、所述GESP或所述GAH,其中,所述GFH、所述GESP 或所述GAH中的Next Header用于指示BIER传输的报文类型。

在一示例性实施例中,所述IPv6扩展头的Next Header字段设置为用于指示所述GFH、所述GESP或所述GAH的上层协议值UL_TBD_X。

在一示例性实施例中,在所述IPv6扩展头的外层封装IPv6头,其中,所述IPv6头中的 Next Header字段用于指示所述IPv6头之后是所述HBH、所述DOH或所述RH。

根据本发明的另一个实施例,还提供了一种报文解封装方法,图3是根据本发明实施例的报文解封装方法的流程图,如图3所示,该流程包括如下步骤:

步骤S302,从互联网协议第6版IPv6报文的IPv6扩展头中解封装出位索引显式复制BIER 头,其中,所述BIER头与通用分片头GFH、通用封装安全头GESP或通用认证头GAH结合,封装在所述IPv6扩展头中。

在一示例性实施例中,上述步骤S302具体可以包括:

S3021,处理所述IPv6扩展头,和所述IPv6扩展头中的所述BIER头;可选的,在步骤S3021之前,还包括解封装IPv6头,根据所述IPv6头的Next Header字段获取所述IPv6扩展头扩展头HBH、DOH或RH;

S3022,若为中间设备,进行报文转发;

S3023,若为出口设备,根据所述IPv6扩展头的Next Header字段和/或所述BIER头中的Proto字段进行报文处理和转发,进一步的,S3023具体可以包括:如果所述BIER头的Proto 字段为用于指示所述GFH、所述GESP或所述GAH的值G_TBD_X,和/或所述IPv6扩展头的Next Header字段为59,则剥除所述IPv6扩展头,并根据所述BIER头的Proto字段的值G_TBD_X 进行通用分片、通用封装安全或通用认证报文的解析;如果所述BIER头的Proto字段为0和 /或所述IPv6扩展头的Next Header字段为上层协议值UL_TBD_X,则按照IPv6上层协议进行通用分片、通用封装安全或通用认证报文的解析。

本发明以BIER头封装在DOH,HBH或者RH中为例,提出与通用分片、通用封装安全、通用认证等技术结合使用的方法,从而可以让BIER报文在不限于DOH、HBH或RH等封装形式下,都能与通用分片、通用封装安全、通用认证等技术结合使用,逻辑清晰的实现分片、封装安全或认证等功能。

本发明提出2种报文封装与处理方式,可以实现在BIER头封装在IPv6扩展头中时,与通用的分片头/通用封装安全头/通用认证头相结合,跳出RFC8200的处理规程的限制,简洁高效的实现BIER组播报文的分片、封装安全和认证功能。

报文封装与处理方式一:IPv6 Header的封装方式不变,其Next Header字段仍然填为0、或者60、或者43等,表明是HBH,或者DOH,或者RH等IPv6扩展头。但HBH/DOH/RH等IPv6扩展头中的Next Header字段,不再填写RFC8200中定义的指示分片/封装安全/认证的IPv6扩展头的值,而是填写为59(IPv6-NoNxt),使用59是借用RFC8200已有的定义,表示该IPv6扩展头后没有其他IPv6扩展头或者协议报文。图4是根据本实施例的报文封装的示意图一,如4所示,对于封装在HBH/DOH/RH中的BIER头,其Proto字段,填写为表示GFH的值G_TBD_X。图5是根据本实施例的报文封装的示意图二,如图5所示,对于封装在HBH/DOH/RH中的BIER头,其Proto字段,填写为表示GESP的值,对于通过封装在HBH/DOH/RH中的BIER头,其 Proto字段,填写为表示GAH的情况与图4或5类似,不再赘述。这样可以避免HBH/DOH/RH 指示RFC8200中定义的分片IPv6扩展头FH、封装安全IPv6扩展头ESP或认证头IPv6扩展头AH所导致的设备额外处理开销,又能将通用分片头GFH、通用封装安全头GESP或通用认证头GAH与封装在HBH/DOH/RH等IPv6扩展头中的BIER头结合起来,实现BIER组播报文的分片、封装安全和认证功能。GFH/GESP/GAH中的Next Header填写用BIER传输的报文的类型,包括以太/MPLS/IPv4/IPv6等。

设备收到上述报文后,先处理HBH/DOH/RH等IPv6扩展头,接着处理HBH/DOH/RH中携带的BIER头,BIER头的处理流程及是否出口设备的判断根据RFC8279定义的原则进行。如果本设备是中间设备,则处理HBH/DOH/RH后,进行转发。如果本设备是出口设备,则会剥除HBH/DOH/RH,并根据BIER头中的Proto指示处理GFH/GESP/GAH。从而实现封装在IPv6扩展头中的BIER与GFH/GESP/GAH结合使用,简洁高效的实现BIER组播报文的分片、封装安全和认证功能。

对于其他的一些传输技术,比如业务功能链(Service Function Chain),其定义的NSH (Network Service Header),采用以上类似的封装方法与处理流程,同样能够实现这些技术与通用分片/通用封装安全/通用认证处理结合,保证各类报文的传输与安全。

下面以具体实施例中对使用报文封装与处理方式一进行详细说明。

在BIER头位于HBH/DOH/RH时,处理方法类似。区别仅在IPv6头的Next Header针对DOH设置为60,HBH设置为0,针对RH设置为43。以下以DOH为例进行说明。同样,在SFC 协议的NSH头位于HBH/DOH/RH时,处理方法类似。

图6是根据本实施例的BIER技术传输网络的示意图,如图6所示,网络入口设备BFIR 在收到组播报文,发现需要通过BIER技术传输,并且该报文过大,超过了本网络的最大传输单元设置,则将报文进行分片处理后,进行单个分片报文封装时,字段的位置如图4所示,图7是根据本优选实施例的数据报文封装的流程图一,如图7所示,具体包括:

步骤S701,封装GFH,GFH的封装流程同RFC8200中已定义的分片处理,并将原始的组播报文类型值填入到GFH的Next Header字段,比如原始组播报文是IPv4报文,则GFH的Next Header字段填为4,如果原始组播报文是IPv6报文,则填写为41。4或者41符合IANA 的标准https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

步骤S702,DOH封装,DOH的NH设置为59,DOH的Next Header字段,不填写原来针对分片头的值44(IPv6-Frag),而是填写为59(IPv6-NoNxt),使用59是借用RFC8200已有的定义,表示该DOH扩展头后没有其他IPv6扩展头或者协议报文。

步骤S703,封装BIER头,将BIER头作为option封装到DOH之内,将BIER头的Proto字段填写为表示GFH的值G_TBD_X,例如10。

这个封装方式将GFH与封装在DOH的BIER头结合起来实现了对用BIER传输的报文的分片,避免了DOH后插入分片扩展头FH所导致的设备额外处理开销。

步骤S704,封装外层IPv6头,其Next Header字段填为60,表明后续是DOH。

图8是根据本实施例的设备对报文进行解封装处理的流程图一,如图8所示,包括:

步骤801,处理外层IPv6头,根据IPv6头的Next Header指示值60,找到扩展头DOH。

步骤802,处理DOH,读取NH值59,并根据DOH里的option类型找到BIER头,因为DOH的Next Header字段填写为59(IPv6-NoNxt),所以认为DOH后没有其他IPv6扩展头以及其他协议报文,不会导致设备额外处理开销,提高设备处理与转发性能。

步骤803,处理BIER头,BIER头的处理流程及根据RFC8279定义的原则进行。

步骤804,根据BIER处理结果判断是否为出口设备,在判断结果为否的情况下,执行步骤S805,在判断结果为是的情况下,执行步骤S806;

步骤S805,转发报文,如果该设备是中间设备,对应于图6中的BFRm(Bit-Forwarding Router,位转发路由器)和BFRn设备,处理BIER报文后发现本设备并非出口设备,则在处理完DOH后继续转发给BIER下一跳,不处理后续的GFH报文。如果发现本设备是出口设备,对应于图6中的BFER1(Bit-Forwarding Egress Router,位转发出口路由器)或者BFER2 或者BFER3设备,则剥除DOH及外层IPv6封装。

步骤806,根据BIER头中的Proto指示后续是GFH,对GFH进行处理,处理流程参照draft-zzhang-tsvwg-generic-transport-functions中的定义进行。从而实现封装在IPv6扩展头中的BIER仍然能与通用分片头结合使用,解决超过本网络最大传输单元的组播报文传输问题。

步骤807,得到分片报文,处理完GFH,在对报文进行分片重组后,再转发给接收者。

如图6所示网络,网络入口设备BFIR收到组播报文,发现需要经过封装安全,通用ESP 的封装简称GESP,采用RFC4303中的基础定义。报文封装过程,字段的位置参照图5所示,图9是根据本优选实施例的数据报文封装的流程图二,如图9所示,具体包括:

步骤901,对数据报文进行ESP封装,封装方法采用RFC4303中的定义,将原始的组播报文类型值填入到ESP的Next Header字段,比如原始的组播报文是IPv4报文,则ESP的Next Header字段填为4,如果原始的组播报文是IPv6报文,则填写为41。

步骤902,封装DOH,DOH的Next Header字段,填写为59(IPv6-NoNxt),使用59是借用RFC8200已有的定义,表示该扩展头后没有其他IPv6扩展头或者协议报文;

步骤903,封装BIER头,Proto设置为G_TBD_X,将BIER头作为option封装到DOH之内,将BIER头的Proto字段填写为表示GESP的值,例如20。

这个封装方式将GESP与封装在DOH的BIER头结合起来实现了对用BIER传输的报文的封装安全功能,避免了DOH后插入ESP扩展头所导致的设备额外处理开销。

步骤904,封装外层IPv6头,在DOH的外层封装IPv6头,其Next Header字段填为60,表明后续是DOH。

图10是根据本实施例的设备对报文进行解封装处理的流程图二,如图10所示,包括:

步骤1001,处理外层IPv6头,根据IPv6头的Next Header指示值60,找到扩展头DOH。

步骤1002,处理DOH,读取NH,并根据DOH里的option类型找到BIER头,因为DOH的Next Header字段值为59(IPv6-NoNxt),所以认为DOH后没有其他IPv6扩展头以及其他协议报文,不会导致设备额外处理开销,提高设备处理与转发性能。

步骤1003,处理BIER头,读取Proto获知后续为GESP,BIER头的处理流程及是否出口设备的判断根据RFC8279定义的原则进行。

步骤1004,根据BIER处理结果判断是否为出口设备,在判断结果为否的情况下,执行步骤S1005,在判断结果为是的情况下,执行步骤S1006;

步骤1005,转发报文,如果该设备是中间设备,对应于图6中的BFRm和BFRn设备,处理BIER报文后发现本设备并非出口设备,则在处理完DOH后继续转发给BIER下一跳,不处理后续的GESP报文。如果发现本设备是出口设备,对应于图6中的BFER1或者BFER2或者 BFER3设备,则剥除DOH及外层IPv6封装。

步骤1006,根据BIER头中的Proto指示处理GESP,GESP处理流程参照RFC4303中的定义进行。从而实现封装在IPv6扩展头中的BIER仍然能与通用封装安全头结合使用,解决组播报文封装安全传输问题。

步骤1007,得到安全封装报文,处理完GESP,报文安全判断通过后,再发送给接收者,如果报文没有通过安全判断,则进行丢弃。

在以上的实施例中,网络入口设备也可能选择其他的安全方式,比如AH,则在实例2中, DOH的Next Header字段仍然填写为59(IPv6-NoNxt),表示DOH后没有其他IPv6扩展头以及其他协议报文,不会导致设备额外处理开销,提高设备处理与转发性能;另将BIER头的Proto填写为表示GAH的类型值,GAH的使用遵从与RFC4302。从而实现封装在IPv6扩展头中的BIER仍然能与通用认证头结合使用,解决组播报文认证问题。

另外,根据RFC4303,ESP也可结合AH使用。这时AH的使用遵从于RFC4303。AH将作为GESP的组成部分,这时采用上述封装方法与处理流程。从而实现BIER能与封装安全与认证同时结合使用,提高组播报文的安全性。

需要注意的是,如果对报文进行GESP或者GAH封装后,报文大小超过了本网络的最大传输单元设置,则需要进行分片处理,之后进行封装与转发。

报文封装与处理方式二:IPv6Header的封装方式不变,其Next Header字段仍然填为0、或者60、或者43,表明是HBH,或者DOH,或者RHIPv6扩展头。但HBH/DOH/RH中的NextHeader 字段,不能填写RFC8200中定义的指示分片/封装安全/认证的IPv6扩展头的值,而是填写为直接表示GFH/GESP/GAH上层协议的值UL_TBD_X,这样,既实现了分片、封装安全和认证功能,又让设备跳出了RFC8200定义的IPv6扩展头的处理规程,避免了IPv6扩展头处理的额外开销。而对于封装在HBH/DOH/RH中的BIER头,其Proto字段,填写为0或者其他保留值,不作为后续报文类型的判断。这样避免了HBH/DOH/RH的Next Header与BIER Proto两者共同指示GFH/GESP/GAH可能带来的错误。GFH/GESP/GAH中的Next Header填写用BIER传输的报文的类型,包括以太/MPLS/IPv4/IPv6等。

设备收到上述报文后,先处理HBH/DOH/RH等IPv6扩展头,接着处理HBH/DOH/RH中携带的BIER头。其中的BIER头的处理流程及是否出口设备的判断根据RFC8279定义的原则进行。对于是否处理GFH/GESP/GAH则根据BIER头的处理流程进行判断,如果是中间设备,在处理完HBH/DOH/RH后,进行转发。如果发现是出口设备,则会剥除HBH/DOH/RH,并根据HBH/DOH/RH 中的Next Header处理GFH/GESP/GAH。这种情况下因为GFH/GESP/GAH是上层协议而不是IPv6 扩展头,由BIER节点来判断是否需要处理,在本设备为非出口设备的情况下不进行处理,在本设备是出口设备时则进行处理,实现BIER与GFH/GESP/GAH的结合应用。从而实现组播报文的分片、封装安全和认证功能。

因所述报文的IPv6扩展头中的Next Header指示的GFH/GESP/GAH是上层协议,因此不会占用设备的IPv6扩展头处理开销,可以提高设备的报文处理效率。

对于其他的一些传输技术,比如业务功能链(Service Function Chain),其定义的NSH (Network Service Header),采用以上类似的封装方法与处理流程,同样能够实现这些技术与通用分片/通用封装安全/通用认证处理结合,保证各类报文的传输与安全。

需要指出的是,GFH/GESP/GAH技术还在发展中,GFH中携带的字段,字段位置和长度等信息在未来还有可能发生变化,但是本发明主旨是实现在BIER头封装在IPv6扩展头中时,与通用的分片头/通用封装安全头/通用认证头相结合,跳出RFC8200的处理规程的限制,简洁高效的实现BIER组播报文的分片、封装安全和认证功能。此外,IETF标准中,对于Next Header字段与Next protocol,protocol,Proto等字段含义等同,均指示的是所携带的报文/协议类型。

下面以具体实施例对使用报文封装与处理方式二进行详细说明。

在BIER头位于HBH/DOH/RH时,处理方法类似。区别仅在IPv6头的Next Header针对DOH设置为60,HBH设置为0,针对RH设置为43。以下以DOH为例进行说明。同样,在SFC 协议的NSH等其他协议转发头位于HBH/DOH/RH时,处理方法类似。

如图6所示的网络,网络入口设备BFIR收到组播报文,发现需要通过BIER技术传输,并且该报文过大,超过了本网络的最大传输单元,则将报文进行分片处理后,进行单个分报文封装时,图11是根据本优选实施例的数据报文封装的流程图三,如图11所示,包括:

步骤1101,封装GFH,GFH的封装流程类同RFC8200中已定义的分片处理,并将原始的组播报文类型值填入到GFH的Next Header字段,比如原始的组播报文是IPv4报文,则GFH的Next Header字段填为4,如果原始的组播报文是IPv6报文,则填写为41。

步骤1102,封装DOH,在GFH的外层进行DOH封装,DOH的Next Header字段,不填写原来针对分片头的值44(IPv6-Frag),而是填写为一个新的值,即针对GFH分配的上层协议(Upper-Layer header)值UL_TBD_X,比如145。这样的封装方式既实现了GFH分片功能,又让设备跳出了RFC8200定义的IPv6扩展头的处理规程,避免了IPv6扩展头处理的额外开销。

步骤1103,封装BIER头,BIER的Proto设置为0或者其他保留值,将BIER头作为option 封装到DOH之内。这样的封装方式,避免了DOH的Next Header与BIER Proto两者共同指示 GFH可能带来的错误。

步骤1104,封装外层IPv6头,在DOH的外层封装IPv6头,其Next Header字段填为60,表明后续是DOH。

图12是根据本实施例的设备对报文进行解封装处理的流程图三,如图12所示,包括:

步骤1201,处理IPv6头,根据IPv6头的Next Header指示值60,找到扩展头DOH。

步骤1202,处理DOH,因为DOH的Next Header字段填写为一个指示上层协议的值(Upper-Layer header)(例如145),这个值表示Next header不是IPv6扩展头,所以会认为DOH后没有其他IPv6扩展头。并根据DOH里的option类型找到BIER头。

步骤1203,处理BIER头,读取Proto值为0或者其他保留值,BIER头的处理流程及是否出口设备的判断根据RFC8279定义的原则进行。

步骤1204,根据BIER处理结果判断是否为出口设备,在判断结果为否的情况下,执行步骤S1205,在判断结果为是的情况下,执行步骤S1206;

步骤1205,转发报文,如果该设备是中间设备,对应于图6中的BFRm和BFRn设备,处理BIER报文后发现本设备并非出口设备,则在处理完DOH后继续转发给BIER下一跳;如果发现本设备是出口设备,对应于图6中的BFER1或者BFER2或者BFER3设备,则剥除DOH及外层IPv6封装。这种情况下GFH因为是上层协议而不是扩展头,由BIER节点来判断是否需要处理,在本设备并非出口设备的情况下不进行处理,在本设备是出口设备时则进行处理。从而实现BIER与GFH的结合应用。

步骤1206,根据DOH中的Next Header指示处理GFH,对GFH进行处理的流程参照draft-zzhang-tsvwg-generic-transport-functions-00中的定义进行。从而实现组播报文的通用分片处理,保证超过本网络最大传输单元的报文仍然能够顺利传输。

步骤1207,得到分片报文,处理完GFH,在对报文进行分片重组后,再转发给接收者。

如图6所示的网络,网络入口设备BFIR在收到组播报文,发现需要经过封装安全,通用 ESP的封装简称GESP,采用RFC4303中的基础定义。图13是根据本优选实施例的数据报文封装的流程图四,如图13所示,包括:

步骤1301,封装GESP,对数据报文进行GESP封装,封装方法采用RFC4303中的定义,将原始的组播报文类型值填入到GESP的Next Header字段,比如原始的组播报文是IPv4报文,则GESP的Next Header字段填为4,如果原始的组播报文是IPv6报文,则填写为41。

步骤1302,封装DOH,DOH的Next Header字段,不填写为原来表示ESP的值50,而是填写为一个新的,针对GESP分配的上层协议值,比如180;这样的封装方式既实现了GESP 封装安全功能,又让设备跳出了RFC8200定义的IPv6扩展头的处理规程,避免了IPv6扩展头处理的额外开销。

步骤1303,封装BIER头,BIER的Proto设置为0或者其他保留值,将BIER头作为option 封装到DOH之内,将BIER头的Proto字段填写0。这样的封装方式,避免了DOH的NextHeader 与BIER Proto两者共同指示GESP所带来的混淆。

步骤1304,封装外层IPv6头,在DOH的外层封装IPv6头,其Next Header字段填为60,表明后续是DOH。

图14是根据本实施例的设备对报文进行解封装处理的流程图四,如图14所示,包括:

步骤1401,处理IPv6头,根据IPv6头的Next Header指示值60,找到扩展头DOH。

步骤1402,处理DOH,因为DOH的Next Header字段一个指示上层协议的值(Upper-Layer header)UL_TBD_X(例如180),这个值表示Next header不是IPv6扩展头,所以会把GESP 作为上层协议。并根据DOH里的option类型找到BIER头。

步骤1403,处理BIER头,读取Proto值为0或者其他保留值,BIER头的处理流程及是否出口设备的判断根据RFC8279定义的原则进行。

步骤1404,根据BIER处理结果判断是否为出口设备,在判断结果为否的情况下,执行步骤S1405,在判断结果为是的情况下,执行步骤S1406;

步骤1405,如果该设备是中间设备,对应于图6中的BFRm和BFRn设备,处理BIER报文后发现本设备并非出口设备,则在处理完DOH后继续转发给BIER下一跳,不处理后续的GESP报文。如果发现本设备是出口设备,对应于图6中的BFER1或者BFER2或者BFER3设备,则剥除DOH及外层IPv6封装。这种情况下因为GESP是上层协议而不是IPv6扩展头,由BIER 节点来判断是否需要处理,在本设备为非出口设备的情况下不进行处理,在本设备是出口设备时则进行处理。从而实现BIER与GESP的结合应用。

步骤1406,根据BIER头中的Proto指示处理GESP,对GESP进行处理的流程参照RFC4303 中的定义进行。从而实现组播报文的通用封装安全处理,保证报文传输的安全性。

步骤1407,得到安全封装报文,处理完GESP,报文安全判断通过后,再发送给接收者,如果报文没有通过安全判断,则进行丢弃。

在以上的实施例中,网络入口设备也可能选择其他的安全方式,比如AH,则在实施例二中,DOH的Next Header字段填写为GAH分配的新上层协议值,表示GAH并非IPv6扩展头,不会占用设备IPv6扩展头处理开销,提高设备处理与转发性能;GAH的使用遵从与RFC4302。另将BIER的Proto字段填写为0,从而避免DOH的Next Header与BIER Proto两者共同指示GAH所带来的混淆。从而实现封装在IPv6扩展头中的BIER仍然能与通用认证头结合使用,解决组播报文认证问题。

另外,根据RFC4303,ESP也可结合AH使用。这时AH的使用遵从于RFC4303。AH将作为GESP的组成部分,这时采用上述封装方法与处理流程。从而实现BIER能与封装安全与认证同时结合使用,提高组播报文的安全性。

需要注意的是,如果对报文进行GESP或者GAH封装后,报文大小超过了本网络的最大传输单元,则需要进行分片处理,之后进行封装与转发。

根据本发明的另一个实施例,还提供了一种报文封装装置,图15是根据本实施例的报文封装装置的框图,如图15所示,所述装置包括:

第一封装模块152,用于与通用分片头GFH、通用封装安全头GESP或通用认证头GAH结合,将位索引显式复制BIER头封装在互联网协议第6版IPv6报文的IPv6扩展头中。

在一示例性实施例中,所述IPv6扩展头为HBH、DOH或RH。

在一示例性实施例中,所述BIER头的Proto字段设置为用于指示所述GFH、所述GESP 或所述GAH的值G_TBD_X。

在一示例性实施例中,所述装置还包括:第二封装模块,用于封装所述GFH、所述GESP 或所述GAH,其中,所述GFH、所述GESP或所述GAH中的Next Header用于指示BIER传输的报文类型。

在一示例性实施例中,所述IPv6扩展头的Next Header字段设置为59。

在一示例性实施例中,所述装置还包括:第三封装模块,用于在所述IPv6扩展头的外层封装IPv6头,其中,所述IPv6头中的Next Header字段用于指示所述IPv6头之后是所述HBH、所述DOH或所述RH。

在一示例性实施例中,所述BIER头的Proto字段设置为0或其他保留值。

在一示例性实施例中,所述装置还包括:第四封装模块,用于封装所述GFH、所述GESP 或所述GAH,其中,所述GFH、所述GESP或所述GAH中的Next Header用于指示BIER传输的报文类型。

在一示例性实施例中,所述IPv6扩展头的Next Header字段设置为用于指示所述GFH、所述GESP或所述GAH的上层协议值UL_TBD_X。

在一示例性实施例中,所述装置还包括:第五封装模块,用于在所述IPv6扩展头的外层封装IPv6头,其中,所述IPv6头中的Next Header字段用于指示所述IPv6头之后是所述HBH、所述DOH或所述RH。

根据本发明的另一个实施例,还提供了一种报文解封装装置,图16是根据本实施例的报文解封装装置的框图,如图16所示,所述装置包括:

解封装模块162,用于从互联网协议第6版IPv6报文的IPv6扩展头中解封装出位索引显式复制BIER头,其中,所述BIER头与通用分片头GFH、通用封装安全头GESP或通用认证头GAH结合,封装在所述IPv6扩展头中。

在一示例性实施例中,所述解封装模块162包括:

第一处理子模块,用于处理所述IPv6扩展头,和所述IPv6扩展头中的所述BIER头;

转发子模块,用于若为中间设备,进行报文转发;

第二处理子模块,用于若为出口设备,根据所述IPv6扩展头的Next Header字段和/或所述BIER头中的Proto字段进行报文处理和转发。

在一示例性实施例中,所述第二处理子模块,还用于如果所述BIER头的Proto字段为用于指示所述GFH、所述GESP或所述GAH的值G_TBD_X,和/或所述IPv6扩展头的NextHeader 字段为59,则剥除所述IPv6扩展头,并根据所述BIER头的Proto字段的值G_TBD_X进行通用分片、通用封装安全或通用认证报文的解析;如果所述BIER头的Proto字段为0和/或所述IPv6扩展头的Next Header字段为上层协议值UL_TBD_X,则按照IPv6上层协议进行通用分片、通用封装安全或通用认证报文的解析。

本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 报文封装、解封装方法、装置、存储介质及电子装置
  • 业务功能链报文的封装方法和装置及计算机可读存储介质
技术分类

06120113004162