报文解析方法、解析器件及网络设备与流程

未命名 10-09 阅读:135 评论:0


1.本技术涉及通信网络技术领域,尤其涉及一种报文解析方法、解析器件及网络设备。


背景技术:

2.解析器是网络数据平面的关键组件,其用于对报文进行解析,以确定报文的关键字段,比如协议类型、报文所携带的目的地址等,为数据平面的其他处理组件提供报文的关键信息。
3.相关技术方案中,解析器提取报文关键字段的方案通常包括串行方案和并行方案两种。串行方案中,通常由多级串行连接的解析器分片组成,形成流水线结构,采用流水线作业的方式从报文中解析出报文的关键字段。每一个解析器分片只用于解析报文中的一个协议字段,因此解析器的解析能力是根据解析器分片的数量决定的,解析器分片的数量越多,解析器能够解析的协议字段数量越多,因此当一些复杂的报文可以包括几十个协议字段时,往往需要几十个解析器分片才能够实现这样复杂报文的解析。由于是串行解析的,因此解析器分片的数量越多,导致解析的性能、延迟等受到影响,功耗面积对应增加。并行方案中,解析器同时解析出报文中所有的协议字段,解析器解析的过程是通过查找匹配表实现的,并且所使用的匹配表需要包含所有可能出现的解析结果。因此当一些复杂的报文可以包括几十个协议字段时,匹配表中的表项数量会协议类型数量增加呈现指数级增长,并且解析器无法在一个周期内提取出所有的协议字段,导致解析器处理周期变长,增加解析器的延迟,解析效率低,同时也会导致报文处理的吞吐量较低。


技术实现要素:

4.本技术的目的在于一种报文解析方法,能够提高报文解析的效率,以及提高报文解析的吞吐量。
5.基于上述目的,本技术提供一种报文解析方法,该方法包括:确定一预设协议解析树中各条协议转发路径中的每一层报文头中的协议字段,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,关键比特串包括多个关键比特,关键比特位置用以指示每一个关键比特在对应各层报文头中的比特位置,所述关键比特串用以指示该条协议转发路径中各层协议之间的转换路径信息以及对应的各层协议的协议类型;存储关键比特串和关键比特位置,并存储每一个关键比特串与对应的协议转发路径的映射关系;接收一目标报文,目标报文包含依次嵌套的多个协议层的报文头,根据所存储的关键比特位置在各个报文头对应的比特位置提取比特值,组成一目标比特串;将目标比特串与所存储的关键比特串进行匹配,根据匹配结果确定所述目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。
6.进一步的,协议解析树包括一个根节点和多个子节点,根节点和各个子节点用以指示各层报文头所对应的网络协议类型,根节点与各个子节点之间构成了多条不同的协议转发路径,协议转发路径用以指示报文中各层协议之间的转换路径信息。
7.进一步的,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,包括:基于每一条协议转发路径构建对应的配置报文,配置报文包括依次嵌套的多个协议层的报文头和报文体,所述协议层的嵌套顺序与所述协议转发路径相同,其中,报文头包括协议字段,协议字段中的值指示报文头的下一层报文头的协议类型;将每一条配置报文中除协议字段外的所有剩余比特均置x,将每一条配置报文生成为对应的配置比特串;获取所有的配置比特串的长度,得到长度的最大值;以长度的最大值为基准,将配置比特串的长度小于最大值的配置比特串计算需要补齐的长度,在配置比特串的末尾添加相应长度的比特x,以使所有的配置比特的长度均为最大值;将所有的配置比特进行排列,得到具有m行y列的配置比特数据,其中,m行对应m个配置比特串,y列对应每一个比特在配置报文中的比特位置。
8.进一步的,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:s401、遍历配置比特数据的每一列,若该列的比特值均为x,则删除该列,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第一配置比特数据;s402、遍历所述第一配置比特数据的任意两列,若两列的比特值均相同,则将其中的一列删除,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第二配置比特数据;s403、遍历所述第二配置比特数据的每一列,若该列的比特值仅为x和1,则删除该列,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第三配置比特数据;s404、遍历所述第三配置比特数据的每一列,若该列的比特值仅为x和0,则删除该列,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第四配置比特数据。
9.进一步的,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:遍历第四配置比特数据的任意两行的比特值,若均不一致,则存储第四配置比特数据,其中,第四配置比特数据中的每一行数据对应每一条协议转发路径的关键比特串,第四配置比特数据中的列编号对应关键比特位置;若存在比特值的相同的两行,则存储第二配置比特数据,第二配置比特数据的每一行数据对应每一条协议转发路径的关键比特串,第二配置比特数据中的列编号对应关键比特位置。
10.进一步的,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:s501、假设第四配置比特数据的总列数为l列以及总行数是m行,m行数据表示m条协议转发路径所对应的m个配置比特串,设置遍历的初始列数量l0为=;
11.s502、获取从l列中选择l0列的所有列组合,对每一个列组合进行遍历,若所选择的列组合中没有重复的配置比特串,则停止遍历,记录所选择的列组合中的列编号,得到m条协议转发路径所对应的m个关键比特串,所选择的列组合中列编号对应所述关键比特位置;s503、若所选择的列组合中存在重复的配置比特串,则将l0递增1,从l列中选择l0+1列的所有列组合,重复执行步骤s502;s504、重复执行步骤s503,直至从l列中所选择的列组合使m行配置比特串不重复,停止遍历,记录所选择的列组合中的列编号,得到m条协议转发路径所对应的m个关键比特串,所选择的列组合中列编号对应关键比特位置。
12.进一步的,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:s601、假设第四配置比特数据的总列数为l列以及总行数是m行,m行数据表示m条协议转发路径所对应的m个配置比特串,设置遍历的初始列数量为l列;s602、从l列中任选一列,判断除该列后剩余的所有列中有没有重复的配置比特串,若没有重复的,执行步骤s604,若有重复的,执行步骤s603;s603、从l列中重新选择一列,所选的列与上次所选的列不能重复,判断除该列后剩余的所有列中有没有重复的配置比特串,若没有重复的,执行步骤s604,若有重复的,重新执行步骤s603,若l列中所有的列均被选择过且无法再删除,执行步骤s605;s604、从l列中删除所选择的列,记录所剩余的列编号,并记录删除列操作后剩余的配置比特数据,执行步骤s602;s605、记录所剩余的列编号,得到m条协议转发路径所对应的m个关键比特串,剩余的列编号对应关键比特位置。
13.基于上述目的,本技术提供一种解析器件,器件包括:提取模块,用于确定一预设协议解析树中各条协议转发路径中的每一层报文头中的协议字段,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,关键比特串包括多个关键比特,关键比特位置用以指示每一个关键比特在对应各层报文头中的比特位置,关键比特串用以指示该条协议转发路径中各层协议之间的转换路径信息以及对应的各层协议的协议类型;存储模块,用于存储关键比特串和所述关键比特位置,并存储每一个关键比特串与对应的协议转发路径的映射关系;解析模块,用于接收一目标报文,目标报文包含依次嵌套的多个协议层的报文头,根据所存储的关键比特位置在各个报文头对应的比特位置提取比特值,组成一目标比特串;匹配模块,用于将目标比特串与所存储的关键比特串进行匹配,根据匹配结果确定所述目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。
14.基于上述目的,本技术提供一种网络设备,包括如上所述的解析器件。
15.基于上述目的,本技术提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述方法的步骤。
16.本技术能够缩短报文解析的处理周期,降低报文解析的延迟,提高报文解析的效
率,提高报文处理的吞吐量。
附图说明
17.图1是根据本技术实施例提供的报文解析方法的第一流程图;图2是根据本技术实施例提供的协议解析树示意图;图3是根据本技术实施例提供的报文解析方法的第二流程图;图4是根据本技术实施例提供的报文解析方法的第三流程图;图5是根据本技术实施例提供的报文解析方法的第四流程图;图6是根据本技术实施例提供的报文解析方法的第五流程图;图7是根据本技术实施例提供的解析器件的系统框图;图8是根据本技术实施例提供的网络设备的结构示意图。
具体实施方式
18.以下将结合附图所示的具体实施方式对本技术进行详细描述,但这些实施方式并不限制本技术,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本技术的保护范围内。
19.请参考图1,本技术实施例提供一种报文解析方法,该方法包括步骤:s101、确定一预设协议解析树中各条协议转发路径中的每一层报文头中的协议字段,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,关键比特串包括多个关键比特,关键比特位置用以指示每一个关键比特在对应各层报文头中的比特位置,关键比特串用以指示该条协议转发路径中各层协议之间的转换路径信息以及对应的各层协议的协议类型;s102、存储关键比特串和关键比特位置,并存储每一个关键比特串与对应的协议转发路径的映射关系;s103、接收一目标报文,目标报文包含依次嵌套的多个协议层的报文头,根据所存储的关键比特位置在各个报文头对应的比特位置提取比特值,组成一目标比特串;s104、将目标比特串与所存储的关键比特串进行匹配,根据匹配结果确定所述目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。
20.计算机网络在开放式系统互联(open system interconnect,osi)模型中被分成七层结构,而各种网络协议也分别对应于其中的一层,比如“ethernet类型”对应于osi底层的数据链路层,而“ipv4”对应于osi模型的网络层。网络报文在发送至网络之前,其报文头也将按照这种层次关系进行封装,最高层协议将封装在最内层,然后才是低层次的协议,而解包过程刚好相反。由于协议之间的这种层次关系,在报文头的解析过程中,除了最外层的协议首部外,任何一个内层协议首部在解析其前一个协议之前均是未知的,只有其前一个协议首部解析完成后才能得到确认。因此在报文头解析器设计时,根据其设计支持的所有网络协议便可获知,并使用有向无环图将这种关系清晰的表示,称之为协议解析树。本技术实施例提供的解析方法在设计时,根据已经明确的网络协议的解析需求或者用户需求设计相应的协议解析树。其中,协议解析树包括一个根节点和多个子节点,根节点和各个子节点用以指示各层报文头所对应的网络协议类型,根节点与各个子节点之间构成了多条不同的
协议转发路径,该协议转发路径用以指示报文中各层协议之间的转换路径信息。如图2所示的典型的协议解析树,该协议解析树包括7个协议层,其中,协议层1为ethernet协议层,协议层2为mpls协议层,协议层3为mpls协议层,协议层4为mpls协议层,协议层5为mpls协议层,协议层6为mpls协议层,协议层7包括ipv4和ipv6。协议层1能够分别指示到协议层2和协议层7,协议层2能够分别指示到协议层3和协议层7,因此能够构成多个不同的协议转发路径,比如,协议层1 ethernet协议层-》协议层2 mpls协议层-》协议层7 ipv4构成一条协议转发路径,协议层1 ethernet协议层-》协议层2 mpls协议层-》协议层3 mpls协议层-》协议层7 ipv6构成一条协议转发路径。
21.网络协议的架构一般为分层架构,遵循网络协议的报文通常也是分层的。例如,报文通常包括报文体以及依次封装在报文体外的多层报文头,每层报文头对应一个协议层,每层报文头遵循对应的协议层的协议。其中,每层报文头中包括协议字段,该协议字段中的值指示该报文头的下一层报文头的协议类型,根据该协议字段中的值的不同,该报文头的下一层报文头的协议类型不同。比如,以太网报头中的关键协议字段可以是以太类型(eth_type)字段,该eth_type字段中的值可以指示该以太网报文头中的下一层报文头是互联网协议第4版(internet protocol version 4,ipv4)报文头或互联网协议第6版 (internet protocol version 6,ipv6)报文头。用户数据报协议(user datagram protocol,udp)报文头中的关键协议字段可以是目的端口(destport)字段,该destport字段中的值可以指示该udp报文头的下一层报文头是动态主机配置协议(dynamic host configurationprotocol,dhcp)报文头或文件传输协议(file transfer protocol,ftp)报文头。
22.本技术实施例基于确定的协议解析树,就能够确定该协议解析树中所有协议转发路径,以及能够确定每一条协议转发路径中的各个协议层报文头中的协议字段,该协议字段中的值指示该报文头的下一层报文头的协议类型,从而对得到的所有协议字段执行压缩和关键比特提取,能够确定每一条协议转发路径所对应的关键比特串和关键比特位置,关键比特串包括多个关键比特,关键比特位置用以指示所提取的每一个关键比特在对应各层报文头中的比特位置。根据所获得的关键比特位置,能够确定每一条协议转发路径中各层报文头在关键比特位置所对应的比特值,从而确定对应的关键比特串,关键比特串用以指示该条协议转发路径中各层协议之间的转换路径信息以及对应的各层协议的协议类型。对所接收的目标报文的各层报文头对应的比特位置提取比特值,组成目标比特串,将目标比特串与所存储的关键比特串进行匹配,以确定目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。通过对协议字段进行压缩和关键位提取,缩短了原有的协议字段的长度,降低了报文解析的延迟,提高了解析效率,提高了报文处理的吞吐量。
23.以图2为实施例具体进行说明。图2为确定的协议解析树,因此能够确定该协议解析树中所有协议转发路径为:ethernet-》mpls1-》mpls2-》mpls3-》mpls4-》mpls5-》ipv4;ethernet-》mpls1-》mpls2-》mpls3-》mpls4-》mpls5-》ipv6;ethernet-》mpls1-》mpls2-》mpls3》mpls4-》ipv4;ethernet-》mpls1-》mpls2-》mpls3》mpls4-》ipv6;ethernet-》mpls1-》mpls2-》mpls3-》ipv4;ethernet-》mpls1-》mpls2-》mpls3-》ipv6;
ethernet-》mpls1-》mpls2
ꢀ‑
》ipv4;ethernet-》mpls1-》mpls2
ꢀ‑
》ipv6;ethernet-》mpls1
ꢀ‑
》ipv4;ethernet-》mpls1
ꢀ‑
》ipv6;ethernet-》ipv4;ethernet-》ipv6。
24.基于上述罗列出的所有协议转发路径,对于每一条协议转发路径来说,能够确定该路径上的各个协议层报文头中的协议字段值。基于确定的所有协议字段值,进行压缩和关键位提取,以能够减少协议字段的长度。
25.作为一种可选的实现方式,如图3所示,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,包括:s301、基于每一条协议转发路径构建对应的配置报文,配置报文包括依次嵌套的多个协议层的报文头和报文体,协议层的嵌套顺序与所述协议转发路径相同,其中,报文头包括协议字段中的值指示报文头的下一层报文头的协议类型;s302、将每一条配置报文中除协议字段外的所有剩余比特均置x,将每一条配置报文生成为对应的配置比特串;s303、获取所有的配置比特串的长度,得到长度的最大值;s304、以长度的最大值为基准,将配置比特串的长度小于最大值的配置比特串计算需要补齐的长度,在配置比特串的末尾添加相应长度的比特x,以使所有的配置比特的长度均为所述最大值;s305、将所有的配置比特进行排列,得到具有m行y列的配置比特数据,其中,m行对应m个配置比特串,y列对应每一个比特在配置报文中的比特位置。
26.由于每一条协议转发路径已经确定,即报文中各层协议之间的转换路径信息以及每层报文头所对应的协议层可以确定,因此可以构建对应的配置报文。配置报文依次嵌套的多个协议层的报文头和报文体,协议层的嵌套顺序与该协议转发路径相同,报文头包括协议字段,协议字段中的值指示该报文头的下一层报文头的协议类型。将配置报文中除协议字段外的所有剩余比特均置x,该配置报文中协议字段值保持不变,其他的比特均置为x,可以得到对应的配置比特串。获取所有的配置比特串的长度,得到长度的最大值。因为各个配置报文的协议转发路径不同,导致各个配置报文的长度不同,因此需要对所有的配置比特串执行比特对齐操作,以使所有的配置比特串具有的相同的长度。具体地,以最大值为基准,将长度小于最大值的配置比特计算需要补齐的比特长度,在该配置比特串的末尾添加相应长度的比特x,以使所有的配置比特的长度均为最大值。将所有补齐完成的配置比特进行排列,得到具有m行y列的配置比特数据,其中,m行的配置比特数据就是m个配置比特串,也就是m条协议转发路径所对应的配置比特串,y列对应每一个比特在配置报文中的比特位置。
27.作为一种可选的实现方式,如图4所示,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,包括:s401、遍历配置比特数据的每一列,若该列的比特值均为x,则删除该列,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第一配置比特数据;
s402、遍历第一配置比特数据的任意两列,若两列的比特值均相同,则将其中的一列删除,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第二配置比特数据;s403、遍历第二配置比特数据的每一列,若该列的比特值仅为x和1,则删除该列,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第三配置比特数据;s404、遍历第三配置比特数据的每一列,若该列的比特值仅为x和0,则删除该列,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第四配置比特数据。
28.m行y列的配置比特数据的长度越长,在单个时钟周期内解析报文时,以及报文匹配查找操作时,导致报文处理时间长,导致报文处理的吞吐量低,因此需要对配置比特数据的长度进行压缩,首先对配置比特数据中无关的比特和重复比特进行删除,以缩短比特数据的长度。具体地,首先将配置比特数据列中比特值全为x的列删除,将比特值重复或者相等的列删除,将比特值仅为x和1的列删除以及将比特值仅为x和0的列删除,记录所保留的列编号,列的编号用以指示该列的比特在配置报文中的比特位置。通过缩短比特数据的长度,提高报文处理的速度和效率,降低了报文解析的延迟,提高了报文处理的吞吐量。
29.作为一种可选的实现方式,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置的步骤还包括:遍历第四配置比特数据的任意两行的比特值,若均不一致,则存储第四配置比特数据,第四配置比特数据中的每一行数据对应每一条协议转发路径的关键比特串,第四配置比特数据中的列编号对应关键比特位置;若存在比特值的相同的两行,则存储第二配置比特数据,第二配置比特数据的每一行数据对应每一条协议转发路径的关键比特串,第二配置比特数据中的列编号对应关键比特位置。步骤s401和s402对配置比特数据的处理,该处理是没有信息量的损失的,即第二配置比特数据是没有信息量丢失的。步骤s403和s404的处理,可能会导致信息量的损失,即第四配置比特数据是有信息量丢失的,因此需要做上述步骤处理。但是第四配置比特数据的长度比第二配置比特数据的长度相对小,第四配置比特数据是一个较优的选择。现在举例说明,对步骤s403和s404的处理方式原因进行说明。假设配置比特数据有两个位串a和位串b,位串长度为1,位串a为1,位串b为x。在对目标报文进行匹配判断时,假设输入的位串为0,则可以判断输入的位串符合位串b,因为不可能符合位串a,位串a为1,但是当输入的位串为1时,就无法判断是符合位串a还是位串b。假设配置比特数据有两个位串c和位串d,位串长度为2,位串c为0x,位串d为x1。在对目标报文进行匹配判断时,假设输入的位串为00或者01,则可以判断输入的位串符合位串c或者位串d,但是当输入的位串为01时,就无法判断是符合位串c还是位串d。因此,由于某列比特仅出现x和1或者仅出现x和0时,该比特所能提供的信息量无法保证能够进行正确的判断,因此在步骤s403和s404中,将这些列进行删除。
30.一种实施方式中,可以基于上述获取的关键比特串和关键比特位置,对目标报文执行匹配,根据匹配结果确定目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。
31.根据上述步骤获取的第四配置比特数据中各行的配置比特串,虽然配置比特串的长度已经比原始的协议字段长度相对缩短了不少,但是并不是最小的,还可以进一步将配置比特串的长度缩短,因此本技术的实施例通过暴力搜索的方式进一步缩短配置比特串的长度。从上述实施例可知,第二配置比特数据和第四配置比特数据都可以作为搜索的初始
数据,如果获取的是第四配置比特数据,则以第四配置比特数据作为搜索的初始数据,如果获取的是第二配置比特数据,则以第二配置比特数据作为搜索的初始数据。本实施例中,以第四配置比特数据为例进行说明。第二配置比特数据的实施方式类似,在此不再赘述。作为一种可选的实现方式,如图5所示,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:s501、假设第四配置比特数据的总列数为l列以及总行数是m行,m行数据表示m条协议转发路径所对应的m个配置比特串,设置遍历的初始列数量l0为=;
32.s502、获取从l列中选择l0列的所有列组合,对每一个列组合进行遍历,若所选择的列组合中没有重复的配置比特串,则停止遍历,记录所选择的列组合中的列编号,得到m条协议转发路径所对应的m个关键比特串,所选择的列组合中列编号对应所述关键比特位置;s503、若所选择的列组合中存在重复的配置比特串,则将l0递增1,从l列中选择l0+1列的所有列组合,重复执行步骤s502;s504、重复执行步骤s503,直至从l列中所选择的列组合使x行配置比特串不重复,停止遍历,记录所选择的列组合中的列编号,得到m条协议转发路径所对应的m个关键比特串,所选择的列组合中列编号对应所述关键比特位置。
33.一种实施方式中,可以基于步骤s502和s504获取的关键比特串和关键比特位置,对所接收的目标报文进行比特匹配。该目标报文包含依次嵌套的多个协议层的报文头。根据所存储的关键比特位置在各个报文头对应的比特位置提取比特值,组成一目标比特串,将目标比特串与所存储的关键比特串进行匹配,根据匹配结果确定目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。该实施方式通过对多个列组合进行遍历搜索,去除重复的比特串,进一步缩短协议字段的长度,进一步提高报文处理的速度和效率,极大降低了报文解析的延迟,极大提高了报文处理的吞吐量。
34.图5所示的实施方式在实际运行中,该种遍历方式往往会存在较大的计算量,因此导致运行过程时间较长,对fpga的资源消耗带来影响。因此提出一种局部优化遍历的实施方式,如图6所示,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:s601、假设第四配置比特数据的总列数为l列以及总行数是m行,m行数据表示m条协议转发路径所对应的m个配置比特串,设置遍历的初始列数量为l列;s602、从l列中任选一列,判断除该列后剩余的所有列中有没有重复的配置比特串,若没有重复的,执行步骤s604,若有重复的,执行步骤s603;s603、从l列中重新选择一列,所选的列与上次所选的列不能重复,判断除该列后剩余的所有列中有没有重复的配置比特串,若没有重复的,执行步骤s604,若有重复的,重新执行步骤s603,若l列中所有的列均被选择过且无法再删除,执行步骤s605;s604、从l列中删除所选择的列,记录所剩余的列编号,并记录删除列操作后剩余的配置比特数据,执行步骤s602;s605、记录所剩余的列编号,得到m条协议转发路径所对应的m个关键比特串,剩余的列编号对应关键比特位置。
35.该实施方式通过局部最优的方式确认最少的列,不但减小了计算量,提供了系统
ram,nvram)、可编程rom(programmable rom,prom)、可擦除prom(erasable prom,eprom)、电可擦除prom(electrically erasableprom,eeprom)、闪存、光存储器和寄存器等。存储器804可以包括硬盘和/或内存。
41.处理器803可以是通用处理器,通用处理器可以是通过读取并执行存储器(例如存储器804)中存储的计算机程序(例如计算机程序8041)来执行特定步骤和/或操作的处理器,通用处理器在执行所述步骤和/或操作的过程中可能用到存储在存储器(例如存储器804)中的数据。通用处理器可以是,例如但不限于中央处理器(centralprocessing unit,cpu)。此外,处理器803也可以是专用处理器,专用处理器可以是专门设计的用于执行特定步骤和/或操作的处理器,专用处理器可以是,例如但不限于,asic和fpga等。此外,处理器803还可以是多个处理器的组合,例如多核处理器。
42.通信接口802可以包括输入/输出(input/output,i/o)接口、物理接口和逻辑接口等用于实现网络设备内部的器件互连的接口,以及用于实现网络设备与其他设 备(例如网络设备)互连的接口。物理接口可以是千兆的以太接口(gigabit ethernet,ge),其可以用于实现网络设备与其他设备互连,逻辑接口是网络设备内部的接口,其可以用于实现网络设备内部的器件互连。容易理解,通信接口802可以用于网络设备与其他设备通信,例如通信接口802用于网络设备与其他设备之间报文的发送和接收。
43.总线805可以是任何类型的,用于实现处理器803、存储器804、通信接口802和解析器件801互连的通信总线,例如系统总线。
44.解析器件801可以是asic芯片、fpga芯片等各种可能的芯片,解析器件801的结构可以参考图7的所示实施例,这里不做赘述。处理器803、存储器804和通信接口802中的任一器件和解析器件801互连具体可以是指该任一器件与解析器件801中的器件互连。在一些实施例中,上述处理器803、存储器804和通信接口802均可以集成在解析器件801上,或者,上述处理器803、存储器804和通信接口802可以分别设置在彼此独立的芯片上,也可以至少部分的或者全部的设置在同一块芯片上。将各个器件独立设置在不同的芯片上,还是整合设置在一个或者多个芯片上,往往取决于产品设计的需要。本技术对上述器件的具体实现形式不做限定。
45.图8所示的网络设备仅仅是示例性的,在实现过程中,网络设备还可以包括其他组件,本文不再一一列举。
46.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实 现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。计算机可以是通用计算机、计算机 网络、或者其他可编程装置。计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线) 或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储装置。可用介质可以是磁性介质(例如,软 盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
47.本技术公开的实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的报文解析方法。
48.尽管为示例目的,已经公开了本技术的优选实施方式,但是本领域的普通技术人员将意识到,在不脱离由所附的权利要求书公开的本技术的范围和精神的情况下,各种改进、增加以及取代是可能的。

技术特征:
1.一种报文解析方法,其特征在于,所述方法包括:确定一预设协议解析树中各条协议转发路径中的每一层报文头中的协议字段,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,所述关键比特串包括多个关键比特,所述关键比特位置用以指示每一个关键比特在对应各层报文头中的比特位置,所述关键比特串用以指示该条协议转发路径中各层协议之间的转换路径信息以及对应的各层协议的协议类型;存储所述关键比特串和所述关键比特位置,并存储每一个关键比特串与对应的协议转发路径的映射关系;接收一目标报文,所述目标报文包含依次嵌套的多个协议层的报文头,根据所存储的关键比特位置在各个报文头对应的比特位置提取比特值,组成一目标比特串;将所述目标比特串与所存储的关键比特串进行匹配,根据匹配结果确定所述目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。2.如权利要求1所述的报文解析方法,其特征在于,所述协议解析树包括一个根节点和多个子节点,所述根节点和各个子节点用以指示各层报文头所对应的网络协议类型,所述根节点与各个子节点之间构成了多条不同的协议转发路径,所述协议转发路径用以指示报文中各层协议之间的转换路径信息。3.如权利要求1所述的报文解析方法,其特征在于,所述对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,包括:基于每一条协议转发路径构建对应的配置报文,配置报文包括依次嵌套的多个协议层的报文头和报文体,所述协议层的嵌套顺序与所述协议转发路径相同,其中,所述报文头包括协议字段,所述协议字段中的值指示所述报文头的下一层报文头的协议类型;将每一条配置报文中除协议字段外的所有剩余比特均置x,将每一条配置报文生成为对应的配置比特串;获取所有的配置比特串的长度,得到长度的最大值;以所述长度的最大值为基准,将所述配置比特串的长度小于最大值的配置比特串计算需要补齐的长度,在所述配置比特串的末尾添加相应长度的比特x,以使所有的配置比特的长度均为所述最大值;将所有的配置比特进行排列,得到具有m行y列的配置比特数据,其中,m行对应m个配置比特串,y列对应每一个比特在配置报文中的比特位置。4.如权利要求3所述的报文解析方法,其特征在于,所述对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:s401、遍历配置比特数据的每一列,若该列的比特值均为x,则删除该列,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第一配置比特数据;s402、遍历所述第一配置比特数据的任意两列,若两列的比特值均相同,则将其中的一列删除,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第二配置比特数据;s403、遍历所述第二配置比特数据的每一列,若该列的比特值仅为x和1,则删除该列,并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第三配置比特数据;s404、遍历所述第三配置比特数据的每一列,若该列的比特值仅为x和0,则删除该列,
并记录所保留的列编号,记录执行删除列操作后的配置比特数据为第四配置比特数据。5.如权利要求4所述的报文解析方法,其特征在于,所述对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:遍历所述第四配置比特数据的任意两行的比特值,若均不一致,则存储所述第四配置比特数据,其中,所述第四配置比特数据中的每一行数据对应每一条协议转发路径的关键比特串,所述第四配置比特数据中的列编号对应所述关键比特位置;若存在比特值的相同的两行,则存储所述第二配置比特数据,其中,所述第二配置比特数据的每一行数据对应每一条协议转发路径的关键比特串,所述第二配置比特数据中的列编号对应关键比特位置。6.如权利要求5所述的报文解析方法,其特征在于,所述对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:s501、假设所述第四配置比特数据的总列数为l列以及总行数是m行,m行数据表示m条协议转发路径所对应的m个配置比特串,设置遍历的初始列数量l0为=;s502、获取从l列中选择l0列的所有列组合,对每一个列组合进行遍历,若所选择的列组合中没有重复的配置比特串,则停止遍历,记录所选择的列组合中的列编号,得到m条协议转发路径所对应的m个关键比特串,所选择的列组合中列编号对应所述关键比特位置;s503、若所选择的列组合中存在重复的配置比特串,则将l0递增1,从l列中选择l0+1列的所有列组合,重复执行步骤s502;s504、重复执行步骤s503,直至从l列中所选择的列组合使m行配置比特串不重复,停止遍历,记录所选择的列组合中的列编号,得到m条协议转发路径所对应的m个关键比特串,所选择的列组合中列编号对应所述关键比特位置。7.如权利要求5所述的报文解析方法,其特征在于,所述对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,还包括:s601、假设第四配置比特数据的总列数为l列以及总行数是m行,m行数据表示m条协议转发路径所对应的m个配置比特串,设置遍历的初始列数量为l列;s602、从l列中任选一列,判断除该列后剩余的所有列中有没有重复的配置比特串,若没有重复的,执行步骤s604,若有重复的,执行步骤s603;s603、从l列中重新选择一列,所选的列与上次所选的列不能重复,判断除该列后剩余的所有列中有没有重复的配置比特串,若没有重复的,执行步骤s604,若有重复的,重新执行步骤s603,若l列中所有的列均被选择过且无法再删除,执行步骤s605;s604、从l列中删除所选择的列,记录所剩余的列编号,并记录删除列操作后剩余的配置比特数据,执行步骤s602;s605、记录所剩余的列编号,得到m条协议转发路径所对应的m个关键比特串,剩余的列编号对应关键比特位置。8.一种解析器件,其特征在于,所述器件包括:提取模块,用于确定一预设协议解析树中各条协议转发路径中的每一层报文头中的协议字段,对所有的协议字段执行压缩和关键比特提取,确定每一条协议转发路径所对应的关键比特串和关键比特位置,所述关键比特串包括多个关键比特,所述关键比特位置用以指示每一个关键比特在对应各层报文头中的比特位置,所述关键比特串用以指示该条协议
转发路径中各层协议之间的转换路径信息以及对应的各层协议的协议类型;存储模块,用于存储所述关键比特串和所述关键比特位置,并存储每一个关键比特串与对应的协议转发路径的映射关系;解析模块,用于接收一目标报文,所述目标报文包含依次嵌套的多个协议层的报文头,根据所存储的关键比特位置在各个报文头对应的比特位置提取比特值,组成一目标比特串;匹配模块,用于将所述目标比特串与所存储的关键比特串进行匹配,根据匹配结果确定所述目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。9.一种网络设备,其特征在于,包括如权利要求8所述的解析器件。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。

技术总结
本申请公开了一种报文解析方法、解析器件及网络设备,涉及通信网络技术领域,报文解析方法包括:确定协议解析树中各条协议转发路径中的每一层报文头中的协议字段,对所有的协议字段执行关键比特提取,获取每一条协议转发路径所对应的关键比特串和关键比特位置,接收一目标报文,目标报文包含依次嵌套的多个协议层的报文头,根据所存储的关键比特位置在各个报文头对应的比特位置提取比特值,组成一目标比特串;将目标比特串与所存储的关键比特串进行匹配,根据匹配结果确定目标报文中各层协议之间的转换路径信息以及对应的各层协议的协议类型。本申请能够提高报文解析的效率和吞吐量。量。量。


技术研发人员:方梁炜 刘天宇 陈罡 张越超 邱建刚
受保护的技术使用者:杭州芯旗电子技术有限公司
技术研发日:2023.09.01
技术公布日:2023/10/7
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐