一种数据包的快速解析方法

文档序号:7589699阅读:137来源:国知局
专利名称:一种数据包的快速解析方法
技术领域
本发明属于网络通信系统与应用技术领域,具体涉及数据包解析和信息抽取的方法,它适用于网络处理器、路由器、交换机等网络设备中对数据包的处理。
背景技术
随着Internet规模不断增长,各种业务越来越多。由于网络数据流量越来越大,这就要求网络设备具有高效和快速的数据包解析处理技术来为用户提供可靠的服务。
目前,用于对网络数据包解析的方法主要有两种。一种是采用软件处理模式,其基本思想是,基于多简单指令集CPU架构模式,它由多个对等的CPU组成,根据设计要求对其编写不同的程序,完成不同的功能。通用处理器通过共享内存的方式与每个简单指令集CPU进行交换,相互协作完成统一功能。它对数据包的处理通常采用如下模式接收-存储-处理-发送。在数据通信中对存储器的使用主要有包的缓冲存储和查找表的搜索。每个包的缓冲存贮至少需要4次访问存贮器从网络收到包时的写入;读出帧用于查找表搜索;回写被改变的包用于传输;读出包来进行传输。这样,要提供线速处理性能,要求缓冲存储器的带宽至少是网络链路带宽的4倍。加上存储器本身的固有开销,存储器理论带宽是实际带宽的两倍,因此,缓存器的带宽应该是实际带宽的8倍。事实上通信的全双工模式,要求的带宽还需要加倍。存储器成为网络处理器的关键部件,其存储速度直接影响着网络处理数据层面的能力。简单指令集常用指令集内的指令功能单一,执行复杂任务时需要许多指令,由此带来的缺点是执行复杂任务时大量指令的时间开销大,因此该类处理器大多无法满足多个吉比特端口的处理要求。
另一种是采用多专用集成电路芯片架构,其中各个功能部件均为不同的器件,独立完成自己的任务,分别完成分类、决策和与通用处理器通信等功能。专用集成电路专用芯片技术的出现使数据层面和信令层面能够相互分离,它将路由查找、数据包处理等数据层面的操作固化在硬件芯片中,大大提高了数据包处理的速率。缺点是灵活性差,一旦设计完成,功能扩展性较差。

发明内容
本发明的目的在于克服现有技术的不足之处,提供一种数据包的快速解析方法,该方法可实现对数据包的快速处理,并且其扩展性强。
为了实现上述发明目的,一种数据包的快速解析方法,包括数据包头定位和信息抽取操作表和查找关键字生成规则表,数据包头定位和信息抽取操作表由协议头定位及信息抽取表,协议映射表和下层协议索引表组成,协议头定位及信息抽取表用于存放对数据包中各种协议头的处理方法,其中包括起始位置的定位方法和数据包头信息抽取方法,协议映射表用于存放系统能支持的各种协议的编码,下层协议索引表用于存放各类下层协议在协议头定位及信息抽取表中的索引值;查找关键字生成规则表用于存放查找关键字的生成方法;该方法包括以下步骤(一)对数据包头的解析和信息的抽取,具体步骤包括(1)初始化每一级的协议头定位及信息抽取表、协议映射表、下层协议索引表和查找关键字生成规则表;(2)判断被处理是否是数据包的第一个协议头,如果是,则取系统默认的初始化协议头类型索引值和初始化协议头位置值;否则,取出在处理上层协议头时得到的下层协议头的位置值和下层协议头的索引值;(3)用步骤(2)中得到的协议头的索引值去查找协议头定位及信息抽取表,得到当前数据包的处理规则;(4)如果表中的全局操作表项的值标识处理完成,则数据包解析和数据抽取操作结束,进入步骤(二),否则,同时进行步骤(5)、(6)和(7),完成后进入步骤(2);(5)依据定位规则给下层协议头定位,其步骤如下(5.1)判断协议头中协议长度域是否存在,存在则抽取这个长度域的数据,否则,按照表格中的内容分两种情况,一是多协议标签交换协议,采用专用的处理方式,二是固定长度的协议,则取预先定义好的协议头长度;(5.2)依据下面的公式(1)计算下层协议头的起始位置下层协议头起始位=本层协议头起始位+本层协议头长度(1)(6)确定下层协议的类型,其步骤为(6.1)判断协议头中下层协议类型域是否存在,不存在则采用预先定义好的协议头索引;否则抽取协议类型域的数据,并继续执行以下步骤(6.2)、步骤(6.3)和步骤(6.4)(6.2)用步骤(6.1)得到的协议类型域的数据查找协议映射表,得到协议的映射值a,b,c,d;(6.3)把协议映射值a,b,c,d通过公式(2)计算得到偏移地址offset=a*2^α+b*2^β+c*2^λ+d*2^μ(2)其中,αβλμ通过查找协议头定位及信息抽取表得到;(6.4)将上述偏移地址与协议头定位及信息抽取表中的基址表项相加得到一个绝对地址,用该绝对地址查找下层协议索引表,得到下层协议头索引值;(7)协议头信息抽取,具体步骤如下(7.1)判断抽取信息字节掩码是否为0,如果是,则不再抽取信息,结束步骤(7),否则继续执行下述操作;(7.2)依据抽取信息字节掩码抽取协议头相关信息;(7.3)把抽取的信息填入数据包信息关键字的对应位置;(7.4)根据信息标识码修改数据包信息关键字标识码;(二)生成查找关键字根据最后一次在协议头定位及信息抽取表中得到的查找关键字生成规则标识,在查找关键字生成规则表中找到对应的查找关键字生成方法,然后,根据数据包信息关键字和数据包信息关键字标识码,按照上述查找关键字生成方法生成查找关键字。
如何对数据包进行解析处理是完全采用由查找相应规则表来确定的,因此,通过修改规则表的相应内容可以达到修改对数据包的具体解析方法和定义新的协议头类型处理方法,其灵活性和可扩展性很强。同时,采用多级流水线并行处理的方式,很大程度上减少了数据包的解析处理周期,获得了对数据报文的高速处理。


图1为多层协议头数据包的流水线处理示意图;图2为数据包解析和信息抽取流程图;图3为协议映射表示意图;图4为下层协议索引表示意图;图5为协议头信息抽取示意图;图6为数据包信息关键字示意图;图7为抽取信息字节掩码和信息标识码关系示意图。
具体实施例方式
首先采用表一对说明书附图中的符号加以说明。

表一为了便于说明,采用表二对协议头定位及信息抽取表的内容加以说明。


首先,结合附图1说明数据包解析流水线处理架构如图1所示,针对网络上数据包的多层协议头组合结构,采用多级流水线结构依次对每层协议头解析处理。流水线的每一级采用相同的专用集成电路结构,完成相同功能。不同的是每级流水线各自都有一套数据包头定位和信息抽取操作表,表中配置了完成这一层协议头的数据解析和信息抽取处理规则。采用多级流水线的处理方法,提高了数据包处理速度。流水线处理的具体描述如下(1)根据网络上数据包头结构特征,流水线处理的每一级完成相同的功能,其硬件架构是一样的。
(2)每一级流水线完成如下工作抽取本层协议头的数据信息;计算下一层协议头的起始位置;获取下层协议头的类型值,并通过查找协议映射表和下层协议索引表得到这个下层协议头在下级流水线的协议头定位及信息抽取表中的索引值,得到它下级流水线处理的规则。
(3)流水线的级数没有固定的要求,对于当前网络数据包协议头的结构而言,设计5级流水线可以满足要求。当专用集成电路芯片一旦确定下来,其流水线级数也就固定下来了。每一级都有相应的数据包头定位和信息抽取操作表。用户能够根据需要修改表的内容,以支持新型协议头的解析处理。
下面再具体说明数据包快速解析的步骤第一步,是对数据包头的解析和信息的抽取。整个过程是依据数据包头定位和信息抽取操作表定义的规则进行。
结合附图2,数据包解析和信息抽取的具体步骤描述如下(1)初始化每一级的数据包头定位和信息抽取操作表(包括协议头定位及信息抽取表,协议映射表和下层协议索引表)和查找关键字生成规则表。
(2)判断被处理是否是数据的第一个协议头,是则取系统默认的初始化协议头类型索引值和初始化协议头位置值;否则,取出在处理上层协议头时得到的下层协议头的索引值和下层协议头的位置值。
(3)用步骤(2)中得到的协议头的索引值去查找协议头定位及信息抽取表,得到当前数据包的处理规则。
(4)如果表中的全局操作表项的值标识处理完成,则数据包解析和数据抽取操作结束,否则,同时进行(5)、(6)和(7)步的操作。
(5)依据定位规则给下层协议头定位。其具体步骤如下(a)判断协议头中协议长度域是否存在,存在则抽取这个长度域的数据,否则,分两种情况,一是多协议标签交换协议,采用专用的处理方式,二是固定长度的协议,则取预先定义好的协议头长度。
(b)依据下面的公式(1)计算下层协议头的起始位置下层协议头起始位=本层协议头起始位+本层协议头长度(1)(6)确定下层协议的类型,其具体步骤如下(a)判断协议头中下层协议类型域是否存在,不存在则采用预先定义好的协议头索引;否则抽取协议类型域的数据,并继续执行以下步骤(b)、步骤(c)和步骤(d)。
(b)用步骤(a)得到的协议类型域的数据查找协议映射表,得到协议的映射值a,b,c,d,其中a,b,c,d分别为下层协议类型域中的第一,二,三,四个4比特值依次查找协议映射表,得到的协议映射值,当下层协议类型值没有16比特长时,a,b取值为0。
(c)利用公式(2)计算得到偏移地址。
offset=a*2^α+b*2^β+c*2^λ+d*2^μ (2)(d)用这个偏移地址加上协议头定位及信息抽取表中的基址表项得到一个绝对地址,用这个绝对地址查找下层协议索引表,得到下层协议头索引值。
(7)协议头信息抽取,具体步骤如下(a)判断抽取信息字节掩码是否为0,是则不再抽取信息;否则继续执行下面的操作。
(b)依据抽取信息字节掩码抽取协议头相关信息(c)把抽取的信息填入数据包信息关键字的对应位置(d)根据信息标识码修改数据包信息关键字标识码第二步,生成查找关键字根据最后一次在协议头定位及信息抽取表中得到的查找关键字生成规则标识,在查找关键字生成规则表中找到对应的查找关键字生成方法,然后,根据数据包信息关键字和数据包信息关键字标识码,按照上述查找关键字生成方法生成查找关键字。。
表二列出了查找关键字生成规则表的表项内容。


表二对协议头长度的计算说明如下对于不同的协议头,其长度计算方法可能不一样。有的协议有固定的长度;有的长度是变化的,由协议头中的头长度域给出;还有的要通过某种专用的计算方法得到,如多协议标签交换协议。具体描述如下(1)对于固定长度协议,配置协议头定位及信息抽取表的固定长度域的值为其长度值,OP1的值配为采用预先定义的固定长度。这样,专用集成电路在进行处理时,会依据OP1的这个值而取表中固定长度值作为其协议头的长度。
(2)可变长度协议,此类协议长度可以由其协议头中的长度域得到,在协议头定位及信息抽取表中依据具体的协议配置好协议偏移,协议宽度域。OP1的值配为取本层协议头中长度域的低4位或高4位乘4。传输控制协议和网际协议属于这类协议;(3)多协议标签交换协议,其长度有专用的计算方法。OP1的值配为用于多协议标签交换协议头,可以把多层多协议标签交换协议头栈当作是一个特殊的协议头来处理。硬件采用的方法是通过检测多协议标签交换协议头中的s域(1比特),为1时表示在多层多协议标签交换协议头栈中的栈底,通过这个协议头个数的统计值就得到整个多协议标签交换协议协议头的长度。
结合附图3对协议映射表的构造进行说明协议映射表是个宽度为16比特,深度为16的表格。为了便于描述,把协议映射表平均分为4列,依次取名为表A、表B、表C和表D,分别用于对协议类型值的第一、二、三和四个4比特值进行映射。表A的内容是这样确定的表A所需要处理的所有协议类型值的第一个4比特值,是落在0到0x0F中的一个或几个数字,我们把这几个数字作为深度的索引值在表A中的相应位置,依次填入从0开始的数字标识它,其他位置填f。表B、表C和表D采用相同的方法构造。
下面是下层协议索引表中偏移地址的计算公式及其说明offset=a*2^α+b*2^β+c*2^λ+d*2^μ (2)其中,a,b,c,d依次为本层协议头中协议类型域的第一、二、三、四个4比特分别在协议映射表中表A、表B、表C和表D中的映射值。α和β以及λ可以在协议头定位及信息抽取表中查到,其值是由协议映射表用以下公式计算得到的μ=0,min{2^λ>Max(d)*2^μ}=>λmin{2^β>Max(c)*2^λ+Max(d)*2^μ}=>βmin{2^α>Max(b)*2^β+Max(c)*2^λ+Max(d)*2^μ}=>α协议头定位及信息抽取表中的基址表项的说明如下一个数据包头在下层协议索引表中占有的深度计算公式为depth=Max(a)*2^α+Max(b)*2^β+Max(c)*2^λ+Max(d)*2^μ于是,在协议头定位及信息抽取表中,第一个头的基址表项值为0,第二个头的基址值为0+第一个头的depth,第三个头的基址值为前面的头的depth值的和,依此类推。
结合附图4,对下层协议头索引表阐述如下下层协议头索引表中的内容是各种协议类型在下级协议头定位及信息抽取表中的索引。本层所支持的每个协议头分别在下层协议头索引表中拥有一大小为depth的连续区域,在这个区域里的存储着它所支持的下层协议类型的索引值。
结合图5对抽取信息字节掩码说明如下在协议头定位及信息抽取表中定义了抽取信息字节掩码项,它是用于表明如何从协议头中抽取数据。抽取信息字节掩码表项采用二进制表示时,每个比特对应于数据包头的一个字节,当这个二进制位为1表示抽取这个字节,为0表示不抽取。32个比特的抽取信息字节掩码表项可以处理长达32字节宽度的协议头,如果协议头长度小于32字节,我们在这个协议头的掩码后面补0,补的0在这个协议头中没有相关的对应字节。附图5中掩码值为0xFFF00000,抽取协议头中的目的地址和源地址信息。
结合附图6和图7对数据包信息关键字及信息标识码标识说明如下数据包信息关键字长度为32个字节,用来存储数据包头信息。在对数据包头解析时,抽取信息并填入数据包信息关键字的同时,通过信息标识码对此进行记录。附图7中,需要抽取IP头的SIP,DIP,ID等信息,抽取信息字节掩码对应SIP,DIP,ID域的掩码值为1,其他域值为0。相应的,数据包信息关键字中存储SIP,DIP,ID的相应位置的信息标识码设定为1来标识。
权利要求
1.一种数据包的快速解析方法,包括数据包头定位和信息抽取操作表和查找关键字生成规则表,数据包头定位和信息抽取操作表由协议头定位及信息抽取表,协议映射表和下层协议索引表组成,协议头定位及信息抽取表用于存放对数据包中各种协议头的处理方法,其中包括起始位置的定位方法和数据包头信息抽取方法,协议映射表用于存放系统能支持的各利协议的编码,下层协议索引表用于存放各类下层协议在协议头定位及信息抽取表中的索引值;查找关键字生成规则表用于存放查找关键字的生成方法;该方法包括以下步骤(一)对数据包头的解析和信息的抽取,具体步骤包括(1)初始化每一级的协议头定位及信息抽取表、协议映射表、下层协议索引表和查找关键字生成规则表;(2)判断被处理是否是数据包的第一个协议头,如果是,则取系统默认的初始化协议头类型索引值和初始化协议头位置值;否则,取出在处理上层协议头时得到的下层协议头的位置值和下层协议头的索引值;(3)用步骤(2)中得到的协议头的索引值去查找协议头定位及信息抽取表,得到当前数据包的处理规则;(4)如果表中的全局操作表项的值标识处理完成,则数据包解析和数据抽取操作结束,进入步骤(二),否则,同时进行步骤(5)、(6)和(7),完成后进入步骤(2);(5)依据定位规则给下层协议头定位,其步骤如下(5.1)判断协议头中协议长度域是否存在,如果存在,则抽取这个长度域的数据,否则,按照表格中的内容分两种情况,一是多协议标签交换协议,采用专用的处理方式,二是固定长度的协议,则取预先定义好的协议头长度;(5.2)依据下面的公式(1)计算下层协议头的起始位置下层协议头起始位=本层协议头起始位+本层协议头长度(1)(6)确定下层协议的类型,其步骤为(6.1)判断协议头中下层协议类型域是否存在,不存在则采用预先定义好的协议头索引;否则抽取协议类型域的数据,并继续执行以下步骤(6.2)、步骤(6.3)和步骤(6.4)(6.2)用步骤(6.1)得到的协议类型域的数据查找协议映射表,得到协议的映射值a,b,c,d;(6.3)把协议映射值a,b,c,d通过公式(2)计算得到偏移地址offset=a*2^α+b*2^β+c*2^λ+d*2^μ(2)其中,αβλμ通过查找协议头定位及信息抽取表得到;(6.4)将上述偏移地址与协议头定位及信息抽取表中的基址表项相加得到一个绝对地址,用该绝对地址查找下层协议索引表,得到下层协议头索引值;(7)协议头信息抽取,具体步骤如下(7.1)判断抽取信息字节掩码是否为0,如果是,则不再抽取信息,结束步骤(7),否则继续执行下述操作;(7.2)依据抽取信息字节掩码抽取协议头相关信息;(7.3)把抽取的信息填入数据包信息关键字的对应位置;(7.4)根据信息标识码修改数据包信息关键字标识码;(二)生成查找关键字根据最后一次在协议头定位及信息抽取表中得到的查找关键字生成规则标识,在查找关键字生成规则表中找到对应的查找关键字生成方法,然后,根据数据包信息关键字和数据包信息关键字标识码,按照上述查找关键字生成方法生成查找关键字。
2.根据权利要求1所述的方法,其特征在于所述协议头定位及信息抽取表包括以下内容全局操作、长度计算、索引操作、固定长度、偏移地址、宽度、协议索引、协议偏移、协议宽度、协议头标识、抽取信息字节掩码、查找关键字生成规则标识、信息标识码和基址。
3.根据权利要求1或2所述的方法,其特征在于所述查找关键字生成规则表包括查找规则,内容可寻址存储器表块号,全局掩码和查找关键字字节掩码。
全文摘要
本发明公开了一种数据包的快速解析方法,采用基于查找表的专用集成电路实现技术,对数据包头信息进行有效的解析和抽取。其步骤为①数据包解析及信息抽取依据数据包头定位和信息抽取操作表,对数据包进行解析和信息抽取处理,并生成数据包信息关键字。②数据包查找关键字生成完成数据包的解析和信息抽取之后,依据用户指定的查找关键字生成规则,生成查找关键字。本发明通过修改规则表的相应内容可以达到修改对数据包的具体解析方法和定义新的协议头类型处理方法,其灵活性和可扩展性很强。同时,采用多级流水线并行处理的方式,很大程度上减少了数据包的解析处理周期,获得了对数据报文的高速处理。
文档编号H04L29/06GK1585379SQ20041001321
公开日2005年2月23日 申请日期2004年5月25日 优先权日2004年5月25日
发明者杨宗凯, 黄建, 钟名奇 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1