[发明专利]一种用于网络流量识别的流量数据公共特征提取方法有效
申请号: | 201910854204.4 | 申请日: | 2019-09-10 |
公开(公告)号: | CN110519179B | 公开(公告)日: | 2020-06-12 |
发明(设计)人: | 原玉磊;陈曙晖;赵宝康;赵锋;时向泉;陶静;韩彪;周静 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | H04L12/851 | 分类号: | H04L12/851 |
代理公司: | 长沙中科启明知识产权代理事务所(普通合伙) 43226 | 代理人: | 任合明 |
地址: | 410003 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明了公开了一种用于网络流量识别的流量数据公共特征提取方法,目的是解决网络流量数据公共特征快速提取问题。技术方案是先构建网络流量数据公共特征提取系统。该系统从流量数据文件读取网络数据报文,生成网络流链表;对网络流链表中的元素分别构建流数据序列;根据特征子序列参数将流数据序列截取为不同长度的特征子序列,根据特征子序列生成流特征树;对每个节点计算特征子序列的长度和每个特征子序列在流数据序列中出现的概率,从计算节点概率后的流特征树中提取出符合特征序列限定参数条件的公共特征序列。采用本发明能满足目前网络流量识别对于公共特征提取的速度和准确性的要求。 | ||
搜索关键词: | 一种 用于 网络流量 识别 流量 数据 公共 特征 提取 方法 | ||
【主权项】:
1.一种用于网络流量识别的流量数据公共特征提取方法,其特征在于包括以下步骤:/n第一步,构建网络流量数据公共特征提取系统,网络流量数据公共特征提取系统由流重组部件、流数据序列构建部件、特征子序列提取部件、流特征树构建部件、特征子序列概率统计部件、特征序列输出部件、参数配置文件组成;/n参数配置文件用于存储网络流量数据公共特征提取系统的输入参数,包括流数据序列参数、特征子序列参数、流数据序列总数N、特征序列限定参数;流数据序列参数包括构建流数据序列的最大报文数量Np、构建流数据序列时使用的每个报文最大字节数量Nb,Np和Nb均为整数;特征子序列参数包括特征子序列的最小长度MINL、特征子序列的最大长度MAXL,MINL和MAXL均为整数;特征序列限定参数包括特征序列在数据流中最小出现概率F,特征子序列最小长度MINL,特征子序列最大长度MAXL;/n流重组部件与流数据序列构建部件和流量数据文件相连,它从流量数据文件获取网络数据报文,并根据网络数据报文的五元组以及时间标签,将流量数据文件中属于同一个网络流的数据报文组合到一起,成为网络流链表的一个元素,并将网络流链表输出给流数据序列构建部件;网络流链表中1个元素存储1个网络流的数据报文,网络流链表元素包括7个域,分别为:网络流的源IP地址、目的IP地址、源端口、目的端口、协议号、时间标签信息、报文链表;报文链表中每个元素存储一个数据报文,若属于同一个网络流的数据报文有M个,则报文链表中有M个元素;所述五元组为源IP地址、目的IP地址、源端口、目的端口、协议号;/n流数据序列构建部件与流重组部件、特征子序列提取部件和参数配置文件相连,流数据序列构建部件从参数配置文件读取流数据序列参数Np和Nb,从流重组部件接收网络流链表,根据Np和Nb,将网络流链表中的每个元素构建成流数据序列,并统计流数据序列总数N,将构建的N个流数据序列输出给特征子序列提取部件,将流数据序列总数N输出给参数配置文件;/n特征子序列提取部件与流数据序列构建部件、流特征树构建部件和参数配置文件相连,它从流数据序列构建部件接收N个流数据序列,从参数配置文件读取特征子序列参数,根据特征子序列参数将N个流数据序列分解为Ns个长度不一的特征子序列,并将特征子序列、特征子序列所属流数据序列序号、特征子序列总数Ns发送给流特征树构建部件;/n流特征树构建部件与特征子序列提取部件和特征子序列概率统计部件相连,它从特征子序列提取部件接收特征子序列、特征子序列所属流数据序列序号、特征子序列总数Ns,构建流特征树,并将流特征树输出给特征子序列概率统计部件;流特征树是存储特征子序列的数据结构,流特征树中的1个节点存储特征子序列中的1个字节,从根节点直至某个叶子节点的各级子节点存储的字节连接构成一个特征子序列;节点包含8个域:①c,记录当前节点表示的字节的值;②flag,记录该节点存储的字节是否为所属特征子序列的结尾字节,1表示是结尾字节,0表示不是结尾字节;③deep,记录当前字节在所属特征子序列中的位置,特征子序列中第k个字节对应节点的deep值为k;④count,值为包含以当前字节结尾的特征子序列的流数据序列的个数;⑤flownum,记录以当前字节结尾的特征子序列最后出现的流数据序列的编号;⑥parent,是指针,指向该节点的父节点;⑦f,是实数,记录从根节点直至当前节点的各级子节点存储的字节构成的特征子序列在报文链表中出现的概率;⑧next[MAX],指针数组,每个元素指向本节点的1个子节点,每个子节点存储本字节在特征子序列中的下一个字节,其中MAX为整数且MAX≥256;/n特征子序列概率统计部件与流特征树构建部件、特征序列输出部件和参数配置文件相连,它从流特征树构建部件接收流特征树,扫描流特征树的每个节点,计算流特征树的一个节点记录的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,将计算特征子序列在流数据序列中出现概率后的流特征树输出给特征序列输出部件;/n特征序列输出部件与特征子序列概率统计部件和参数配置文件相连,它从特征子序列概率统计部件接收计算特征子序列在流数据序列中出现概率后的流特征树,从参数配置文件读取特征序列限定参数,扫描计算特征子序列在流数据序列中出现概率后的流特征树,根据特征序列限定参数找出满足特征序列限定参数条件的节点,获得流数据序列中的公共特征序列;/n第二步,流重组部件从流量数据文件读取网络数据报文,根据网络数据报文的五元组和时间标签,将同一个网络流的M个网络报文组合到一起,生成网络流链表,方法是:/n2.1流重组部件初始化网络流链表为空;/n2.2令网络报文序号d=1;/n2.3流重组部件从流量数据文件读取第d个网络数据报文,提取第d个网络数据报文的五元组,判定第d个网络数据报文是否属于网络流链表中已经存在的某元素所代表的网络流,根据判定结果进行以下步骤:/n2.3.1如果第d个网络数据报文的源IP地址与网络流链表中元素Y的源IP地址相同且第d个网络数据报文的目的IP地址与元素Y的目的IP地址相同,或者第d个网络数据报文的源IP地址与元素Y的目的IP地址相同且报文的目的IP地址与元素Y的源IP地址相同,转步骤2.3.2,否则说明第d个网络数据报文属于新的网络流,转步骤2.4;/n2.3.2流重组部件判断端口,如果第d个网络数据报文的源端口与网络流链表中元素Y的源端口相同且第d个网络数据报文的目的端口与元素Y的目的端口相同,或者报文的源端口与网络流链表中元素Y的目的端口相同且第d个网络数据报文的目的端口与元素Y的源端口相同,转步骤2.3.3,否则说明第d个网络数据报文属于新的网络流,转步骤2.4;/n2.3.3流重组部件判断时间标签,如果第d个网络数据报文的时间标签与元素Y的时间标签之差在阈值m内,0<m≤100毫秒,则第d个网络数据报文属于元素Y所代表的网络流,转步骤2.3.4,否则第d个网络数据报文属于新的网络流,转步骤2.4;/n2.3.4将第d个网络数据报文加入到元素Y的报文链表中,转步骤2.5;/n2.4在网络流链表中添加网络流链表元素,以第d个网络数据报文五元组为新网络流链表元素的五元组,将第d个网络数据报文加至该新网络流链表元素的报文链表;/n2.5令d=d+1,若流量数据文件中还有未处理的报文,转步骤2.3,若流量数据文件中的所有报文均已处理完,转2.6;/n2.6流重组部件将网络流链表发送给流数据序列构建部件,令此时的网络流链表元素为N个;/n第三步,流数据序列构建部件从参数配置文件读取流数据序列参数Np和Nb,从流重组部件接收网络流链表,根据Np、Nb对网络流链表中的N个元素分别构建流数据序列,得到N个流数据序列,方法为:/n3.1流数据序列构建部件从参数配置文件读取参数Np和Nb;/n3.2初始化循环参数i=1;/n3.3若Np≤s,s是第i个网络流链表元素的报文链表中报文数量,流数据序列构建部件从第i个网络流链表元素的报文链表中提取前Np个报文,令取出的报文为 其中1≤u≤Np,转3.4;若Np>s,则取第i个网络流链表元素的报文链表中所有s个报文,令取出的报文为S1,S2,…Sv…,Ss,其中1≤v≤s,转3.5;/n3.4流数据序列构建部件分别从 中提取前Nb个字节,按照先后顺序将提取的Np个长度为Nb的字节串接在一起构建第i条流数据序列,转3.6;/n3.5流数据序列构建部件分别从S1,S2,…Sv…,Ss中提取前Nb个字节,按照先后顺序将提取的s个长度为Nb的字节串接在一起构建第i条流数据序列,转3.6;/n3.6若i<N,令i=i+1,转步骤3.2,若i=N,转步骤3.7;/n3.7流数据序列构建部件将N个流数据序列发送给特征子序列提取部件,此时流数据序列总数为N,流数据序列构建部件将参数N发送给参数配置文件;/n第四步,特征子序列提取部件从参数配置文件读取特征子序列参数,从流数据序列构建部件接收N个流数据序列,并根据特征子序列参数将N个流数据序列截取为Ns个不同长度的特征子序列,特征子序列是流数据序列中的子序列,作为流数据公共特征的候选,方法为:/n4.1特征子序列提取部件从参数配置文件读取特征子序列参数,初始化循环参数i=1,初始化提取的特征子序列的个数Ns=0;/n4.2特征子序列提取部件按字节计算第i条流数据序列的长度LENi;/n4.3特征子序列提取部件定义用于截取特征子序列的2个指针p和q,其中p为截取子序列的首指针,q为截取子序列的尾指针,通过移动p和q,截取第i条流数据序列的不同的特征子序列,得到Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn,方法是:/n4.3.1定义第一循环变量jp=1,第二循环变量jq=1;/n4.3.2移动p,使p指向第i条流数据序列的第jp个字节,令jq=jp+MINL-1;/n4.3.3令jq=jq+1,移动q,使q指向第i条流数据序列的第jq个字节;/n4.3.4截取并存储指针p和q间的特征子序列,并将该特征子序列所在流数据的序号放到序号数组fn中,即令fn[Ns]=i;令Ns=Ns+1;/n4.3.5如果jq<jp+MAXL,转4.3.3;/n4.3.6如果jp<LENi-MAXL,令jp=jp+1,返回4.3.2;否则第i条流数据序列提取完毕,得到Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn,转4.4;/n4.4若i<N,令i=i+1,转步骤4.2,若i=N,将Ns个特征子序列、Ns个特征子序列所在流数据序号数组fn以及特征子序列总数Ns发送给流特征数构建部件;/n第五步,流特征树构建部件从特征子序列提取部件接收Ns个特征子序列,根据Ns个特征子序列生成流特征树,方法为:/n5.1初始化流特征树根节点V0,V0的各个域初始化为:V0的c=0,V0的flag=0,V0的deep=0,V0的count=0,V0的flownum=0,V0的parent=V0,V0的f=0,V0的next[i2]=0,i2=0,1…MAX-1;/n5.2令第三循环变量i3=1,令第i3个特征子序列为Bi3;/n5.3以字节为单位计算Bi3的长度NBi3,对Bi3中的第k个字节建立特征树节点,将字节在Bi3中的前后顺序关系转换为特征树中节点间的父子关系,以V0作为记录Bi3首字节的节点的父节点,将Bi3加入特征树,方法如下:/n5.3.1定义当前处理的特征树节点cur0,令cur0=V0,初始化特征子序列字节序号k=1;/n5.3.2获取Bi3的第k个字节Bik,设Bik的无符号整数值为Xk;/n5.3.3如果cur0节点的next[Xk]值不为0,转步骤5.3.6;如果cur0节点的next[Xk]值为0,转步骤5.3.4。/n5.3.4为字节Bik建立特征树节点VBik,按照下述方法为VBik赋值:/n如果k<NBi3-1,则:令VBik的c=Xk,flag=0,令VBik的deep=k,令VBik的count=0,令VBik的flownum=0,令VBik的parent=cur0,令VBik的next[i4]=0,i4=0,1…MAX-1,转5.3.5;/n如果k=NBi3-1,令VBik的flag=1,令VBik的deep=k,令VBik的count=1,令VBik的flownum=0,令VBik的parent=cur0,令VBik的next[i4]=0,转5.3.5;/n5.3.5将节点VBik插入特征树,方法是令节点cur0的next[Xk]为VBik,即令cur0->next[Xk]=VBik;/n5.3.6令节点VBik为当前节点:即令cur0=VBik;/n5.3.7如果k=NBi3-1且节点cur0的flownum不等于fn[i3]且cur0的flag等于0,重置cur0中各域的值,即令flag=1,count=count+1,flownum=fn[i3],转5.3.9;否则,转5.3.8;/n5.3.8若k<NBi3-1,令k=k+1,转步骤5.3.2/n5.3.9若i3<Ns,令i3=i3+1,转5.3;否则将构建的根节点为V0的流特征树发送给特征子序列概率统计部件;/n第六步,特征子序列概率统计部件从流特征树构建部件接收流特征树,从参数配置文件读取流数据序列总数N,扫描流特征树的每个节点,对每个节点计算其所有子节点存储的特征子序列的长度和每个特征子序列在流数据序列中出现的概率,并将计算节点概率后的流特征树输出给特征序列输出部件;/n第七步,特征序列输出部件从特征子序列概率统计部件接收计算节点概率后的流特征树,从参数配置文件读取特征序列限定参数,根据特征序列限定参数从计算节点概率后的流特征树中提取出符合特征序列限定参数条件的特征序列,即流数据序列中的公共特征序列;从计算节点概率后的流特征树中提取出流数据串中的公共特征序列,方法是:/n7.1定义特征树节点cur2,令cur2为计算节点概率后的流特征树的根节点V0;/n7.2判断cur2是否为空。若cur2不为空,转步骤7.3,若cur2为空或者cur2->count=0,cur2->count指cur2的count,转7.4.2;/n7.3判断cur2代表的子序列是否满足特征序列条件,是则获取并输出公共特征序列,否则遍历下一个节点,具体步骤如下:/n7.3.1判断cur2是否同时满足以下2个条件:以cur2为结尾字节的子序列是否同时满足特征序列条件即:/n①cur2->f大于F,cur2->f指cur2的f;/n②cur2->deep小于MAXL并且大于MINL,cur2->deep指cur2的deep;/n如果2个条件均满足,以cur2为结尾字节的子序列满足公共特征序列条件,执行7.3.4,否则转7.4;/n7.3.4定义变量deep0=cur2->deep,定义用于存储特征序列的长度为deep0的数组str,令str[j]=0,初始化循环变量j=0,定义变量cur3=cur2;/n7.3.5令str[j]=cur3->c,cur3=cur3->parent,cur3->c指cur3的c,cur3->parent指cur3的parent;/n7.3.6令j=j+1,如果j小于deep0,转7.3.5;如果j大于等于deep0,转7.3.7;/n7.3.7令str[j]=0,将公共特征序列str输出至文件file;/n7.4定义循环变量i4=0,循环处理cur2的每个子节点,计算步骤如下:/n7.4.1将第i4个子节点赋值给cur2,令cur2=cur2->next[i4]。转步骤7.2;/n7.4.2令i4=i4+1,如果i4<MAX转步骤7.4.1,否则转第八步。/n第八步,输出存储所有公共特征序列的文件file,结束。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910854204.4/,转载请声明来源钻瓜专利网。
- 上一篇:低时延数据处理方法、装置及系统
- 下一篇:网卡虚拟化队列调度方法及系统