CN101741743B - 基于网络地址排序的双向流组流方法 - Google Patents

基于网络地址排序的双向流组流方法 Download PDF

Info

Publication number
CN101741743B
CN101741743B CN2009102628404A CN200910262840A CN101741743B CN 101741743 B CN101741743 B CN 101741743B CN 2009102628404 A CN2009102628404 A CN 2009102628404A CN 200910262840 A CN200910262840 A CN 200910262840A CN 101741743 B CN101741743 B CN 101741743B
Authority
CN
China
Prior art keywords
address
node
flow
assignment
source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2009102628404A
Other languages
English (en)
Other versions
CN101741743A (zh
Inventor
程光
丁伟
王松
刘军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haian Changzhou University Technology Transfer Center Co., Ltd.
Southeast University
Original Assignee
Southeast University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN2009102628404A priority Critical patent/CN101741743B/zh
Publication of CN101741743A publication Critical patent/CN101741743A/zh
Application granted granted Critical
Publication of CN101741743B publication Critical patent/CN101741743B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开一种基于网络地址排序的双向流组流方法,其特征是:对于每个报文的源IP地址和宿IP地址,在检查哈希链表之前,对源IP地址和宿IP地址这两个IP地址从大到小进行排序,如果源IP地址大于宿IP地址,则在哈希链表中查找{源IP,宿IP}结点,如果源IP地址小于宿IP地址,则在哈希链表中查找{宿IP,源IP}结点,如果在哈希链表中查找到相应的结点,则直接对该结点流量记录进行更新,如果在哈希链表中查找不到相应结点,则生成一个新的结点,该方法的特点是每个报文只需要检查哈希链表一次即可找到双向流结点所在的位置,与传统双向流测量方法相比该方法一方面能节省结点空间的消耗,同时又能够减少哈希链表的查找次数。

Description

基于网络地址排序的双向流组流方法
技术领域
本发明涉及用于网络流量的组流方法,尤其是一种基于网络地址排序的双向流组流方法。
背景技术
双向流就是同时记录两个主机之间出入流量的大小,统计IP地址之间的双向流可以用来建立流量矩阵,以进行网络流量管理、流量计费等;双向流还可以进行往返流之间的大小比较,以识别出流量的平衡性,作为流量异常的一个测度指标。
在测量过程中,双向流信息都被维护在一个哈希链表中,每个哈希链表结点中维护源IP地址、宿IP地址、源IP地址到宿IP地址的出流量和宿IP地址到源IP地址的入流量,每个报文到达都需要根据报文的源IP地址和宿IP地址在哈希链表查找双向流记录。传统哈希链表中查找方法是首先在哈希链表中检查该报文的源IP和宿IP对进行检查,如果在哈希链表中找到该{源IP,宿IP}对,则将该报文的流量累加到{源IP,宿IP}的出流记录中,如果在哈希链表中没有{源IP,宿IP}结点,则哈希链表中查找{宿IP,源IP}结点,如果查找到该结点,则记录在{宿IP,源IP}结点的入流量记录中。如果也没有在哈希链表中没有找到{宿IP,源IP}结点,则在哈希链表中生成一个新的结点用于记录在{宿IP,源IP}结点,并将其出流初始化为0,入流赋值该报文大小。
从上面过程来看,如果要新建一个结点,需要在哈希链表中检查2次以确定是一个新结点。如果一个结点已经在哈希链表中存在{源IP,宿IP}对,如果哈希链表中记录结点是{源IP,宿IP},则只需要检查哈希链表一次,而如果记录的是{宿IP,源IP}结点,则需要检查2次。假设源IP和宿IP之间流量均衡,则已有结点平均要检查1.5次,而如果是平均流长为n,则其平均记录每个报文需要检查(1.5(n-1)+2)/n=(1.5+0.5/n)次>1.5次。因此每个报文平均至少要检查哈希链表1.5次。
另一种方法是对于每个到达的报文,只检查哈希链表中{源IP,宿IP}结点,如果哈希链表中有该结点,则将报文记录在该结点的出流记录中,否则建立新的结点。一旦所有的流量测量结束,则依次检查哈希链表中的每个结点{源IP,宿IP}的反向对{宿IP,源IP}结点,如果查到{宿IP,源IP}结点,则将该结点{宿IP,源IP}删除,并将其记录在流量记录在{源IP,宿IP}结点的入流中。
根据该方法如果每个流都有反向流,则该方法需要的结点数比直接建立双向流的结点数增加一倍。该方法每个报文检查哈希链表的次数为1,最后在单向流合并成双向流过程中,再将哈希链表所有的结点检查一遍,设结点数为平均流长为n,则平均每个报文需要检查哈希链表次数为1+1/n。
发明内容
本发明提出一种基于网络地址排序的双向流组流方法,本发明能够提高网络报文流量的双向流组流效率。
本发明采用如下技术方案:
一种基于网络地址排序的双向流组流方法,其特征是对于每个报文的源IP地址和宿IP地址,在检查哈希链表之前,对源IP地址和宿IP地址这两个IP地址从大到小进行排序,如果源IP地址大于宿IP地址,则在哈希链表中查找{源IP,宿IP}结点,如果源IP地址小于宿IP地址,则在哈希链表中查找{宿IP,源IP}结点,如果在哈希链表中查找到相应的结点,则直接对该结点流量记录进行更新,如果在哈希链表中查找不到相应结点,则生成一个新的结点,具体技术步骤如下:
第一步:设置参数
设置一个指针数组I[n],n为指针数组I的大小,设置n=2m,其中m是大于0的正整数,数组I的每个元素赋值为空指针,设置一个64位长度的比特串S,设置一个哈希函数F,哈希函数F的输入是64位长度的比特串S,哈希函数F输出的哈希值是一个取值范围为0到2m-1之间的正整数,哈希函数F采用目前计算机常用的MD5哈希函数,MD表示信息摘要是由Ron Rivest设计被广泛使用的哈希函数,MD5哈希函数的输入是一个任意长度的比特串,输出是一个128位信息摘要,哈希函数F选取MD5哈希函数哈希值的前m个比特作为其输出哈希值,设置一号IP地址IP1和二号IP地址IP2,设置一号IP地址到二号IP地址的流量为T1,设置二号IP地址到一号IP地址的流量为T2,设置一个结构A,结构A包括四个整数变量和一个指针变量,结构A的四个整数变量分别记录第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量,结构A的指针变量指向下一个结点,测量开始,如果一个新报文到达,进入第二步;
第二步:处理到达报文
读取该报文的源IP地址、宿IP地址、报文大小,比较源IP地址和宿IP地址之间的大小,如果源IP地址大于等于宿IP地址,则赋值一号IP地址IP1为源IP地址,赋值二号IP地址IP2为宿IP地址,赋值一号IP地址到二号IP地址的流量T1为该报文大小,赋值二号IP地址到一号IP地址的流量T2为0,如果源IP地址小于宿IP地址,则赋值一号IP地址IP1为宿IP地址,赋值二号IP地址IP2为源IP地址,赋值一号IP地址到二号IP地址的流量T1为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,将64位比特串S作为哈希函数F的输入,计算哈希值i,读取指针数组I第i个元素的指针,如果该指针为空指针,根据结构A生成一个新的结点,将第i个元素的指针指向这个新生成的结点,进入第三步,如果该指针不为空,则进入第四步;
第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1,赋值这个结点的第二个IP地址为二号IP地址IP2,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2,设置该结点的指针为空指针,进入第六步;
第四步:查找指针链表
查找指针数组I第i个元素指向的结点链表,如果在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,进入第五步,否则根据结构A生成一个新的结点,将数组I第i个元素的指针指向结点链表的最后一个指针指向这个新生成的结点,回到第三步;
第五步:更新结点
累加一号IP地址到二号IP地址的流量T1值更新这个结点的第一个IP地址到第二个IP地址的流量值,累加二号IP地址到一号IP地址的流量T2值更新该结点的第二个IP地址到第一个IP地址的流量值,进入第六步;
第六步:测量结束
如果测量结束,进入第七步,如果测量没有结束,等待一个新报文到达,如果一个新报文到达,回到第二步;
第七步:测量结果输出
查找指针数组I中的所有的结点,将结点中的变量按照结点中的第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量顺序依次输出。
与现有技术相比,本发明具有如下优点及有益效果:
1、该方法的优点是每个报文只需要检查哈希链表一次即可找到双向流结点所在的位置,与传统双向流测量方法相比至少可以提高50%以上的哈希链表检索效率,同时比测量单向流的方法节省一半的结点空间,因此该方法一方面可以节省结点空间的消耗,同时又能够减少哈希链表的查找次数;
2、该方法能够测量统计IP地址间的出入流量大小,其测量结果可以用于建立流量矩阵,进行网络流量管理、流量计费等应用,同时该方法测量的双向流流量还能够用来作为流量异常判断的一个测度指标。
附图说明
图1是使用该方法建立的哈希链表示意图,图中哈希链表数组大小为16,一共有6个结点,处理了9个报文,每个报文的{源IP、宿IP、流量大小}三元组是{2、1、120}、{4、1、100}、{1、2、150}、{9、5、220}、{1、4、50}、{5、9、350}、{8、3、180}、{2、7、60}、{3、1、80}。
图2是基于网络地址排序的双向流组流方法的流程图。
具体实施方式
一种基于网络地址排序的双向流组流方法,其特征是:对于每个报文的源IP地址和宿IP地址,在检查哈希链表之前,对源IP地址和宿IP地址这两个IP地址从大到小进行排序,如果源IP地址大于宿IP地址,则在哈希链表中查找{源IP,宿IP}结点,如果源IP地址小于宿IP地址,则在哈希链表中查找{宿IP,源IP}结点,如果在哈希链表中查找到相应的结点,则直接对该结点流量记录进行更新,如果在哈希链表中查找不到相应结点,则生成一个新的结点,具体技术步骤如下:
第一步:设置参数
设置一个指针数组I[n],n为指针数组I的大小,设置n=2m,其中m是大于0的正整数,数组I的每个元素赋值为空指针,设置一个64位长度的比特串S,设置一个哈希函数F,哈希函数F的输入是64位长度的比特串S,哈希函数F输出的哈希值是一个取值范围为0到2m-1之间的正整数,哈希函数F采用目前计算机常用的MD5哈希函数,哈希函数F选取MD5哈希函数哈希值的前m个比特作为其输出哈希值,设置一号IP地址IP1和二号IP地址IP2,设置一号IP地址到二号IP地址的流量为T1,设置二号IP地址到一号IP地址的流量为T2,设置一个结构A,结构A包括四个整数变量和一个指针变量,结构A的四个整数变量分别记录第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量,结构A的指针变量指向下一个结点,测量开始,如果一个新报文到达,进入第二步;
第二步:处理到达报文
读取该报文的源IP地址、宿IP地址、报文大小,比较源IP地址和宿IP地址之间的大小,如果源IP地址大于等于宿IP地址,则赋值一号IP地址IP1为源IP地址,赋值二号IP地址IP2为宿IP地址,赋值一号IP地址到二号IP地址的流量T1为该报文大小,赋值二号IP地址到一号IP地址的流量T2为0,如果源IP地址小于宿IP地址,则赋值一号IP地址IP1为宿IP地址,赋值二号IP地址IP2为源IP地址,赋值一号IP地址到二号IP地址的流量T1为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,将64位比特串S作为哈希函数F的输入,计算哈希值i,读取指针数组I第i个元素的指针,如果该指针为空指针,根据结构A生成一个新的结点,将第i个元素的指针指向这个新生成的结点,进入第三步,如果该指针不为空,则进入第四步;
第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1,赋值这个结点的第二个IP地址为二号IP地址IP2,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2,设置该结点的指针为空指针,进入第六步;
第四步:查找指针链表
查找指针数组I第i个元素指向的结点链表,如果在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,进入第五步,否则根据结构A生成一个新的结点,将数组I第i个元素的指针指向结点链表的最后一个指针指向这个新生成的结点,回到第三步;
第五步:更新结点
累加一号IP地址到二号IP地址的流量T1值更新这个结点的第一个IP地址到第二个IP地址的流量值,累加二号IP地址到一号IP地址的流量T2值更新该结点的第二个IP地址到第一个IP地址的流量值,进入第六步;
第六步:测量结束
如果测量结束,进入第七步,如果测量没有结束,等待一个新报文到达,如果一个新报文到达,回到第二步;
第七步:测量结果输出
查找指针数组I中的所有的结点,将结点中的变量按照结点中的第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量顺序依次输出。
图1、图2是基于网络地址排序的双向流组流方法具体实施方式中涉及的示意图和流程图,图1中哈希链表数组大小为16,一共有6个结点,处理了9个报文,
该例子处理报文的{源IP、宿IP、流量大小}三元组是{2、1、120}、{4、1、100}、{1、2、150}、{9、5、220}、{1、4、50}、{5、9、350}、{8、3、180}、{2、7、60}、{3、1、80},其中源IP为2和宿IP为1所对应的64位串S为0x0000000100000002,源IP为4和宿IP为1所对应的64位串S为0x0000000100000004,源IP为9和宿IP为5所对应的64位串S为0x0000000500000009,源IP为8和宿IP为3所对应的64位串S为0x0000000300000008,源IP为7和宿IP为2所对应的64位串S为0x0000000200000007,源IP为3和宿IP为1所对应的64位串S为0x0000000100000003,同时假设哈希函数F对于输入S=0x0000000100000002的哈希值是1,输入S=0x0000000100000004的哈希值是1,输入S=0x0000000500000009的哈希值是4,输入S=0x0000000300000008的哈希值是4,输入S=0x0000000200000007的哈希值是8,输入S=0x0000000100000003的哈希值是13,
本发明实施举例的具体技术步骤如下:
(1)第一步:设置参数
设置一个指针数组I[n],n为指针数组I的大小,设置n=2m=24=16,其中m是大于0的正整数,数组I的每个元素赋值为空指针,设置一个64位长度的比特串S,设置一个哈希函数F,哈希函数F的输入是64位长度的比特串S,哈希函数F输出的哈希值是一个取值范围为0到2m-1之间的正整数,哈希函数F采用目前计算机常用的MD5哈希函数,哈希函数F选取MD5哈希函数哈希值的前m个比特作为其输出哈希值,设置一号IP地址IP1和二号IP地址IP2,设置一号IP地址到二号IP地址的流量为T1,设置二号IP地址到一号IP地址的流量为T2,设置一个结构A,结构A包括四个整数变量和一个指针变量,结构A的四个整数变量分别记录第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量,结构A的指针变量指向下一个结点,测量开始,如果一个新报文到达,进入(2)第二步;
(2)第二步:处理到达报文
读取该报文的源IP地址是2、宿IP地址是1、报文大小是120,比较源IP地址2和宿IP地址1之间的大小,源IP地址大于等于宿IP地址,则赋值一号IP地址IP1为源IP地址为2,赋值二号IP地址IP2为宿IP地址为1,赋值一号IP地址到二号IP地址的流量T1为该报文大小为120,赋值二号IP地址到一号IP地址的流量T2为0,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000100000002,将64位比特串S作为哈希函数F的输入,计算哈希值1,读取指针数组I第1个元素的指针,该指针为空指针,根据结构A生成一个新的结点,将第1个元素的指针指向这个新生成的结点,进入(3)第三步;
(3)第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1为2,赋值这个结点的第二个IP地址为二号IP地址IP2为1,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1为120,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进入(4)第六步;
(4)第六步:测量结束
测量没有结束,等待一个新报文到达,如果一个新报文到达,回到(5)第二步;
(5)第二步:处理到达报文
读取该报文的源IP地址为4、宿IP地址为1、报文大小100,比较源IP地址4和宿IP地址1之间的大小,源IP地址4大于等于宿IP地址1,则赋值一号IP地址IP1为源IP地址为4,赋值二号IP地址IP2为宿IP地址为1,赋值一号IP地址到二号IP地址的流量T1为该报文大小为100,赋值二号IP地址到一号IP地址的流量T2为0,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000100000004,将64位比特串S作为哈希函数F的输入,计算哈希值1,读取指针数组I第1个元素的指针,该指针不为空,则进入(6)第四步;
(6)第四步:查找指针链表
查找指针数组I第1个元素指向的结点链表,在这个链表中没有找到这个结点,则根据结构A生成一个新的结点,将数组I第1个元素的指针指向结点链表的最后一个指针指向这个新生成的结点,回到(7)第三步;
(7)第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1为4,赋值这个结点的第二个IP地址为二号IP地址IP2为1,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1为100,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进入(8)第六步;
(8)第六步:测量结束
测量没有结束,一个新报文到达,回到(9)第二步;
(9)第二步:处理到达报文
读取该报文的源IP地址为1、宿IP地址为2、报文大小为150,比较源IP地址1和宿IP地址2之间的大小,源IP地址1小于宿IP地址2,则赋值一号IP地址IP1为宿IP地址为2,赋值二号IP地址IP2为源IP地址为1,赋值一号IP地址到二号IP地址的流量T1为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小为150,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000100000002,将64位比特串S作为哈希函数F的输入,计算哈希值1,读取指针数组I第1个元素的指针,该指针不为空,则进入(10)第四步;
(10)第四步:查找指针链表
查找指针数组I第1个元素指向的结点链表,在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,进入(11)第五步;
(11)第五步:更新结点
累加一号IP地址到二号IP地址的流量T1值0更新这个结点的第一个IP地址到第二个IP地址的流量值,更新后结果为120,累加二号IP地址到一号IP地址的流量T2值150更新该结点的第二个IP地址到第一个IP地址的流量值,更新后结果为150,进入(12)第六步;
(12)第六步:测量结束
测量没有结束,一个新报文到达,回到(13)第二步;
(13)第二步:处理到达报文
读取该报文的源IP地址9、宿IP地址5、报文大小220,比较源IP地址9和宿IP地址5之间的大小,源IP地址9大于等于宿IP地址5,则赋值一号IP地址IP1为源IP地址为9,赋值二号IP地址IP2为宿IP地址为5,赋值一号IP地址到二号IP地址的流量T1为该报文大小为220,赋值二号IP地址到一号IP地址的流量T2为0,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000500000009,将64位比特串S作为哈希函数F的输入,计算哈希值4,读取指针数组I第4个元素的指针,该指针为空指针,根据结构A生成一个新的结点,将第4个元素的指针指向这个新生成的结点,进入(14)第三步;
(14)第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1为9,赋值这个结点的第二个IP地址为二号IP地址IP2为5,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1为220,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进入(15)第六步;
(15)第六步:测量结束
测量没有结束,一个新报文到达,回到(16)第二步;
(16)第二步:处理到达报文
读取该报文的源IP地址为1、宿IP地址为4、报文大小50,比较源IP地址1和宿IP地址4之间的大小,源IP地址1小于宿IP地址4,则赋值一号IP地址IP1为宿IP地址为4,赋值二号IP地址IP2为源IP地址为1,赋值一号IP地址到二号IP地址的流量T1为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小为,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000100000004,将64位比特串S作为哈希函数F的输入,计算哈希值1,读取指针数组I第1个元素的指针,该指针不为空,则进入(16A)第四步;
(16A)第四步:查找指针链表
查找指针数组I第1个元素指向的结点链表,在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,进入(17)第五步;
(17)第五步:更新结点
累加一号IP地址到二号IP地址的流量T1值0更新这个结点的第一个IP地址到第二个IP地址的流量值,累加后结果为100,累加二号IP地址到一号IP地址的流量T2值50更新该结点的第二个IP地址到第一个IP地址的流量值,累加后结果为50,进入(18)第六步;
(18)第六步:测量结束
测量没有结束,一个新报文到达,回到(19)第二步;
(19)第二步:处理到达报文
读取该报文的源IP地址为5、宿IP地址为9、报文大小为350,比较源IP地址5和宿IP地址9之间的大小,源IP地址5小于宿IP地址9,则赋值一号IP地址IP1为宿IP地址为9,赋值二号IP地址IP2为源IP地址为5,赋值一号IP地址到二号IP地址的流量T1为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小为350,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000500000009,将64位比特串S作为哈希函数F的输入,计算哈希值为4,读取指针数组I第4个元素的指针,该指针不为空,则进入(20)第四步;
(20)第四步:查找指针链表
查找指针数组I第4个元素指向的结点链表,在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,进入(21)第五步;
(21)第五步:更新结点
累加一号IP地址到二号IP地址的流量T1值0更新这个结点的第一个IP地址到第二个IP地址的流量值,更新后的结果为220,累加二号IP地址到一号IP地址的流量T2值350更新该结点的第二个IP地址到第一个IP地址的流量值,更新后结果为350,进入(22)第六步;
(22)第六步:测量结束
测量没有结束,一个新报文到达,回到(23)第二步;
(23)第二步:处理到达报文
读取该报文的源IP地址为8、宿IP地址为3、报文大小为180,比较源IP地址8和宿IP地址3之间的大小,源IP地址8大于宿IP地址3,则赋值一号IP地址IP1为源IP地址为8,赋值二号IP地址IP2为宿IP地址为3,赋值一号IP地址到二号IP地址的流量T1为该报文大小为180,赋值二号IP地址到一号IP地址的流量T2为0,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000300000008,将64位比特串S作为哈希函数F的输入,计算哈希值为4,读取指针数组I第4个元素的指针,该指针不为空,则进入(24)第四步;
(24)第四步:查找指针链表
查找指针数组I第4个元素指向的结点链表,在这个链表中没有找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,根据结构A生成一个新的结点,将数组I第4个元素的指针指向结点链表的最后一个指针指向这个新生成的结点,回到(25)第三步;
(25)第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1为8,赋值这个结点的第二个IP地址为二号IP地址IP2为3,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1为180,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进入(26)第六步;
(26)第六步:测量结束
测量没有结束,一个新报文到达,回到(27)第二步;
(27)第二步:处理到达报文
读取该报文的源IP地址为2、宿IP地址为7、报文大小为60,比较源IP地址2和宿IP地址7之间的大小,源IP地址2小于宿IP地址7,则赋值一号IP地址IP1为宿IP地址为7,赋值二号IP地址IP2为源IP地址为2,赋值一号IP地址到二号IP地址的流量T1为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小为60,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,将64位比特串S作为哈希函数F的输入,S=0x0000000200000007,计算哈希值8,读取指针数组I第8个元素的指针,该指针为空指针,根据结构A生成一个新的结点,将第8个元素的指针指向这个新生成的结点,进入(28)第三步;
(28)第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1为7,赋值这个结点的第二个IP地址为二号IP地址IP2为2,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1为0,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为60,设置该结点的指针为空指针,进入(29)第六步;
(29)第六步:测量结束
测量没有结束,一个新报文到达,回到(30)第二步;
(30)第二步:处理到达报文
读取该报文的源IP地址为3、宿IP地址为1、报文大小为80,比较源IP地址3和宿IP地址1之间的大小,源IP地址3大于宿IP地址1,则赋值一号IP地址IP1为源IP地址为3,赋值二号IP地址IP2为宿IP地址为1,赋值一号IP地址到二号IP地址的流量T1为该报文大小为80,赋值二号IP地址到一号IP地址的流量T2为0,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000100000003,将64位比特串S作为哈希函数F的输入,计算哈希值为13,读取指针数组I第13个元素的指针,如果该指针为空指针,根据结构A生成一个新的结点,将第13个元素的指针指向这个新生成的结点,进入(30A)第三步;
(30A)第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1为3,赋值这个结点的第二个IP地址为二号IP地址IP2为1,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1为80,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进入(31)第六步;
(31)第六步:测量结束
测量结束,进入(32)第七步;
(32)第七步:测量结果输出
查找指针数组I中的所有的结点,将结点中的变量按照结点中的第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量顺序依次输出。
输出结果为:

Claims (1)

1.一种基于网络地址排序的双向流组流方法,其特征是:对于每个报文的源IP地址和宿IP地址,在检查哈希链表之前,对源IP地址和宿IP地址这两个IP地址从大到小进行排序,如果源IP地址大于宿IP地址,则在哈希链表中查找{源IP,宿IP}结点,如果源IP地址小于宿IP地址,则在哈希链表中查找{宿IP,源IP}结点,如果在哈希链表中查找到相应的结点,则直接对该结点流量记录进行更新,如果在哈希链表中查找不到相应结点,则生成一个新的结点,具体技术步骤如下:
第一步:设置参数
设置一个指针数组I[n],n为指针数组I的大小,设置n=2m,其中m是大于0的正整数,数组I的每个元素赋值为空指针,设置一个64位长度的比特串S,设置一个哈希函数F,哈希函数F的输入是64位长度的比特串S,哈希函数F输出的哈希值是一个取值范围为0到2m-1之间的正整数,哈希函数F采用MD5哈希函数,哈希函数F选取MD5哈希函数哈希值的前m个比特作为其输出哈希值,设置一号IP地址IP1和二号IP地址IP2,设置一号IP地址到二号IP地址的流量为T1,设置二号IP地址到一号IP地址的流量为T2,设置一个结构A,结构A包括四个整数变量和一个指针变量,结构A的四个整数变量分别记录第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量,结构A的指针变量指向下一个结点,测量开始,如果一个新报文到达,进入第二步;
第二步:处理到达报文
读取该报文的源IP地址、宿IP地址、报文大小,比较源IP地址和宿IP地址之间的大小,如果源IP地址大于等于宿IP地址,则赋值一号IP地址IP1为源IP地址,赋值二号IP地址IP2为宿IP地址,赋值一号IP地址到二号IP地址的流量T1为该报文大小,赋值二号IP地址到一号IP地址的流量T2为0,如果源IP地址小于宿IP地址,则赋值一号IP地址IP1为宿IP地址,赋值二号IP地址IP2为源IP地址,赋值一号IP地址到二号IP地址的流量T1为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,将64位比特串S作为哈希函数F的输入,计算哈希值i,读取指针数组I第i个指针,如果该指针为空指针,根据结构A生成一个新的结点,将第i个指针指向这个新生成的结点,进入第三步,如果该指针不为空,则进入第四步;
第三步:初始化新结点
赋值这个结点的第一个IP地址为一号IP地址IP1,赋值这个结点的第二个IP地址为二号IP地址IP2,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量T1,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2,设置该结点的指针为空指针,进入第六步;
第四步:查找指针链表
查找指针数组I第i个元素指向的结点链表,如果在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,进入第五步,否则根据结构A生成一个新的结点,将数组I第i个元素的指针指向结点链表的最后一个指针指向这个新生成的结点,回到第三步;
第五步:更新结点
累加一号IP地址到二号IP地址的流量T1值更新这个结点的第一个IP地址到第二个IP地址的流量值,累加二号IP地址到一号IP地址的流量T2值更新该结点的第二个IP地址到第一个IP地址的流量值,进入第六步;
第六步:测量结束
如果测量结束,进入第七步,如果测量没有结束,等待一个新报文到达,如果一个新报文到达,回到第二步;
第七步:测量结果输出
查找指针数组I中的所有的结点,将结点中的变量按照结点中的第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量顺序依次输出。
CN2009102628404A 2009-12-11 2009-12-11 基于网络地址排序的双向流组流方法 Active CN101741743B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102628404A CN101741743B (zh) 2009-12-11 2009-12-11 基于网络地址排序的双向流组流方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102628404A CN101741743B (zh) 2009-12-11 2009-12-11 基于网络地址排序的双向流组流方法

Publications (2)

Publication Number Publication Date
CN101741743A CN101741743A (zh) 2010-06-16
CN101741743B true CN101741743B (zh) 2011-10-05

Family

ID=42464649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102628404A Active CN101741743B (zh) 2009-12-11 2009-12-11 基于网络地址排序的双向流组流方法

Country Status (1)

Country Link
CN (1) CN101741743B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105553695B (zh) * 2015-12-08 2018-08-24 南阳理工学院 一种基于两级双向哈希链表的ip数据流管理方法
CN105515919A (zh) * 2016-01-20 2016-04-20 中国电子科技集团公司第五十四研究所 一种基于哈希压缩算法的网络流量监控方法
CN107368527B (zh) * 2017-06-09 2020-06-30 东南大学 基于数据流的多属性索引方法
CN109246123B (zh) * 2018-09-30 2021-10-22 广州酷狗计算机科技有限公司 媒体流获取方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866868A (zh) * 2006-01-18 2006-11-22 华为技术有限公司 一种多协议标签交换网络流量管理系统及方法
CN101119321A (zh) * 2007-09-29 2008-02-06 杭州华三通信技术有限公司 网络流量分类处理方法及网络流量分类处理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866868A (zh) * 2006-01-18 2006-11-22 华为技术有限公司 一种多协议标签交换网络流量管理系统及方法
CN101119321A (zh) * 2007-09-29 2008-02-06 杭州华三通信技术有限公司 网络流量分类处理方法及网络流量分类处理装置

Also Published As

Publication number Publication date
CN101741743A (zh) 2010-06-16

Similar Documents

Publication Publication Date Title
Pontarelli et al. Traffic-aware design of a high-speed FPGA network intrusion detection system
CN101227318B (zh) 高速网络流量的超点实时检测方法
CN101901248B (zh) 一种布隆过滤器的生成、更新以及查询元素方法和装置
Kirsch et al. Hash-based techniques for high-speed packet processing
CN101741743B (zh) 基于网络地址排序的双向流组流方法
CN106452868A (zh) 一种支持多维度聚合分类的网络流量统计实现方法
Min Analysis on bubble sort algorithm optimization
CN105653554A (zh) 一种文件数据比对方法和系统
CN101655821B (zh) 一种解决地址空间映射哈希地址冲突的方法及装置
CN103701469B (zh) 一种大规模图数据的压缩存储方法
CN105573711B (zh) 一种数据缓存方法及装置
CN103559303A (zh) 一种对数据挖掘算法的评估与选择方法
CN102521356B (zh) 基于确定有限状态自动机的正则表达式匹配设备和方法
CN108388490A (zh) 一种测试高端服务器内存的方法及系统
CN108363791A (zh) 一种数据库的数据同步方法和装置
CN107730097A (zh) 一种母线负荷预测方法、装置及计算设备
CN111541617B (zh) 一种用于高速大规模并发数据流的数据流表处理方法及装置
CN104794129B (zh) 一种基于查询日志的数据处理方法和系统
CN109491602A (zh) 一种用于Key-Value数据存储的Hash计算方法及系统
US6681224B2 (en) Method and device for sorting data, and a computer product
CN116457751A (zh) 一种写数据通路结构和芯片
CN104424596B (zh) 基于通信日志的报文分析方法以及生产报文分析工具
CN103095249A (zh) 一种中值滤波电路及方法
CN101741646B (zh) 基于数组链表的大流量网络地址前缀检测方法
CN100375463C (zh) 一种使用分段压缩表实现最长前缀地址路由查找的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SOWTHEAST UNIV.

Effective date: 20131018

Owner name: HAIAN CHANGDA TECHNOLOGY TRANSFER CENTER CO., LTD.

Free format text: FORMER OWNER: SOWTHEAST UNIV.

Effective date: 20131018

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 210096 NANJING, JIANGSU PROVINCE TO: 226600 NANTONG, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20131018

Address after: 226600 No. 8 Yingbin Road, software park, Haian County, Jiangsu Province

Patentee after: Haian Changzhou University Technology Transfer Center Co., Ltd.

Patentee after: Southeast University

Address before: 210096 Jiangsu city Nanjing Province four pailou No. 2

Patentee before: Southeast University