一种数据定位、重组方法及相应装置的制作方法

文档序号:7684712阅读:152来源:国知局
专利名称:一种数据定位、重组方法及相应装置的制作方法
技术领域
本发明涉及数据处理领域,尤其涉及在网络通信过程中数据定位、重组的方法及相应装置。
背景技术
随着互联网业务的高速发展,业务类型层出不穷,数据量也越来越大,我们都知道,不同类型的网络,其MTU(最大传输单元)各不相同,如以太网中,最大的传输帧为1500字节,FDDI (光纤分布数据接口 )为4500字节,令牌环帧在4500字节到17800字节之间,而IP协议的一个重要功能,就是能够对传输的数据大于硬件接口的MTU时,对其进行分段传输。即大于MTU的数据包将被分为2个或多个的合适的大小被传输。一个分片在到达接收主机的路径中,还可能被继续分片。因此在接收端就必须对同属于一个IP数据流的数据包进行定位与重组。目前数据流定位的方法有许多种,但是在定位时间和定位精度上都有 一定的缺陷。

发明内容
本发明要解决的技术问题是提供一种数据定位方法及装置,减少定位时间,提高定位精度。为解决上述技术问题,本发明提供了一种数据定位方法,包括接收分片数据以及特征属性;以所述特征属性的值作为关键值查找哈希表,如果查找到匹配的关键值,则将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;如果没有查找到匹配的关键值,则在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中。进一步地,所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性。进一步地,所述特征属性包括源IP地址、目的IP地址、IP标识和协议类型。进一步地,所述数据结构包括链表、数组、树或图。为解决上述技术问题,本发明还提供了一种数据定位装置,包括接收模块、查找模块和定位模块,其中所述接收模块,用于接收分片数据以及特征属性;所述查找模块,用于以所述特征属性的值作为关键值查找哈希表;所述定位模块,用于在所述查找模块查找到匹配的关键值时,将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;以及用于在所述查找模块没有查找到匹配的关键值时,在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中。进一步地,所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性。进一步地,所述数据结构包括链表、数组、树或图。本发明要解决的另一技术问题是提供一种数据重组方法及装置,提高重组效率。为解决上述技术问题,本发明提供了一种数据重组方法,包括接收分片数据以及特征属性;以所述特征属性的值作为关键值查找哈希表,如果查找到匹配的关键值,则将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;如果没有查找到匹配的关键值,则在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中;
将同一数据结构中的分片数据按顺序重组。进一步地,所述将同一数据结构中的分片数据按顺序重组,包括根据同一数据结构中各分片数据的偏移量顺序重组同一数据结构中的所有分片数据。进一步地,所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性。进一步地,所述特征属性包括源IP地址、目的IP地址、IP标识和协议类型。进一步地,所述数据结构包括链表、数组、树或图。为解决上述技术问题,本发明还提供了一种数据重组装置,包括接收模块、查找模块、定位模块和重组模块,其中所述接收模块,用于接收分片数据以及特征属性;所述查找模块,用于以所述特征属性的值作为关键值查找哈希表;所述定位模块,用于在所述查找模块查找到匹配的关键值时,将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;以及用于在所述查找模块没有查找到匹配的关键值时,在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中;所述重组模块,用于将同一数据结构中的分片数据按顺序重组。进一步地,所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性。进一步地,所述数据结构包括链表、数组、树或图。进一步地,所述重组模块采用以下方式将同一数据结构中的分片数据按顺序重组根据同一数据结构中各分片数据的偏移量顺序重组同一数据结构中的所有分片数据。本发明采用高效HASH(哈希)算法定位属于同一个数据流的所有数据包,定位速度快,并且以数据流的特征属性整体作为键值,定位精度高,同时重组的效率也相应提高。相比于以往的定位算法以及其它hash算法大大提高了效率。


图I为本发明实施例I定位方法流程图;图2为本发明实施例I定位装置结构示意图;图3为本发明实施例2重组方法流程图4为本发明实施例2重组装置结构示意图;图5为本发明应用示例IP数据包IP首部信息;图6为本发明应用示例IP数据流定位流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。实施例I定位方法如图I所示,包括以下步骤 步骤110,接收分片数据以及特征属性;所述特征属性为每个数据包独有的、数据包中的所有分片的属性值相同的属性;特征属性为每个数据包独有,这样可以保证该特征属性可以区分各个数据包。而对于数据包中的分片数据来说,其特征属性的值均是相同的,这样可以方便接收端进行定位和重组。步骤120,以该特征属性的值作为关键值查找哈希表,如果查找到匹配的关键值,则执行步骤130,如果没有查找到匹配的关键值,则执行步骤140 ;步骤130,将分片数据的指针插入到该关键值对应的哈希地址所指示的数据结构中;步骤140,在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入该新的哈希地址所指示的数据结构中。哈希表中的每个哈希值(关键值)唯一对应一个哈希地址,该哈希地址存放的是一个数据结构地址,即每个哈希地址唯一指示一个数据结构,每个数据结构中保存有同一个数据包的所有分片的地址。也就是说,利用特征属性值可以准确定位到一个数据包。上述数据结构可以是链表,也可以是数组,或者是树或图,或者是其他能够进行定位的数据结构。实现上述定位方法的数据定位装置如图2所示,包括接收模块、查找模块和定位模块,其中所述接收模块,用于接收分片数据以及特征属性;所述查找模块,用于以所述特征属性的值作为关键值查找哈希表;所述定位模块,用于在所述查找模块查找到匹配的关键值时,将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;以及用于在所述查找模块没有查找到匹配的关键值时,在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中。优选地,上述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性。优选地,上述数据结构包括链表、数组、树或图。实施例2重组方法如图3所示,包括以下步骤
步骤310,接收分片数据以及特征属性;所述特征属性为每个数据包独有的、数据包中的所有分片的属性值相同的属性;特征属性为每个数据包独有,这样可以保证该特征属性可以区分各个数据包。而对于数据包中的分片数据来说,其特征属性的值均是相同的,这样可以方便接收端进行定位和重组。步骤320,以该特征属性的值作为关键值查找哈希表,如果查找到匹配的关键值,则执行步骤330,如果没有查找到匹配的关键值,则执行步骤340 ;步骤330,将分片数据的指针插入到该关键值对应的哈希地址所指示的数据结构中;步骤340,在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址 指示的数据结构,将分片数据的指针插入该新的哈希地址所指示的数据结构中。哈希表中的每个哈希值(关键值)唯一对应一个哈希地址,该哈希地址存放的是一个数据结构地址,即每个哈希地址唯一指示一个数据结构,每个数据结构中保存有同一个数据包的所有分片的地址。也就是说,利用特征属性值可以准确定位到一个数据包。步骤350,将同一数据结构中的分片数据按顺序重组。上述数据结构可以是链表,也可以是数组,或者是树或图,或者是其他能够进行定位和重组的数据结构。实现上述数据重组方法的数据重组装置如图4所示,包括接收模块、查找模块、定位模块和重组模块,其中所述接收模块,用于接收分片数据以及特征属性;所述查找模块,用于以所述特征属性的值作为关键值查找哈希表;所述定位模块,用于在所述查找模块查找到匹配的关键值时,将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;以及用于在所述查找模块没有查找到匹配的关键值时,在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中;所述重组模块,用于将同一数据结构中的分片数据按顺序重组。优选地,所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性。优选地,所述数据结构包括链表、数组、数或图。优选地,所述重组模块采用以下方式将同一数据结构中的分片数据按顺序重组根据同一数据结构中各分片数据的偏移量顺序重组同一数据结构中的所有分片数据。应用示例以IP协议传输IP数据包、数据结构为链表为例进行说明。同一个IP数据包流含有相同的流四元组信息源IP地址,目的IP地址,IP标识,协议类型。将该四个信息作为四个特征值。如图5所示为IP数据包的IP首部信息,源IP地址、目的IP地址、IP标识以及协议类型均携带在该IP数据包头中,其中IP标识占16位,IP软件在存储器中维持一个计数器,每产生一个数据包,计数器就加1,并将此值赋给标识字段,当数据包由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据包的标识字段中。相同的标识字段的值使分片后的各数据包分片最后能正确地重装成为原来的数据包;协议类型占8位,该字段指出此数据包携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程;源IP地址占32位,表示数据包发送方;目的IP地址占32位,表示数据包接收方。采用上述四元组作为特征属性是因为,如果两个IP数据包的这四个字段的值相同,就可以确定这两个IP数据包属于同一个IP数据流。定位过程如图6所示,包括 步骤610,接收IP数据包,根据IP数据包头信息,提取特征属性;步骤620,判断数据包是否为IP协议数据包,如果是,执行步骤630,如果不是,本流程结束;步骤630,提取该IP协议数据包头部的四元组信息,并保存在结构体中;步骤640,将步骤630得到的结构体整体作为关键值查询hash表;步骤650,判断hash表是否有返回结果,如果有,执行步骤660,如果没有,执行步骤 670 ;步骤660,如果有返回结果则说明有匹配的关键值,说明此前有属于同一个IP数据包的分片,将此IP数据包指针插入到HASH查询得到的链表中,结束;步骤670,如果没有返回结果则说明没有匹配的关键值,则新建一个链表,并将并将此链表插入哈希表中,然后把数据包指针插入链表中。当所有的数据包都传输完毕后,同一个链表中的所有数据分片便是属于同一个IP数据包流的。这种方法定位利用HASH表搜索IP数据流提高了定位的速度,将四元组信息整体作为键值提高了定位的精度,对于其后续的IP数据包重组以及其它应用提供了快速的定位方法。本实施例仅以源IP地址、目的IP地址、IP标识、协议类型作为特征属性为例进行说明。对于其他协议也可采用其他的属性作为特征属性,只要保证能够区分数据包,但不区分数据包中的分片即可。在采用上述方法定位后,将属于同一数据包的多个分片进行重组,各分片的顺序可根据该分片相对于包头的偏移确定。本实施例所用的hash算法采用移位与减法等多种方式,大大提高了命中率,相比于其它类型的hash算法有速度快,分布均匀,hash桶长小的特点,非常适合大数据量的运

ο本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。 ·
权利要求
1.一种数据定位方法,包括 接收分片数据以及特征属性; 以所述特征属性的值作为关键值查找哈希表,如果查找到匹配的关键值,则将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;如果没有查找到匹配的关键值,则在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中。
2.如权利要求I所述的方法,其特征在于 所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性。
3.如权利要求2所述的方法,其特征在于 所述特征属性包括源IP地址、目的IP地址、IP标识和协议类型。
4.如权利要求I或2或3所述的方法,其特征在于 所述数据结构包括链表、数组、树或图。
5.一种数据重组方法,包括 接收分片数据以及特征属性; 以所述特征属性的值作为关键值查找哈希表,如果查找到匹配的关键值,则将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;如果没有查找到匹配的关键值,则在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中; 将同一数据结构中的分片数据按顺序重组。
6.如权利要求5所述的方法,其特征在于 所述将同一数据结构中的分片数据按顺序重组,包括 根据同一数据结构中各分片数据的偏移量顺序重组同一数据结构中的所有分片数据。
7.如权利要求5所述的方法,其特征在于 所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性。
8.如权利要求7所述的方法,其特征在于 所述特征属性包括源IP地址、目的IP地址、IP标识和协议类型。
9.如权利要求5或6或7或8所述的方法,其特征在于 所述数据结构包括链表、数组、树或图。
10.一种数据定位装置,包括接收模块、查找模块和定位模块,其中 所述接收模块,用于接收分片数据以及特征属性; 所述查找模块,用于以所述特征属性的值作为关键值查找哈希表; 所述定位模块,用于在所述查找模块查找到匹配的关键值时,将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;以及用于在所述查找模块没有查找到匹配的关键值时,在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中。
11.如权利要求10所述的装置,其特征在于 所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性;所述数据结构包括链表、数组、树或图。
12.—种数据重组装置,包括接收模块、查找模块、定位模块和重组模块,其中所述接收模块,用于接收分片数据以及特征属性; 所述查找模块,用于以所述特征属性的值作为关键值查找哈希表; 所述定位模块,用于在所述查找模块查找到匹配的关键值时,将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;以及用于在所述查找模块没有查找到匹配的关键值时,在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中; 所述重组模块,用于将同一数据结构中的分片数据按顺序重组。
13.如权利要求12所述的装置,其特征在于 所述特征属性为每个数据包独有的、数据包中的所有分片属性值相同的属性;所述数据结构包括链表、数组、树或图。
14.如权利要求12所述的装置,其特征在于 所述重组模块采用以下方式将同一数据结构中的分片数据按顺序重组根据同一数据结构中各分片数据的偏移量顺序重组同一数据结构中的所有分片数据。
全文摘要
本发明公开了一种数据定位方法及装置,减少定位时间,提高定位精度。所述方法包括接收分片数据以及特征属性;以所述特征属性的值作为关键值查找哈希表,如果查找到匹配的关键值,则将分片数据的指针插入到所述关键值对应的哈希地址所指示的数据结构中;如果没有查找到匹配的关键值,则在哈希表中生成所述关键值对应的新的哈希地址,以及该新的哈希地址指示的数据结构,将分片数据的指针插入所述新的哈希地址所指示的数据结构中。所述定位装置包括接收模块、查找模块和定位模块。本发明采用高效HASH算法定位属于同一个数据流的所有数据包,定位速度快,并且以数据流的特征属性整体作为键值,定位精度高,同时重组的效率也相应提高。
文档编号H04L12/56GK102811158SQ20111014795
公开日2012年12月5日 申请日期2011年6月2日 优先权日2011年6月2日
发明者沈志平, 李冰, 卢勤元 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1