一种网络流量监测方法和装置的制作方法

文档序号:7753319阅读:227来源:国知局
专利名称:一种网络流量监测方法和装置的制作方法
技术领域
本发明涉及网络流量的监测方法,尤其涉及对网址的网络流量进行排序的监测方法。
背景技术
包头采样是IP骨干网主要的流量监控技术之一,该技术是一种可操作性强、性价比好的技术。IETF针对这一应用专门推出了 IPFIX标准,但由于流量采集数据量一般都很大,加上网络流量监控的时效性要求比较高,所以采用软件实现的性能问题比较突出,主要体现在采集数据的缓存和快速访问、原始数据统计分析时的TOP N排序这两个方面。在IP网络流量监测中,通常需要了解互联网应用、目的网站、源IP地址、网络协议等各个维度的流量统计状况。举个例子,我们需要了解在网络中的流量分布来自哪些IP地址(源IP地址),去向哪些IP地址(目的IP地址),各个源IP地址或目的IP地址的流量分布情况和排名情况。但是IP地址的数量最大可达到232个,所以对所有IP地址进行流量排名是不现实的,而且在大多数情况下,我们只需要了解对网络影响最大的一批IP地址, 即网络流量排名比较靠前的IP地址,这就是我们通常所说的TOP N排名,即对前N位的网络流量进行排名,N值通常在10 100之间,再大或再小都失去了实际应用意义。在计算机算法中,传统的各类排序算法理论上也可以满足这一需求,但是在实际使用中存在着很大的性能缺陷,主要原因是传统排序算法是全排序算法。传统的排序算法意味着要对网络中数量极其庞大的IP地址产生的流量一一排序,而其实我们关注的仅仅是其中很小的流量排名前N位的IP地址,对于N位之后的大量数据进行排序其实是没有必要的,带来的结果是白白耗费大量的宝贵时间。

发明内容
本发明的目的在于解决上述问题,提供了一种网络流量监测方法,大幅提高对前N 个最大流量的网址的排序效率。本发明的另一目的是提供了一种网络流量监测装置。本发明的技术方案为本发明揭示了一种网络流量监测方法,在网络中查找前N 个流量最大的网址并对该N个网址按照流量大小进行排序,其中N是自然数,该监测方法包括将η个网址进行编号D1、D2,......,Dn,其中η是自然数且η > N ;将该η个网址Dl Dn作为构造二叉树的输入,其中每两项作为二叉树子树的两个子节点,将左子节点和右子节点比较,数值大者作为该二叉树子树的父节点,如果某子树只有一个子节点,则将该子节点直接作为该子树的父节点;将上一步骤中产生的所有父节点作为构造二叉树的新的输入,构造方法和上一步骤相同,重复本步骤直到产生整个二叉树的顶节点,该顶节点是该η个网址中流量最大的网址;
从整个二叉树中删除前一次最大值的网址的节点,从前一次最大值的网址节点的所在位置开始,依照上一步骤中的产生方法自下而上到达整个二叉树的顶节点,重复本步骤N-I次后,依序产生的N个二叉树的顶节点是该η个网址中基于流量从大到小排列的前 N个网址。根据本发明的网络流量监测方法的一实施例,在第2个步骤中,该η个网址依序作为二叉树的子节点,且奇数编号的网址为二叉树的左子节点,偶数编号的网址为二叉树的右子节点。根据本发明的网络流量监测方法的一实施例,N的取值范围是10 100之间。根据本发明的网络流量监测方法的一实施例,该η个网址是在网络流量监测过程中最初接收到的η个网址。本发明还揭示了一种网络流量监测装置,在网络中查找前N个流量最大的网址并对该N个网址按照流量大小进行排序,其中N是自然数,该监测装置包括编号模块,将η个网址进行编号D1,D2,......,Dn,其中η是自然数且η > N ;二叉树初始化模块,将该η个网址Dl Dn作为初始化二叉树的输入,其中每两个网址作为二叉树子树的两个子节点,将左子节点和右子节点比较,数值大者作为该二叉树子树的父节点,如果某子树只有一个子节点,则将该子节点直接作为该子树的父节点;流量最大网址产生模块,将该二叉树初始化模块产生的所有父节点作为构造二叉树的新的输入,构造方法和该二叉树初始化模块相同,重复这种构造方法直到产生整个二叉树的顶节点,该顶节点是该η个网址中流量最大的网址;当前流量最大网址产生模块,从整个二叉树中删除前一次最大值的网址的节点, 从前一次最大值的网址节点的所在位置开始,依照该流量最大网址产生模块中的产生方法自下而上到达整个二叉树的顶节点,重复N-I次后,连同该流量最大网址产生模块所依序产生的N个二叉树的顶节点是该η个网址中基于流量从大到小排列的前N个网址。根据本发明的网络流量监测装置的一实施例,在该二叉树初始化模块中,该η个网址依序作为二叉树的子节点,且奇数编号的网址为二叉树的左子节点,偶数编号的网址为二叉树的右子节点。根据本发明的网络流量监测装置的一实施例,N的取值范围是10 100之间。根据本发明的网络流量监测装置的一实施例,该η个网址是在网络流量监测过程中最初接收到的η个网址。本发明对比现有技术有如下的有益效果本发明构造二叉树,在每一轮构造二叉树的过程中,整个二叉树的顶节点就是当前搜索到的最大值,经过N轮循环之后就能够找到从大到小排列的前N个流量最大的网址。对比现有技术,本发明的运行效率更高。


图1是本发明的网络流量监测方法的一个实施例的流程图。图2 图5是本发明的构造二叉树的示意图。图6是本发明的网络流量监测装置的一个实施例的原理图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。网络流量监测方法的实施例图1示出了本发明的网络流量监测方法的实施例的流程。请参加图1,下面是本实施例的网络流量监测方法的各个步骤的详细描述。步骤SlO 对需要监测流量的网址进行编号,构成一个无序数列。这里的需要监测流量的网址例如是监测过程中最初接收到的η个网址,例如,在
网络流量监控的5分钟内收到来自η个IP地址(ΙΡ1、ΙΡ2、ΙΡ3........IPn),它们的流量
分别为Dl、D2、D3........Dn。我们需要从中挑出流量最大的N个IP地址,并且根据流量
从大到小对着这N个地址进行排序。显然,η和N都是自然数且n>N,通常N的取值范围
是10 100之间,例如取η值为20,N值为10。其中D1、D2、D3、......、Dn构成一个无序数列。步骤S12 对无序数列进行二叉树初始化。二叉树初始化的具体步骤如下请参见图2 (a)将Dl、D2........Dn相邻的两个项作为二叉树子树的两个子节
点,其中下标为单数的作为左子节点,双数的作为右子节点。(b)将左子节点和右子节点比较,数值大者作为该子树的父节点,如果某个子树只有一个子节点,则该子节点直接作为父节点。(c)将步骤(b)中产生的所有父节点作为一个新的无序数列,重复(a)和(b)两个步骤,直到产生整个二叉树的顶节点。在图2的示例中,例如是D5。当二叉树初始化完成后, 也就得到了第一个最大值D5 (该数值也是所有IP流量序列中的最大值)。步骤S14 从无序数列中去除前一次得到的最大值。实质上,步骤S12是第一轮的选择,第一轮的选举得到了第一个最大值D5,也是所有IP流量序列中的最大值。在本示例中,请参见图3,由于D5已经被挑选出来,所以将D5从最底层的二叉树中去除,此时D6成了该子树的唯一节点。步骤S16 从前一最大值所在位置开始,自下向上选举,直到到达顶节点。然后回到步骤S14,由于还需要得出N-I个值,因此步骤S14 S16的选举轮次会有N-I次。以上述示例为例,D6成了该子树的唯一节点,直接将D6作为父节点,如图4所示。 在倒数第2层中,D6和D8为子树的一对节点,所以将D6和D8比较,假设D8大于D6,则D8 作为父节点进入下一轮比较,直到顶节点。在本次选举过程中,比较路径如图5中的虚线所示。图5示出了本轮选举得到了当前最大值D8。如此重复这一选举过程,经过N-I轮选举后,得到了 N-I个最大值,加上初始化步骤S12时的第一个最大值,可以得到TOP N有序数列。将这N个数值按照选举顺序排列,然后根据对应的下标找到IP地址项,就是前N 位的IP地址以及这些IP地址的流量排名表。网络流量监测装置的实施例图6示出了本发明的网络流量监测装置的实施例。请参见图6,本实施例的网络流量监测装置1包括编号模块10、二叉树初始化模块12、流量最大网址产生模块14以及当前流量最大网址产生模块16。这些模块之间依序连接。在编号模块10中,将η个网址进行编号D1、D2........Dn,其中η是自然数且η> N,和方法实施例一样,N—般取10 100之间。其中这η个网址是在网络流量监测过程中最初接收到的η个网址。在二叉树初始化模块12中,将这η个网址Dl Dn作为初始化二叉树的输入,即二叉树的子节点,其中单数的作为左子节点,双数的作为右子节点。将左子节点和右子节点比较,数值大者作为二叉树子树的父节点,如果某子树只有一个子节点,则将其直接作为对应子树的父节点。在流量最大网址产生模块14中,将二叉树初始化模块12产生的所有父节点作为构造二叉树的新的输入,构造方法和二叉树初始化模块12相同,重复这种构造方法直到产生整个二叉树的顶节点,这一顶节点就是η个网址中流量最大的网址。在当前流量最大网址产生模块16中,从整个二叉树中删除前一次最大值的网址的节点,从前一次最大值的网址节点的所在位置开始,依照流量最大网址产生模块14中的产生方法自下而上到达整个二叉树的顶节点,此时的顶节点就是当前流量最大的网址。将这一方式重复N-I次后,每一次得到的结果连同流量最大网址产生模块14所产生的η个网址中流量最大的网址一起,依产生的次序构成η个网址中基于流量从大到小排列的前N个网址。本发明的网络流量监测方法的基础是基于堆排序的TOP N排序,其比传统堆排序的效率要高,具体说明如下传统堆排序的时间复杂度众所周知,堆排序的时间复杂度为0(η1Ο&η),也就是说η个数列排序消耗的时间同nlog2n成正比。本发明的基础“基于堆排序的TOP N排序”的时间复杂度对于η个项的序列,树的深度为log2n+l,构造初始树的需要的比较次数是
权利要求
1.一种网络流量监测方法,在网络中查找前N个流量最大的网址并对该N个网址按照流量大小进行排序,其中N是自然数,该监测方法包括将η个网址进行编号D1、D2,……,Dn,其中η是自然数且n>N;将该η个网址Dl Dn作为构造二叉树的输入,其中每两项作为二叉树子树的两个子节点,将左子节点和右子节点比较,数值大者作为该二叉树子树的父节点,如果某子树只有一个子节点,则将该子节点直接作为该子树的父节点;将上一步骤中产生的所有父节点作为构造二叉树的新的输入,构造方法和上一步骤相同,重复本步骤直到产生整个二叉树的顶节点,该顶节点是该η个网址中流量最大的网址;从整个二叉树中删除前一次最大值的网址的节点,从前一次最大值的网址节点的所在位置开始,依照上一步骤中的产生方法自下而上到达整个二叉树的顶节点,重复本步骤N-I 次后,依序产生的N个二叉树的顶节点是该η个网址中基于流量从大到小排列的前N个网址。
2.根据权利要求1所述的网络流量监测方法,其特征在于,在第2个步骤中,该η个网址依序作为二叉树的子节点,且奇数编号的网址为二叉树的左子节点,偶数编号的网址为二叉树的右子节点。
3.根据权利要求1所述的网络流量监测方法,其特征在于,N的取值范围是10 100 之间。
4.根据权利要求1所述的网络流量监测方法,其特征在于,该η个网址是在网络流量监测过程中最初接收到的η个网址。
5.一种网络流量监测装置,在网络中查找前N个流量最大的网址并对该N个网址按照流量大小进行排序,其中N是自然数,该监测装置包括编号模块,将η个网址进行编号D1,D2,……,Dn,其中η是自然数且η > N ;二叉树初始化模块,将该η个网址Dl Dn作为初始化二叉树的输入,其中每两个网址作为二叉树子树的两个子节点,将左子节点和右子节点比较,数值大者作为该二叉树子树的父节点,如果某子树只有一个子节点,则将该子节点直接作为该子树的父节点;流量最大网址产生模块,将该二叉树初始化模块产生的所有父节点作为构造二叉树的新的输入,构造方法和该二叉树初始化模块相同,重复这种构造方法直到产生整个二叉树的顶节点,该顶节点是该η个网址中流量最大的网址;当前流量最大网址产生模块,从整个二叉树中删除前一次最大值的网址的节点,从前一次最大值的网址节点的所在位置开始,依照该流量最大网址产生模块中的产生方法自下而上到达整个二叉树的顶节点,重复N-I次后,连同该流量最大网址产生模块所依序产生的N个二叉树的顶节点是该η个网址中基于流量从大到小排列的前N个网址。
6.根据权利要求5所述的网络流量监测装置,其特征在于,在该二叉树初始化模块中, 该η个网址依序作为二叉树的子节点,且奇数编号的网址为二叉树的左子节点,偶数编号的网址为二叉树的右子节点。
7.根据权利要求5所述的网络流量监测装置,其特征在于,N的取值范围是10 100 之间。
8.根据权利要求5所述的网络流量监测装置,其特征在于,该η个网址是在网络流量监测过程中最初接收到的η个网址。
全文摘要
本发明公开了一种网络流量监测方法和装置,大幅提高对前N个最大流量的网址的排序效率。其技术方案为本发明构造二叉树,在每一轮构造二叉树的过程中,整个二叉树的顶节点就是当前搜索到的最大值,经过N轮循环之后就能够找到从大到小排列的前N个流量最大的网址。
文档编号H04L12/56GK102315979SQ20101021902
公开日2012年1月11日 申请日期2010年7月5日 优先权日2010年7月5日
发明者郑文蕴 申请人:国讯新创软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1