[发明专利]一种网络流量实时索引方法及系统有效
申请号: | 202110457333.7 | 申请日: | 2021-04-27 |
公开(公告)号: | CN113139100B | 公开(公告)日: | 2022-06-14 |
发明(设计)人: | 王越;谢高岗;张广兴;姜海洋;刁祖龙 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903 |
代理公司: | 北京泛华伟业知识产权代理有限公司 11280 | 代理人: | 王勇 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 网络流量 实时 索引 方法 系统 | ||
1.一种用于构建数据包的索引的方法,其中所述索引采用哈希字典树方式存储数据包的属性值,所述属性值按照预定的规则被分成n段,所述哈希字典树包括树节点、偏移量链表头节点和偏移量节点,所述偏移量节点用于存储数据包的全局偏移量以及下一个偏移量节点的指针,所述偏移量链表头节点用于存储属性值与偏移量链表的第一个偏移量节点的指针,所述树节点为大小为M的指针数组,指针数组的每一元素用于存储指向下一层树节点的指针或指向偏移量链表头节点的指针,n和M为正整数,包括:
步骤100:为收到的第一个数据包的属性值建立根树节点,为该属性值分配一个偏移量链表头节点,并在该偏移量链表头节点中存储该属性值,在该根树节点的属性值第0段使用的数组元素中写入指向该偏移量链表头节点的指针,分配一个偏移量节点,在所述偏移量节点中写入当前属性值对应的数据包偏移量,然后将所述偏移量节点插入到该偏移量链表头节点的偏移量链表中;
步骤110:以所述根树节点作为当前查询节点执行如下步骤:
步骤200:接收下一数据包,将所述属性值按照预定规则分为n段,i为属性段计数器,i=0,1,…, n-1,其初始化为0,执行下列步骤:
步骤201:确定在所述当前查询节点中属性值第i段所使用的元素E的状态,
A)如果E为空:分配一个偏移量链表头节点LHA,并写入当前属性值,更新E为偏移量链表头节点LHA的指针,新分配一个偏移量节点,并写入当前属性值对应的数据包偏移量,然后插入LHA的偏移量链表,转移到步骤200;
B)如果E为指向偏移量链表头节点的指针:比较当前属性值与E中偏移量链表头节点LHB所存储的属性值是否相同,如果相同,新分配一个偏移量节点,并在所述偏移量节点中写入当前属性值对应的数据包偏移量,然后插入该属性值的偏移量链表;如果不同,新分配一个树节点,将偏移量链表头节点LHB的指针写入新分配树节点的LHB属性值第i+1段对应的元素,将新分配的树节点作为所述当前查询节点,i值加1,重复步骤201;
C)如果E为指向下一层树节点的指针:则根据该指针找到下一层树节点,将其作为所述当前查询节点,i值加1,重复步骤201。
2.根据权利要求1所述的方法,所述数据包包括多种属性,对数据包的每一种属性分别建立哈希字典树。
3.根据权利要求2所述的方法,所述数据包的属性包括与该数据包相关的五元组和/或时间戳,所述五元组包括源IP地址、源端口号、目的IP地址、目的端口号、以及协议号。
4.一种记录数据包的方法,包括:
步骤10:捕获数据包,分别将每个数据包和其索引属性值存储到数据包缓冲区和摘要缓冲区;
步骤20:在数据包缓冲区或摘要缓冲区之一满时,执行权利要求1-3之一的方法,建立相应的哈希字典树;
步骤30:将数据包缓冲区中的数据包写入数据文件,将各属性对应的哈希字典树写入索引文件,并记录数据文件与索引文件的关联关系。
5.根据权利要求4所述的方法,其中,将各属性对应的哈希字典树写入索引文件包括对偏移量链表的压缩,包括步骤:
偏移量链表压缩使用的编码结构包括一个或多个块,所述块包括元数据字与数据字,其中,
元数据字用于存储块的元数据信息,包括块内元素个数block len,块数据公共前缀,以及第一个元素的低字节low_bytes,
数据字用于存储块内其他元素的低二字节,包括一个或多个字。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110457333.7/1.html,转载请声明来源钻瓜专利网。