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

文档序号:7723211阅读:110来源:国知局
专利名称:基于网络地址排序的双向流组流方法
技术领域
本发明涉及用于网络流量的组流方法,尤其是一种基于网络地址排序的双向流组
流方法。
背景技术
双向流就是同时记录两个主机之间出入流量的大小,统计IP地址之间的双向流 可以用来建立流量矩阵,以进行网络流量管理、流量计费等;双向流还可以进行往返流之间 的大小比较,以识别出流量的平衡性,作为流量异常的一个测度指标。 在测量过程中,双向流信息都被维护在一个哈希链表中,每个哈希链表结点中维 护源IP地址、宿IP地址、源IP地址到宿IP地址的出流量和宿IP地址到源IP地址的入流 量,每个报文到达都需要根据报文的源IP地址和宿IP地址在哈希链表查找双向流记录。传 统哈希链表中查找方法是首先在哈希链表中检查该报文的源IP和宿IP对进行检查,如果 在哈希链表中找到该{源IP,宿IP}对,则将该报文的流量累加到{源IP,宿IP}的出流记
录中,如果在哈希链表中没有(源iP,宿nn结点,则哈希链表中查找(宿iP,源nn结点, 如果查找到该结点,则记录在(宿iP,源nn结点的入流量记录中。如果也没有在哈希链表 中没有找到(宿iP,源nn结点,则在哈希链表中生成一个新的结点用于记录在(宿ip,源 ip}结点,并将其出流初始化为o,入流赋值该报文大小。 从上面过程来看,如果要新建一个结点,需要在哈希链表中检查2次以确定是一 个新结点。如果一个结点已经在哈希链表中存在(源iP,宿nn对,如果哈希链表中记录结 点是{源ip,宿iPh则只需要检查哈希链表一次,而如果记录的是{宿ip,源ip}结点,则
需要检查2次。假设源IP和宿IP之间流量均衡,则已有结点平均要检查1. 5次,而如果是 平均流长为n,则其平均记录每个报文需要检查(1. 5(n-l)+2)/n = (1. 5+0. 5/n)次> 1. 5 次。因此每个报文平均至少要检查哈希链表1.5次。 另一种方法是对于每个到达的报文,只检查哈希链表中{源IP,宿IP}结点,如果 哈希链表中有该结点,则将报文记录在该结点的出流记录中,否则建立新的结点。 一旦所有
的流量测量结束,则依次检查哈希链表中的每个结点(源iP,宿nn的反向对(宿IP,源 ip}结点,如果查到(宿iP,源nn结点,则将该结点(宿iP,源nn删除,并将其记录在流 量记录在{源ip,宿ip}结点的入流中。 根据该方法如果每个流都有反向流,则该方法需要的结点数比直接建立双向流的
结点数增加一倍。该方法每个报文检查哈希链表的次数为1,最后在单向流合并成双向流过
程中,再将哈希链表所有的结点检查一遍,设结点数为平均流长为n,则平均每个报文需要 检查哈希链表次数为l+l/n。

发明内容
本发明提出一种基于网络地址排序的双向流组流方法,本发明能够提高网络报文 流量的双向流组流效率。
4
本发明采用如下技术方案 —种基于网络地址排序的双向流组流方法,其特征是对于每个报文的源IP地址和宿IP地址,在检查哈希链表之前,对源IP地址和宿IP地址这两个IP地址从大到小进行
排序,如果源ip地址大于宿ip地址,则在哈希链表中查找(源ip,宿nn结点,如果源ip地址小于宿IP地址,则在哈希链表中查找(宿iP,源nn结点,如果在哈希链表中查找到相应的结点,则直接对该结点流量记录进行更新,如果在哈希链表中查找不到相应结点,则生
成一个新的结点,具体技术步骤如下
第一步设置参数 设置一个指针数组I [n] , n为指针数组I的大小,设置n = 2m,其中m是大于0的正整数,数组I的每个元素赋值为空指针,设置一个64位长度的比特串S,设置一个哈希函数F,哈希函数F的输入是64位长度的比特串S,哈希函数F输出的哈希值是一个取值范围为0到2m-l之间的正整数,哈希函数F采用目前计算机常用的MD5哈希函数,MD表示信息摘要是由Ron Rivest设计被广泛使用的哈希函数,MD5哈希函数的输入是一个任意长度的比特串,输出是一个128位信息摘要,哈希函数F选取MD5哈希函数哈希值的前m个比特作为其输出哈希值,设置一号IP地址IP1和二号IP地址IP2,设置一号IP地址到二号IP地址的流量为Tl,设置二号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地址的流量Tl为该报文大小,赋值二号IP地址到一号IP地址的流量T2为0,如果源IP地址小于宿IP地址,则赋值一号IP地址IP1为宿IP地址,赋值二号IP地址IP2为源IP地址,赋值一号IP地址到二号IP地址的流量Tl为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,将64位比特串S作为哈希函数F的输入,计算哈希值i,读取指针数组I第i个元素的指针,如果该指针为空指针,根据结构A生成一个新的结点,将第i个元素的指针
指向这个新生成的结点,进入第三步,如果该指针不为空,则进入第四步;
第三步初始化新结点 赋值这个结点的第一个IP地址为一号IP地址IPl,赋值这个结点的第二个IP地址为二号IP地址IP2,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量Tl,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2,设置该结点的指针为空指针,进入第六步;
第四步查找指针链表 查找指针数组I第i个元素指向的结点链表,如果在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,进入第五步,否则根据结构A生成一个新的结点,将数组I第i个元素的指针指向结点链表的最后一个指针指向这个新生成的结点,回到第三步;
第五步更新结点 累加一号IP地址到二号IP地址的流量Tl值更新这个结点的第一个IP地址到第 二个IP地址的流量值,累加二号IP地址到一号IP地址的流量T2值更新该结点的第二个 IP地址到第一个IP地址的流量值,进入第六步;
第六步测量结束 如果测量结束,进入第七步,如果测量没有结束,等待一个新报文到达,如果一个
新报文到达,回到第二步; 第七步测量结果输出 查找指针数组I中的所有的结点,将结点中的变量按照结点中的第一个IP地址、 第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址 的流量顺序依次输出。 与现有技术相比,本发明具有如下优点及有益效果 1、该方法的优点是每个报文只需要检查哈希链表一次即可找到双向流结点所在 的位置,与传统双向流测量方法相比至少可以提高50%以上的哈希链表检索效率,同时比 测量单向流的方法节省一半的结点空间,因此该方法一方面可以节省结点空间的消耗,同 时又能够减少哈希链表的查找次数; 2、该方法能够测量统计IP地址间的出入流量大小,其测量结果可以用于建立流 量矩阵,进行网络流量管理、流量计费等应用,同时该方法测量的双向流流量还能够用来作 为流量异常判断的一个测度指标。


图1是使用该方法建立的哈希链表示意图,图中哈希链表数组大小为16,一共有6 个结点,处理了9个报文,每个报文的(源IP、宿IP、流量大小1三元组是{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,宿nn结点,如果源ip 地址小于宿iP地址,则在哈希链表中查找(宿iP,源nn结点,如果在哈希链表中查找到相
应的结点,则直接对该结点流量记录进行更新,如果在哈希链表中查找不到相应结点,则生
成一个新的结点,具体技术步骤如下
第一步设置参数 设置一个指针数组I [n] , n为指针数组I的大小,设置n = 2m,其中m是大于0的 正整数,数组I的每个元素赋值为空指针,设置一个64位长度的比特串S,设置一个哈希函 数F,哈希函数F的输入是64位长度的比特串S,哈希函数F输出的哈希值是一个取值范围 为0到2m-l之间的正整数,哈希函数F采用目前计算机常用的MD5哈希函数,哈希函数F选取MD5哈希函数哈希值的前m个比特作为其输出哈希值,设置一号IP地址IPl和二号IP地址IP2,设置一号IP地址到二号IP地址的流量为Tl,设置二号IP地址到一号IP地址的流量为T2,设置一个结构A,结构A包括四个整数变量和一个指针变量,结构A的四个整数变量分别记录第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量,结构A的指针变量指向下一个结点,测量开始,如果
一个新报文到达,进入第二步;
第二步处理到达报文 读取该报文的源IP地址、宿IP地址、报文大小,比较源IP地址和宿IP地址之间的大小,如果源IP地址大于等于宿IP地址,则赋值一号IP地址IPl为源IP地址,赋值二号IP地址IP2为宿IP地址,赋值一号IP地址到二号IP地址的流量Tl为该报文大小,赋值二号IP地址到一号IP地址的流量T2为0,如果源IP地址小于宿IP地址,则赋值一号IP地址IPl为宿IP地址,赋值二号IP地址IP2为源IP地址,赋值一号IP地址到二号IP地址的流量Tl为0,赋值二号IP地址到一号IP地址的流量T2为该报文大小,将一号IP地址IPl赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,将64位比特串S作为哈希函数F的输入,计算哈希值i,读取指针数组I第i个元素的指针,如果该指针为空指针,根据结构A生成一个新的结点,将第i个元素的指针
指向这个新生成的结点,进入第三步,如果该指针不为空,则进入第四步;
第三步初始化新结点 赋值这个结点的第一个IP地址为一号IP地址IPl,赋值这个结点的第二个IP地址为二号IP地址IP2,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量Tl,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2,设置该结点的指针为空指针,进入第六步;
第四步查找指针链表 查找指针数组I第i个元素指向的结点链表,如果在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IP1,该结点的第二个IP地址为二号IP地址IP2,进入第五步,否则根据结构A生成一个新的结点,将数组I第i个元素的指针指向结点
链表的最后一个指针指向这个新生成的结点,回到第三步;
第五步更新结点 累加一号IP地址到二号IP地址的流量Tl值更新这个结点的第一个IP地址到第二个IP地址的流量值,累加二号IP地址到一号IP地址的流量T2值更新该结点的第二个IP地址到第一个IP地址的流量值,进入第六步;
第六步测量结束 如果测量结束,进入第七步,如果测量没有结束,等待一个新报文到达,如果一个
新报文到达,回到第二步; 第七步测量结果输出 查找指针数组I中的所有的结点,将结点中的变量按照结点中的第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量顺序依次输出。
图1、图2是基于网络地址排序的双向流组流方法具体实施方式
中涉及的示意图
7和流程图,图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的哈希值是l,输入S = 0x0000000100000004的哈希值是l,输入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-l之间的正整数,哈希函数F采用目前计算机常用的MD5哈希函数,哈希函数F选取MD5哈希函数哈希值的前m个比特作为其输出哈希值,设置一号IP地址IP1和二号IP地址IP2,设置一号IP地址到二号IP地址的流量为Tl,设置二号IP地址到一号IP地址的流量为T2,设置一个结构A,结构A包括四个整数变量和一个指针变量,结构A的四个整数变量分别记录第一个IP地址、第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址的流量,结构A的指针变量指向下一个结点,测量开始,如果一个新报文到达,进入(2)第二步;[OO49] (2)第二步处理到达报文 读取该报文的源IP地址是2、宿IP地址是1、报文大小是120,比较源IP地址2和宿IP地址1之间的大小,源IP地址大于等于宿IP地址,则赋值一号IP地址IP1为源IP地址为2,赋值二号IP地址IP2为宿IP地址为l,赋值一号IP地址到二号IP地址的流量Tl为该报文大小为120,赋值二号IP地址到一号IP地址的流量T2为O,将一号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为l,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量Tl为120,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进入(4)第六步; (4)第六步测量结束
8
测量没有结束,等待一个新报文到达,如果一个新报文到达,回到(5)第二步;
(5)第二步处理到达报文 读取该报文的源IP地址为4、宿IP地址为1、报文大小100,比较源IP地址4和宿IP地址1之间的大小,源IP地址4大于等于宿IP地址1,则赋值一号IP地址IPl为源IP地址为4,赋值二号IP地址IP2为宿IP地址为l,赋值一号IP地址到二号IP地址的流量Tl为该报文大小为IOO,赋值二号IP地址到一号IP地址的流量T2为O,将一号IP地址IPl赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S = 0x0000000100000004,将64位比特串S作为哈希函数F的输入,计算哈希值l,读取指针数组I第1个元素的指针,该指针不为空,则进入(6)第四步;
(6)第四步查找指针链表 查找指针数组I第1个元素指向的结点链表,在这个链表中没有找到这个结点,则根据结构A生成一个新的结点,将数组I第1个元素的指针指向结点链表的最后一个指针指向这个新生成的结点,回到(7)第三步;
(7)第三步初始化新结点 赋值这个结点的第一个IP地址为一号IP地址IPl为4,赋值这个结点的第二个IP地址为二号IP地址IP2为l,赋值这个结点的第一个IP地址到第二个IP地址的流量值为一号IP地址到二号IP地址的流量Tl为IOO,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进入(8)第六步; (8)第六步测量结束 测量没有结束, 一个新报文到达,回到(9)第二步;[OO63] (9)第二步处理到达报文 读取该报文的源IP地址为1、宿IP地址为2、报文大小为150,比较源IP地址1和宿IP地址2之间的大小,源IP地址1小于宿IP地址2,则赋值一号IP地址IPl为宿IP地址为2,赋值二号IP地址IP2为源IP地址为l,赋值一号IP地址到二号IP地址的流量Tl为O,赋值二号IP地址到一号IP地址的流量T2为该报文大小为150,将一号IP地址IPl赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S = 0x0000000100000002,将64位比特串S作为哈希函数F的输入,计算哈希值1,读取指针数组I第1个元素的指针,该指针不为空,则进入(10)第四步;
(10)第四步查找指针链表 查找指针数组I第1个元素指向的结点链表,在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IPl,该结点的第二个IP地址为二号IP地址IP2,进入(11)第五步;
(11)第五步更新结点 累加一号IP地址到二号IP地址的流量Tl值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地址的流量Tl为该报文大小为220,赋值二号IP地址到一号IP地址的流量T2为O,将一号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地址的流量Tl为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地址的流量Tl为O,赋值二号IP地址到一号IP地址的流量T2为该报文大小为,将一号IP地址IP1赋值到64位比特串S的前32个比特,将二号IP地址IP2赋值到64位比特串S的后32个比特,S=0x0000000100000004,将64位比特串S作为哈希函数F的输入,计算哈希值1,读取指针数组I第1个元素的指针,该指针不为空,则进入(16)第四步;
(16)第四步查找指针链表 查找指针数组I第1个元素指向的结点链表,在这个链表中找到一个结点,其中该结点的第一个IP地址等于一号IP地址IPl,该结点的第二个IP地址为二号IP地址IP2,进入(17)第五步;
(17)第五步更新结点 累加一号IP地址到二号IP地址的流量Tl值0更新这个结点的第一个IP地址到第二个IP地址的流量值,累加后结果为100,累加二号IP地址到一号IP地址的流量T2值
50更新该结点的第二个IP地址到第一个IP地址的流量值,累加后结果为50,进入(18)第
丄止
八少5 (18)第六步测量结束 测量没有结束, 一个新报文到达,回到(19)第二步; (19)第二步处理到达报文 读取该报文的源IP地址为5、宿IP地址为9、报文大小为350,比较源IP地址5和
10宿IP地址9之间的大小,源IP地址5小于宿IP地址9,则赋值一号IP地址IP1为宿IP地址为9,赋值二号IP地址IP2为源IP地址为5,赋值一号IP地址到二号IP地址的流量Tl为O,赋值二号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地址IPl,该结点的第二个IP地址为二号IP地址IP2,进入(21)第五步;
(21)第五步更新结点 累加一号IP地址到二号IP地址的流量Tl值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地址的流量Tl为该报文大小为180,赋值二号IP地址到一号IP地址的流量T2为O,将一号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地址的流量Tl为180,赋值这个结点的第二个IP地址到第一个IP地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进入(26)第六步;
(26)第六步测量结束 测量没有结束,一个新报文到达,回到(27)第二步;
(27)第二步处理到达报文
11
读取该报文的源IP地址为2、宿IP地址为7、报文大小为60,比较源IP地址2和 宿IP地址7之间的大小,源IP地址2小于宿IP地址7,则赋值一号IP地址IP1为宿IP地 址为7,赋值二号IP地址IP2为源IP地址为2,赋值一号IP地址到二号IP地址的流量Tl 为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为O,赋值这个结点的第二个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地址为l,赋值一号IP地址到二号IP地址的流量Tl 为该报文大小为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个元素的指针指向这个新生成的结点,进入(30)第三步;
(30)第三步初始化新结点 赋值这个结点的第一个IP地址为一号IP地址IP1为3,赋值这个结点的第二个 IP地址为二号IP地址IP2为l,赋值这个结点的第一个IP地址到第二个IP地址的流量值 为一号IP地址到二号IP地址的流量Tl为80,赋值这个结点的第二个IP地址到第一个IP 地址的流量值为二号IP地址到一号IP地址的流量T2为0,设置该结点的指针为空指针,进 入(31)第六步;
(31)第六步测量结束
测量结束,进入(32)第七步;
(32)第七步测量结果输出 查找指针数组I中的所有的结点,将结点中的变量按照结点中的第一个IP地址、 第二个IP地址、第一个IP地址到第二个IP地址的流量、第二个IP地址到第一个IP地址 的流量顺序依次输出。
输出结果为 第一个IP地址第二个IP地址第一个流量第二个流量
2 1 120 150 4 1 100 50 9 5 220 350 8 3 180 0 7 2 0 60 3 1 80 0
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地址的流量顺序依次输出。
全文摘要
本发明公开一种基于网络地址排序的双向流组流方法,其特征是对于每个报文的源IP地址和宿IP地址,在检查哈希链表之前,对源IP地址和宿IP地址这两个IP地址从大到小进行排序,如果源IP地址大于宿IP地址,则在哈希链表中查找{源IP,宿IP}结点,如果源IP地址小于宿IP地址,则在哈希链表中查找{宿IP,源IP}结点,如果在哈希链表中查找到相应的结点,则直接对该结点流量记录进行更新,如果在哈希链表中查找不到相应结点,则生成一个新的结点,该方法的特点是每个报文只需要检查哈希链表一次即可找到双向流结点所在的位置,与传统双向流测量方法相比该方法一方面能节省结点空间的消耗,同时又能够减少哈希链表的查找次数。
文档编号H04L12/56GK101741743SQ200910262840
公开日2010年6月16日 申请日期2009年12月11日 优先权日2009年12月11日
发明者丁伟, 刘军, 王松, 程光 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1