CN107707548A - Tlv报文解析方法、装置、电子设备及存储介质 - Google Patents
Tlv报文解析方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN107707548A CN107707548A CN201710916065.4A CN201710916065A CN107707548A CN 107707548 A CN107707548 A CN 107707548A CN 201710916065 A CN201710916065 A CN 201710916065A CN 107707548 A CN107707548 A CN 107707548A
- Authority
- CN
- China
- Prior art keywords
- tlv
- data
- current
- fields
- beat
- 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.)
- Granted
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种TLV报文解析方法、装置、电子设备及存储介质,该方法包括:利用预设多级流水线结构逐级对进入该结构的当前拍数据中各TLV字段进行解析,其中每级流水线解析一个TLV字段得到TLV字段的处理动作信息,前级流水线解析完TLV字段后空闲,以解析下一拍包含报文头的数据;该结构中的最后一级流水线同时输出当前拍数据和各TLV字段的处理动作信息;根据各TLV字段的处理动作信息确定当前拍数据所涉及的TLV报文的最终处理动作。本发明基于多级流水线结构进行TLV报文解析,每级流水线解析一个TLV字段,解析完毕及时释放流水线空间,多级流水线结构可同时处理多个TLV报文,实现TLV报文高带宽处理。
Description
技术领域
本发明实施例涉及报文解析技术,尤其涉及一种TLV报文解析方法、装置、电子设备及存储介质。
背景技术
TLV(Type Length Value,类型长度值)是网络报文中的一种格式,TLV格式的目的是传输一个或多个不定长的字段。其中,Type指定TLV的类型,Length表示TLV的数据部分的长度,Value为数据部分。如图1所示,多个TLV可以串联在一起,构成TLV报文。图2为TLV报文的具体示例,该TLV报文由4个TLV字段构成。TLV在网络中典型的应用是IP(InternetProtocol,网络之间互连的协议)报文头中的Option字段和TCP(Transmission ControlProtocol,传输控制协议)报文头中的Option字段。
TLV报文中每个TLV字段是变长的,因此只能按先后次序解析各TLV字段。先解析第一个TLV字段,得到第二个TLV的起始位置,然后解析第二个TLV字段,得到第三个TLV的起始位置,按此依次解析,直到将所有TLV字段解析完成。在网络报文处理设备中,一般是解析各TLV字段中的Type字段,然后根据对Type字段的配置进行报文过滤操作,转发或丢弃报文。
随着网络报文处理带宽的提高,越来越多的设备采用硬件对报文进行处理,例如,ASIC(Application Specific Integrated Circuit,专用集成电路)或FPGA(FieldProgrammable Gate Array,即现场可编程门阵列)。
现有的利用硬件解析TLV报文有以下两种方式:
(1)转发给CPU(Central Processing Unit,中央处理器)进行软件解析。这种方式比较灵活,但串行处理方式以及CPU本身性能的限制,会导致处理带宽降低。
(2)缓存多拍处理。此方式将整个TLV报文缓存下来,然后对数据进行串行解析,例如一拍处理一个TLV字段,得到Type,查表得到过滤结果,其中一拍是指一个时钟周期。一拍数据内可能有多个TLV字段,这样一拍数据过来,需要多拍才能处理完成,在此期间后续数据需要等待,由此降低了处理带宽。例如,报文包括5个TLV字段,需要5拍处理完毕,到第6拍才可以处理其他报文或数据。
上述两种硬件解析TLV报文的方式均不能满足高带宽处理的要求,高带宽处理需要在一拍之内解析出多个TLV字段,这会导致延迟很大的组合逻辑,特别是在处理时钟速度比较高的时候,会导致时序不满足。
发明内容
本发明提供一种TLV报文解析方法、装置、电子设备及存储介质,以解决现有技术中TLV报文硬件解析方式不能满足高带宽处理要求的问题,实现了对TLV报文的高带宽处理,达到线速处理速度。
第一方面,本发明实施例提供了一种TLV报文解析方法,包括:
利用预设的多级流水线结构逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到所述TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析进入所述多级流水线结构的下一拍包含报文头的数据;
所述多级流水线结构中的最后一级流水线同时输出所述当前拍数据和所述各TLV字段的处理动作信息;
根据所述各TLV字段的处理动作信息确定所述当前拍数据所涉及的TLV报文的最终处理动作。
进一步的,一个TLV报文由多拍数据组成,或者,一个或多个完整的TLV报文构成一拍数据。
进一步的,利用预设的多级流水线结构逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,包括:
如果所述当前拍数据中包括报文头,从第一级流水线开始对所述当前拍数据中各TLV字段进行逐级解析;
如果所述当前拍数据中不包括报文头,所述当前拍数据进入所述多级流水线结构后,逐级传输,并从上一拍数据所使用的最后一级流水线的下一级流水线开始对所述当前拍数据中各TLV字段进行逐级解析。
进一步的,利用预设的多级流水线结构逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,包括:
对于当前级流水线,解析当前TLV字段,得到所述当前TLV字段的类型和下一个TLV字段的起始位置;
读取预设过滤配置信息,在所述预设过滤配置信息中查询所述类型对应的动作,得到所述当前TLV字段的处理动作信息;
对所述当前TLV字段的处理动作信息进行延迟输出处理,使得所述当前TLV字段的处理动作信息经过后续各级流水线后在最后一级流水线与所述当前拍数据同时输出;
将所述下一个TLV字段的起始位置和所述当前拍数据一起传输至下一级流水线。
进一步的,对于当前级流水线,解析当前TLV字段,包括:
获取所述当前TLV字段的起始位置;
按照所述当前TLV字段的起始位置对所述当前TLV字段进行解析;
其中,如果所述当前级流水线为第一级流水线,则从所述当前拍数据的报文头中获取所述当前TLV字段的起始位置;
如果所述当前流水线为非第一级流水线,则从上一级流水线的处理结果中获取所述当前TLV字段的起始位置。
进一步的,利用预设的多级流水线结构逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,以及所述多级流水线结构中的最后一级流水线同时输出所述当前拍数据和所述各TLV字段的处理动作信息,包括:
逐级对进入所述多级流水线结构的TLV报文中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到所述TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析下一个TLV报文;
当所述TLV报文包括多拍数据时,从所述多级流水线结构中的最一后级流水线获取所述TLV报文的每拍数据和所述TLV报文的各TLV字段的处理动作信息。
进一步的,根据所述各TLV字段的处理动作信息确定所述当前拍数据所涉及的TLV报文的最终处理动作,包括:
如果所述当前拍数据中包括拆分标识,等待所述当前拍数据所涉及的TLV报文中所有TLV字段的处理动作信息全部输出后,根据所述所有TLV字段的处理动作信息确定所述TLV报文的最终处理动作;
如果所述当前拍数据中不包括拆分标识,直接根据输出的所述各TLV字段的处理动作信息确定所述当前拍数据所涉及的TLV报文的最终处理动作。
进一步的,根据所述各TLV字段的处理动作信息确定所述当前拍数据所涉及的TLV报文的最终处理动作,包括:
按照预设选择策略从所述TLV报文对应的各TLV字段的处理动作信息中确定所述TLV报文的最终处理动作;
将所述TLV报文的最终处理动作写入所述TLV报文的报文头中。
第二方面,本发明实施例还提供了一种TLV报文解析装置,包括:
多级流水线结构,用于逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到所述TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析进入所述多级流水线结构的下一拍包含报文头的数据;所述多级流水线结构中的最后一级流水线同时输出所述当前拍数据和所述各TLV字段的处理动作信息;
动作确定模块,用于根据所述各TLV字段的处理动作信息确定所述当前拍数据所涉及的TLV报文的最终处理动作。
进一步的,一个TLV报文由多拍数据组成,或者,一个或多个完整的TLV报文构成一拍数据。
进一步的,所述多级流水线结构包括:存储器和多级相同的流水线,所述存储器中存储有预设过滤配置信息;每级流水线均包括:
TLV解析单元,用于解析当前TLV字段,得到所述当前TLV字段的类型和下一个TLV字段的起始位置;读取所述预设过滤配置信息,在所述预设过滤配置信息中查询所述类型对应的动作,得到所述当前TLV字段的处理动作信息;以及将所述下一个TLV字段的起始位置和所述当前拍数据一起传输至下一级流水线;
延迟单元,用于对所述当前TLV字段的处理动作信息进行延迟输出处理,使得所述当前TLV字段的处理动作信息经过后续各级流水线后在最后一级流水线与所述当前拍数据同时输出。
第三方面,本发明实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如本发明任意实施例所述的TLV报文解析方法。
第四方面,本发明实施例还提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本发明任意实施例所述的TLV报文解析方法。
本发明基于多级流水线结构进行TLV报文解析,每级流水线解析一个完整的TLV字段,TLV字段解析完毕后释放该流水线空间,而非一直占用该流水线,利用流水线逐级传输,最后一级流水线同时输出当前拍数据和各TLV字段的处理动作信息,前后级流水线互不影响,前级空闲的流水线可以解析下一拍包含报文头的数据,因此多级流水线结构可以同时处理多个TLV报文。该方法适合宽数据总线、线速处理的场合,能够达到线速处理速度,实现了对TLV报文的高带宽处理,解决了现有技术中TLV报文硬件解析方式不能满足高带宽处理要求的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的TLV格式示意图;
图2是现有技术中的TLV格式的具体示例图;
图3是本发明实施例一提供的TLV报文解析方法的流程图;
图4是本发明实施例二提供的TLV报文解析方法中单级流水线解析TLV字段的流程图;
图5是本发明实施例三提供的分拍传输并解析TLV报文的示意图;
图6是本发明实施例四提供的TLV报文解析装置的结构示意图;
图7是本发明实施例四提供的TLV报文解析装置的另一结构示意图;
图8是本发明实施例四提供的TLV报文解析方法及装置的应用场景示意图;
图9是本发明实施例五提供的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
高速报文处理具有两个典型特点:1)宽数据总线:为了增加处理能力,芯片内部一般采用较高的数据总线,例如128位宽或256位宽的数据总线,导致一拍数据内可能有多个TLV字段存在;2)线速处理:为增加处理能力,芯片内部要有进行线速处理的能力,即每拍都有新的数据进来。而现有技术中的软件解析方式和缓存多拍处理方式,均不适合宽数据总线和线速处理的场合,不能满足高带宽处理要求。因此,本发明实施例提供了一种基于流水线的TLV报文解析方案。
实施例一
图3是本发明实施例一提供的TLV报文解析方法的流程图,本实施例可适用于解析TLV报文的情况,尤其是硬件解析TLV报文,该方法可以由TLV报文解析装置来执行。如图3所示,该方法具体包括如下步骤:
步骤310,利用预设的多级流水线结构逐级对进入该多级流水线结构的当前拍数据中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到该TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析进入该多级流水线结构的下一拍包含报文头的数据。
其中,多级流水线结构是基于硬件实现的,例如ASIC或FPGA。流水线级数可以根据协议要求的最大报文长度或者最多TLV字段个数进行设置,例如,协议要求报文中最多有10个TLV字段,则流水线级数可以设置为10,或者小于10。各级流水线所包括的模块和所执行的操作是相同的。
数据一拍一拍地进入多级流水线结构,一拍是一个时钟周期,一拍数据是指一个时钟周期所传输的数据。一个时钟周期能够传输的数据位数受数据总线位宽限制,每拍数据的最大长度为数据总线位宽,例如,数据总线位宽为128bit,则每拍数据最大长度为128bit。因此,长度大于数据总线位宽的TLV报文需要拆分成多拍数据进行传输和解析,即一个TLV报文由多拍数据组成。长度小于数据总线位宽的TLV报文可以直接在一拍数据中传输,即一个完整的TLV报文构成一拍数据,当然,在有些情况下,多个完整的TLV报文也可以构成一拍数据。
上述处理动作信息包括:TLV字段的类型及类型对应的处理动作。TLV报文可能包括一个或多个TLV字段,不管该TLV报文是使用一拍数据传输完毕,还是拆分为多拍数据传输,逐级使用与TLV字段个数相等的流水线级数,即可完成对该TLV报文的解析。例如,TLV报文包括10个TLV字段,那么使用前10级流水线可以将该TLV报文解析完毕,得到每个TLV字段的处理动作信息;如果流水线级数一共15级,那么最后5级流水线不进行解析操作,直接将数据向后级流水线传输,具体可以是第10级流水线解析完毕后,发送解析完毕消息告知第11级流水线,并逐级向后级流水线传输该消息,而数据及各TLV字段的处理动作信息直接通过这几级流水线从最后一级流水线同时输出。
前级流水线解析完当前拍数据中的TLV字段后变为空闲,从而可以解析下一拍包含报文头的数据,由此,多级流水线结构中可以同时处理多个TLV报文。
步骤320,多级流水线结构中的最后一级流水线同时输出当前拍数据和各TLV字段的处理动作信息。
其中,当前拍数据进入多级流水线结构,从第一级流水线逐级传输至最后一级流水线输出,以逐级解析当前拍数据中的各TLV字段。在最后一级流水线同时输出当前拍数据及其各TLV字段的处理动作信息,能够保证当前拍数据与处理动作信息的对应关系。具体可以通过各级流水线的延迟处理实现最终的同时输出。
步骤330,根据各TLV字段的处理动作信息确定当前拍数据所涉及的TLV报文的最终处理动作。
其中,如果当前拍数据包括完整的TLV报文,则可以直接根据各TLV字段的处理动作信息确定该TLV报文的最终处理动作。如果当前拍数据是一个TLV报文拆分出来的部分数据,则需要等待该TLV报文的其他拍数据解析完毕后,根据该TLV报文所有TLV字段的处理动作信息,确定该TLV报文的最终处理动作。确定TLV报文的最终处理动作后,可以按照最终动作处理该TLV报文,例如,丢弃或者转发。
本实施例的技术方案,基于多级流水线结构进行TLV报文解析,每级流水线解析一个完整的TLV字段,TLV字段解析完毕释放该流水线空间,而非一直占用该流水线,利用流水线逐级传输,最后一级流水线同时输出当前拍数据和各TLV字段的处理动作信息,前后级流水线互不影响,前级空闲的流水线可以解析下一拍包含报文头的数据,因此多级流水线结构可以同时处理多个TLV报文。该方法适合宽数据总线、线速处理的场合,能够达到线速处理速度,实现了对TLV报文的高带宽处理,解决了现有技术中TLV报文硬件解析方式不能满足高带宽处理要求的问题。
需要说明的是,每个TLV报文都包括报文头,报文头包括:源端口、目的端口、报文总长度、第一个TLV字段的起始位置等信息,报文头也可称为包描述信息(Description)。
具体的,逐级对进入多级流水线结构的当前拍数据中各TLV字段进行解析,包括:
如果当前拍数据中包括报文头,表示有新的TLV报文进入多级流水线结构,从第一级流水线开始对当前拍数据中各TLV字段进行逐级解析;
如果当前拍数据中不包括报文头,表示这拍数据是TLV报文拆分得到的数据,当前拍数据进入多级流水线结构后,逐级传输,并从上一拍数据所使用的最后一级流水线的下一级流水线开始对当前拍数据中各TLV字段进行逐级解析。
考虑到网络传输延迟,对于一个TLV报文由多拍数据组成的情况,这多拍数据中可能插入其他数据,导致这多拍数据不能依序连续进入多级流水线结构,从而无法确定哪几拍数据属于同一个TLV报文。在一个实施方式中,拆分TLV报文时,在其各拍数据中设置拆分标识,从而可以明确数据与TLV报文的关系。具体的,拆分标识可以包括:报文标识和拍数标识,例如,TLV报文拆分为两拍数据,第一拍数据中包括报文头及拆分标识L1,第二拍数据包括拆分标识L2,其中,L用于表示TLV报文,数字1、2用于表示该TLV报文的第几拍数据。
进一步的,步骤330包括:如果当前拍数据中包括拆分标识,等待所述当前拍数据所涉及的TLV报文中所有TLV字段的处理动作信息全部输出后,根据所有TLV字段的处理动作信息确定该TLV报文的最终处理动作;如果当前拍数据中不包括拆分标识,直接根据输出的各TLV字段的处理动作信息确定当前拍数据所涉及的TLV报文的最终处理动作。
在上述技术方案的基础上,进一步的,步骤330包括:按照预设选择策略从TLV报文对应的各TLV字段的处理动作信息中确定该TLV报文的最终处理动作。其中,预设选择策略可以是选择优先级高的TLV字段的处理动作信息作为最终处理动作,也可以按照时间先后选择时间最早的处理动作信息作为最终处理动作等。选择策略可以是工作人员预先设置,也可以是用户自定义。
可选的,步骤330还可以包括:将TLV报文的最终处理动作写入该TLV报文的报文头中。将最终处理动作写入TLV报文的报文头中,能够为后续的报文处理过程提供参考。
对于一个TLV报文使用一拍数据传输完毕的情况,进入多级流水线结构的一拍数据就是一个完整的TLV报文,此时,步骤310和步骤320具体如下:逐级对进入多级流水线结构的TLV报文中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到该TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析下一个TLV报文;当所述TLV报文包括多拍数据时,从所述多级流水线结构中的最一后级流水线获取所述TLV报文的每拍数据和所述TLV报文的各TLV字段的处理动作信息。根据各TLV字段的处理动作信息确定该TLV报文的最终处理动作。
实施例二
在上述实施例的基础上,本实施例提供了单级流水线解析TLV字段的具体实施过程,多级流水线结构中每一级流水线都执行同样的操作。图4是本发明实施例二提供的TLV报文解析方法中单级流水线解析TLV字段的流程图,如图4所示,包括:
步骤410,对于当前级流水线,解析当前TLV字段,得到当前TLV字段的类型和下一个TLV字段的起始位置。
其中,TLV字段中的Type和Length均为固定长度,从TLV字段的起始位置开始,读取第一固定长度(例如2字节)即读到Type,继续读取第二固定长度(例如1字节)即读到了Length,然后根据读到的Length值(例如3字节)读取Value,由此能够得到下一个TLV字段的起始位置。
具体的,解析当前TLV字段包括:获取当前TLV字段的起始位置,按照当前TLV字段的起始位置对当前TLV字段进行解析。其中,如果当前级流水线为第一级流水线,则从当前拍数据的报文头中获取当前TLV字段的起始位置;如果当前流水线为非第一级流水线,则从上一级流水线的处理结果中获取当前TLV字段的起始位置。流水线的处理结果包括:该级流水线解析得到的下一个TLV字段的起始位置以及该级流水线查询得到的当前TLV字段的处理动作信息。
步骤420,读取预设过滤配置信息,在预设过滤配置信息中查询当前TLV字段的类型对应的动作,得到当前TLV字段的处理动作信息。
其中,预设过滤配置信息至少包括:类型及其对应的动作。在实际应用中,可以存储一过滤配置表,每一级流水线均读取该过滤配置表,以查询得到类型对应的动作,这一查询过程可称为查表操作。
步骤430,对当前TLV字段的处理动作信息进行延迟输出处理,使得当前TLV字段的处理动作信息经过后续各级流水线后在最后一级流水线与当前拍数据同时输出。
其中,每一级流水线得到的TLV字段的处理动作信息,均与传输到该级流水线的当前拍数据延迟对齐,具体的,利用流水线逐级延迟传输,处理动作信息与当前拍数据从最后一级流水线同时输出,也就是说,到最终输出时,每一级得到的处理动作信息与该级流水线的当前拍数据延迟相同拍数,从而将处理动作信息和当前拍数据对齐。具体的延迟拍数是当前级到最后一级所经历的时钟周期。由此可见,前级流水线延迟拍数比后级流水线延迟拍数要多。
步骤440,将下一个TLV字段的起始位置和当前拍数据一起传输至下一级流水线。
其中,将下一个TLV字段的起始位置和当前拍数据一起传输至下一级流水线,使得下一级流水线可以按照接收到的下一个TLV字段的起始位置解析当前拍数据中下一个TLV字段。
本实施例中,每级流水线解析一个完整的TLV字段,即每级流水线解析TLV字段中的Type,并查表给出处理动作信息,实现了TLV字段的解析;将处理动作信息与当前拍数据对齐输出,保证处理动作信息与当前拍数据的对应关系。单级流水线处理完当前TLV字段后,及时得到释放,变为空闲,以便解析下一拍包含报文头的数据,由此多级流水线能够同时处理多个报文,满足高带宽处理要求。
在上述技术方案的基础上,考虑到下一级流水线的查询操作可能会用到上级流水线处理结果中的处理动作信息,因此,在步骤440将下一个TLV字段的起始位置和当前拍数据一起传输至下一级流水线之前,可以将当前TLV字段的处理动作信息写入当前拍数据涉及的TLV报文的报文头中,以便于下级流水线参考使用。
实施例三
在上述各实施例的基础上,考虑到数据总线位宽是固定的(例如128bit或256bit等),TLV报文的长度可能会超过数据总线位宽,此时将TLV报文拆分成多拍数据进行传输和解析。本实施例提供了上述情况下拆分传输并逐级解析TLV报文的过程。与上述实施例相同或相应的术语解释和步骤过程,本实施例不再赘述。
如果TLV报文的长度超过数据总线位宽,按照数据总线位宽将TLV报文拆分成至少两拍数据,至少两拍数据依序进入多级流水线结构,以进行逐级解析。其中,每拍数据的最长长度为数据总线位宽,最后一拍数据的长度可能小于数据总线位宽。每拍数据均可能包括一个或多个TLV字段。
每级流水线解析一个TLV字段,当前拍数据中各TLV字段的处理动作信息均与当前拍数据延迟对齐,从最后一级流水线同时输出。TLV报文中所有TLV字段的处理动作信息均输出后,根据所有TLV字段的处理动作信息确定TLV报文的最终处理动作。
示例性的,如图5所示,数据总线位宽为128bit,TLV报文分为两拍数据A和B,长度分别为128bit和90bit,A包括2个TLV字段(TLV0和TLV1),B包括1个TLV字段(TLV2)。数据A和B依序进入多级流水线结构(级数为4),每级流水线解析1个TLV字段,第1级流水线解析TLV0,得到处理动作信息1;第2级流水线解析TLV1,得到处理动作信息2;第3级流水线解析TLV2,得到处理动作信息3。
输出时,处理动作信息和对应的数据进行对齐。每经过一级流水线延迟一拍。处理动作信息1与第1级流水线的数据A均延迟3拍,到达第4级流水线同时输出。处理动作信息2与第2级流水线的数据A均延迟2拍,到达第4级流水线同时输出。处理动作信息3与第3级流水线的数据B均延迟1拍,到达第4级流水线同时输出。其中,数据B及处理动作信息3的输出时间比数据A及处理动作信息1、2的输出时间延迟,因为数据B进入多级流水线结构的时间晚于数据A。前两级流水线已经对数据A解析完毕,第3级流水线和第4级流水线对数据A不进行解析处理,直接传输;数据B不包括报文头,并非一个新的TLV报文,第1级流水线和第2级流水线对数据B不进行解析处理,直接传输,传输到第3级流水线时,第3级流水线根据第2级流水线解析TLV1时传输的TLV2起始位置解析TLV2。
具体的,动作确定模块接收到数据A的处理动作信息1、2后,可以根据预设选择策略从中选择出一个处理动作a,接收到数据B的处理动作信息3后,再根据预设选择策略从处理动作信息3和处理动作a中选择出TLV报文的最终处理动作。由此能够节省选择最终处理动作所花费的时间。
在另一示例中,进入多级流水线结构(级数为4)的一拍数据为一个完整的TLV报文,该TLV报文包括3个TLV字段(TLV0、TLV1和TLV2)。第1级流水线解析TLV0,得到处理动作信息1;第2级流水线解析TLV1,得到处理动作信息2;第3级流水线解析TLV2,得到处理动作信息3;且第3级流水线同时输出这拍数据和各级流水线得到的处理动作信息。动作确定模块根据预设选择策略选择出一个处理动作,作为该TLV报文的最终处理动作。
在又一示例中,进入多级流水线结构(级数为4)的一拍数据包括两个完整的TLV报文,第一个TLV报文包括1个TLV字段(TLV0),第二个TLV报文包括1个TLV字段(TLV1)。第1级流水线解析TLV0,得到处理动作信息1;第2级流水线解析TLV1,得到处理动作信息2;第3级流水线同时输出这拍数据和前两级流水线得到的处理动作信息。由于TLV报文只包括一个TLV字段,动作确定模块将该TLV报文对应的处理动作,作为该TLV报文的最终处理动作。
实施例四
本实施例提供了一种TLV报文解析装置,本实施例可适用于解析TLV报文的情况,尤其是硬件解析TLV报文。图6是本发明实施例四提供的TLV报文解析装置的结构示意图,如图6所示,该装置具体包括:
多级流水线结构10,用于逐级对进入该多级流水线结构的当前拍数据中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到该TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析进入该多级流水线结构的下一拍包含报文头的数据;多级流水线结构中的最后一级流水线同时输出当前拍数据和各TLV字段的处理动作信息;
动作确定模块20,用于根据各TLV字段的处理动作信息确定当前拍数据所涉及的TLV报文的最终处理动作。
其中,一个TLV报文由多拍数据组成,或者,一个或多个完整的TLV报文构成一拍数据。
进一步的,多级流水线结构10包括:存储器200和多级相同的流水线100,图6中N表示流水线级数。
存储器200中存储有预设过滤配置信息。多级流水线100均从存储器200中读取同一个过滤配置表201,以进行查表操作,因此需要将过滤配置表201进行复制,具体的,存储器200可以是包括一个写端口以及多个读端口的RAM(Random Access Memory,随机存取存储器)。需要说明的是,图6中的过滤配置表201并不是属于流水线100中的具体模块结构,而是为了体现多级流水线均从存储器200中读取同一个过滤配置表。
每级流水线100均包括:
TLV解析单元101,用于解析当前TLV字段,得到当前TLV字段的类型和下一个TLV字段的起始位置;读取预设过滤配置信息,在预设过滤配置信息中查询当前TLV字段的类型对应的动作,得到当前TLV字段的处理动作信息;以及将下一个TLV字段的起始位置和当前拍数据一起传输至下一级流水线;
延迟单元102,用于对当前TLV字段的处理动作信息进行延迟输出处理,使得当前TLV字段的处理动作信息经过后续各级流水线后在最后一级流水线与当前拍数据同时输出。
其中,TLV解析单元101具体用于:获取当前TLV字段的起始位置;按照当前TLV字段的起始位置对当前TLV字段进行解析。其中,如果当前级流水线为第一级流水线,则从当前拍数据的报文头中获取当前TLV字段的起始位置;如果当前流水线为非第一级流水线,则从上一级流水线的处理结果中获取当前TLV字段的起始位置;按照当前TLV字段的起始位置对当前TLV字段进行解析。
需要说明的是,第一级流水线的TLV解析单元101还用于:判断当前拍数据中是否包括报文头。如果当前拍数据中包括报文头,从第一级流水线开始对当前拍数据中各TLV字段进行逐级解析;如果当前拍数据中不包括报文头,当前拍数据进入多级流水线结构后,逐级传输,并从上一拍数据所使用的最后一级流水线的下一级流水线开始对当前拍数据中各TLV字段进行逐级解析。
TLV解析单元101还用于:将当前TLV字段的处理动作信息写入TLV报文的报文头中。
对于设置拆分标识的场景,动作确定模块20还用于:判断当前拍数据中是否包括拆分标识。如果当前拍数据中包括拆分标识,等待当前拍数据所涉及的TLV报文中所有TLV字段的处理动作信息全部输出后,根据所有TLV字段的处理动作信息确定TLV报文的最终处理动作;如果当前拍数据中不包括拆分标识,直接根据输出的各TLV字段的处理动作信息确定当前拍数据所涉及的TLV报文的最终处理动作。
进一步的,动作确定模块20具体用于:按照预设选择策略从TLV报文对应的各TLV字段的处理动作信息中确定该TLV报文对应的最终处理动作。
可选的,动作确定模块20还用于:将TLV报文的最终处理动作写入该TLV报文的报文头中。
对于一个TLV报文使用一拍数据传输完毕的情况下,进入多级流水线结构10的一拍数据就是一个完整的TLV报文,此时,逐级对进入多级流水线结构10的TLV报文中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到该TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析下一个TLV报文;多级流水线结构10中的最后一级流水线N同时输出该TLV报文和各TLV字段的处理动作信息。动作确定模块20根据各TLV字段的处理动作信息确定该TLV报文的最终处理动作。
在上述技术方案中,报文头随着TLV报文一起在TLV解析单元101中传输,当然,还可以使用单独的延迟单元执行报文头的逐级传输,便于向报文头中添加内容。具体的,如图7所示,在每级流水线中增加包信息延迟单元103,包描述信息和同级流水线的数据延迟相同拍数,实现输出对齐。当然,考虑到有的TLV报文中后面TLV字段的解析需要使用到前面TLV字段的处理结果,因此,每级流水线中,包信息延迟单元103均可以连接至TLV解析单元101,以完成包描述信息的修改,图中未示出此连接关系。
本发明实施例所提供的TLV报文解析装置可执行本发明任意实施例所提供的TLV报文解析方法,具备执行方法相应的功能模块和有益效果。
需要说明的是,上述多级流水线结构10可以基于硬件实现,例如基于ASIC或FPGA实现。示例性的,TLV解析单元101可以通过具有读取功能和处理功能的器件实现,延迟单元102和包信息延迟单元103可以通过延迟电路实现。动作确定模块20也可以通过硬件实现,例如通过比较器实现。
值得注意的是,上述TLV报文解析装置中所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
上述TLV报文解析方法及装置可以应用于网络协议处理和包交换网络的多种场景,具体可以应用于网络交换设备和防火墙设备中。示例性的,在防火墙设备中需要对报文进行各种特征的分析与过滤,其中就包括IP Option和TCP Option字段,如图8所示,为一场景示例,展示的是防火墙芯片的简要框图,从图8中可看到IP Option和TCP Option字段的处理属于攻击防御模块,其功能就是根据处理器过滤配置表对TLV格式的报文进行过滤,从而防止Type字段异常的报文进入网络。本发明对图8中与TLV解析无关的模块不进行解释,具体可参见现有技术。ACL是Access Control List的缩写,其含义是访问控制列表。
实施例五
图9是本发明实施例五提供的一种电子设备的结构示意图,如图9所示,该电子设备包括:处理器910、存储器920和通信装置930;电子设备中处理器910的数量可以是一个或多个,图9中以一个处理器910为例;电子设备中的处理器910、存储器920和通信装置930可以通过总线或其他方式连接,图9中以通过总线连接为例。
存储器920作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的TLV报文解析方法对应的程序指令/模块(例如,TLV报文解析装置中的多级流水线结构10和动作确定模块20)。处理器910通过运行存储在存储器920中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的TLV报文解析方法。
存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器920可进一步包括相对于处理器910远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置930用于进行数据或报文的收发。
实施例六
本发明实施例四还提供一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如本发明任意实施例所述的TLV报文解析方法。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种TLV报文解析方法,其特征在于,包括:
利用预设的多级流水线结构逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到所述TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析进入所述多级流水线结构的下一拍包含报文头的数据;
所述多级流水线结构中的最后一级流水线同时输出所述当前拍数据和所述各TLV字段的处理动作信息;
根据所述各TLV字段的处理动作信息确定所述当前拍数据所涉及的TLV报文的最终处理动作。
2.根据权利要求1所述的方法,其特征在于,利用预设的多级流水线结构逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,包括:
如果所述当前拍数据中包括报文头,从第一级流水线开始对所述当前拍数据中各TLV字段进行逐级解析;
如果所述当前拍数据中不包括报文头,所述当前拍数据进入所述多级流水线结构后,逐级传输,并从上一拍数据所使用的最后一级流水线的下一级流水线开始对所述当前拍数据中各TLV字段进行逐级解析。
3.根据权利要求1或2所述的方法,其特征在于,利用预设的多级流水线结构逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,包括:
对于当前级流水线,解析当前TLV字段,得到所述当前TLV字段的类型和下一个TLV字段的起始位置;
读取预设过滤配置信息,在所述预设过滤配置信息中查询所述类型对应的动作,得到所述当前TLV字段的处理动作信息;
对所述当前TLV字段的处理动作信息进行延迟输出处理,使得所述当前TLV字段的处理动作信息经过后续各级流水线后在最后一级流水线与所述当前拍数据同时输出;
将所述下一个TLV字段的起始位置和所述当前拍数据一起传输至下一级流水线。
4.根据权利要求3所述的方法,其特征在于,对于当前级流水线,解析当前TLV字段,包括:
获取所述当前TLV字段的起始位置;
按照所述当前TLV字段的起始位置对所述当前TLV字段进行解析;
其中,如果所述当前级流水线为第一级流水线,则从所述当前拍数据的报文头中获取所述当前TLV字段的起始位置;
如果所述当前流水线为非第一级流水线,则从上一级流水线的处理结果中获取所述当前TLV字段的起始位置。
5.根据权利要求1所述的方法,其特征在于,利用预设的多级流水线结构逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,以及所述多级流水线结构中的最后一级流水线同时输出所述当前拍数据和所述各TLV字段的处理动作信息,包括:
逐级对进入所述多级流水线结构的TLV报文中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到所述TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析下一个TLV报文;
当所述TLV报文包括多拍数据时,从所述多级流水线结构中的最一后级流水线获取所述TLV报文的每拍数据和所述TLV报文的各TLV字段的处理动作信息。
6.根据权利要求1所述的方法,其特征在于,根据所述各TLV字段的处理动作信息确定所述当前拍数据所涉及的TLV报文的最终处理动作,包括:
按照预设选择策略从所述TLV报文对应的各TLV字段的处理动作信息中确定所述TLV报文的最终处理动作;
将所述TLV报文的最终处理动作写入所述TLV报文的报文头中。
7.一种TLV报文解析装置,其特征在于,包括:
多级流水线结构,用于逐级对进入所述多级流水线结构的当前拍数据中各TLV字段进行解析,其中,每级流水线解析一个TLV字段,得到所述TLV字段的处理动作信息,前级流水线解析完TLV字段后变为空闲,以解析进入所述多级流水线结构的下一拍包含报文头的数据;所述多级流水线结构中的最后一级流水线同时输出所述当前拍数据和所述各TLV字段的处理动作信息;
动作确定模块,用于根据所述各TLV字段的处理动作信息确定所述当前拍数据所涉及的TLV报文的最终处理动作。
8.根据权利要求7所述的装置,其特征在于,所述多级流水线结构包括:存储器和多级相同的流水线,所述存储器中存储有预设过滤配置信息;
每级流水线均包括:
TLV解析单元,用于解析当前TLV字段,得到所述当前TLV字段的类型和下一个TLV字段的起始位置;读取所述预设过滤配置信息,在所述预设过滤配置信息中查询所述类型对应的动作,得到所述当前TLV字段的处理动作信息;以及将所述下一个TLV字段的起始位置和所述当前拍数据一起传输至下一级流水线;
延迟单元,用于对所述当前TLV字段的处理动作信息进行延迟输出处理,使得所述当前TLV字段的处理动作信息经过后续各级流水线后在最后一级流水线与所述当前拍数据同时输出。
9.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令用于执行如权利要求1至6中任一所述的TLV报文解析方法。
10.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至6中任一所述的TLV报文解析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710916065.4A CN107707548B (zh) | 2017-09-30 | 2017-09-30 | Tlv报文解析方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710916065.4A CN107707548B (zh) | 2017-09-30 | 2017-09-30 | Tlv报文解析方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107707548A true CN107707548A (zh) | 2018-02-16 |
CN107707548B CN107707548B (zh) | 2020-06-23 |
Family
ID=61184005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710916065.4A Active CN107707548B (zh) | 2017-09-30 | 2017-09-30 | Tlv报文解析方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107707548B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111131159A (zh) * | 2019-11-22 | 2020-05-08 | 中国人民解放军国防科技大学 | 一种报文解析器及其设计方法 |
CN112202670A (zh) * | 2020-09-04 | 2021-01-08 | 烽火通信科技股份有限公司 | 一种SRv6段路由转发方法及装置 |
US11758027B2 (en) | 2022-01-28 | 2023-09-12 | Avago Technologies International Sales Pte. Limited | Efficient TLV style header parsing and editing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103997469A (zh) * | 2014-05-27 | 2014-08-20 | 华为技术有限公司 | 一种网络处理器配置方法以及网络处理器 |
CN104049955A (zh) * | 2014-06-27 | 2014-09-17 | 浪潮(北京)电子信息产业有限公司 | Cache一致性多级流水线处理方法及装置 |
US20170180273A1 (en) * | 2015-12-22 | 2017-06-22 | Daniel Daly | Accelerated network packet processing |
CN106961445A (zh) * | 2017-04-28 | 2017-07-18 | 中国人民解放军信息工程大学 | 基于fpga硬件并行流水线的报文解析方法及其装置 |
-
2017
- 2017-09-30 CN CN201710916065.4A patent/CN107707548B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103997469A (zh) * | 2014-05-27 | 2014-08-20 | 华为技术有限公司 | 一种网络处理器配置方法以及网络处理器 |
CN104049955A (zh) * | 2014-06-27 | 2014-09-17 | 浪潮(北京)电子信息产业有限公司 | Cache一致性多级流水线处理方法及装置 |
US20170180273A1 (en) * | 2015-12-22 | 2017-06-22 | Daniel Daly | Accelerated network packet processing |
CN106961445A (zh) * | 2017-04-28 | 2017-07-18 | 中国人民解放军信息工程大学 | 基于fpga硬件并行流水线的报文解析方法及其装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111131159A (zh) * | 2019-11-22 | 2020-05-08 | 中国人民解放军国防科技大学 | 一种报文解析器及其设计方法 |
CN112202670A (zh) * | 2020-09-04 | 2021-01-08 | 烽火通信科技股份有限公司 | 一种SRv6段路由转发方法及装置 |
US11758027B2 (en) | 2022-01-28 | 2023-09-12 | Avago Technologies International Sales Pte. Limited | Efficient TLV style header parsing and editing |
EP4220426A3 (en) * | 2022-01-28 | 2023-10-11 | Avago Technologies International Sales Pte. Limited | Efficient tlv style header parsing and editing |
Also Published As
Publication number | Publication date |
---|---|
CN107707548B (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10320713B2 (en) | Packet data traffic management apparatus | |
JP5221685B2 (ja) | 通信ネットワークの直列データバスを介して当該ネットワークの加入者に到着したメッセージをフィルタリングするための方法及びフィルタ構成 | |
CN110545241B (zh) | 一种报文处理方法和装置 | |
CN107707548A (zh) | Tlv报文解析方法、装置、电子设备及存储介质 | |
US9537776B2 (en) | Ethernet traffic management apparatus | |
JP2001251351A (ja) | パケット交換機における入力パケット処理方式 | |
JPWO2008149415A1 (ja) | パケットスイッチ装置 | |
CN105359472B (zh) | 一种用于OpenFlow网络的数据处理方法和装置 | |
WO2014135038A1 (zh) | 基于pcie总线的报文传输方法与装置 | |
JPWO2014115207A1 (ja) | バスインタフェース装置、中継装置、およびそれらを備えたバスシステム | |
CN102035738A (zh) | 一种获取路由信息的方法及装置 | |
US20220393908A1 (en) | Message Encapsulation Method and Apparatus, and Message Decapsulation Method and Apparatus | |
CN111211990B (zh) | 一种数据包处理方法和装置 | |
CN114827292B (zh) | 工业异构协议高速转换优化处理方法及系统 | |
CN102014065A (zh) | 报文包头的解析方法、包头解析预处理装置和网络处理器 | |
CN115883681A (zh) | 报文解析方法、装置、电子设备及存储介质 | |
CN114327833A (zh) | 一种基于软件定义复杂规则的高效流量处理方法 | |
CN102546399B (zh) | 一种智能变电站过程层报文线性处理方法 | |
US9137158B2 (en) | Communication apparatus and communication method | |
KR20080083827A (ko) | Tcp 상태 기반 패킷 필터 장치 및 그 방법 | |
CN102364455B (zh) | 一种级联多核cpu间vcpu均衡分担控制方法及其装置 | |
CN115904488A (zh) | 数据传输方法、系统、装置及设备 | |
Grewe et al. | BloomyCAN: Probabilistic data structures for software-defined controller area networks | |
JP5581995B2 (ja) | メッセージ受信装置およびマイクロコントローラ | |
CN111385222B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |