一种流量统计并实时排名的方法技术

技术编号:12583047 阅读:215 留言:0更新日期:2015-12-23 23:17
本发明专利技术公开了一种流量统计并实时排名的方法,包括:接收报文;统计当前报文数量,存储至IP哈希数组中;根据当前报文数量与预设历史时段前的历史报文数量之间的差值,计算出所述报文当前的单位时间数量;根据所述报文当前的单位时间数量,将当前的单位时间数量排名前N位的报文的IP信息实时存储至排序数组中,其中,N为自然数,排序数组中的存储单元以最小二根堆的形式排列。本发明专利技术通过采用上述技术方案,不需要每次都使用全部数据进行一次重新排名就可以使排名数组中的数值始终为当前时刻全部数据里排名前N的数据,不仅减少了排名的操作步骤,降低了CPU的消耗,而且真正实现了实时性的排名,提高了实时排名的效率。

【技术实现步骤摘要】

本专利技术本专利技术涉及通信
,尤其涉及。
技术介绍
随着计算机和互联网技术的快速发展与广泛应用,计算机网络的系统安全受到计算机病毒和黑客攻击等多方面的威胁越来越大,经常会导致网络异常,为了确保网络正常稳定的运行以及业务的正常开展,运营商必须对流量进行检测并加以清洗。在互联网服务提供商(Internet Service Provider, ISP)、互联网数据中心(Internet Data Center, IDC)等运营商的大流量网络环境下,要快速准确地判断当前网络状态,IP统计正是最核心的技术之一。把平均每秒流量等数值排在前几名的IP地址(以下简称IP)统计出来,可以实时准确地判断当前最可能被攻击的IP。但是,在大流量环境下IP的数量通常能够达到数十万,目前在大流量下对IP进行实时TOP排名的方法,需要在每次排名时对全部数据进行操作,这样不仅会占用过多的中央处理器(Central ProcessingUnit,CPU)资源,而且也达不到实时的效果,因此排名效率不理想。
技术实现思路
有鉴于此,本专利技术实施例提供,以解决在大流量下对IP地址进行实时排名时操作步骤繁琐,消耗资源多及排名效率低等问题。专利技术实施例提供了,包括:接收报文;统计当前报文数量,存储至IP哈希数组中;根据当前报文数量与预设历史时段前的历史报文数量之间的差值,计算出所述报文当前的单位时间数量;根据所述报文当前的单位时间数量,将当前的单位时间数量排名前N位的报文的IP信息实时存储至排序数组中,其中,N为自然数,排序数组中的存储单元以最小二根堆的形式排列。本专利技术实施例提供的,该方法通过IP哈希数组和最小二根堆算法对大流量下的IP地址进行统计和排名,不需要每次都使用全部数据进行一次重新排名就可以使排名数组中的数值始终为当前时刻全部数据里排名前N的数据,不仅减少了排名的操作步骤,降低了 CPU的消耗,而且真正实现了实时性的排名,提高了实时排名的效率。【附图说明】通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1是本专利技术实施例一提供的的流程图;图2是本专利技术实施例二提供的的流程图;图3是本专利技术实施例三提供的的流程图。【具体实施方式】下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部内容。实施例一图1是本专利技术实施例一提供的的流程图,该方法能够实现对大流量下IP地址的统计和实时排名,可由服务器或终端来执行。如图1所示,该方法包括:S110、接收报文;报文即网络中交换与传输的数据单元,其中包含了要发送的完整的数据信息,包括报文类型,版本,长度,对应的IP地址等等。系统在运行过程中CPU会不断地接收到各种不同类型的报文,如,传输控制协议/网络之间互连的协议建立连接时使用的握手信号报文(synchronous,syn),控制报文(internet control message protocol, icmp)等。所述接收报文即接收所有报文所包含的所有信息,从所接收的报文中可以任意提取所需要的信息,例如报文数量,流量值,IP地址等。S120、统计当前报文数量,存储至IP哈希数组中;所述当前报文数量为当前报文总数量,所述IP哈希数组即用于统计所有IP地址所对应的报文信息的哈希数组。示例性的,建立一个全局的IP哈希数组用来统计IP信息,所述IP哈希数组可以包含不同的变量来对IP信息进行统计,优选的,本实施例中IP哈希数组中包含的变量包括报文数量,IP地址,流量值,排名标记等。S130、根据当前报文数量与预设历史时段前的历史报文数量之间的差值,计算出所述报文当前的单位时间数量;所述预设时段是根据需要预先设置的某一时间长度,是系统自动统计各类报文数量的最小周期,即每间隔此时间长度,系统会自动统计各类报文的数量。此时间长度的设置可以是任意的,如I秒,2秒,I分钟等等,但是设置的时间长度要与实际检测的需求相适应,设置的太长,无法实现实时排名,设置的太短会对系统带来过大的负荷,没有实际价值。优选的,所述预设历史时段的时间长度为I秒。所述当前报文数量与预设历史时段前的历史报文数量之间的差值为当前报文数量与I秒前的历史报文数量之间的差值,即为所述报文当前的每秒数量。通过计算所述报文每秒的数量,既不会对系统带来太大的负荷,又可以实时对报文数量进行统计排名,不但降低了 CPU的消耗,而且真正实现了实时性的排名,提高了实时排名的效率。S140、根据所述报文当前的单位时间数量,将当前的单位时间数量排名前N位的报文的IP信息实时存储至排序数组中,其中,N为自然数,排序数组中的存储单元以最小二根堆的形式排列。IP信息包含IP地址及其对应的报文数量(或流量值);排序数组(TOP数组)为基于最小二根堆算法,保持最小二根堆特性的数组,用于存储当前的单位时间数量排名前N位的报文的IP信息,其中,N为自然数,可以根据实际需要进行设定,例如,N可以取10,20,25等等。最小二根堆是一种二叉树,最小二根堆特性即对于每个非叶子节点的数值,一定不大于孩子节点的数值。示例性的,建立一个全局的长度为N+1的TOP数组用来保存当前的单位时间数量排名前N位的报文的IP信息(Τ0Ρ元素不使用),此TOP数组为一个最小二根堆,假设TOP为非叶子节点,则其左孩子为T0P,其右孩子为T0P,其中i为TOP数组中的节点位置变量,i的取值在实时排名过程中是根据实际需要在不断地变化的,但是始终保持TOP数组中每个非叶子节点的数值一定不大于孩子节点的数值的特性。在首次使用TOP数组前,需要初始化TOP数组,即TOP = 0,此时TOP数组中全部元素的值均置为0,因此,TOP 元素不使用。具体的,在所述根据所述报文当前的单位时间数量,将当前的单位时间数量排名前N位的报文的IP信息存储至排序数组中之前,还包括:创建第一函数和第二函数,其中,第一函数,用于当排序数组中任一节点位置的当前数值比原数值小时,调用第一函数使当前数值所在的节点位置进行上移,直至保持排序数组的最小二根堆特性;第二函数,用于当排序数组中任一节点位置的当前数值比原数值大时,调用第二函数使当前数值所在的节点位置进行下移,直至保持排序数组的最小二根堆特性。创建第一函数和第二函数是为了确保TOP数组中的数据能够得到实时更新并始终保持最小二根堆特性。优选的,第一函数为top_up (j),第二函数top_down (j),这两个函数的作用是假设当前TOP数组已具备最小二根堆特性,若更新了节点位置j的值,假设新值比原来的值小,那么可能这个节点的新值可能会比其父节点的值小,所以需要进行不断上移操作直到TOP数组重新满足最小二根堆特性,这些操作由top_up(j)来完成;而top_down(j)的操作与top_up(j)恰好相反,即假设新值比原来的值大,则需要进行不断下移操作直到TOP数组重新满足最小二根堆特性。通过调用top_up(j)和top_down(j)函数,可以实时确保TOP数组中的数据始终为当前全部数据中排名前N的数据,且不需要每次都使用全部本文档来自技高网...

【技术保护点】
一种流量统计并实时排名的方法,其特征在于,包括:接收报文;统计当前报文数量,存储至IP哈希数组中;根据当前报文数量与预设历史时段前的历史报文数量之间的差值,计算出所述报文当前的单位时间数量;根据所述报文当前的单位时间数量,将当前的单位时间数量排名前N位的报文的IP信息实时存储至排序数组中,其中,N为自然数,排序数组中的存储单元以最小二根堆的形式排列。

【技术特征摘要】

【专利技术属性】
技术研发人员:梁润强史伟麦剑黄衍博闵宇易建仁
申请(专利权)人:广东睿江科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1