CN113411290A - 一种分组头解析方法及装置 - Google Patents
一种分组头解析方法及装置 Download PDFInfo
- Publication number
- CN113411290A CN113411290A CN202010186164.3A CN202010186164A CN113411290A CN 113411290 A CN113411290 A CN 113411290A CN 202010186164 A CN202010186164 A CN 202010186164A CN 113411290 A CN113411290 A CN 113411290A
- Authority
- CN
- China
- Prior art keywords
- packet header
- sub
- protocol
- bit
- parsing
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Abstract
本申请实施例提供了一种分组头解析方法及装置。其中,该方法包括:从分组头中提取多个比特段;分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,其中,每个比特段对应一个协议匹配表,不同的比特段对应的协议匹配表不同;从各个比特段的子解析结果中确定至少一个有效子解析结果,有效子解析结果包含从比特段中解析出的分组头协议。本申请实施例提供的方法在一次解析流程中,最少能够从分组头中解析出一个分组头协议,最多能够从分组头中解析出与比特段数量相当的分组头协议。由此,本申请实施例提供的方法可以减少解析器分片的级数,降低解析延迟。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种分组头解析方法及装置。
背景技术
在分组数据传输中,转发芯片用于对到达的分组数据(packet,以下简称分组)进行数据处理和分组转发等。分组到达转发芯片时,首先要利用转发芯片内的分组头解析器parser模块对分组头(packet header,也称分组头部)各个字段的类型和长度进行解析,即分组头解析。
目前,解析器多采用串行方案实现,即解析器包含多个串行连接的解析器分片(parser slice),采用流水线作业的方式从分组头中解析出分组头描述符,并且每个解析器分片只用于解析分组头的一个协议字段。因此,解析器分片的数量越多,解析器能够解析的协议字段的数量也就越多。
一些复杂的分组头可以包含几十个协议字段,因此需要在解析器中部署几十个解析器分片才能够实现对这样复杂分组头的解析。然而,而随着解析器分片数量的增多,解析延迟也越来越大,严重降低了转发芯片的转发性能。
发明内容
本申请提供了一种分组头解析方法及装置,能够降低解析器parser的解析延迟。
第一方面,本申请提供了一种分组头解析方法。该方法包括:从分组头中提取多个比特段;分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,其中,每个比特段对应一个协议匹配表,不同的比特段对应的协议匹配表不同;从各个比特段的子解析结果中确定至少一个有效子解析结果,有效子解析结果包含从比特段中解析出的分组头协议。
本申请实施例提供的方法在一次解析流程中,最少能够从分组头中解析出一个分组头协议,最多能够从分组头中解析出与比特段数量相当的分组头协议。由此,本申请实施例提供的方法可以减少解析器分片的级数,降低解析延迟。
在一种实现方式中,从分组头中提取多个比特段,具体包括:根据全局偏移量确定用于分组头中提取多个比特段的起始位置;获取与分组头的当前解析状态对应的多个提取偏移量;根据多个提取偏移量从分组头的所述起始位置提取多个比特段;其中,全局偏移量是根据当前解析状态确定的,当前解析状态是根据当前已从分组头中解析出的最接近分组头末端的分组头协议确定的。
由此,解析器分片可以根据全局偏移量从分组头的未解析部分的开头提取分组头片段,并且可以根据当前解析状态预测分组头中可能会包含哪些协议字段,从而根据预测从分组头片段的可能包含协议标签的位置提取比特段,以提高比特段包含协议标签的概率,使得解析器分片在一次解析流程中能够解析出多于1个分组头协议,有利于减少解析器分片的级数,降低解析延迟。
在一种实现方式中,获取与分组头的当前解析状态对应的多个提取偏移量,具体包括:从解析状态表中获取多个提取偏移量;其中,解析状态表包括多个表项,每个表项包括多个提取偏移量并且对应一个解析状态。由此,解析器分片可以通过查表的方式获取用于提取比特段的提取偏移量。
在一种实现方式中,每个协议匹配表关联一个子解析结果存储表,不同的协议匹配表关联的子解析结果存储表不同。
在一种实现方式中,每个子解析结果存储表包括多个表项,每个表项包括一个子解析结果并且对应一个访存地址。
在一种实现方式中,分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,具体包括:根据每个比特段与其对应的协议匹配表的匹配结果,确定每个比特段的子解析结果在子解析结果存储表中的目标访存地址;分别使用每个比特段对应的目标访存地址访存相应子解析结果存储表的目标表项,以得到各个比特段的有效子解析结果。由此,用于协议匹配的信息和子解析结果分开存储,通过访存建立联系,能够降低单张表中的数据维度和数据量,提高解析器分片的协议匹配速度,降低解析延迟。
在一种实现方式中,如果目标访存地址在子解析存储表中没有对应的目标表项,则相应的比特段具有无效子解析结果。
在一种实现方式中,子解析结果存储表中的每个表项还包括与分组头协议对应的更新偏移量和下个解析状态。
在一种实现方式中,从各个比特段的子解析结果中确定至少一个有效子解析结果之后,还包括:从至少一个有效子解析结果中确定当前解析出的最接近分组头末端的分组头协议;将最接近分组头末端的分组头协议对应的更新偏移量与全局偏移量相加,作为新的全局偏移量。
在一种实现方式中,将最接近分组头末端的分组头协议对应的下个解析状态作为新的当前解析状态。
由此,解析器分片在执行一次解析流程之后会更新当前解析状态和全局偏移量,更新后的当前解析状态和全局偏移量可以被送入下一层解析器分片,使得下一层解析器分片能够根据更新后的当前解析状态和全局偏移量准确提取下一次解析流程使用的分组头片段和比特段,以及相对准确地预测分组头片段中包含的协议字段,提高解析出更多分组头协议的可能性,有利于减少解析器分片的级数,降低解析延迟。
第二方面,本申请还提供了一种分组头协议解析装置,该分组头协议解析装置可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的单元模块。在一个可能的设计中,上述分组头协议解析装置包括提取单元、匹配单元和仲裁单元。提取单元,用于从分组头中提取多个比特段;匹配单元,用于分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,其中,每个比特段对应一个协议匹配表,不同的比特段对应的协议匹配表不同;仲裁单元,用于从各个比特段的子解析结果中确定至少一个有效子解析结果,有效子解析结果包含从比特段中解析出的分组头协议。
本申请实施例提供的装置在一次解析流程中,最少能够从分组头中解析出一个分组头协议,最多能够从分组头中解析出与比特段数量相当的分组头协议。由此,本申请实施例提供的装置可以减少解析器分片的级数,降低解析延迟。
第三方面,本申请还提供了一种网络设备。该网络设备包括:存储器和处理器;存储器和处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当处理器执行计算机指令时,使网络设备执行上述各方面及其实现方式中的方法。
第四方面,本申请还提供了一种计算机存储介质。该计算机存储介质计算机指令,当计算机指令在网络设备上运行时,使得网络设备执行上述各方面及其实现方式中的方法。
第五方面,本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面及其实现方式中的方法。
第六方面,本申请还提供了一种芯片系统,该芯片系统包括处理器,用于支持上述装置或设备实现上述各方面及其实现方式中所涉及的功能,例如,生成或处理上述方法中所涉及的信息。
附图说明
图1是目前一种解析器模块的结构示意图;
图2是本申请实施例示出的串行方案的分组头识别模块示意图;
图3是本申请实施例示出的并行方案的分组头识别模块示意图;
图4示出了一些包含不同协议字段的分组头;
图5是本申请实施例示出的转发芯片的解析器模块示意图;
图6是本申请实施例提供的一种分组头协议方法的流程图;
图7是本申请实施例示出的从分组头中提取分组头片段的示意图;
图8示出了比特段与协议匹配表之间的对应关系;
图9是本申请实施例示出的TCAM匹配表的示意图;
图10是一次解析流程解析出分组头中的3个分组头协议的示意图;
图11是一次解析流程解析出分组头中的3个分组头协议的示意图;
图12是一次解析流程解析出分组头中的2个分组头协议的示意图;
图13是一次解析流程解析出分组头中的1个分组头协议的示意图;
图14是本申请实施例示出的子解析结果存储表的示意图;
图15是本申请实施例示出的解析状态表的示意图;
图16是本申请实施例示出的创建解析状态表表项的示意图;
图17是本申请实施例示出的分组头解析逻辑框图;
图18是本申请实施例提供的比特段与协议匹配表进行协议匹配的示意图;
图19是本申请实施例示出全局偏移量和当前解析状态的更新逻辑框图;
图20是本申请实施例提供的一种分组头协议装置的结构示意框图;
图21是本申请实施例提供的一种分组头协议装置的提取单元的结构示意框图;
图22是本申请实施例提供的一种分组头协议装置的匹配单元的结构示意框图;
图23是本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
下面首先结合附图对本申请实施例的应用场景进行说明。
在分组数据传输中,转发芯片用于对到达的分组数据进行数据处理和分组转发等。转发芯片一般可以设置在交换机等网络设备中。分组到达转发芯片时,首先要利用转发芯片内的分组头解析器模块对分组头各个字段的类型和长度进行解析,即分组头解析。再进一步根据分组头解析结果来完成数据处理和分组转发等功能。因此,parser模块是转发芯片中最基本的并且不可缺少的功能模块。
图1是目前一种解析器模块的结构示意图。该解析器模块由分组头识别模块(headeridentification,HI)和字段提取模块(field extraction,FE)连接组成。其中,分组头识别模块HI用于从分组头中解析出分组头描述符,分组头描述符包括各分组头中字段的协议类型和长度信息;字段提取模块FE用于根据分组头描述符从分组头中提取相应的字段,得到分组头字段向量,用于后续分组转发和其他处理功能。目前,字段提取模块FE包括串行方案和并行方案两种。
如图2所示,串行方案的分组头识别模块HI由多级串行连接的解析器分片组成,例如parser slice 0-parser slice N,形成流水线结构,采用流水线作业的方式从分组头中解析出分组头描述符。串行parser方案分组头识别模块HI的每个解析器分片只用于解析分组头的一个协议字段,因此,分组头识别模块HI的解析能力是根据解析器分片的数量决定的,解析器分片的数量越多,分组头识别模块HI能够解析的协议字段的数量越多。目前,一些复杂的分组头可以包含几十个协议字段,因此需要在分组头识别模块HI中部署几十个解析器分片才能够实现对这样复杂分组头的解析。由于分组头解析是串行的,因此解析器分片的数量越多,解析延迟也越大。
如图3所示,并行方案的分组头识别模块HI可以只包含一个解析器分片,并使用这个解析器分片同时解析分组头中所有的分组头协议。分组头解析的过程是通过查匹配表实现的,并且所使用的匹配表需要包含分组头解析的所有可能出现的解析结果。下面对并行方案的分组头识别模块HI的解析器分片查匹配表的过程进行示例性地说明。
图4示出了一些包含不同协议字段的分组头。如图4所示,由于不同分组头包含的分组头协议是不同的,并且不同分组头协议的协议字段的长度也不尽相同。例如,图4中的分组头1包含QinQ协议(即:IEEE 802.1ad协议)、网际协议版本4(internet protocolversion 4,IPv4)协议,以及传输层协议prot(protocol),例如:传输控制协议(transmission control protocol,TCP)、用户数据报协议(user datagram protocol,UDP)、流控制传输协议(stream control transmission protocol,SCTP)或通用路由封装协议(generic routing encapsulation,GRE)等。图4中的分组头2包含虚拟局域网协议(virtual local area network,VLAN)、网际协议版本6(internet protocol version 6,IPv6),以及通过扩展头(next header,NH)指示一种传输层协议,例如:TCP、UDP、SCTP或者GRE等。由此可见,仅图4中示出的三层分组头协议就可以形成多达2×2×4=16种不同的协议字段组合,因此可能出现16种解析结果。为了使匹配表能够解析到这16种解析结果,匹配表需要包含以下表项:
其中,8100、0800、11等十六进制字符用于匹配各个协议字段中的协议标签(图4中的灰色部分)。例如:标签协议识别符(tag protocol identifier,TPID)、以太类型EtherType、IPv4协议字段中的传输层协议标签prot、IPv6协议字段中的传输层协议标签NH(next header)等。不同的协议标签数值有不同的含义,例如:8100表示VLAN协议、0800表示IPv4协议、86DD表示IPv6协议,11是UDP协议,06表示TCP协议,84表示STCP协议等。匹配表中的*表示在匹配时跳过的字符,即不需要匹配的字符。跳过字符的长度与协议字段的长度有关,协议字段的长度越长,跳过字符的长度也越长,因此,各个表项中字符的总长度与分组头的长度几乎是相等的,占用字节存储开销非常大。
由此可见,并行方案虽然试图解决串行方案解析延迟大的问题,但是其匹配表的表项数量会随着要解析的分组头协议类型数量增加呈现指数级增长,导致严重的表项膨胀问题,产生巨大的存储开销,依然会增加解析延迟。
本申请实施例提供了一种分组头协议方法,能够降低解析器的解析延迟。该方法可以应用于图5所示的转发芯片的解析器模块中,包括上行解析器模块或者下行解析器模块。该转发芯片包含上行处理模块和下行处理模块两部分,上行处理模块和下行处理模块中间是队列调度和分组缓存模块。上行或下行解析器模块主要完成对到达分组的分组头部进行解析,生成分组头字段向量,供上行或下行处理流水线使用。处理流水线完成相应处理功能并修改分组头字段向量。接下来由上行或下行分组编辑模块根据最新的分组头字段向量完成分组头部的修改编辑,如在普通三层转发中根据分组头字段向量修改目的媒体访问控制地址(destination MAC)。解析器模块可以如图1所示采用流水线结构,由分组头识别HI模块和字段提取FE模块两部分组成,两者串行连接。其中,HI模块由多级串行的解析器分片构成,用于从输入分组的分组头解析得到分组头描述符。分组头描述符包括各字段的协议类型和长度信息。FE模块再根据分组头描述符提取分组头中相应字段,得到分组头字段向量,送往上行或下行处理流水线,用于后续分组转发和其他处理功能。
图6是本申请实施例提供的一种分组头协议方法的流程图。该方法如图6所示可以包括:
步骤S101,从分组头中提取多个比特段。
对于串行方案来说,每个解析器分片从分组头抽取的比特段是不同的。例如,第一个解析器分片Parser Slice 0可以从分组头的开头提取比特段;其他的解析器分片ParserSlice N(N为大于0的正整数)可以根据其前一个解析器分片Parser Slice N-1所完成的解析结果确定要从分组头中抽取比特段的起始位置,先抽取一个指定长度的分组头片段,然后从这个分组头片段中抽取比特段。
图7是从分组头中提取分组头片段的示意图。如图7所示,当分组头到达解析器分片Parser Slice N时,分组头可以被描述成已解析部分和未解析部分。其中,已解析部分是已经被解析器分片Parser Slice N之前的其他解析器分片Parser Slice 1-Parser SliceN-1执行了分组头解析的部分,未解析部分是尚未被执行分组头解析的部分。因此,解析器分片Parser Slice N需要从分组头的未解析部分提取分组头片段。
在提取分组头片段时,需要确定抽取分组头片段的起始位置。例如:可以将未解析部分的第一字节作为起始位置。如果以整个分组头的第一个字节作为基准,那么该起始位置可以被描述为相对于基准向后偏移了多少个字节长度,本申请实施例将这个字节长度称作全局偏移量。该全局偏移量可以根据分组头的已解析部分的字节长度确定,例如:如果分组头的已解析部分的字节长度是20B,那么全局偏移量可以是20B,表示从分组头的第一个字节向后偏移20个字节,作为提取比特段的起始位置,即起始位置是分组头的第21个字节。
本申请实施例中,分组头片段的长度可以由分组头窗口(Packet Header Window)的长度确定。在抽取分组头片段时,将分组头窗口的开头移动到分组头的上述起始位置,则位于分组头窗口内的部分就是要抽取的分组头片段。
一个分组头片段内可以包含多个协议字段,例如VLAN字段、QinQ字段、IPv4字段、IPv6字段等。可以理解的是,不同的协议字段在分组头中占用的字符长度是不同的。参见图4,VLAN字段的字符长度是4B(Byte,字节);QinQ协议的字符长度是8B;IPv4协议的字符长度是20B(不包含可选字段);IPv6协议的字符长度是40B(不包含可选字段)。另外,分组头片段内还可以包含可用于识别分组协议类型的协议标签。例如,VLAN协议字段在字段开头包含字节长度为2B的TPID标签,其之后还包括同属于以太层的字节长度为2B的EtherType标签;QinQ协议字段在字段开头包含字节长度为2B的TPID标签,其之后还包括同属于以太层的字节长度为2B的EtherType标签。EtherType标签用于指示位于以太层之后的网络层的网际协议(internet protocol,IP)类型。另外,从图4还可以看出,由于不同的协议字段在分组头片段中占用的字符长度有所不同,协议标签在在不同的分组片段中的位置也是不同的。
本申请实施例的每个解析器分片用于从分组头片段中解析得到多个分组头协议,因此需要从分组头片段中提取多个比特段。可以理解的是,如果提取的比特段包含协议标签,解析器分片就能够从比特段中解析出分组头协议;如果提取的比特段不包含协议标签,解析器分片就不能够从比特段中解析出分组头协议。为了能够从分组头片段中提取到包含协议标签的比特段,解析器分片可以根据分组头的已解析部分的解析结果去预测分组头片段中会包含哪些协议字段,进而预测协议标签在分组头片段中的位置,并从上述预测的位置抽取比特段。
进一步如图7所示,本申请实施例中,如果以分组头片段的起始位置为基准,可以将比特段的位置描述为相对于分组头片段的起始位置向后偏移了多少个字节长度,本申请实施例将这个字节长度称作提取偏移量。
在抽取比特段时,提取偏移量可以根据预测的协议字段的字节长度确定。示例地,假设解析器分片需要在分组头片段中完成最多三个分组头协议的解析任务,那么解析器分片需要在分组头片段中抽取三个比特段。解析器分片会根据已解析部分的解析结果,预测分组头片段从前到后会依次包含的三个协议字段,例如:VLAN字段、IPv4字段和UDP字段。根据上述预测,解析器分片以0作为提取偏移量1,将分组头片段的第1、2个字节提取为比特段1,使比特段1可能包含VLAN字段的TPID标签。然后,解析器分片将VLAN字段的字节长度4B作为提取偏移量2,将分组头片段的第5、6个字节提取为比特段2,使比特段2可能包含EtherType标签。然后,解析器分片将VLAN字段的字节长度4B、EtherType标签的字节长度2B与IPv4字段的部分字节长度11B之和15B作为提取偏移量3,将分组头片段的第16个字节提取为比特段2,使比特段3可能包含IPv4协议的prot标签。
需要补充说明的是,解析器分片提取比特段1使用的提取偏移量1是可能为0,也可能不为0,具体与提取分组头片段使用的全局偏移量有关。如果全局偏移量刚好使得分组头片段的开头包含协议标签,那么提取偏移量1就可以为0,如果全局偏移量使得分组头片段开头的不包含协议标签,那么提取偏移量1就不为0。进一步地,本申请实施例中,全局偏移量是根据分组头在上一个解析流程已解析出来的分组头协议确定的;对于一个已知的分组头协议,其协议字段的长度是确定的,那么它的下一层分组头协议的协议标签的位置就可以相应确定;据此,本申请实施例在每一个解析流程中,都可以确定一个提取偏移量1,使得比特段1中包含协议标签。
由此可以看出,当解析器分片采用预测的方式从分组头片段中抽取比特段时,至少能够保证比特段1中包含协议标签,从而至少可以从比特段1中解析出一种分组头协议。如果解析器分片预测对了其他的协议字段,那么就会从分组头片段中抽取得到多个包含协议标签的比特段,从而可以从多个包含协议标签的比特段中解析出多种分组头协议。
步骤S102,分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果。
图8示出了比特段与协议匹配表之间的对应关系。如图8所示,协议匹配表的数量与比特段的数量相当,每个比特段对应一个协议匹配表,不同的比特段对应的协议匹配表不同。例如:比特段1对应协议匹配表1,例如比特段2对应协议匹配表2,例如比特段3对应协议匹配表3。这样,解析器分片就可以同时对多个比特段进行并行的协议匹配,降低解析器分片Parser Slice的解析延迟。
本申请实施例中,协议匹配表可以具有多个表项,每个表项包含一组匹配字段,该匹配字段用于与比特段进行匹配。此外,协议匹配表还可以关联到一个子解析结果存储表,子解析结果存储表包括多个表项,每个表项包括一个子解析结果,每个子解析结果包括一个分组头协议。协议匹配表中的表项与子解析结果存储表中的表项具有一对一的关联关系,即协议匹配表中每一个的表项都会关联到子解析结果存储表中的一个表项。
子解析结果存储表的每个表项具有一个访存地址。解析器分片用于将各个比特段以并行的方式分别与其对应的协议匹配表中的各个表项并行匹配。如果某个比特段与其对应的协议匹配表中的某个表项i的匹配字段匹配成功,则获取子解析结果存储表中的与表项i关联的目标表项的访存地址;然后,使用这个访存地址访问子解析结果存储表中的目标表项,输出目标表项包含的子解析结果,该子解析结果就是这个比特段的子解析结果。
在一种实现方式中,如图9所示,协议匹配表可以被实现为三元内容可寻址存储器(ternary content addressable memory,TCAM),以下简称TCAM匹配表。该TCAM匹配表具有多列(column)的三元内容可寻址存储器TCAM单元(即TCAM表项),每个TCAM表项包括多个bit位,每个bit位包括二进制的“0”、“1”和随意“don't care”三种状态,(图9中用“*”表示“don't care”)。“don't care”态是通过掩码实现的,表示进行比特段匹配时,不匹配“don'tcare”态所在的bit位,因此TCAM匹配表通过“don't care”态,既能进行精确匹配查找,又能进行模糊匹配查找。在TCAM匹配表中,每个TCAM表项存储一串由“0”、“1”和“*”组成的三元比特信息。该三元比特信息可以根据协议标签的802.1Q协议编码设计,以用于匹配包含协议标签的比特段,例如:QinQ协议的TPID标签对应二进制码是1000100010101000,其在TCAM表项对应的三元比特信息可以是1000100010101000;UDP协议的prot标签对应二进制码是01100110,其在TCAM表项对应的三元比特信息可以是01100110********。
进一步如图9所示,子解析结果存储表中的各个表项以二进制编码的形式存储子解析结果。其中,子解析结果中的分组头协议可以使用长度为8bit的二进制编码来表示,例如00000001-11111111,共计可以产生255个编码,因此最多可以表示255个不同的分组头协议。例如:1表示VLAN协议、2表示TCP协议、3表示UDP协议、4表示QinQ协议,以此类推。
进一步如图9所示,当协议匹配表以TCAM匹配表实现时,TCAM匹配表还关联到地址编码器,地址编码器用于在比特段匹配到TCAM匹配表的某个TCAM单元时,输出一个访存地址,以使得解析器分片使用这个访存地址访问子解析结果存储表中的目标表项,输出比特段对应的子解析结果。TCAM匹配表与地址编码器通过多条匹配线连接,每一条匹配线对应CAM存储器中的一个TCAM单元,用于将这个TCAM单元连接至地址编码器。
当一个比特段到达TCAM匹配表时,TCAM匹配表以并行的方式将比特段和各个TCAM单元进行匹配。如果比特段与某个TCAM单元的三元比特信息匹配成功,那么这个TCAM单元对应的匹配线会出现电路翻转,使地址编码器输出相应的访存地址,该访存地址指向子解析结果存储表中的目标表项,解析器分片可以使用这个访存地址访问这个目标表项,输出比特段的子解析结果。
步骤S103,从各个比特段的子解析结果中确定至少一个有效子解析结果。
由于解析器分片提取比特段采用的提取偏移量是根据预测的协议字段的字节长度确定的,因此,比特段中可能包含协议标签,也可能不包含协议标签。当一个比特段包含协议标签时,解析器分片能够通过协议匹配在子解析结果存储表中找到这个比特段的子解析结果的表项,这个子解析结果中包含的分组头协议就是比特段指示的分组头协议。当一个比特段不包含协议标签时,解析器分片无法通过协议匹配在子解析结果存储表中找到这个比特段的子解析结果的表项,在这种情况下,解析器分片会输出一个不包含分组头协议的子解析结果。本申请实施例中,将包含分组头协议的子解析结果称为有效子解析结果,将不包含分组头协议的子解析结果称为无效子解析结果。对于任意一个比特段,它的子解析结果可能是一个有效子解析结果,也可能是一个无效子解析结果。
基于上述对有效子解析结果和无效子解析结果的定义,解析器分片可以分别判断每个比特段的子解析结果是否包含分组头协议,如果包含分组头协议,则子解析结果是有效子解析结果。
解析器分片最终确定的有效子解析结果的数量,与解析器分片预测协议字段的准确性有关。假设解析器分片一次解析流程最多产生三个子解析结果,则具体可以出现以下情形:
1、解析器分片预测的协议字段完全正确。
示例地,如图10所示,分组头片段实际包含VLAN字段、IPv4字段和UDP字段。解析器分片预测分组头片段包含VLAN字段、IPv4字段和UDP字段。在这种情况下,解析器分片根据相应的提取偏移量提取的比特段1-比特段3均包含协议字段,因此解析得到的子解析结果1-子解析结果3均为有效子解析结果,并且子解析结果包含的分组头协议与预测的相同。
由此可知,解析器分片在一次解析流程中,可以解析出分组头中的3个分组头协议。
2、解析器分片预测的前两个协议字段正确,第三个协议字段错误。
示例地,如图11所示,分组头片段实际包含VLAN字段、IPv4字段和UDP字段。解析器分片预测分组头片段包含VLAN字段、IPv4字段和TCP字段。在这种情况下,解析器分片根据相应的提取偏移量提取的比特段1-比特段3均包含协议字段,因此解析得到的子解析结果1-子解析结果3均为有效子解析结果。其中,解析器预测了分组头片段包含TCP字段,实际从比特段3解析到UDP协议。
由此可知,解析器分片在一次解析流程中,可以解析出分组头中的3个分组头协议。
3、解析器分片预测的第一个协议字段正确,第二协议字段错误。
示例地,如图12所示,分组头片段实际包含VLAN字段、IPv4字段和UDP字段。解析器分片预测分组头片段包含VLAN字段、IPv6字段和UDP字段。在这种情况下,解析器分片提取的比特段1和比特段2包含协议字段,而比特段3不包含协议字段,因此解析得到的子解析结果1和子解析结果2为有效子解析结果,子解析结果3为无效子解析结果。
由此可知,解析器分片在一次解析流程中,解析出了分组头中的两个分组头协议。其中,解析器预测了分组头片段包含VLAN字段,实际解析到VLAN协议;解析器预测了分组头片段IPV6字段,实际解析到IPV4协议。
4、解析器分片预测的第一个协议字段不正确。
示例地,如图13所示,分组头片段实际包含VLAN字段、IPv4字段和UDP字段。解析器分片预测分组头片段包含QinQ字段、IPv6字段和UDP字段。在这种情况下,解析器分片提取的比特段1包含协议字段,而比特段2和比特段3不包含协议字段,因此解析得到的子解析结果1为有效子解析结果,子解析结果2和子解析结果3为无效子解析结果。
由此可知,解析器分片在一次解析流程中,解析出了分组头中的一个分组头协议。其中,解析器预测了分组头片段包含QinQ字段,实际解析到VLAN协议。
通过以上示例可以看出,如果解析器分片准确地预测出了分组头片段中的前N个协议字段,那么解析器分片就能够在一次解析流程中解析出分组头中的N+1个分组头协议。也就意味着,即使在解析器分片对分组头片段的第一个协议字段也没有正确预测的情况下,解析器分片依然能够解析出分组头中的1个分组头协议,以此保证最小的解析收益。
综上,本申请实施例提供的方法在一次解析流程中,最少能够从分组头中解析出一个分组头协议,最多能够从分组头中解析出与比特段数量相当的分组头协议。由此,本申请实施例提供的方法可以减少解析器分片的级数,降低解析延迟。
图14是本申请实施例示出的子解析结果存储表的示意图。在一个实施例中,每一行视作子解析结果存储表的一个表项,每个表项除了包括分组头协议之外,还包括两个信息,即更新偏移量和下一解析状态。不同表项中的更新偏移量和下一解析状态不同。其中,更新偏移量用于确定下一次解析流程中提取分组头片段所使用的全局偏移量。下一解析状态用于确定下一次解析流程中提取多个比特段使用的多个提取偏移量。
为了根据子解析结果中的下一解析状态确定下一次解析流程中提取多个比特段使用的多个提取偏移量,本申请实施例还包括如图15所示的解析状态表。该解析状态表包括多个表项,每个表项对应一个解析状态,并且包含在这个解析状态下提取多个比特段使用的多个提取参数,该提取参数可以包括提取偏移量和比特段长度等。可以理解的是,本申请实施例中的解析状态实际指示了分组头的解析进度,该解析进度可以理解为当前已经从分组头中解析出了哪些分组头协议,或者当前解析到了分组头中的哪个位置。那么,根据分组头的解析进度,就可以预测分组头接下来会包含哪些分组头协议的协议字段,从而根据预测的分组头协议确定用于提取多个比特段的多个提取参数。
解析状态表可以是预先创建的。例如:假设定义解析状态1指示当前从分组头中解析出的最后一个分组头协议是SMAC(最后一个分组头协议可以理解为当前从分组头中解析出的最靠近分组头末端的分组头协议);那么,可以根据SMAC预测分组头接下来可能包含的VLAN协议、IPV4协议和UDP协议的协议字段;然后,根据这种预测可以确定用于提取相应比特段的提取偏移量1、提取偏移量2和提偏移量3。最后,将提取偏移量1、提取偏移量2和提取偏移量3存储到解析状态1对应的表项中,则完成了这个表项的创建。
在一种实现方式中,如图16所示,解析器可以统计一段历史时间内的所有分组头解析结果,确定一个分组头协议紧随出现在另一个分组头协议之后的概率。基于此,在进行分组头协议预测时,如果当前从分组头中解析出的最后一个分组头协议是分组头协议1,则可以根据统计数据,首先确定在分组头协议1之后紧随出现概率最高的分组头协议2,将分组头协议2作为预测的第一个分组头协议;然后,根据统计数据确定在分组头协议2之后紧随出现概率最高的分组头协议3,将分组头协议3作为预测的第二个分组头协议;确定在分组头协议3之后紧随出现概率最高的分组头协议4,将分组头协议4作为预测的第三个分组头协议。
以此类推。
基于图14示出的子解析结果存储表和图15示出的解析状态表,本申请实施例提供了如图17所示的分组头解析逻辑框图。下面结合图17,对本申请实施例步骤S101-步骤S103的具体实现方式进行进一步地阐述说明。
根据图17,步骤S101具体可以包括以下步骤:
步骤S201,根据全局偏移量确定用于从分组头中提取多个比特段的起始位置。
具体实现中,全局偏移量可以根据上一个解析流程得到的子解析结果中的更新偏移量和上一个解析流程的全局偏移量确定。随着解析流程的迭代,全局偏移量不断更新并逐渐增大,使得解析器分片能够按照从前到后的顺序依次从分组头中提取分组头片段。
示例地,全局偏移量可以使用长度为8bit的二进制编码来表示,取值范围可以是00000000-11111111,共计256个编码,对应全局偏移量的范围是1-256B,例如00000000表示全局偏移量是1B、00000001表示全局偏移量是2B、11111111表示全局偏移量是256B,等等。因此,8bit的全局偏移量可以应用于字节长度为256B以内的分组头。如果要求全局偏移量可以应用于字节长度大于256B的分组头,则可以使用长度大于8bit的二进制编码。
示例地,更新偏移量可以使用长度为5bit的二进制编码来表示,取值范围可以是00000-11111,共计32个编码,对应全局偏移量的范围是1-32B,例如00000表示全局偏移量是1B、00001表示全局偏移量是2B、11111表示全局偏移量是32B,等等。
全局偏移量的更新方法会在后续步骤S103的具体实现方式时进行进一步解释说明。
步骤S202,从起始位置开始,提取预设长度的分组头片段。
本申请实施例中,分组头片段的长度可以由分组头窗口的长度确定。在抽取分组头片段时,将分组头窗口的开头移动到分组头的上述起始位置,则位于分组头窗口内的部分就是要抽取的分组头片段。
需要补充说明的是,分组头窗口的长度可以根据解析器分片在一次解析流程中期望提取的比特段的数量确定。一般来说,分组头窗口的长度更长,则组头片段中可能包含的协议字段的数量越多,则相应地可以提取的比特段的数量也就越多。
步骤S203,获取与分组头的当前解析状态对应的多个提取偏移量。
具体实现中,可以使用当前解析状态查询解析状态表,读取当前解析状态对应表项中的多个提取偏移量,例如:提取偏移量1、提取偏移量2和提取偏移量3。如图17所示,当前解析状态可以根据上一个解析流程得到的子解析结果中的下一解析状态确定。随着解析流程的迭代,前解析状态不断更新,对应的提取偏移量也不断变化。
示例地,解析状态可以使用长度为8bit的二进制编码来表示,取值范围可以是00000000-11111111,共计256个编码,可以表示256个解析状态,支持不多于256个表项的解析状态表。如果要表示更多的解析状态,则可以使用长度大于8bit的二进制编码,解析状态表的表项数量也可以相应增加。
示例地,提取偏移量可以使用长度为5bit的二进制编码来表示,取值范围可以是00000-11111,共计32个编码,对应提取偏移量的范围是0-32B。例如:00000表示提取偏移量是0B(即不偏移,从分组头片段的第1个字节开始提取比特段)、00001表示提取偏移量是1B(即偏移1个字节,从分组头片段的第2个字节开始提取比特段)、11111表示提取偏移量是31B(即偏移31个字节,从分组头片段的第32个字节开始提取比特段),等等。因此,5bit的提取偏移量可以应用于字节长度为32B以内的分组头片段。
当前解析状态的更新方法会在后续步骤S103的具体实现方式时进行进一步解释说明。
步骤S204,根据多个提取偏移量从分组头片段中提取多个比特段。
示例地,如果根据当前解析状态从解析状态表中查询到了三个提取偏移量:00000(提取偏移量1)、01000(提取偏移量2)、01111(提取偏移量3);那么,根据提取偏移量1,从分组头片段的开头偏移0个字节,提取第1、2个字节作为比特段1;根据提取偏移量2,从分组头片段的开头偏移4个字节,提取第5、6个字节提取比特段2;根据提取偏移量3,从分组头片段的开头偏移15个字节,提取第16、17个字节提取比特段3。
需要补充说明的是,由于协议标签的字节长度一般不大于2B,因此本申请实施例优选提取的比特段的长度为2B,从而在分组头片段包含的协议字段预测准确的情况下,确保能够从分组头片段中提取到包含相应协议标签的比特段,并且使比特段的长度最小。
图18是本申请实施例提供的比特段与协议匹配表进行协议匹配的示意图。如图18所示,TCAM表项中的三元比特信息由解析状态的二进制编码和协议字段的二进制编码组合而成,长度为24bit,其中,前8个bit是解析状态的二进制编码,后16个bit是协议字段的二进制编码。例如,三元比特信息000000011000100010101000是由解析状态00000001和QinQ协议的TPID标签的二进制编码1000100010101000组成的。
相应地,将比特段与TCAM匹配表进行匹配时,可以首先将当前解析状态与比特段的二进制编码进行组合,得到匹配关键字(match key)。示例地,如图18所示,当前解析状态00000001和比特段(0x88A8)的二进制编码1000100010101000能够组合得到的匹配关键字是000000011000100010101000。
然后,将匹配关键字与各个TCAM单元中的三元比特信息进行并行匹配。如果匹配关键字与某个TCAM单元中的三元比特信息匹配成功,那么这个TCAM单元与地址编码器连接的匹配线就会发生电路翻转,使得地址编码器输出这个TCAM单元对应的目标访存地址,该目标访存地址指向子解析存储表中的一个目标表项。然后,使用这个目标访存地址访存相应的子解析存储表中的目标表项,就能够得到比特段的子解析结果。
示例地,如果将匹配关键字000000011000100010101000与图18中的TCAM匹配表进行匹配,则能够匹配到TCAM匹配表中的表项3,那么表项3与地址编码器连接的匹配线就会发生电路翻转,使得地址编码器输出表项3对应的目标访存地址0×3。然后,使用目标访存地址0×3访存子解析存储表中的目标表项,就能够得到比特段(0x88A8)的子解析结果,该子解析结果包括从比特段(0x88A8)解析出的QinQ协议、对应的更新偏移量00111(8B)和下一解析状态00000010(0x02)。
在步骤S103的具体实现中,解析器分片对各个子解析结果进行仲裁,确定至少一个有效子解析结果。具体来说,就是判断各个子解析结果中是否包含从比特段中成功解析出的分组头协议,如果包含,则子解析结果就是有效子解析结果。
示例地,根据图17,比特段1的子解析结果1包含从比特段1中解析出的分组头协议1,比特段2的子解析结果2包含从比特段2中解析出的分组头协议2,比特段3的子解析结果3包含从比特段3中解析出的分组头协议3。因此,子解析结果1、子解析结果2和子解析结果3均是有效子解析结果,意味着解析器分片在一次解析流程中实现了对分组头中的三种分组头协议的解析。
可以理解的是,如果比特段与协议匹配表进行协议匹配之后得到的目标访存地址在子解析存储表中没有对应的目标表项,就意味着子解析结果存储表不包含该比特段的子解析结果;在这种情况下,该比特段只能得到一个不包含分组头协议、不包含更新偏移量、不包含下一解析状态的无效子解析结果。
下面对全局偏移量的更新方法进行示例性地解释说明。具体来说,在步骤S103确定至少一个有效子解析结果之后,可以从上述至少一个有效子解析结果中确定当前解析出的最接近分组头末端的分组头协议,然后,将这个最接近分组头末端的分组头协议对应的更新偏移量与本次解析流程使用的全局偏移量相加,作为下一个解析流程使用的全局偏移量。示例地,根据图17,子解析结果3中的分组头协议3是当前解析出的最接近分组头末端的分组头协议,对应更新偏移量3,因此:
全局偏移量=全局偏移量+更新偏移量3
下面对当前解析状态的更新方法进行示例性地解释说明。在从上述至少一个有效子解析结果中确定当前解析出的最接近分组头末端的分组头协议之后,可以将这个最接近分组头末端的分组头协议对应的下个解析状态作为下一个解析流程使用的当前解析状态。示例地,根据图17,子解析结果3中的分组头协议3是当前解析出的最接近分组头末端的分组头协议,下个解析状态3,因此:
当前解析状态=下个解析状态3
下面以图17示出的3个子解析结果为例,进一步结合图19对解析器分片全局偏移量和当前解析状态的更新逻辑进行解释说明:
根据本申请实施例之前阐述的内容,子解析结果1一定是有效子解析结果,因此解析器分片跳过子解析结果1,首先判断子解析结果2是否包含分组头协议。
如果子解析结果2不包含分组头协议,则说明本次解析流程得到的有效子解析结果只包括子解析结果1,在这种情况下,当前解析状态=下个解析状态1,并且全局偏移量=全局偏移量+更新偏移量1。
如果子解析结果2包含分组头协议,则继续判断子解析结果3是否包含分组头协议。
如果子解析结果3不包含分组头协议,则说明本次解析流程得到的有效子解析结果包括子解析结果1和子解析结果2,在这种情况下,当前解析状态=下个解析状态2,并且全局偏移量=全局偏移量+更新偏移量2。
如果子解析结果3包含分组头协议,则说明本次解析流程得到的有效子解析结果包括子解析结果1、子解析结果2和子解析结果3,在这种情况下,当前解析状态=下个解析状态3,并且全局偏移量=全局偏移量+更新偏移量3。
根据上述更新逻辑,解析器分片在执行一次解析流程之后会更新当前解析状态和全局偏移量,更新后的当前解析状态和全局偏移量可以被送入下一层解析器分片,使得下一层解析器分片能够根据更新后的当前解析状态和全局偏移量准确提取下一次解析流程使用的分组头片段和比特段,以及相对准确地预测分组头片段中包含的协议字段,提高解析出更多分组头协议的可能性,有利于减少解析器分片的级数,降低解析延迟。
可以理解的是,上述本申请提供的实施例中,包含解析器和/或解析器分片的网络设备(例如:交换机)为了实现上述功能,可以包含各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
例如,上述网络设备通过软件模块来实现相应的功能。
在一个实施例中,如图20所示,用于实现上述网络设备行为的分组头解析装置包括:提取单元301,用于从分组头中提取多个比特段;匹配单元302,用于分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,其中,每个比特段对应一个协议匹配表,不同的比特段对应的协议匹配表不同;仲裁单元303,用于从各个比特段的子解析结果中确定至少一个有效子解析结果,有效子解析结果包含从比特段中解析出的分组头协议。
本申请实施例提供的装置在一次解析流程中,最少能够从分组头中解析出一个分组头协议,最多能够从分组头中解析出与比特段数量相当的分组头协议。由此,本申请实施例提供的方法可以减少解析器分片的级数,降低解析延迟。
可选的,如图21所示,提取单元301具体包括分组头片段提取子单元401和比特段提取子单元402。其中,分组头片段提取子单元401,用于根据全局偏移量确定用于分组头中提取多个比特段的起始位置;比特段提取子单元402,用于获取与分组头的当前解析状态对应的多个提取偏移量,以及,根据所述多个提取偏移量从分组头的起始位置提取多个比特段。其中,全局偏移量是根据当前解析状态确定的,当前解析状态是根据当前已从分组头中解析出的最接近分组头末端的分组头协议确定的。
由此,提取单元301可以根据全局偏移量从分组头的未解析部分的开头提取分组头片段,并且可以根据当前解析状态预测分组头中可能会包含哪些协议字段,从而根据预测从分组头片段的可能包含协议标签的位置提取比特段,以提高比特段包含协议标签的概率,使得解析器分片在一次解析流程中能够解析出多于1个分组头协议,有利于减少解析器分片的级数,降低解析延迟。
可选的,比特段提取子单元402,用于从解析状态表中获取多个提取偏移量。其中,解析状态表包括多个表项,每个表项包括多个提取偏移量并且对应一个解析状态。由此,解析器分片可以通过查表的方式获取用于提取比特段的提取偏移量。
可选的,每个协议匹配表关联一个子解析结果存储表,不同的协议匹配表关联的子解析结果存储表不同。每个子解析结果存储表包括多个表项,每个表项包括一个子解析结果并且对应一个访存地址。
可选的,如图22所示,匹配单元302具体包括协议匹配子单元501和子解析结果获取子单元502。其中,协议匹配子单元501,用于根据每个比特段与其对应的协议匹配表的匹配结果,确定每个比特段的子解析结果在子解析结果存储表中的目标访存地址。子解析结果获取子单元502,用于分别使用每个比特段对应的目标访存地址访存相应子解析结果存储表的目标表项,以得到各个比特段的有效子解析结果。如果目标访存地址在子解析存储表中没有对应的目标表项,则相应的比特段具有无效子解析结果。
由此,用于协议匹配的信息和子解析结果分开存储,通过访存建立联系,能够降低单张表中的数据维度和数据量,提高解析器分片的协议匹配速度,降低解析延迟。
可选的,子解析结果存储表中的每个表项还包括对应子解析结果的更新偏移量和下个解析状态。
可选的,仲裁单元303,还用于从至少一个有效子解析结果中确定当前解析出的最接近分组头末端的分组头协议;以及,将最接近分组头末端的分组头协议对应的更新偏移量与全局偏移量相加,作为新的全局偏移量;以及,将最接近分组头末端的分组头协议对应的下个解析状态作为新的当前解析状态。
由此,解析器分片在执行一次解析流程之后会更新当前解析状态和全局偏移量,更新后的当前解析状态和全局偏移量可以被送入下一层解析器分片,使得下一层解析器分片能够根据更新后的当前解析状态和全局偏移量准确提取下一次解析流程使用的分组头片段和比特段,以及相对准确地预测分组头片段中包含的协议字段,提高解析出更多分组头协议的可能性,有利于减少解析器分片的级数,降低解析延迟。
另外,例如,上述网络设备通过硬件模块来实现相应的功能。
在一个实施例中,网络设备的上述功能可以通过图23所示的结构实现。例如,接口单元601用于接收上游节点发送的分组,以及将分组转发给下游节点;存储器602用于存储计算机程序代码,该计算机程序代码包括计算机指令;当处理器603执行计算机指令时,使网络设备执行上述各实施例中涉及的方法,例如:从分组头中提取多个比特段;分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,其中,每个比特段对应一个协议匹配表,不同的比特段对应的协议匹配表不同;从各个比特段的子解析结果中确定至少一个有效子解析结果,有效子解析结果包含从比特段中解析出的分组头协议。
本申请实施例还提供一种计算机存储介质,计算机存储介质中存储有计算机指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请还提供了一种芯片系统。该芯片系统包括处理器,用于支持上述装置或设备实现上述方面中所涉及的功能,例如,生成或处理上述方法中所涉及的信息。在一种可能的设计中,芯片系统还包括存储器,用于保存上述装置或设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (22)
1.一种分组头解析方法,其特征在于,包括:
从分组头中提取多个比特段;
分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,其中,每个比特段对应一个协议匹配表,不同的比特段对应的协议匹配表不同;
从各个比特段的子解析结果中确定至少一个有效子解析结果,所述有效子解析结果包含从比特段中解析出的分组头协议。
2.根据权利要求1所述的方法,其特征在于,所述从分组头中提取多个比特段,包括:
根据全局偏移量确定用于分组头中提取所述多个比特段的起始位置;
获取与分组头的当前解析状态对应的多个提取偏移量;
根据所述多个提取偏移量从所述分组头的所述起始位置提取所述多个比特段;
其中,所述全局偏移量是根据所述当前解析状态确定的,所述当前解析状态是根据当前已从分组头中解析出的最接近分组头末端的分组头协议确定的。
3.根据权利要求2所述的方法,其特征在于,所述获取与分组头的当前解析状态对应的多个提取偏移量,包括:从解析状态表中获取所述多个提取偏移量;其中,所述解析状态表包括多个表项,每个表项包括多个提取偏移量并且对应一个解析状态。
4.根据权利要求2所述的方法,其特征在于,每个协议匹配表关联一个子解析结果存储表,不同的协议匹配表关联的子解析结果存储表不同。
5.根据权利要求4所述的方法,其特征在于,每个子解析结果存储表包括多个表项,每个表项包括一个子解析结果并且对应一个访存地址。
6.根据权利要求5所述的方法,其特征在于,所述分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,包括:
根据每个比特段与其对应的协议匹配表的匹配结果,确定每个比特段的子解析结果在子解析结果存储表中的目标访存地址;
分别使用每个比特段对应的目标访存地址访存相应子解析结果存储表的目标表项,以得到各个比特段的有效子解析结果。
7.根据权利要求6所述的方法,其特征在于,如果所述目标访存地址在所述子解析存储表中没有对应的目标表项,则相应的比特段具有无效子解析结果。
8.根据权利要求5-7任一项所述的方法,其特征在于,所述子解析结果存储表中的每个表项还包括对应子解析结果的更新偏移量和下个解析状态。
9.根据权利要求8所述的方法,其特征在于,所述从各个比特段的子解析结果中确定至少一个有效子解析结果之后,还包括:
从所述至少一个有效子解析结果中确定当前解析出的最接近分组头末端的分组头协议;
将所述最接近分组头末端的分组头协议对应的更新偏移量与所述全局偏移量相加,作为新的全局偏移量。
10.据权利要求9所述的方法,其特征在于,还包括:
将所述最接近分组头末端的分组头协议对应的下个解析状态作为新的当前解析状态。
11.一种分组头解析装置,其特征在于,包括:
提取单元,用于从分组头中提取多个比特段;
匹配单元,用于分别将每个比特段与其对应的协议匹配表进行协议匹配,以得到每个比特段的子解析结果,其中,每个比特段对应一个协议匹配表,不同的比特段对应的协议匹配表不同;
仲裁单元,用于从各个比特段的子解析结果中确定至少一个有效子解析结果,所述有效子解析结果包含从比特段中解析出的分组头协议。
12.根据权利要求11所述的装置,其特征在于,所述提取单元,包括:
分组头片段提取子单元,用于根据全局偏移量确定用于分组头中提取所述多个比特段的起始位置;
比特段提取子单元,用于获取与分组头的当前解析状态对应的多个提取偏移量,以及,根据所述多个提取偏移量从所述分组头的所述起始位置提取所述多个比特段;
其中,所述全局偏移量是根据所述当前解析状态确定的,所述当前解析状态是根据当前已从分组头中解析出的最接近分组头末端的分组头协议确定的。
13.根据权利要求12所述的装置,其特征在于,
所述比特段提取子单元,用于从解析状态表中获取所述多个提取偏移量;
其中,所述解析状态表包括多个表项,每个表项包括多个提取偏移量并且对应一个解析状态。
14.根据权利要求12所述的装置,其特征在于,每个协议匹配表关联一个子解析结果存储表,不同的协议匹配表关联的子解析结果存储表不同。
15.根据权利要求14所述的装置,其特征在于,每个子解析结果存储表包括多个表项,每个表项包括一个子解析结果并且对应一个访存地址。
16.根据权利要求15所述的装置,其特征在于,所述匹配单元,包括:
协议匹配子单元,用于根据每个比特段与其对应的协议匹配表的匹配结果,确定每个比特段的子解析结果在子解析结果存储表中的目标访存地址;
子解析结果获取子单元,用于分别使用每个比特段对应的目标访存地址访存相应子解析结果存储表的目标表项,以得到各个比特段的有效子解析结果。
17.根据权利要求16所述的装置,其特征在于,如果所述目标访存地址在所述子解析存储表中没有对应的目标表项,则相应的比特段具有无效子解析结果。
18.根据权利要求15-17任一项所述的装置,其特征在于,所述子解析结果存储表中的每个表项还包括对应子解析结果的更新偏移量和下个解析状态。
19.根据权利要求18所述的装置,其特征在于,
所述仲裁单元,还用于从所述至少一个有效子解析结果中确定当前解析出的最接近分组头末端的分组头协议,以及,将所述最接近分组头末端的分组头协议对应的更新偏移量与所述全局偏移量相加,作为新的全局偏移量。
20.根据权利要求19所述的装置,其特征在于,
所述仲裁单元,还用于将所述最接近分组头末端的分组头协议对应的下个解析状态作为新的当前解析状态。
21.一种网络设备,其特征在于,包括存储器和处理器;所述存储器和所述处理器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,使所述网络设备执行如权利要求1-10中任一项所述的方法。
22.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在网络设备上运行时,使得所述网络设备执行如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010186164.3A CN113411290A (zh) | 2020-03-17 | 2020-03-17 | 一种分组头解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010186164.3A CN113411290A (zh) | 2020-03-17 | 2020-03-17 | 一种分组头解析方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113411290A true CN113411290A (zh) | 2021-09-17 |
Family
ID=77677143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010186164.3A Pending CN113411290A (zh) | 2020-03-17 | 2020-03-17 | 一种分组头解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113411290A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113595940A (zh) * | 2021-09-28 | 2021-11-02 | 恒生电子股份有限公司 | 分片的发送方法、接收方法和对应装置 |
CN113890904A (zh) * | 2021-09-27 | 2022-01-04 | 新华三信息安全技术有限公司 | 一种报文解析的方法、装置、计算机设备及存储介质 |
CN115134171A (zh) * | 2022-08-30 | 2022-09-30 | 湖南麒麟信安科技股份有限公司 | 隔离网络环境下加密存储报文的方法、装置、系统及介质 |
-
2020
- 2020-03-17 CN CN202010186164.3A patent/CN113411290A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113890904A (zh) * | 2021-09-27 | 2022-01-04 | 新华三信息安全技术有限公司 | 一种报文解析的方法、装置、计算机设备及存储介质 |
CN113890904B (zh) * | 2021-09-27 | 2023-10-27 | 新华三信息安全技术有限公司 | 一种报文解析的方法、装置、计算机设备及存储介质 |
CN113595940A (zh) * | 2021-09-28 | 2021-11-02 | 恒生电子股份有限公司 | 分片的发送方法、接收方法和对应装置 |
CN115134171A (zh) * | 2022-08-30 | 2022-09-30 | 湖南麒麟信安科技股份有限公司 | 隔离网络环境下加密存储报文的方法、装置、系统及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8854996B2 (en) | Accelerating data packet parsing | |
US7308446B1 (en) | Methods and apparatus for regular expression matching | |
US8681819B2 (en) | Programmable multifield parser packet | |
US7539031B2 (en) | Inexact pattern searching using bitmap contained in a bitcheck command | |
US7644080B2 (en) | Method and apparatus for managing multiple data flows in a content search system | |
CN105794172B (zh) | 网络设备和用于在网络设备中处理报文的方法 | |
US7529746B2 (en) | Search circuit having individually selectable search engines | |
CN113411290A (zh) | 一种分组头解析方法及装置 | |
US7539032B2 (en) | Regular expression searching of packet contents using dedicated search circuits | |
US5509006A (en) | Apparatus and method for switching packets using tree memory | |
US7624105B2 (en) | Search engine having multiple co-processors for performing inexact pattern search operations | |
US6862281B1 (en) | L4 lookup implementation using efficient CAM organization | |
US7822875B1 (en) | Method for flexible modifications to a packet | |
US20060039372A1 (en) | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification | |
US20140369363A1 (en) | Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree | |
US7599364B2 (en) | Configurable network connection address forming hardware | |
US20160316045A1 (en) | Method for Coding Packet Classification Key Composition Rules Using Variable Length Commands | |
JP2016001897A (ja) | 反復解析及び分類 | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
US20190052553A1 (en) | Architectures and methods for deep packet inspection using alphabet and bitmap-based compression | |
TWI593256B (zh) | 用於靈活封包分類的方法和系統 | |
US20210185153A1 (en) | Hybrid Fixed/Programmable Header Parser for Network Devices | |
CN110933001B (zh) | 一种可扩展的可重构交换机包解析器基本处理单元结构 | |
CN112187639B (zh) | 一种基于流属性的数据包路径编码的生成方法及系统 | |
US20040083337A1 (en) | Content addressable memory with automated learning |
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 |