报文解析方法、装置、设备及计算机可读存储介质与流程

文档序号:18981491发布日期:2019-10-29 03:48阅读:212来源:国知局
报文解析方法、装置、设备及计算机可读存储介质与流程

本发明涉及网络通信领域,尤其涉及一种报文解析方法、装置、设备及计算机可读存储介质。



背景技术:

随着网络通信技术的发展,特别是5g移动互联网、物联网和电信级以太网技术逐渐成熟,产生了大量新业务接入到网络中,如远程教育、远程医疗、数据中心、自动驾驶和人工智能等。这些新业务对网络的需求各不相同,例如远程医疗和自动驾驶需要低延时、大带宽和高可靠,而数据中心不同用户需要的代价不一样,有的用户需要高带宽低延迟,有的用户需要低成本等。现有tcp/ip的网络协议不能够满足新业务发展的需要,因此新业务可能会在原来的网络协议上新增一些字段来满足新业务的需要,或者构建一套新的协议来满足新业务的发展。

传统的数字通信网络中交换设备对报文的解析过程是,根据协议定义的字段在事先约定好的位置上提取报文的关键字段,然后再根据关键字段进行路由和网络资源分配等,即传统解析方法只能解析固定格式的报文。而新业务的发展需要,在原来的网络协议上新增字段或构建新协议,会使得报文中关键字段的位置变化,即出现各种新格式的报文,传统的解析方法无法解析不同格式的报文,因此不能满足远程教育、远程医疗、数据中心、自动驾驶和人工智能等新业务发展的需要。



技术实现要素:

本发明的主要目的在于提供一种报文解析方法、装置、设备及计算机可读存储介质,旨在解决目前传统的报文解析方式不能满足新业务新增字段或新协议的需要的技术问题。

为实现上述目的,本发明提供一种报文解析方法,所述报文解析方法应用于网络交换设备所述报文解析方法包括步骤:

当接收到待解析报文后,按照预设的初始偏移地址在所述待解析报文中提取待匹配关键字段;

根据预设的初始状态值和所述待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令;

根据所述下一偏移地址在所述待解析报文中提取新的待匹配关键字段,并根据所述下一状态值和所述新的待匹配关键字段在所述预设数据库中进行匹配,循环直到匹配到的所述下一状态值为预设的结束状态值;

根据每次循环匹配到的所述操作指令从所述待解析报文中提取目标数据字段作为解析结果进行存储。

可选地,所述根据预设的初始状态值和所述待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令的步骤包括:

将所述初始状态值和所述待匹配关键字段组合得到待匹配条目;

将所述待匹配条目与所述预设数据库的规则条目表中各规则条目逐一进行匹配;

若成功匹配到目标规则条目,则从所述预设数据库的解析处理动作表中,获取与所述目标规则条目关联的下一状态值、下一偏移地址和操作指令。

可选地,所述规则条目表中各规则条目包括掩码位,各所述规则条目除掩码位以外的比特位为非掩码位,

所述将所述待匹配条目与所述预设数据库的规则条目表中各规则条目逐一进行匹配的步骤包括:

逐次从所述规则条目表中获取规则条目作为初选规则条目;

比较所述初选规则条目和所述待匹配条目的各非掩码位是否对应相同;

将与所述待匹配条目的各非掩码位均对应相同的初选规则条目,确定为所述目标规则条目。

可选地,所述报文解析方法还包括:

接收输入的待添加规则条目、待添加状态值、待添加偏移地址值和待添加操作指令;

将所述待添加规则条目添加至所述规则条目表中;

将所述待添加状态值、所述待添加偏移地址值和所述待添加操作指令与所述待添加规则条目进行关联后,添加至所述解析处理动作表中。

可选地,所述根据所述下一偏移地址在所述待解析报文中提取新的待匹配关键字段的步骤包括:

将所述下一偏移地址与所述初始偏移地址相加得到新的偏移地址;

根据所述新的偏移地址在所述待解析报文中提取新的待匹配关键字段。

可选地,所述根据每次循环匹配到的所述操作指令从所述待解析报文中提取目标数据字段作为解析结果进行存储的步骤包括:

执行每次循环时匹配到的所述操作指令,以将所述待解析报文中的目标数据字段搬移到所述网络交换设备的描述符总线上,其中,所述操作指令中携带所述目标数据字段的数据偏移地址。

可选地,所述按照预设初始偏移地址在所述待解析报文中提取待匹配关键字段的步骤之前,还包括:

当接收到所述待解析报文后,确定所述待解析报文的接收端口;

从所述接收端口的寄存器中获取预先配置的所述初始偏移地址和所述初始状态值。

此外,为实现上述目的,本发明还提供一种报文解析装置,所述报文解析装置部署于网络交换设备,所述报文解析装置包括:

提取模块,用于当接收到待解析报文后,按照预设的初始偏移地址在所述待解析报文中提取待匹配关键字段;

匹配模块,用于根据预设的初始状态值和所述待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令;

所述提取模块,还用于根据所述下一偏移地址在所述待解析报文中提取新的待匹配关键字段;

所述匹配模块,还用于根据所述下一状态值和所述新的待匹配关键字段在所述预设数据库中进行匹配,循环直到匹配到的所述下一状态值为预设的结束状态值;

存储模块,用于根据每次循环匹配到的所述操作指令从所述待解析报文中提取目标数据字段作为解析结果进行存储。

此外,为实现上述目的,本发明还提供一种报文解析设备,所述报文解析设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的报文解析程序,所述报文解析程序被所述处理器执行时实现如上所述的报文解析方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有报文解析程序,所述报文解析程序被处理器执行时实现如上所述的报文解析方法的步骤。

本发明通过按照初始偏移地址在待解析报文中提取待匹配关键字段;根据初始状态值和待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令;根据下一偏移地址在待解析报文中提取新的待匹配关键字段,并根据下一状态值和新的待匹配关键字段在预设数据库中进行匹配,循环直到匹配到的下一状态值为预设的结束状态值;根据每次循环匹配到的操作指令从待解析报文中提取目标数据字段作为解析结果进行存储,实现了网络交换设备可以解析多种格式的报文,并可以适应新业务新增字段或新协议的发展需求,也提高了报文解析的效率,从而能够处理大容量数据报文。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的结构示意图;

图2为本发明报文解析方法第一实施例的流程示意图;

图3为本发明实施例涉及的一种报文解析树示意图;

图4本发明报文解析装置较佳实施例的功能示意图模块图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供了一种报文解析设备,参照图1,图1是本发明实施例方案涉及的硬件运行环境的结构示意图。

需要说明的是,图1即可为报文解析设备的硬件运行环境的结构示意图。本发明实施例报文解析设备可以是网络交换设备,也可以是pc、智能手机、智能电视机、平板电脑、便携计算机等具有显示功能的终端设备。

如图1所示,该报文解析设备可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

可选地,报文解析设备还可以包括摄像头、rf(radiofrequency,射频)电路,传感器、音频电路、wifi模块等等。本领域技术人员可以理解,图1中示出的报文解析设备结构并不构成对报文解析设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及报文解析程序。

在图1所示的报文解析设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的报文解析程序,并执行以下操作:

当接收到待解析报文后,按照预设的初始偏移地址在所述待解析报文中提取待匹配关键字段;

根据预设的初始状态值和所述待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令;

根据所述下一偏移地址在所述待解析报文中提取新的待匹配关键字段,并根据所述下一状态值和所述新的待匹配关键字段在所述预设数据库中进行匹配,循环直到匹配到的所述下一状态值为预设的结束状态值;

根据每次循环匹配到的所述操作指令从所述待解析报文中提取目标数据字段作为解析结果进行存储。

进一步地,所述根据预设的初始状态值和所述待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令的步骤包括:

将所述初始状态值和所述待匹配关键字段组合得到待匹配条目;

将所述待匹配条目与所述预设数据库的规则条目表中各规则条目逐一进行匹配;

若成功匹配到目标规则条目,则从所述预设数据库的解析处理动作表中,获取与所述目标规则条目关联的下一状态值、下一偏移地址和操作指令。

进一步地,所述规则条目表中各规则条目包括掩码位,各所述规则条目除掩码位以外的比特位为非掩码位,

所述将所述待匹配条目与所述预设数据库的规则条目表中各规则条目逐一进行匹配的步骤包括:

逐次从所述规则条目表中获取规则条目作为初选规则条目;

比较所述初选规则条目和所述待匹配条目的各非掩码位是否对应相同;

将与所述待匹配条目的各非掩码位均对应相同的初选规则条目,确定为所述目标规则条目。

进一步地,处理器1001可以调用存储器1005中存储的报文解析程序,还执行以下操作:

接收输入的待添加规则条目、待添加状态值、待添加偏移地址值和待添加操作指令;

将所述待添加规则条目添加至所述规则条目表中;

将所述待添加状态值、所述待添加偏移地址值和所述待添加操作指令与所述待添加规则条目进行关联后,添加至所述解析处理动作表中。

进一步地,所述根据所述下一偏移地址在所述待解析报文中提取新的待匹配关键字段的步骤包括:

将所述下一偏移地址与所述初始偏移地址相加得到新的偏移地址;

根据所述新的偏移地址在所述待解析报文中提取新的待匹配关键字段。

进一步地,所述根据每次循环匹配到的所述操作指令从所述待解析报文中提取目标数据字段作为解析结果进行存储的步骤包括:

执行每次循环时匹配到的所述操作指令,以将所述待解析报文中的目标数据字段搬移到所述网络交换设备的描述符总线上,其中,所述操作指令中携带所述目标数据字段的数据偏移地址。

进一步地,所述按照预设初始偏移地址在所述待解析报文中提取待匹配关键字段的步骤之前,处理器1001可以调用存储器1005中存储的报文解析程序,还执行以下操作:

当接收到所述待解析报文后,确定所述待解析报文的接收端口;

从所述接收端口的寄存器中获取预先配置的所述初始偏移地址和所述初始状态值。

本发明实施例涉及的专业术语:

tcp:transmissioncontrolprotocol的缩写,中文名是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。

vlan:virtuallocalareanetwork的缩写,中文名是虚拟局域网,是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中。

svlan和cvlan:serviceprovidervlan和customervlan,由802.1ad定义,在一个vlan里再增一层标签,成为双标签的vlan,外层的就是svlan,内层的就是cvlan。vlantag是指虚拟局域网标签。

ipv4:互联网协议(internetprotocol,ip)的第四版。

udp:userdatagramprotocol的缩写,中文名是用户数据报协议,是osiopensysteminterconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

基于上述的硬件结构,提出本发明报文解析方法的各个实施例。

参照图2,本发明报文解析方法第一实施例提供一种报文解析方法,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。所述报文解析方法应用于网络交换设备。所述报文解析方法包括:

步骤s10,当接收到待解析报文后,按照预设的初始偏移地址在所述待解析报文中提取待匹配关键字段;

目前的网络交换设备用于对接收到的报文进行解析,得到目的mac地址或目的ip地址等解析结果,根据解析结果进行查表,找到对应的转发端口,将报文从转发端口转发出去,实现报文的转发功能。目前的网络交换设备对报文进行解析的方式是,对于固定格式的报文,即报文头中的各个字段的位置固定的报文,网络交换设备从固定的位置提取报文头中的各个字段作为解析结果。但由于新业务的发展,需要在报文中新添加字段或者提出新协议,从而导致报文的格式不固定,现有的网络交换设备显然不能够支持多种格式的报文。

目前还有采用网络处理器进行报文解析的方法,该方式虽然可以通过修改软件来快速部署,适配新业务发展的需要,但是由于网络处理器采用了传统类似于cpu的指令来处理网络报文,使得这种处理方式不仅效率低下,还无法处理大容量数据报文,因此也无法满足新业务发展的需要。

为解决上述问题,提出本发明报文解析方法的各实施例。

本实施例中的网络交换设备可以是交换机或路由器等,按照osi(的七层网络模型,交换机又可以分为第二层交换机、第三层交换机、第四层交换机等,一直到第七层交换机,本实施例中的交换机可以是其中任意一种。为便于描述,在以下各实施例中省略执行主体进行阐述。

在本实施例中,当从报文接收端口接收到待解析报文后,将待解析报文进行存储,按照预设的初始偏移地址在待解析报文中提取待匹配关键字段。其中,预设的初始偏移地址可以根据报文中各关键字段的位置进行预先设置,即对于不同格式的报文预设的初始偏移地址不同。偏移地址可以是多个字节对应的多个偏移地址。将待解析报文存储空间的首地址与初始偏移地址相加,得到待解析报文中的待匹配关键字段在存储空间中的绝对地址,根据该绝对地址从存储空间中提取待匹配关键字段。若偏移地址是多个字节对应的多个偏移地址,则提取到的待匹配关键字段可能是多个,如有四个初始偏移地址:{2,3,4,5},则根据初始偏移地址,获取到的是报文中第2、3、4、5这四个字节的内容,这四个字节里可能包括报文中的多个关键字段。

步骤s20,根据预设的初始状态值和所述待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令;

根据预设的初始状态值和提取到的待匹配关键字段,在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令。其中,预设的初始状态值和初始偏移地址一样,可以根据报文的格式进行预先设置。预设数据库是预先配置的数据库,数据库中配置了由状态值和关键字段组合的多条规则条目,每条规则条目唯一关联一个下一状态值、下一偏移地址值和操作指令,在数据库中将初始状态值和待匹配关键字段与多条规则条目进行匹配,即可得到与初始状态值和待匹配关键字段对应关联的下一状态值、下一偏移地址值和操作指令。

其中,操作指令中可携带数据偏移地址,操作指令指示根据该数据偏移地址从待解析报文中提取出目标数据字段,存储到的预先设置的存储空间。其中,数据偏移地址可以是多个字节对应的多个偏移地址,从而根据多个字节对应的偏移地址得到的目标数据字段可以是多个;或者,操作指令也可以是携带多组数据偏移地址和数据长度,从而可以根据操作指令提取到多个不同长度的目标数据字段,如一个操作指令可以携带八组数据偏移地址和数据长度,从而根据操作指令,可以提取到待解析报文中的八个数据字段。此外,根据具体报文格式的不同,也可以将操作指令配置为无效指令。

步骤s30,根据所述下一偏移地址在所述待解析报文中提取新的待匹配关键字段,并根据所述下一状态值和所述新的待匹配关键字段在所述预设数据库中进行匹配,循环直到匹配到的所述下一状态值为预设的结束状态值;

根据匹配得到的下一偏移地址在待解析报文中提取新的待匹配关键字段。其中,下一偏移地址可以是相对于报文存储空间首地址的绝对偏移地址,也可以是相对于上一偏移地址的相对偏移地址。在本发明实施例中,优选采用相对偏移地址。

可将适配得到的下一状态值作为当前状态值,然后根据当前状态值和新的待匹配关键字段继续在预设数据库中进行匹配,即与根据初始状态值和待匹配关键字段在预设数据中进行匹配的过程是一样的,同样得到适配的下一状态值、下一偏移地址值和操作指令。根据下一偏移地址值继续进行新的待匹配关键字段的提取,循环操作直到适配到的下一状态值为预设的结束状态值时,就结束对待解析报文的解析过程。其中,结束状态值可以是根据具体报文格式进行预设设置。

进一步地,当下一偏移地址是相对偏移地址时,所述所述根据所述下一偏移地址在所述待解析报文中提取新的待匹配关键字段的步骤包括:

将所述下一偏移地址与所述初始偏移地址相加得到新的偏移地址;

根据所述新的偏移地址在所述待解析报文中提取新的待匹配关键字段。

若数据库中的下一偏移地址是相对于上一偏移地址的相对偏移地址,则在提取新的待匹配关键字段时,需将匹配到的下一偏移地址与上一偏移地址相加,才能得到新的待匹配关键字段在待解析报文中的位置。

步骤s40,根据每次循环匹配到的所述操作指令从所述待解析报文中提取目标数据字段作为解析结果进行存储。

在每次循环匹配到适配的操作指令后,执行该操作指令,以从待解析报文中提取目标数据字段作为解析结果存储到预设的存储空间中。解析结果可供后续转发报文过程中使用,如根据解析结果中的mac地址查表确定转发端口。需要说明的是,若操作指令为预先配置的无线指令,则不执行该操作指令。

进一步地,可将解析过程中途经的各个状态值进行记录,最终得到状态值路径,根据预先设置的状态值路径与报文类型的映射关系,即可确定待解析报文的报文类型。将报文类型也作为解析结果进行存储,以供后续转发报文过程中使用。

以下通过解析树的形式进行本发明实施例报文解析原理的说明(并不代表本发明实施例中的具体解析过程)。基本原理是根据报文在解析树中当前节点的状态值和在报文中提取的关键字段,来确定报文在解析树的下一个节点,然后跳转到解析树的新的节点后,根据新的节点的状态值和从报文中提取的新的关键字段,确定报文在解析树上需要到达的下一个节点,如此操作一直走到解析树的结束节点。为进一步描述,参照图3的报文解析树,以以太网cvlan报文为例进行描述。应当理解的是,本发明实施例中的报文不限于以太网报文。

首先初始节点的状态值为0,从报文中提取到vlantag字段,如果vlantag为0x8100,那么下一个节点是cvlan,状态值(state)为2;报文跳转到解析树cvlan节点上,然后从报文中提取出以太网类型字段和ip的版本字段,若以太网类型字段是0x0800,ip的版本字段为4,则下一个节点是ipv4,状态值为3。在ipv4节点上提取ipv4报文的协议字段,若协议字段为0x11,则跳转到udp节点,其状态值为255,255是接收状态值,则至此完成报文的解析。在各个节点上可能对应配置有操作指令,执行操作指令以从报文中提取出作为解析结果的数据字段进行存储。该报文在解析树的路径是:

解析开始(state=0)->cvlan(state=2)->ipv4(state=3)->udp(state=255)->解析结束,则获得的报文类型为eth_header+cvlan+ipv4+udp。如图3所示,解析树中的路径有多条,不同格式的报文可对应解析树中不同的路径。

可预先针对不同格式的报文,在数据库中配置状态值、关键字段、下一状态值、下一偏移地址和操作指令的对应关联关系,即预先配置各种格式报文对应的解析树的路径,使得网络交换设备能够同时解析多种格式的报文,从而能够适应新业务的发展需要。此外,由于操作指令是针对专门针对报文解析而定义的数据字段提取指令,这些指令比传统cpu的处理指令效率高,解决了现有采用网络处理器进行报文解析无法达到线速处理的问题。

在本实施例中,通过按照初始偏移地址在待解析报文中提取待匹配关键字段;根据初始状态值和待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令;根据下一偏移地址在待解析报文中提取新的待匹配关键字段,并根据下一状态值和新的待匹配关键字段在预设数据库中进行匹配,循环直到匹配到的下一状态值为预设的结束状态值;根据每次循环匹配到的操作指令从待解析报文中提取目标数据字段作为解析结果进行存储,实现了网络交换设备可以解析多种格式的报文,并可以适应新业务新增字段或新协议的发展需求,也提高了报文解析的效率,从而能够处理大容量数据报文。

进一步的,基于上述第一实施例,本发明报文解析方法第二实施例提供一种报文解析方法。在本实施例中,步骤s20包括:

步骤s201,将所述初始状态值和所述待匹配关键字段组合得到待匹配条目;

在从待解析报文中提取到待匹配关键字段后,将初始状态值和待匹配关键字段组合得到待匹配条目。具体地,可将初始状态值拼接在待匹配关键字段的后面,得到待匹配条目。

步骤s202,将所述待匹配条目与所述预设数据库的规则条目表中各规则条目逐一进行匹配;

在本实施例中,预设数据库中存储有预先配置的规则条目表和解析处理动作表。规则条目表中配置有多条规则条目,每条规则条目由一个状态值和至少一个关键字段组成。解析处理动作表中配置有多条数据,每条数据包括一个下一状态值、下一偏移地址和操作指令。规则条目表中的规则条目与解析处理表中的数据是一一对应关联的,根据一个规则条目可唯一确定一个下一状态值、下一偏移地址和操作指令。

将待匹配条目与预设数据库的规则条目表中各规则条目逐一进行匹配。若待匹配条目与其中一条规则条目的各个比特位都对应相同,则说明匹配成功,该规则条目即成功匹配到的目标规则条目。

进一步地,由于待匹配关键字段的长度可能小于规则条目中的关键字段的长度,规则条目中的关键字段可带掩码,即规则条目中可包括掩码位,除掩码位以外的比特位为非掩码位。

进一步地,所述步骤s202包括:

步骤s2021,逐次从所述规则条目表中获取规则条目作为初选规则条目;

具体的匹配过程可以是,逐次从规则条目表中获取规则条目作为初选规则条目。

步骤s2022,比较所述初选规则条目和所述待匹配条目的各非掩码位是否对应相同;

比较目标规则条目和待匹配条目的各个非掩码位是否一一对应相同。

步骤s2023,将与所述待匹配条目的各非掩码位均对应相同的初选规则条目,确定为所述目标规则条目。

若获取到的初选规则条目与待匹配规则条目的各个非掩码位均对应相同,则将该初选规则条目确定为目标规则条目。

具体地,可以通过三态内容寻址存储器来实现带掩码的规则条目的匹配。三态内容寻址存储器的一个基本操作是输入待查数据,返回该数据被存储的地址,三态内容寻址存储器能够从巨大的数据库中进行快速查找,并且返回最佳的匹配地址,最快查找速度能达到每秒一亿次以上。在本实施例中,通过将规则条目表的各个规则条目存储在三态内容寻址存储器中,输入待匹配条目,若存储器中存储有与该待匹配条目相同的规则条目,则返回该规则条目的地址,该地址与解析处理动作表中的数据是对应关联的,根据该地址可读取解析处理动作表中的数据,即下一状态值、下一偏移地址和操作指令。此外,三态内容寻址存储器中每个比特位有三种状态,“0”、“1”和“don’tcare”,所以称为“三态”,它是通过掩码来实现的;当输入待查数据时,对于存储器中存储的数据的各个比特位,若有掩码位,则不关心该掩码位的内容,也即,若待查数据和存储器中的数据在其他的比特位上都对应相同,则可确定待查数据与存储器中的数据相同,此时返回该数据的地址,若不相同,则进行下一个数据的匹配。在本实施例中,通过三态内容寻址存储器实现规则条目的匹配,提高了匹配速度,从而提高了解析效率,从而能够实现处理大容量的数据报文。

步骤s203,若成功匹配到目标规则条目,则从所述预设数据库的解析处理动作表中,获取与所述目标规则条目关联的下一状态值、下一偏移地址和操作指令。

若成功匹配到目标规则条目,则从预设数据库的解析处理动作表中,获取与该目标规则条目关联的下一状态值、下一偏移地址和操作指令。

应当理解的是,在每次循环过程中,均将当前状态值和当前的待匹配关键字段组合的待匹配条目与数据库中的规则条目表进行匹配,得到下一状态值、下一偏移地址和操作指令。

在本实施例中,通过将待匹配关键字段和状态值进行组合,与数据库中预先配置的规则条目表进行匹配,根据匹配到的规则条目从解析处理动作表中获取下一状态值、下一偏移地址和操作指令,使得网络交换设备可根据数据库中针对不同格式的报文配置的规则条目表和解析处理动作表,解析不同格式的报文,从而支持新业务的发展需要。

进一步地,步骤s40包括:

步骤s401,执行每次循环时匹配到的所述操作指令,以将所述待解析报文中的目标数据字段搬移到所述网络交换设备的描述符总线上,其中,所述操作指令中携带所述目标数据字段的数据偏移地址。

数据库中的操作指令可以是指示将待解析报文中的目标数据字段搬移到网络交换设备的描述符总线上的指令。其中,描述符总线是预先定义的结构体,里面用于存放从待解析报文中提取的各个数据字段。将目标数据字段搬移到描述符总线上即将目标数据字段复制到描述符总线上。网络交换设备在后续的报文转发过程中,从描述符总线获取解析到的数据字段,确定报文的转发端口。操作指令中配置了目标数据字段的数据偏移地址。

在每次循环匹配到适配的操作指令后,执行该操作指令,将待解析报文中的目标数据字段搬移到描述符总线上。具体地,将操作指令中的数据偏移地址指向的目标数据字段复制到描述符总线上。

进一步地,所述步骤s10之前,还包括:

步骤s50,当接收到所述待解析报文后,确定所述待解析报文的接收端口;

当接收到待解析报文后,确定待解析报文的接收端口。网络交换设备的报文接收端口有多个,根据接收端口不同,报文的格式可能不同,对于不同格式的报文,解析过程的初始状态值和初始偏移地址可能不相同。

步骤s60,从所述接收端口的寄存器中获取预先配置的所述初始偏移地址和所述初始状态值。

预先配置各个接收端口对应的寄存器,寄存器中存储有初始偏移地址和初始状态值。从待解析报文的接收端口对应的寄存器中,获取对该待解析报文进行解析所需要的初始偏移地址和初始状态值。在本实施例中,可通过在各个接收端口的寄存器中预先配置不同的初始偏移地址和初始状态值,实现网络交换设备对不同的接收端口接收到的不同格式的报文进行解析,使得网络交换设备能够解析的报文不限于一种固定格式,能够适应新业务发展的需要。

以下以eth_hearer+cvlan+ipv4+udp的报文为例进行具体解析过程的说明:首先,从该报文的接收端口对应的寄存器中获取到四个初始偏移地址{12,13,14,15},初始状态值0;根据初始偏移地址从报文的第12、13、14和15字节的位置提取到vlantag字段{0x81,00,yy,yy};将{0x81,00,yy,yy}与初始状态值0组合,得到待匹配条目,与规则条目表中的规则条目进行匹配,匹配到规则条目{0x81,00,yy,yy,0},其中,y表示不关心的内容,可以是任意内容;根据该规则条目从解析处理动作表中获取对应关联的下一状态值2、下一偏移地址{4,5,6,7},以及操作指令,该操作指令中携带多组数据偏移值和数据字段长度,执行该操作指令,将报文中的目的mac地址、源mac地址、vlantag(16比特的tag-id,3比特cos字段,1比特cf字段,12比特vlanid)存放到描述符总线上;将四个偏移地址{4,5,6,7}分别和初始偏移地址12相加,得到四个新的偏移地址{16,17,18,19},根据{16,17,18,19}从报文的第16、17、18和19字节的位置提取到以太网类型字段和ip版本号{0x08,00,0x4y,yy},与状态值2组合得到待匹配条目,在规则条目表中进行匹配,匹配到规则条目{0x08,00,0x4y,yy,2};根据该规则条目从解析处理动作表中获取对应关联的下一状态值3、下一偏移地址{11,12,13,14},以及操作指令,执行该操作指令,将报文中的目的ip地址、源ip地址、服务类型和上层协议等字段存放到描述符总线上;将四个偏移地址{11,12,13,14}与上一偏移地址16相加,得到新的偏移地址{27,28,29,30},根据{27,28,29,30}从报文的第27、28、29和30字节的位置提取到ip协议字段{0x11,yy,yy,yy},与状态值3组合得到待匹配条目,在规则条目表中进行匹配,匹配到规则条目{0x11,yy,yy,yy,3},根据该规则条目从解析处理动作表中获取对应关联的下一状态值255以及操作指令,执行该操作指令,将报文中的udp源端口号和目的端口号等字段存放到描述符总线上,由于匹配到的状态值为结束状态值255,至此结束报文解析。

进一步的,基于上述第一或第二实施例,本发明报文解析方法第三实施例提供一种报文解析方法。在本实施例中,所述报文解析方法还包括:

步骤s70,接收输入的待添加规则条目、待添加状态值、待添加偏移地址值和待添加操作指令;

用户可通过网络交互设备的人机交互界面输入待添加规则条目、待添加状态值、待添加偏移地址值和待添加操作指令。其中,待添加规则条目中包括关键字段和状态值,关键字段可包括掩码位。

步骤s80,将所述待添加规则条目添加至所述规则条目表中;

将待添加条目添加至规则条目表中,具体地,可将待添加规则条目存储至三态内容寻址存储器中规则条目表对应的存储空间内。

步骤s90,将所述待添加状态值、所述待添加偏移地址值和所述待添加操作指令与所述待添加规则条目进行关联后,添加至所述解析处理动作表中。

将待添加状态值、待添加偏移地址值和待添加操作指令与待添加规则条目关联后,添加至解析处理动作表中,具体地,可将待添加规则条目表存放的地址与解析处理动作表对应存储空间的一存储地址进行关联,然后依据该存储地址将待添加状态值、待添加偏移地址值和待添加操作指令存储至解析处理动作表对应存储空间内。

在本实施例中,通过将用户输入的待添加规则条目、待添加状态值、待添加偏移地址值和待添加操作指令,对应添加至规则条目表和解析处理动作表中,使得当新业务发展需要新添加报文字段或作出新协议时,用户可针对新格式的报文,方便地在网络交换设备中配置规则条目表和解析处理动作表,从而快速适应新业务的发展需要。

此外,本发明实施例还提出一种报文解析装置,所述报文解析装置部署于网络交换设备,参照图4,所述报文解析装置包括:

提取模块10,用于当接收到待解析报文后,按照预设的初始偏移地址在所述待解析报文中提取待匹配关键字段;

匹配模块20,用于根据预设的初始状态值和所述待匹配关键字段在预设数据库中进行匹配,得到适配的下一状态值、下一偏移地址和操作指令;

所述提取模块10,还用于根据所述下一偏移地址在所述待解析报文中提取新的待匹配关键字段;

所述匹配模块20,还用于根据所述下一状态值和所述新的待匹配关键字段在所述预设数据库中进行匹配,循环直到匹配到的所述下一状态值为预设的结束状态值;

存储模块30,用于根据每次循环匹配到的所述操作指令从所述待解析报文中提取目标数据字段作为解析结果进行存储。

进一步地,所述匹配模块20包括:

组合单元,用于将所述初始状态值和所述待匹配关键字段组合得到待匹配条目;

匹配单元,用于将所述待匹配条目与所述预设数据库的规则条目表中各规则条目逐一进行匹配;

获取单元,用于若成功匹配到目标规则条目,则从所述预设数据库的解析处理动作表中,获取与所述目标规则条目关联的下一状态值、下一偏移地址和操作指令。

进一步地,所述规则条目表中各规则条目包括掩码位,各所述规则条目除掩码位以外的比特位为非掩码位,

所述匹配单元包括:

获取子单元,用于逐次从所述规则条目表中获取规则条目作为初选规则条目;

比较子单元,用于比较所述初选规则条目和所述待匹配条目的各非掩码位是否对应相同;

确定子单元,用于将与所述待匹配条目的各非掩码位均对应相同的初选规则条目,确定为所述目标规则条目。

进一步地,所述报文解析装置还包括:

接收模块,用于接收输入的待添加规则条目、待添加状态值、待添加偏移地址值和待添加操作指令;

添加模块,用于将所述待添加规则条目添加至所述规则条目表中;

所述添加模块,还用于将所述待添加状态值、所述待添加偏移地址值和所述待添加操作指令与所述待添加规则条目进行关联后,添加至所述解析处理动作表中。

进一步地,所述提取模块10包括:

计算单元,用于将所述下一偏移地址与所述初始偏移地址相加得到新的偏移地址;

提取单元,用于根据所述新的偏移地址在所述待解析报文中提取新的待匹配关键字段。

进一步地,所述存储模块30包括:

执行单元,用于执行每次循环时匹配到的所述操作指令,以将所述待解析报文中的目标数据字段搬移到所述网络交换设备的描述符总线上,其中,所述操作指令中携带所述目标数据字段的数据偏移地址。

进一步地,所述报文解析装置还包括:

确定模块,用于当接收到所述待解析报文后,确定所述待解析报文的接收端口;

获取模块,用于从所述接收端口的寄存器中获取预先配置的所述初始偏移地址和所述初始状态值。

本发明报文解析装置的具体实施方式的拓展内容与上述报文解析方法各实施例基本相同,在此不做赘述。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有报文解析程序,所述报文解析程序被处理器执行时实现如上所述报文解析方法的步骤。

本发明报文解析设备和计算机可读存储介质的具体实施方式的拓展内容与上述报文解析方法各实施例基本相同,在此不做赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1