CN110019250A - 基于哈希函数的网络测量方法和计算机可读存储介质 - Google Patents

基于哈希函数的网络测量方法和计算机可读存储介质 Download PDF

Info

Publication number
CN110019250A
CN110019250A CN201910167942.1A CN201910167942A CN110019250A CN 110019250 A CN110019250 A CN 110019250A CN 201910167942 A CN201910167942 A CN 201910167942A CN 110019250 A CN110019250 A CN 110019250A
Authority
CN
China
Prior art keywords
bucket
main table
data packet
barrel
stream entry
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.)
Pending
Application number
CN201910167942.1A
Other languages
English (en)
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.)
Tsinghua University
Original Assignee
Tsinghua 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 Tsinghua University filed Critical Tsinghua University
Priority to CN201910167942.1A priority Critical patent/CN110019250A/zh
Publication of CN110019250A publication Critical patent/CN110019250A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于哈希函数的网络测量方法和计算机可读存储介质。本发明的基于哈希函数的网络测量方法可以实现使用交换机的较小的内存空间来记录尽可能多的流记录项信息,并且使记录的流记录项信息尽可能准确,更接近真实值,具有很好的应用前景。

Description

基于哈希函数的网络测量方法和计算机可读存储介质
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种基于哈希函数的网络测量方法和计算机可读存储介质。
背景技术
及时获取网络的内部动态及流量统计信息对于网络管理而言至关重要,因为它使得网络管理人员能够检测和纠正网络配置错误,高效地分配资源并进行流量调度,以及及时检测网络攻击。NetFlow是一个被广泛使用的网络测量与分析的工具,它以流记录项的形式进行流量信息统计。每一个流记录项都包含若干个关于流的重要信息,包括源IP地址和目的IP地址、开始时间和结束时间、服务类型、应用端口号、输入端口和输出端口、以及数据流的大小等。
假设数据包的平均大小为700字节,则40Gbps的链路对一个数据包的处理时间为50纳秒左右,而在数据包的大小为40字节、链路带宽为100Gbps的极端情况下,处理一个数据包的时间仅为几纳秒。此外,在一个时间窗口内,一条链路上活跃的数据流的数目可达数百万甚至数千万。为满足如此高带宽的网络流量的测量需求,NetFlow往往采用访问速度极高的SRAM。但是,由于SRAM价格昂贵,商用交换机/路由器中配置的SRAM的容量普遍较小。因此,实现NetFlow的困难之处在于,需要设计高效的数据结构和网络测量方法以适应当前网络的高速流量。
为了解决网络测量问题,人们通常采用采样方法来实现NetFlow,即在若干个数据包中只对一个数据包进行处理。但是,这种方法在减少数据包的处理代价的同时,也不可避免地降低了网络测量结果的准确度。
除此之外,人们也采用sketch方法来解决网络测量问题,这种方法采用一个简单的数据结构来维护网络测量信息,并且能够对流记录项进行高效的更新。但是,这种方法只能用于有限的场景,而不能像NetFlow一样支持广泛的网络测量应用。
为了提升交换机的内存的空间利用率和网络测量结果的准确度,本发明提出了一种基于哈希函数的网络测量方法及计算机可读存储介质。
发明内容
本发明所要解决的技术问题是:提升交换机的内存的空间利用率和网络测量结果的准确度。
为了解决上述技术问题,本发明提供了一种基于哈希函数的网络测量方法,包括:
在交换机的内存中创建数据结构,所述数据结构包括一个主表和一个辅助表,所述主表对应于多个哈希函数,所述辅助表对应于一个哈希函数,所述主表和所述辅助表具有预设的相同数目的多个桶,所述主表中的每个桶分别包含一个由数据流的流标识符和计数值组成的流记录项信息,所述辅助表中的每个桶分别包含一个由根据数据流的流标识符生成的指纹信息和计数值组成的流记录项信息;
针对到达交换机或路由器的每个数据包,均执行以下操作:
利用与主表对应的第一哈希函数将该数据包映射至主表中的一个桶中,该桶为主表中的任意一个桶;
判断该桶是否为空桶;
在判断出该桶为空桶的情况下,使用该数据包的流标识符和计数值1作为该桶的流记录项信息;
在判断出该桶不是空桶的情况下,判断该桶包含的数据流的流标识符是否与该数据包的流标识符相同;
在判断出该桶包含的数据流的流标识符与该数据包的流标识符相同的情况下,利用预设规则更新该桶包含的流记录项信息;
在判断出该桶包含的数据流的流标识符与该数据包的流标识符不同的情况下,依次利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶中,并判断该桶是否为空桶,且在判断出该桶不是空桶的情况下,判断该桶包含的数据流的流标识符是否与该数据包的流标识符相同;
在判断出利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶均不是空桶且利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶包含的数据流的流标识符与该数据包的流标识符均不同的情况下,利用与辅助表对应的哈希函数将该数据包映射至辅助表中的一个桶中,同时生成与该数据包的流标识符对应的指纹信息;
判断该桶是否为空桶;
在判断出该桶为空桶的情况下,使用与该数据包的流标识符对应的指纹信息和计数值1作为该桶的流记录项信息;
在判断出该桶不是空桶的情况下,判断该桶包含的指纹信息是否和与该数据包的流标识符对应的指纹信息相同;
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,利用预设规则更新该桶包含的流记录项信息,并将更新后的该桶包含的流记录项信息与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息进行比较,根据比较结果来确定是否更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息;
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息不同的情况下,利用预设规则更新该桶包含的流记录项信息;
其中,与主表对应的多个哈希函数、以及与辅助表对应的一个哈希函数两两不同。
在本发明一优选实施例中,在判断出该桶包含的数据流的流标识符与该数据包的流标识符相同的情况下,利用预设规则更新该桶包含的流记录项信息,包括:
在判断出该桶包含的数据流的流标识符与该数据包的流标识符相同的情况下,保持该桶包含的流记录项信息中的流标识符不变,并将该桶包含的流记录项信息中的计数值增加1。
在本发明一优选实施例中,在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,利用预设规则更新该桶包含的流记录项信息,并将更新后的该桶包含的流记录项信息与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息进行比较,根据比较结果来确定是否更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,包括:
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,保持该桶包含的流记录项信息中的指纹信息不变,并将该桶包含的流记录项信息中的计数值增加1;
此后,将该桶包含的流记录项信息中的计数值与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值进行比较;
若该桶包含的流记录项信息中的计数值大于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,利用预设规则更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。
在本发明一优选实施例中,若该桶包含的流记录项信息中的计数值大于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,利用预设规则更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,包括:
若该桶包含的流记录项信息中的计数值大于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,丢弃利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,并使用该数据包的流标识符和此时该桶包含的流记录项信息中的计数值作为利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。
在本发明一优选实施例中,在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,利用预设规则更新该桶包含的流记录项信息,并将更新后的该桶包含的流记录项信息与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息进行比较,根据比较结果来确定是否更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,还包括:
若该桶包含的流记录项信息中的计数值小于等于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,保持利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息不变。
在本发明一优选实施例中,在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息不同的情况下,利用预设规则更新该桶包含的流记录项信息,包括:
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息不同的情况下,丢弃该桶包含的流记录项信息,并使用与该数据包的流标识符对应的指纹信息和计数值1作为该桶的流记录项信息。
在本发明一优选实施例中,所述主表包括多个小表,每个小表对应于一个哈希函数。
相应地,本发明还提供一种存储有程序的计算机可读存储介质,所述程序使得处理器执行如上所述的基于哈希函数的网络测量方法。
优选地,所述计算机可读存储介质为磁表面存储器、光盘存储器和半导体存储器中的一种。
优选地,所述处理器为中央处理器、可编程逻辑控制器、嵌入式处理器和现场可编程门阵列中的一种。
与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:
应用本发明实施例提供的基于哈希函数的网络测量方法,可以实现使用交换机的较小的内存空间来记录尽可能多的流记录项信息,并且使记录的流记录项信息尽可能准确,更接近真实值,具有很好的应用前景。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例一的基于哈希函数的网络测量方法的具体流程示意图;
图2为图1中的步骤S111的具体流程示意图;
图3为本发明实施例二的基于哈希函数的网络测量方法的具体流程示意图;
图4为图3中的步骤S211的具体流程示意图;
图5为本发明实施例三的数据结构的简单示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
为了提升交换机的内存的空间利用率和网络测量结果的准确度,本发明提出了一种基于哈希函数的网络测量方法及计算机可读存储介质。
实施例一
图1为本发明实施例一的基于哈希函数的网络测量方法的具体流程示意图。
如图1所示,本发明实施例一的基于哈希函数的网络测量方法,主要包括以下步骤S100至步骤S112。
在步骤S100中,在交换机的内存中创建数据结构,该数据结构包括一个主表和一个辅助表,主表对应于多个哈希函数,辅助表对应于一个哈希函数。主表用于记录准确的流记录项信息,辅助表用于记录总结性的流记录项信息。
其中,主表和辅助表具有预设的相同数目的多个桶,主表中的每个桶分别包含一个由数据流的流标识符和计数值组成的流记录项信息,辅助表中的每个桶分别包含一个由根据数据流的流标识符生成的指纹信息和计数值组成的流记录项信息。
优选地,流标识符由数据包的源IP地址、目的IP地址、协议类型、源端口号和目的端口号组成。其中,源IP地址、目的IP地址和协议类型是数据包的IP包头的字段,源端口号和目的端口号是数据包的TCP包头或UDP包头的字段。
需要说明的是,流标识符也可以由其他数据包头部信息组成。在本发明中,不对流标识符的组成形式作出具体限定。
在本发明一优选实施例中,主表的流记录项信息中的流标识符为13字节,计数值为4字节。辅助表的流记录项信息中的指纹信息为1字节,计数值为1字节。因此,本发明的网络测量方法的数据结构相对于现有技术更加有利于节省交换机的内存空间。
针对到达交换机或路由器的每个数据包,均执行以下操作:
在步骤S101中,利用与主表对应的第一哈希函数将该数据包映射至主表中的一个桶中,该桶为主表中的任意一个桶。
由于本步骤的具体操作过程已为本领域技术人员所公知,在此不再赘述。
在步骤S102中,判断该桶是否为空桶。
在判断出该桶为空桶的情况下,执行步骤S103,使用该数据包的流标识符和计数值1作为该桶的流记录项信息。
在判断出该桶不是空桶的情况下,执行步骤S104,判断该桶包含的数据流的流标识符是否与该数据包的流标识符相同。
在判断出该桶包含的数据流的流标识符与该数据包的流标识符相同的情况下,执行步骤S105,利用预设规则更新该桶包含的流记录项信息。具体地,保持该桶包含的流记录项信息中的流标识符不变,并将该桶包含的流记录项信息中的计数值增加1。
在判断出该桶包含的数据流的流标识符与该数据包的流标识符不同的情况下(说明哈希函数在主表中发生了冲突),执行步骤S106,依次利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶中,并重复执行上述步骤S102至步骤S106,直至找到一个适合该数据包的桶为止(即利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶为空桶,或者,利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶虽不是空桶,但该桶包含的数据流的流标识符与该数据包的流标识符相同)。
在判断出利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶均不是空桶且利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶包含的数据流的流标识符与该数据包的流标识符均不同的情况下,执行步骤S107,利用与辅助表对应的哈希函数将该数据包映射至辅助表中的一个桶中,同时生成与该数据包的流标识符对应的指纹信息。
由于本步骤的具体操作过程已为本领域技术人员所公知,在此不再赘述。
在步骤S108中,判断该桶是否为空桶。
在判断出该桶为空桶的情况下,执行步骤S109,使用与该数据包的流标识符对应的指纹信息和计数值1作为该桶的流记录项信息。
在判断出该桶不是空桶的情况下,执行步骤S110,判断该桶包含的指纹信息是否和与该数据包的流标识符对应的指纹信息相同。
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,执行步骤S111,利用预设规则更新该桶包含的流记录项信息,并将更新后的该桶包含的流记录项信息与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息进行比较,根据比较结果来确定是否更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。其具体过程如图2所示。
在步骤S1111中,在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,保持该桶包含的流记录项信息中的指纹信息不变,并将该桶包含的流记录项信息中的计数值增加1。
在步骤S1112中,将此时该桶包含的流记录项信息中的计数值与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值进行比较。
若该桶包含的流记录项信息中的计数值大于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,则执行步骤S1113,利用预设规则更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。具体地,丢弃利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,并使用该数据包的流标识符和此时该桶包含的流记录项信息中的计数值作为利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。
若该桶包含的流记录项信息中的计数值小于等于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,则执行步骤S1114,保持利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息不变。
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息不同的情况下(说明哈希函数在辅助表中发生了冲突),执行步骤S112,利用预设规则更新该桶包含的流记录项信息。具体地,丢弃该桶包含的流记录项信息,并使用与该数据包的流标识符对应的指纹信息和计数值1作为该桶的流记录项信息。
需要说明的是,在本实施例中,与主表对应的多个哈希函数、以及与辅助表对应的一个哈希函数两两不同。
需要说明的是,可以根据实际情况来限定与主表对应的哈希函数的数目。但是,考虑到交换机的内存空间、网络测量的复杂度等多方面因素,通常限定主表对应于三个哈希函数,且该三个哈希函数两两不同。
应用本发明实施例提供的基于哈希函数的网络测量方法,可以实现使用交换机的较小的内存空间来记录尽可能多的流记录项信息,并且使记录的流记录项信息尽可能准确,更接近真实值,具有很好的应用前景。
相应地,本发明还提供了一种存储有程序的计算机可读存储介质,该程序使得处理器执行如上所述的基于哈希函数的网络测量方法。
优选地,该计算机可读存储介质为磁表面存储器、光盘存储器和半导体存储器中的一种。
优选地,该处理器为中央处理器、可编程逻辑控制器、嵌入式处理器和现场可编程门阵列中的一种。
实施例二
本实施例为对实施例一的进一步改进。
图3为本发明实施例二的基于哈希函数的网络测量方法的具体流程示意图。
如图3所示,本发明实施例二的基于哈希函数的网络测量方法,主要包括以下步骤S200至步骤S212。
在步骤S200中,在交换机的内存中创建数据结构,该数据结构包括一个主表和一个辅助表,主表包括多个小表,每个小表对应于一个哈希函数,辅助表对应于一个哈希函数。主表用于记录准确的流记录项信息,辅助表用于记录总结性的流记录项信息。
其中,主表和辅助表具有预设的相同数目的多个桶,主表中的每个桶分别包含一个由数据流的流标识符和计数值组成的流记录项信息,辅助表中的每个桶分别包含一个由根据数据流的流标识符生成的指纹信息和计数值组成的流记录项信息。
优选地,流标识符由数据包的源IP地址、目的IP地址、协议类型、源端口号和目的端口号组成。其中,源IP地址、目的IP地址和协议类型是数据包的IP包头的字段,源端口号和目的端口号是数据包的TCP包头或UDP包头的字段。
需要说明的是,流标识符也可以由其他数据包头部信息组成。在本发明中,不对流标识符的组成形式作出具体限定。
在本发明一优选实施例中,主表的流记录项信息中的流标识符为13字节,计数值为4字节。辅助表的流记录项信息中的指纹信息为1字节,计数值为1字节。因此,本发明的网络测量方法的数据结构相对于现有技术更加有利于节省交换机的内存空间。
针对到达交换机或路由器的每个数据包,均执行以下操作:
在步骤S201中,利用与主表中的第一小表对应的第一哈希函数将该数据包映射至主表中的一个桶中,该桶为主表中的任意一个桶。
由于本步骤的具体操作过程已为本领域技术人员所公知,在此不再赘述。
在步骤S202中,判断该桶是否为空桶。
在判断出该桶为空桶的情况下,执行步骤S203,使用该数据包的流标识符和计数值1作为该桶的流记录项信息。
在判断出该桶不是空桶的情况下,执行步骤S204,判断该桶包含的数据流的流标识符是否与该数据包的流标识符相同。
在判断出该桶包含的数据流的流标识符与该数据包的流标识符相同的情况下,执行步骤S205,利用预设规则更新该桶包含的流记录项信息。具体地,保持该桶包含的流记录项信息中的流标识符不变,并将该桶包含的流记录项信息中的计数值增加1。
在判断出该桶包含的数据流的流标识符与该数据包的流标识符不同的情况下(说明哈希函数在主表中发生了冲突),执行步骤S206,依次利用与主表中除第一小表之外的其余小表对应的哈希函数将该数据包映射至主表中的对应桶中,并重复执行上述步骤S202至步骤S206,直至找到一个适合该数据包的桶为止(即利用与主表中除第一小表之外的其余小表对应的哈希函数将该数据包映射至主表中的对应桶为空桶,或者,利用与主表中除第一小表之外的其余小表对应的哈希函数将该数据包映射至主表中的对应桶虽不是空桶,但该桶包含的数据流的流标识符与该数据包的流标识符相同)。
在判断出利用与主表中除第一小表之外的其余小表对应的哈希函数将该数据包映射至主表中的对应桶均不是空桶且利用与主表中除第一小表之外的其余小表对应的哈希函数将该数据包映射至主表中的对应桶包含的数据流的流标识符与该数据包的流标识符均不同的情况下,执行步骤S207,利用与辅助表对应的哈希函数将该数据包映射至辅助表中的一个桶中,同时生成与该数据包的流标识符对应的指纹信息。
由于本步骤的具体操作过程已为本领域技术人员所公知,在此不再赘述。
在步骤S208中,判断该桶是否为空桶。
在判断出该桶为空桶的情况下,执行步骤S209,使用与该数据包的流标识符对应的指纹信息和计数值1作为该桶的流记录项信息。
在判断出该桶不是空桶的情况下,执行步骤S210,判断该桶包含的指纹信息是否和与该数据包的流标识符对应的指纹信息相同。
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,执行步骤S211,利用预设规则更新该桶包含的流记录项信息,并将更新后的该桶包含的流记录项信息与利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息进行比较,根据比较结果来确定是否更新利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。其具体过程如图4所示。
在步骤S2111中,在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,保持该桶包含的流记录项信息中的指纹信息不变,并将该桶包含的流记录项信息中的计数值增加1。
在步骤S2112中,将此时该桶包含的流记录项信息中的计数值与利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值进行比较。
若该桶包含的流记录项信息中的计数值大于利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,则执行步骤S2113,利用预设规则更新利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。具体地,丢弃利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,并使用该数据包的流标识符和此时该桶包含的流记录项信息中的计数值作为利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。
若该桶包含的流记录项信息中的计数值小于等于利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,则执行步骤S2114,保持利用与主表中的多个小表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息不变。
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息不同的情况下(说明哈希函数在辅助表中发生了冲突),执行步骤S212,利用预设规则更新该桶包含的流记录项信息。具体地,丢弃该桶包含的流记录项信息,并使用与该数据包的流标识符对应的指纹信息和计数值1作为该桶的流记录项信息。
需要说明的是,在本实施例中,与主表中的多个小表对应的多个哈希函数、以及与辅助表对应的一个哈希函数两两不同。
需要说明的是,可以根据实际情况来限定主表中小表的数目。但是,考虑到交换机的内存空间、网络测量的复杂度等多方面因素,通常限定主表包括三个小表(即主表包括第一小表至第三小表),相应地,主表将对应于三个哈希函数,该三个哈希函数两两不同。
应用本发明实施例提供的基于哈希函数的网络测量方法,可以实现使用交换机的较小的内存空间来记录尽可能多的流记录项信息,并且使记录的流记录项信息尽可能准确,更接近真实值,具有很好的应用前景。
相应地,本发明还提供了一种存储有程序的计算机可读存储介质,该程序使得处理器执行如上所述的基于哈希函数的网络测量方法。
优选地,该计算机可读存储介质为磁表面存储器、光盘存储器和半导体存储器中的一种。
优选地,该处理器为中央处理器、可编程逻辑控制器、嵌入式处理器和现场可编程门阵列中的一种。
需要说明的是,对于主表,本发明提供了两种不同的组织方式。实施例一为主表的第一种组织方式,即简单地将主表组织成为一个大的哈希表。实施例二为主表的第二种组织方式,即将主表组织成为d个小表。下面对这两种组织方式在主表的空间利用率方面所达到的效果进行比较。
假设主表具有n个桶,交换机需要处理m个数据包,且m远大于n。
在第一种组织方式中,令pk表示使用k个哈希函数将m个数据包插入n个桶中以后一个桶为空的概率。经过数学推理,可以得到:其中,2≤k≤d,d为哈希函数的个数。因此,主表的空间利用率为1-pd
在第二种组织方式中,且ni+1=α·ni,其中,α为预设系数,0<α<1,ni为第i个小表中桶的数目,i=1,2,…,d-1。令pk表示第k个小表中一个桶为空的概率,经过数学推理,可以得到:其中,2≤k≤d,d为将主表组织成小表的数目。因此,主表的空间利用率为:
当m、n、k、d、α为预设数值时,可以得到:采用第二种组织方式组织的主表的空间利用率明显大于采用第一种组织方式组织的主表的空间利用率。由此可见,与实施例一相比,实施例二在主表的空间利用率方面可以得到进一步提升。
实施例三
下面通过示例方式对本发明的基于哈希函数的网络测量方法进行说明。本实施例主要包括以下8个应用示例。
图5为本发明实施例三的数据结构的简单示意图。
如图5所示,在本示例中,在交换机的内存中创建的数据结构包括一个主表和一个辅助表,主表对应于两个哈希函数,辅助表对应于一个哈希函数。主表和辅助表具有预设的相同数目的多个桶,主表中的每个桶分别包含一个由数据流的流标识符和计数值组成的流记录项信息,辅助表中的每个桶分别包含一个由根据数据流的流标识符生成的指纹信息和计数值组成的流记录项信息。以下8个应用示例均采用了图5所示的数据结构。
应用示例1
在数据流f1的数据包到达交换机或路由器后,
首先,执行步骤S101,利用与主表对应的第一哈希函数h1将该数据包映射至主表中下标为h1(f1)的桶中。
其次,执行步骤S102,判断主表中下标为h1(f1)的桶是否为空桶。由图5可见,主表中下标为h1(f1)的桶为空桶。
最后,执行步骤S103,使用该数据包的流标识符(f1)和计数值1作为主表中下标为h1(f1)的桶的流记录项信息。
因此,主表中下标为h1(f1)的桶包含的流记录项信息在更新后变为(f1,1)。
应用示例2
在数据流f2的数据包到达交换机或路由器后,
首先,执行步骤S101,利用与主表对应的第一哈希函数h1将该数据包映射至主表中下标为h1(f2)的桶中。
其次,执行步骤S102,判断主表中下标为h1(f2)的桶是否为空桶。由图5可见,主表中下标为h1(f2)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h1(f2)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h1(f2)的桶包含的数据流的流标识符与该数据包的流标识符相同,均为f2
最后,执行步骤S105,保持主表中下标为h1(f2)的桶包含的流记录项信息中的流标识符不变,并将主表中下标为h1(f2)的桶包含的流记录项信息中的计数值增加1。
因此,主表中下标为h1(f2)的桶包含的流记录项信息在更新后变为(f2,6)。
应用示例3
在数据流f30的数据包到达交换机或路由器后,
首先,执行步骤S101,利用与主表对应的第一哈希函数h1将该数据包映射至主表中下标为h1(f30)的桶中。
其次,执行步骤S102,判断主表中下标为h1(f30)的桶是否为空桶。由图5可见,主表中下标为h1(f30)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h1(f30)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h1(f30)的桶包含的数据流的流标识符(f10)与该数据包的流标识符(f30)不同。
接着,执行步骤S106,利用与主表对应的第二哈希函数h2将该数据包映射至主表中下标为h2(f30)的桶中,并返回至步骤S102,判断主表中下标为h2(f30)的桶是否为空桶。由图5可见,主表中下标为h2(f30)的桶为空桶。
最后,执行步骤S103,使用该数据包的流标识符(f30)和计数值1作为主表中下标为h2(f30)的桶的流记录项信息。
因此,主表中下标为h2(f30)的桶包含的流记录项信息在更新后变为(f30,1)。
应用示例4
在数据流f50的数据包到达交换机或路由器后,
首先,执行步骤S101,利用与主表对应的第一哈希函数h1将该数据包映射至主表中下标为h1(f50)的桶中。
其次,执行步骤S102,判断主表中下标为h1(f50)的桶是否为空桶。由图5可见,主表中下标为h1(f50)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h1(f50)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h1(f50)的桶包含的数据流的流标识符(f63)与该数据包的流标识符(f50)不同。
接着,执行步骤S106,利用与主表对应的第二哈希函数h2将该数据包映射至主表中下标为h2(f50)的桶中,并返回至步骤S102,判断主表中下标为h2(f50)的桶是否为空桶。由图5可见,主表中下标为h2(f50)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h2(f50)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h2(f50)的桶包含的数据流的流标识符与该数据包的流标识符相同,均为f50
最后,执行步骤S105,保持主表中下标为h2(f50)的桶包含的流记录项信息中的流标识符不变,并将主表中下标为h2(f50)的桶包含的流记录项信息中的计数值增加1。
因此,主表中下标为h2(f50)的桶包含的流记录项信息在更新后变为(f50,24)。
应用示例5
在数据流f28的数据包到达交换机或路由器后,
首先,执行步骤S101,利用与主表对应的第一哈希函数h1将该数据包映射至主表中下标为h1(f28)的桶中。
其次,执行步骤S102,判断主表中下标为h1(f28)的桶是否为空桶。由图5可见,主表中下标为h1(f28)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h1(f28)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h1(f28)的桶包含的数据流的流标识符(f34)与该数据包的流标识符(f28)不同。
接着,执行步骤S106,利用与主表对应的第二哈希函数h2将该数据包映射至主表中下标为h2(f28)的桶中,并返回至步骤S102,判断主表中下标为h2(f28)的桶是否为空桶。由图5可见,主表中下标为h2(f28)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h2(f28)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h2(f28)的桶包含的数据流的流标识符(f65)与该数据包的流标识符(f28)不同。
接着,执行步骤S107,利用与辅助表对应的哈希函数g1将该数据包映射至辅助表中下标为g1(f28)的桶中,同时生成与该数据包的流标识符(f28)对应的指纹信息。
接着,执行步骤S108,判断辅助表中下标为g1(f28)的桶是否为空桶。由图5可见,辅助表中下标为g1(f28)的桶为空桶。
最后,执行步骤S109,使用与该数据包的流标识符对应的指纹信息和计数值1作为辅助表中下标为g1(f28)的桶的流记录项信息。
因此,辅助表中下标为g1(f28)的桶包含的流记录项信息在更新后变为(f28,1)。
应用示例6
在数据流f5的数据包到达交换机或路由器后,
首先,执行步骤S101,利用与主表对应的第一哈希函数h1将该数据包映射至主表中下标为h1(f5)的桶中。
其次,执行步骤S102,判断主表中下标为h1(f5)的桶是否为空桶。由图5可见,主表中下标为h1(f5)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h1(f5)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h1(f5)的桶包含的数据流的流标识符(f4)与该数据包的流标识符(f5)不同。
接着,执行步骤S106,利用与主表对应的第二哈希函数h2将该数据包映射至主表中下标为h2(f5)的桶中,并返回至步骤S102,判断主表中下标为h2(f5)的桶是否为空桶。由图5可见,主表中下标为h2(f5)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h2(f5)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h2(f5)的桶包含的数据流的流标识符(f6)与该数据包的流标识符(f5)不同。
接着,执行步骤S107,利用与辅助表对应的哈希函数g1将该数据包映射至辅助表中下标为g1(f5)的桶中,同时生成与该数据包的流标识符(f5)对应的指纹信息。
接着,执行步骤S108,判断辅助表中下标为g1(f5)的桶是否为空桶。由图5可见,辅助表中下标为g1(f5)的桶不是空桶。
接着,执行步骤S110,判断辅助表中下标为g1(f5)的桶包含的指纹信息是否和与该数据包的流标识符对应的指纹信息相同。由图5可见,辅助表中下标为g1(f5)的桶包含的指纹信息(f3)和与该数据包的流标识符对应的指纹信息(f5)不同。
最后,执行步骤S112,丢弃辅助表中下标为g1(f5)的桶包含的流记录项信息(f3,8),并使用与该数据包的流标识符对应的指纹信息(f5)和计数值1作为辅助表中下标为g1(f5)的桶的流记录项信息。
因此,辅助表中下标为g1(f5)的桶包含的流记录项信息在更新后变为(f5,1)。
应用示例7
在数据流f83的数据包到达交换机或路由器后,
首先,执行步骤S101,利用与主表对应的第一哈希函数h1将该数据包映射至主表中下标为h1(f83)的桶中。
其次,执行步骤S102,判断主表中下标为h1(f83)的桶是否为空桶。由图5可见,主表中下标为h1(f83)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h1(f83)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h1(f83)的桶包含的数据流的流标识符(f93)与该数据包的流标识符(f83)不同。
接着,执行步骤S106,利用与主表对应的第二哈希函数h2将该数据包映射至主表中下标为h2(f83)的桶中,并返回至步骤S102,判断主表中下标为h2(f83)的桶是否为空桶。由图5可见,主表中下标为h2(f83)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h2(f83)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h2(f83)的桶包含的数据流的流标识符(f45)与该数据包的流标识符(f83)不同。
接着,执行步骤S107,利用与辅助表对应的哈希函数g1将该数据包映射至辅助表中下标为g1(f83)的桶中,同时生成与该数据包的流标识符(f83)对应的指纹信息。
接着,执行步骤S108,判断辅助表中下标为g1(f83)的桶是否为空桶。由图5可见,辅助表中下标为g1(f83)的桶不是空桶。
接着,执行步骤S110,判断辅助表中下标为g1(f83)的桶包含的指纹信息是否和与该数据包的流标识符对应的指纹信息相同。由图5可见,辅助表中下标为g1(f83)的桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同,均为f83
接着,执行步骤S1111,保持辅助表中下标为g1(f83)的桶包含的流记录项信息中的指纹信息不变,并将辅助表中下标为g1(f83)的桶包含的流记录项信息中的计数值增加1。因此,辅助表中下标为g1(f83)的桶包含的流记录项信息在更新后变为(f83,10)。
接着,执行步骤S1112,将辅助表中下标为g1(f83)的桶包含的流记录项信息(f83,10)中的计数值与主表中下标为h1(f83)的桶和主表中下标为h2(f83)的桶包含的流记录项信息中的最小计数值进行比较。
由图5可见,主表中下标为h1(f83)的桶包含的流记录项信息中的计数值为17,主表中下标为h2(f83)的桶包含的流记录项信息中的计数值为26。因此,在本步骤中,将辅助表中下标为g1(f83)的桶包含的流记录项信息中的计数值10与主表中下标为h1(f83)的桶包含的流记录项信息中的计数值17进行比较。
由于辅助表中下标为g1(f83)的桶包含的流记录项信息中的计数值10小于主表中下标为h1(f83)的桶包含的流记录项信息中的计数值17,因此,执行步骤S1114,保持主表中下标为h1(f83)的桶包含的流记录项信息不变,即主表中下标为h1(f83)的桶包含的流记录项信息仍然为(f93,17)。
应用示例8
在数据流f8的数据包到达交换机或路由器后,
首先,执行步骤S101,利用与主表对应的第一哈希函数h1将该数据包映射至主表中下标为h1(f8)的桶中。
其次,执行步骤S102,判断主表中下标为h1(f8)的桶是否为空桶。由图5可见,主表中下标为h1(f8)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h1(f8)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h1(f8)的桶包含的数据流的流标识符(f7)与该数据包的流标识符(f8)不同。
接着,执行步骤S106,利用与主表对应的第二哈希函数h2将该数据包映射至主表中下标为h2(f8)的桶中,并返回至步骤S102,判断主表中下标为h2(f8)的桶是否为空桶。由图5可见,主表中下标为h2(f8)的桶不是空桶。
接着,执行步骤S104,判断主表中下标为h2(f8)的桶包含的数据流的流标识符是否与该数据包的流标识符相同。由图5可见,主表中下标为h2(f8)的桶包含的数据流的流标识符(f9)与该数据包的流标识符(f8)不同。
接着,执行步骤S107,利用与辅助表对应的哈希函数g1将该数据包映射至辅助表中下标为g1(f8)的桶中,同时生成与该数据包的流标识符(f8)对应的指纹信息。
接着,执行步骤S108,判断辅助表中下标为g1(f8)的桶是否为空桶。由图5可见,辅助表中下标为g1(f8)的桶不是空桶。
接着,执行步骤S110,判断辅助表中下标为g1(f8)的桶包含的指纹信息是否和与该数据包的流标识符对应的指纹信息相同。由图5可见,辅助表中下标为g1(f8)的桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同,均为f8
接着,执行步骤S1111,保持辅助表中下标为g1(f8)的桶包含的流记录项信息中的指纹信息不变,并将辅助表中下标为g1(f8)的桶包含的流记录项信息中的计数值增加1。因此,辅助表中下标为g1(f8)的桶包含的流记录项信息在更新后变为(f8,8)。
接着,执行步骤S1112,将辅助表中下标为g1(f8)的桶包含的流记录项信息(f8,8)中的计数值与主表中下标为h1(f8)的桶和主表中下标为h2(f8)的桶包含的流记录项信息中的最小计数值进行比较。
由图5可见,主表中下标为h1(f8)的桶包含的流记录项信息中的计数值为9,主表中下标为h2(f8)的桶包含的流记录项信息中的计数值为7。因此,在本步骤中,将辅助表中下标为g1(f8)的桶包含的流记录项信息中的计数值8与主表中下标为h2(f8)的桶包含的流记录项信息中的计数值7进行比较。
由于辅助表中下标为g1(f8)的桶包含的流记录项信息中的计数值8大于主表中下标为h2(f8)的桶包含的流记录项信息中的计数值7,因此,执行步骤S1113,丢弃主表中下标为h2(f8)的桶包含的流记录项信息(f9,7),并使用该数据包的流标识符(f8)和辅助表中下标为g1(f8)的桶包含的流记录项信息(f8,8)中的计数值8作为主表中下标为h2(f8)的桶包含的流记录项信息。
因此,主表中下标为h2(f8)的桶包含的流记录项信息在更新后变为(f8,8)。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (10)

1.一种基于哈希函数的网络测量方法,其特征在于,包括:
在交换机的内存中创建数据结构,所述数据结构包括一个主表和一个辅助表,所述主表对应于多个哈希函数,所述辅助表对应于一个哈希函数,所述主表和所述辅助表具有预设的相同数目的多个桶,所述主表中的每个桶分别包含一个由数据流的流标识符和计数值组成的流记录项信息,所述辅助表中的每个桶分别包含一个由根据数据流的流标识符生成的指纹信息和计数值组成的流记录项信息;
针对到达交换机或路由器的每个数据包,均执行以下操作:
利用与主表对应的第一哈希函数将该数据包映射至主表中的一个桶中,该桶为主表中的任意一个桶;
判断该桶是否为空桶;
在判断出该桶为空桶的情况下,使用该数据包的流标识符和计数值1作为该桶的流记录项信息;
在判断出该桶不是空桶的情况下,判断该桶包含的数据流的流标识符是否与该数据包的流标识符相同;
在判断出该桶包含的数据流的流标识符与该数据包的流标识符相同的情况下,利用预设规则更新该桶包含的流记录项信息;
在判断出该桶包含的数据流的流标识符与该数据包的流标识符不同的情况下,依次利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶中,并判断该桶是否为空桶,且在判断出该桶不是空桶的情况下,判断该桶包含的数据流的流标识符是否与该数据包的流标识符相同;
在判断出利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶均不是空桶且利用与主表对应的除第一哈希函数之外的其余哈希函数将该数据包映射至主表中的对应桶包含的数据流的流标识符与该数据包的流标识符均不同的情况下,利用与辅助表对应的哈希函数将该数据包映射至辅助表中的一个桶中,同时生成与该数据包的流标识符对应的指纹信息;
判断该桶是否为空桶;
在判断出该桶为空桶的情况下,使用与该数据包的流标识符对应的指纹信息和计数值1作为该桶的流记录项信息;
在判断出该桶不是空桶的情况下,判断该桶包含的指纹信息是否和与该数据包的流标识符对应的指纹信息相同;
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,利用预设规则更新该桶包含的流记录项信息,并将更新后的该桶包含的流记录项信息与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息进行比较,根据比较结果来确定是否更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息;
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息不同的情况下,利用预设规则更新该桶包含的流记录项信息;
其中,与主表对应的多个哈希函数、以及与辅助表对应的一个哈希函数两两不同。
2.根据权利要求1所述的基于哈希函数的网络测量方法,其特征在于,在判断出该桶包含的数据流的流标识符与该数据包的流标识符相同的情况下,利用预设规则更新该桶包含的流记录项信息,包括:
在判断出该桶包含的数据流的流标识符与该数据包的流标识符相同的情况下,保持该桶包含的流记录项信息中的流标识符不变,并将该桶包含的流记录项信息中的计数值增加1。
3.根据权利要求1所述的基于哈希函数的网络测量方法,其特征在于,在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,利用预设规则更新该桶包含的流记录项信息,并将更新后的该桶包含的流记录项信息与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息进行比较,根据比较结果来确定是否更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,包括:
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,保持该桶包含的流记录项信息中的指纹信息不变,并将该桶包含的流记录项信息中的计数值增加1;
此后,将该桶包含的流记录项信息中的计数值与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值进行比较;
若该桶包含的流记录项信息中的计数值大于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,利用预设规则更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。
4.根据权利要求3所述的基于哈希函数的网络测量方法,其特征在于,若该桶包含的流记录项信息中的计数值大于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,利用预设规则更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,包括:
若该桶包含的流记录项信息中的计数值大于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,丢弃利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,并使用该数据包的流标识符和此时该桶包含的流记录项信息中的计数值作为利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息。
5.根据权利要求3所述的基于哈希函数的网络测量方法,其特征在于,在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息相同的情况下,利用预设规则更新该桶包含的流记录项信息,并将更新后的该桶包含的流记录项信息与利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息进行比较,根据比较结果来确定是否更新利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息,还包括:
若该桶包含的流记录项信息中的计数值小于等于利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶包含的流记录项信息中的最小计数值,保持利用与主表对应的多个哈希函数将该数据包映射至主表中的对应桶中具有最小计数值的桶包含的流记录项信息不变。
6.根据权利要求1所述的基于哈希函数的网络测量方法,其特征在于,在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息不同的情况下,利用预设规则更新该桶包含的流记录项信息,包括:
在判断出该桶包含的指纹信息和与该数据包的流标识符对应的指纹信息不同的情况下,丢弃该桶包含的流记录项信息,并使用与该数据包的流标识符对应的指纹信息和计数值1作为该桶的流记录项信息。
7.根据权利要求1至6中任一项所述的基于哈希函数的网络测量方法,其特征在于,所述主表包括多个小表,每个小表对应于一个哈希函数。
8.一种存储有程序的计算机可读存储介质,其特征在于,所述程序使得处理器执行如权利要求1至7中任一项所述的基于哈希函数的网络测量方法。
9.根据权利要求8所述的计算机可读存储介质,其特征在于,所述计算机可读存储介质为磁表面存储器、光盘存储器和半导体存储器中的一种。
10.根据权利要求8或9所述的计算机可读存储介质,其特征在于,所述处理器为中央处理器、可编程逻辑控制器、嵌入式处理器和现场可编程门阵列中的一种。
CN201910167942.1A 2019-03-06 2019-03-06 基于哈希函数的网络测量方法和计算机可读存储介质 Pending CN110019250A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910167942.1A CN110019250A (zh) 2019-03-06 2019-03-06 基于哈希函数的网络测量方法和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910167942.1A CN110019250A (zh) 2019-03-06 2019-03-06 基于哈希函数的网络测量方法和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN110019250A true CN110019250A (zh) 2019-07-16

Family

ID=67189327

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910167942.1A Pending CN110019250A (zh) 2019-03-06 2019-03-06 基于哈希函数的网络测量方法和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110019250A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110830322A (zh) * 2019-09-16 2020-02-21 北京大学 一种基于近似零误差的概率测量数据结构Sketch的网络流量测量方法和系统
CN111541617A (zh) * 2020-04-17 2020-08-14 网络通信与安全紫金山实验室 一种用于高速大规模并发数据流的数据流表处理方法及装置
CN112286966A (zh) * 2020-09-23 2021-01-29 清华大学 一种数据流处理、恢复方法以及设备和存储介质
CN113595816A (zh) * 2021-07-16 2021-11-02 清华大学 一种数据流测算方法、设备和存储介质
WO2022111596A1 (zh) * 2020-11-30 2022-06-02 华为技术有限公司 数据流测量的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7043494B1 (en) * 2003-01-28 2006-05-09 Pmc-Sierra, Inc. Fast, deterministic exact match look-ups in large tables
CN1912870A (zh) * 2006-09-05 2007-02-14 四川南山之桥微电子有限公司 一种哈希表查表方法
CN101692651A (zh) * 2009-09-27 2010-04-07 中兴通讯股份有限公司 一种哈希查找表的方法和装置
CN105515919A (zh) * 2016-01-20 2016-04-20 中国电子科技集团公司第五十四研究所 一种基于哈希压缩算法的网络流量监控方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7043494B1 (en) * 2003-01-28 2006-05-09 Pmc-Sierra, Inc. Fast, deterministic exact match look-ups in large tables
CN1912870A (zh) * 2006-09-05 2007-02-14 四川南山之桥微电子有限公司 一种哈希表查表方法
CN101692651A (zh) * 2009-09-27 2010-04-07 中兴通讯股份有限公司 一种哈希查找表的方法和装置
CN105515919A (zh) * 2016-01-20 2016-04-20 中国电子科技集团公司第五十四研究所 一种基于哈希压缩算法的网络流量监控方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZONGYI ZHAO等: "HashFlow For Better Flow Record Collection", 《ARXIV》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110830322A (zh) * 2019-09-16 2020-02-21 北京大学 一种基于近似零误差的概率测量数据结构Sketch的网络流量测量方法和系统
CN110830322B (zh) * 2019-09-16 2021-07-06 北京大学 一种基于概率测量数据结构Sketch的网络流量测量方法和系统
CN111541617A (zh) * 2020-04-17 2020-08-14 网络通信与安全紫金山实验室 一种用于高速大规模并发数据流的数据流表处理方法及装置
WO2021208403A1 (zh) * 2020-04-17 2021-10-21 网络通信与安全紫金山实验室 数据流表及其处理方法、装置、存储介质
CN111541617B (zh) * 2020-04-17 2021-11-02 网络通信与安全紫金山实验室 一种用于高速大规模并发数据流的数据流表处理方法及装置
CN112286966A (zh) * 2020-09-23 2021-01-29 清华大学 一种数据流处理、恢复方法以及设备和存储介质
WO2022111596A1 (zh) * 2020-11-30 2022-06-02 华为技术有限公司 数据流测量的方法和装置
CN113595816A (zh) * 2021-07-16 2021-11-02 清华大学 一种数据流测算方法、设备和存储介质

Similar Documents

Publication Publication Date Title
CN110019250A (zh) 基于哈希函数的网络测量方法和计算机可读存储介质
Dharmapurikar et al. Longest prefix matching using bloom filters
US10097378B2 (en) Efficient TCAM resource sharing
CN108833299B (zh) 一种基于可重构交换芯片架构的大规模网络数据处理方法
CN106452868A (zh) 一种支持多维度聚合分类的网络流量统计实现方法
CN101694672B (zh) 一种分布式安全检索系统
Hao et al. Fast dynamic multiple-set membership testing using combinatorial bloom filters
CN107005485A (zh) 一种确定路由的方法、对应装置及系统
CN104298687B (zh) 一种哈希分区管理方法及装置
Li et al. Smart name lookup for NDN forwarding plane via neural networks
Shi et al. Ndn-nic: Name-based filtering on network interface card
Yang et al. Constant IP lookup with FIB explosion
Fan et al. Dynamic virtual network embedding of mobile cloud system based on global resources in internet of vehicles
CN115297059A (zh) 一种基于p4的传输层负载均衡系统
CN104639436A (zh) 剩余生存时间老化处理方法及装置
CN107453948A (zh) 一种网络测量数据的存储方法及系统
Yu et al. Hardware accelerator to speed up packet processing in NDN router
CN106789147A (zh) 一种流量分析方法及装置
Kanizo et al. Access-efficient balanced bloom filters
Hsieh et al. A classified multisuffix trie for IP lookup and update
Cohen Stream sampling framework and application for frequency cap statistics
Matsumoto et al. Adaptive Bloom filter: A space-efficient counting algorithm for unpredictable network traffic
Yang et al. An efficient pipeline processing scheme for programming protocol-independent packet processors
Yang et al. FISE: A forwarding table structure for enterprise networks
Liu et al. SEAD counter: Self-adaptive counters with different counting ranges

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190716