CN113595816A - 一种数据流测算方法、设备和存储介质 - Google Patents
一种数据流测算方法、设备和存储介质 Download PDFInfo
- Publication number
- CN113595816A CN113595816A CN202110808358.7A CN202110808358A CN113595816A CN 113595816 A CN113595816 A CN 113595816A CN 202110808358 A CN202110808358 A CN 202110808358A CN 113595816 A CN113595816 A CN 113595816A
- Authority
- CN
- China
- Prior art keywords
- flow
- hash bucket
- record
- flow record
- data packet
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000006870 function Effects 0.000 claims abstract description 38
- 238000013507 mapping Methods 0.000 claims abstract description 24
- 238000005259 measurement Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000009795 derivation Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000000691 measurement method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
Landscapes
- Engineering & Computer Science (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文公开了一种数据流测算方法、设备和存储介质。其中,所述数据流测算方法,包括,根据接收到的数据包,获取数据包的流标识符;根据预设的哈希函数和数据包的流标识符,将数据包分别映射到主表的哈希桶和辅助表的哈希桶中;根据数据包映射在主表哈希桶中的第一流记录和数据包映射在辅助表哈希桶中的第二流记录,判断是否满足预设的流记录导出条件;在满足预设的流记录导出条件的情况下,根据数据包映射在主表哈希桶中的第一流记录确定被导出的一个第一流记录,根据确定导出的第一流记录获得数据流测算结果。本文提供的数据流测算方法能够有效控制数据平面的内存占用,整体提升了数据流测算的效率。
Description
技术领域
本申请实施例涉及但不限于网络技术领域,尤其涉及一种数据流测算方法、设备和存储介质。
背景技术
网络测量生成的各种统计信息为网络运营商进行各种网络管理任务提供了最基本的依据,比如网络配置错误的检测与纠正、流量工程和网络攻击检测等。目前的网络测量工具多种多样,其中tcpdump和Wireshark等可以收集网络中所有的数据包,包括包头和时间戳等,因此可以精确地反映网络状态,但是它们并不适用于带宽高达100Gbps的主干链路,因为对高速链路进行精确测量需要海量的存储空间和巨大的处理能力。网络测量工具的另一极端是仅报告有关网络的一些高度概括的信息,比如SNMP只会统计经过路由器某个端口的数据包数.这类工具虽然具有良好的可扩展性,但是它们能够为网络管理提供的信息实在有限,因此远远不能满足实际需求。第三类工具,包括NetFlow和IPFIX以及近几年不断涌现出来的更加复杂的算法,则是抓包以后直接在数据平面将数据包聚合成流记录,然后报告流级别的信息,从而在信息的丰富程度和可扩展性之间取得了一个良好的平衡。探索更优更高效的数据流测算方法一直是本领域研究的方向。
发明内容
有鉴于此,本申请实施例提供一种数据流测算方法、设备和存储介质,能够有效控制数据平面的内存占用,整体提升了数据流测算的效率。
本申请实施例主要提供如下技术方案:
一种数据流测算方法,包括:
根据接收到的数据包,获取所述数据包的流标识符;
根据预设的哈希函数和所述数据包的流标识符,将所述数据包分别映射到主表的哈希桶和辅助表的哈希桶中;其中,主表的哈希桶中记录第一流记录,辅助表的哈希桶中记录第二流记录;所述第一流记录包括:流标识符、计数值和状态值,所述第二流记录包括:第二流记录标识、计数值和状态值;
根据所述数据包映射在主表哈希桶中的第一流记录和所述数据包映射在辅助表哈希桶中的第二流记录,判断是否满足预设的流记录导出条件;
在满足预设的流记录导出条件的情况下,根据所述数据包映射在主表哈希桶中的第一流记录确定被导出的一个第一流记录,根据确定导出的第一流记录获得数据流测算结果;
其中,所述主表包括一个或多个子表。
一种电子设备,包括:
至少一个处理器;
以及与所述处理器连接的至少一个存储器、总线;
其中,所述处理器、存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述任一实施例所述的数据流测算方法。
一种计算机可读存储介质,包括存储的程序,其中,在所述程序运行时控制所述存储介质所在电子设备执行上述任一实施例所述的数据流测算方法。
本申请实施例提供的数据流测算方案,提出了基于数据流活跃程度的流级测量算法,能够实时监测数据流的活跃程度,并根据数据平面维护的流记录的活跃程度确定是否要将某个数据流导出,从而为更活跃的数据流腾出内存空间。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例中的数据流测算方法的流程示意图;
图2为本申请实施例中的方法执行系统框架示意图;
图3为本申请实施例中的主表第一流记录和辅助表第二流记录示意图;
图4为本申请实施例中的数据流测算中数据流实例的示意图;
图5为本申请实施例中的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后......)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“连接”、“固定”等应做广义理解,例如,“固定”可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
相关技术中尽管人们对流级别的网络测量算法进行了广泛而深入的研究,但是却一直忽视了一个问题,那就是在数据平面的内存容量有限的情况下,为了持续地对新的数据流进行检测,应该采取何种策略导出数据平面维护的流记录从而为维护新的数据流腾出空间.一般而言,当一个TCP流收到FIN包或者RST包,就说明这个TCP流已经结束,所以NetFlow建议通过FIN包和RST包来选择需要导出的流,但是对真实网络流量的分析显示,网络中有大约40%的流都是非TCP流,而且在一分钟里出现的TCP流中,大约有20%的流在接下来的10分钟内都没能正常收到FIN包或者RST包,因此依靠FIN包或者RST包进行导出决策的方法并不可靠,需要一种更通用的方法来决定何时将哪一个流记录导出。另一些相关技术方案还包括设置一个超时时间或一个导出周期,因此当一个流记录在这个超时时间以内没有收到新的数据包就将其导出,或者当一个导出周期结束的时候就将整个数据平面一次性导出,但是实际使用和测试中发现这些方法并不高效。
本公开实施提出了一个基于数据流活跃程度的流级别测算方法.该测算方法能够实时监测数据流的活跃程度,并根据数据平面维护的流记录的活跃程度,决定是否要将某个数据流导出,从而为更活跃的数据流腾出空间。
本申请实施例提供一种数据流测算方法。在实际应用中,该数据流测算方法可以应用于网络设备中。
在一种示例性实施例中,上述网路设备可以为如交换机、路由器等具有很高转发性能的电子设备。
举例来说,以网路设备为交换机为例,该网络设备可以是实体交换机,也可以是虚拟交换机。
实施例一
图1为本申请实施例中的数据流测算方法的流程示意图,该数据流测算方法可以包括:
步骤101,根据接收到的数据包,获取所述数据包的流标识符;
步骤102,根据预设的哈希函数和所述数据包的流标识符,将所述数据包分别映射到主表的哈希桶和辅助表的哈希桶中;其中,主表的哈希桶中记录第一流记录,辅助表的哈希桶中记录第二流记录;所述第一流记录包括:所述流标识符、计数值和状态值,所述第二流记录包括:第二流记录标识、计数值和状态值;
步骤103,根据所述数据包映射在主表哈希桶中的第一流记录和所述数据包映射在辅助表哈希桶中的第二流记录,判断是否满足预设的流记录导出条件;
步骤104,在满足预设的流记录导出条件的情况下,根据所述数据包映射在主表哈希桶中的第一流记录确定被导出的一个第一流记录,根据确定导出的第一流记录获得数据流测算结果;
其中,所述主表包括一个或多个子表。
需要说明的是,主表中子表的个数可以是1个,也可以是多个,可以根据需要灵活设置;可选地,主表包括2-4个子表的情况下,整体效率较优。
在一种示例性实施例中,所述第二流记录标识包括:所述流标识符,或根据所述流标识符生成的摘要。
在一种示例性实施例中,所述数据流测算方法由一个位于数据平面的流记录生成器和一个位于控制平面的流记录收集器共同实现,如图2所示。在一种示例性实施例中,流记录生成器执行步骤101-103和步骤104的部分子步骤,步骤104中第一流记录导出后进入流记录收集器,不限于这里示例的特定分工。其中,流记录生成器中,包括两个哈希表——主表M和辅助表A,每个表的每个哈希桶都可以存放一个流记录项,分别称为第一流记录和第二流记录。其中,尽管在实际应用过程中一个流记录可能包含关于一个数据流的很多信息,包括开始和结束时间,字节数和包数等。在一种示例性实施例中,将每一个流记录记为一个<流标识符,数据包数>的二元组或者一个<流标识符摘要,数据包数>的二元组。
例如,图3所示,主表中的每个哈希桶包括一个104位的流标识符域,一个16位的计数值域以及一个32位的状态值域。辅助表中的每个哈希桶包括一个8位的摘要域,一个16位的计数值域以及一个32位的状态值域;或者,辅助表中的每个哈希桶包括一个104位的流标识符域,一个16位的计数值域以及一个32位的状态值域。
在一种示例性实施例中,流标识符是一个由源和目标地址、协议、源和目标端口号组成的五元组,所以它占用的空间为104位,而在辅助表中,为节省空间,使用一个根据流标识符生成的宽度为8位的摘要,而不直接存储流标识符本身。可选地,辅助表中也可以直接存储流标识符。
需要说明的是,流标识符指示要进行测算的流,根据上述方法测算该流的数据包;也可以选择其他方式确定流标识符,不限于上述示例。本公开实施例中涉及的流标识符、计数值、状态值和摘要的长度,根据相关协议或方案需要对应确定,不限于上述示例的形式。
在一种示例性实施例中,所述预设的哈希函数包括:每一个所述子表对应的子表哈希函数和所述辅助表对应的辅助表哈希函数;
相应地,步骤102中根据预设的哈希函数和所述数据包的流标识符,将所述数据包分别映射到主表的哈希桶和辅助表的哈希桶中,包括:
根据各子表哈希函数和所述数据包的流标识符,依次将所述数据包分别映射到各子表的哈希桶中;
根据辅助表哈希函数和所述数据包的流标识符,将所述数据包映射到辅助表的哈希桶中。
需要说明的是,每一个子表对应一个子表哈希函数,每一个子表对应多个子表哈希桶;不同子表所对应的子表哈希桶的数量可以相同,也可以不同。辅助表也对应一个辅助表哈希函数,对应多个辅助表哈希桶,辅助表哈希桶的数量与子表哈希桶的数量可以相同,也可以不相同。
在一种示例性实施例中,每个子表对应的哈希桶数量相同,与辅助表哈希桶数量也相同。
在一种示例性实施例中,每个子表哈希桶可以为空,或者,也可以保存一个第一流记录;每个辅助表哈希桶可以为空,或者,也可以保存一个第二流记录。
可以看到,根据步骤102,接收到的数据包都将根据其流标识符,依次被映射到每一个子表的某个哈希桶,和辅助表的某个哈希桶中。例如,主表M包括d个子表M1,M2,M3,...Md,辅助表A,则步骤102对接收到的数据包,根据其流标识符分别采用子表哈希函数h1,h2,h3,...hd进行哈希运算,将接收到的数据包依次映射到d个子表M1,M2,M3,...Md各自的一个哈希桶(也称为子表哈希桶)中,在根据其流标识符采用辅助表哈希函数g进行哈希运算,将该数据包映射到辅助表A的一个哈希桶(也称为辅助表哈希桶)中。其中,子表哈希桶中存放第一流记录,辅助表哈希桶中存放第二流记录。
需要说明的是,根据表(子表或辅助表)的哈希函数和数据包的流标识符,将数据包映射到该表的某个哈希桶,包括:
根据表(子表或辅助表)的哈希函数和数据包的流标识符确定哈希桶索引,将所述数据包映射到该表中所述哈希桶索引所指示的哈希桶中。
例如,数据包的流标识符f,顺序映射到子表M1,M2,M3,...Md中索引为h1(f),h2(f),h3(f),...hd(f)的子表哈希桶中,映射到辅助表A中索引为g(f)的辅助表哈希桶中。
在一种示例性实施例中,所述根据各子表哈希函数和所述数据包的流标识符,依次将所述数据包分别映射到各子表的哈希桶中,包括:
针对主表中的每一个子表分别执行以下步骤:
根据该子表的子表哈希函数,确定所述数据包的流标识符对应的该子表的哈希桶索引;
在所述数据包的流标识符已被在先子表的子表哈希桶记录的情况下,将所述哈希桶索引指示的子表哈希桶中第一流记录中的状态值减1;
在所述数据包的流标识符未被在先子表的子表哈希桶记录,且所述哈希桶索引指示的子表哈希桶为空的情况下,将第一流记录写入所述哈希桶索引指示的子表哈希桶;其中,所述第一流记录中的流标识符为所述数据包的流标识符,所述第一流记录中的计数值为1,所述第一流记录中的状态值为1;
在所述数据包的流标识符未被在先子表的子表哈希桶记录,所述哈希桶索引指示的子表哈希桶不为空,且所述哈希桶索引指示的子表哈希桶中第一流记录中的流标识符与所述数据包的流标识符相同的情况下,将所述哈希桶索引指示的子表哈希桶中第一流记录中的计数值加1,将所述第一流记录中的状态值设置为更新后的计数值;
在所述数据包的流标识符未被在先子表的子表哈希桶记录,所述哈希桶索引指示的子表哈希桶不为空,且所述哈希桶索引指示的子表哈希桶中第一流记录中的流标识符与所述数据包的流标识符不相同的情况下,将所述哈希桶索引指示的子表哈希桶中第一流记录中的状态值减1。
需要说明的是,当所述数据包的流标识符在当前子表之前的任一个子表的任一哈希桶中被记录时,则表明所述数据包的流标识符已被在先子表的子表哈希桶记录;即当前子表之前的任一个子表的任一哈希桶中的第一流记录中记载了该数据包的流标识符,则表明该数据包的流标识符已被在先子表的子表哈希桶记录。
可以看到,当一个数据包p到达的时候,首先提取它的流标识符f之后,顺序将数据包映射到子表M1,M2,...,Md中索引为h1(f),h2(f),...,hd(f)的哈希桶中。对于任意子表Mi中的哈希桶,如果这个数据包还没有被主表记录过(这一条件对于M1显然成立),就首先判断这个哈希桶是否为空。如果这个哈希桶为空,那么我们将流标识符f写入哈希桶的流标识符域,并将哈希桶的计数值域和状态值域都置为1。如果这个哈希桶不为空但是它的流标识符域的值和流标识符f相同,则将这个哈希桶的计数值域的值增加1,然后将这个哈希桶的状态值域的值设为更新后的计数值域的值。在以上这两种情况下,都认为这个数据包已经被记录了,因此在更新后续的哈希表(包括主表的子表以及辅表)的时候,我们将采取不同的策略。如果这个哈希桶不为空并且它的流标识符域的值和接收到的数据包的流标识符f不同,则将它的状态值域的值减1。但是,如果这个数据包已经被先前的主表中子表记录了,就将这个哈希桶的状态值减1而不检测这个哈希桶的流标识符是否和f一致。
需要说明的是,上述过程中记载的写入或更新子表哈希桶中的标识符域、计数值域和/或状态值域,与写入或更新子表中的第一流记录具有等同技术效果,本领域技术人员可以理解该方面。
在一种示例性实施例中,所述根据辅助表哈希函数和所述数据包的流标识符,将所述数据包映射到辅助表的哈希桶中,包括:
根据所述辅助表哈希函数,确定所述数据包的流标识符对应的辅助表的哈希桶索引;
在所述数据包的流标识符已被主表哈希桶记录的情况下,将所述哈希桶索引指示的辅助表哈希桶中第二流记录中的状态值减1;
在所述数据包的流标识符未被主表哈希桶记录的情况下,根据所述数据包的流标识符更新辅助表哈希桶。
需要说明的是,当所述数据包的流标识符在主表的任一个子表的任一哈希桶中被记录时,则表明所述数据包的流标识符已被主表哈希桶记录;即主表中的任一个子表的任一哈希桶中的第一流记录中记载了该数据包的流标识符,则表明该数据包的流标识符已被主表哈希桶记录。
可以看到,在主表完成了对数据包的处理以后,将数据包映射到辅助表中索引为g(f)的哈希桶中做进一步处理.如果数据包已经在主表中被记录了,那么只需要将辅助表的哈希桶的状态值减1,这样就完成了辅助表的处理流程;如果数据包未在主表中被记录,则根据流标识符f进一步更新辅助表哈希桶。
在一种示例性实施例中,所述在所述数据包的流标识符未被主表哈希桶记录的情况下,根据所述数据包的流标识符更新辅助表哈希桶,包括:
根据所述流标识符或根据所述流标识符生成的摘要,确定所述数据包对应的第二流记录标识;
规则1:在所述哈希桶索引指示的辅助表哈希桶为空的情况下,将第二流记录写入所述哈希桶索引指示的辅助表哈希桶;其中,所述第二流记录中的第二流记录标识为所述数据包对应的第二流记录标识,所述第二流记录中的计数值为1,所述第二流记录中的状态值为所述数据包映射在主表哈希桶中的第一流记录中的最小状态值;
规则2:在所述哈希桶索引指示的辅助表哈希桶不为空,且所述辅助表哈希桶中第二流记录中的第二流记录标识与所述数据包对应的第二流记录标识相同的情况下,将所述辅助表哈希桶中第二流记录的计数值和状态值分别加1;
规则3:在所述哈希桶索引指示的辅助表哈希桶不为空,且所述辅助表哈希桶中第二流记录中的第二流记录标识与所述数据包对应的第二流记录标识不相同的情况下,更新所述哈希桶索引指示的辅助表哈希桶中的第二流记录;其中,更新后的第二流记录中的第二流记录标识为所述数据包对应的第二流记录标识,更新后的第二流记录中的计数值为1,更新后的第二流记录中的状态值为所述数据包映射在主表哈希桶中的第一流记录中的最小状态值。
需要说明的是,根据流标识符f进一步更新辅助表哈希桶的过程,首先要确定第二流记录标识,可以选择流标识符f作为第二流记录标记,也可以根据流标识符f生成一个8位的摘要D作为第二流记录标记;以摘要D为第二流记录标记写入辅助表哈希桶可以减少辅助表哈希桶占用的内存空间。具体选择哪种第二流记录标识,根据系统配置参数确定。
在一种示例性实施例中,所述根据所述数据包映射在主表哈希桶中的第一流记录和所述数据包映射在辅助表哈希桶中的第二流记录,判断是否满足预设的流记录导出条件,包括:
根据所述数据包映射在全部子表哈希桶的第一流记录,确定第一流记录中的最小计数值和最小状态值;
(1)在所述数据包映射在辅助表哈希桶中的第二流记录中的计数值大于所述第一流记录中的最小计数值的情况下,确定满足预设的流记录导出条件;
或者,
(2)在所述数据包映射在辅助表哈希桶中的第二流记录中的状态值大于所述第一流记录中的最小状态值的情况下,确定满足预设的流记录导出条件。
在一种示例性实施例中,以根据流标识符f生成一个8位的摘要D作为第二流记录标记为例,相应地,在所述数据包的流标识符f未被主表哈希桶记录的情况下,根据所述数据包的流标识符更新辅助表哈希桶,包括:
根据数据包的流标识符f,确定辅助表中索引为g(f)的哈希桶;
规则1:若辅助表中索引为g(f)的哈希桶为空,则在这个哈希桶中为数据流(流标识f)创建一个第二流记录.具体而言,将摘要D写入该哈希桶的摘要域,将该哈希桶的计数值域置为1,并将该哈希桶的状态值域置为先前主表中对应该数据流的第一流记录中的的最小状态值。
规则2:若辅助表中索引为g(f)的哈希桶不为空,但是该哈希桶的摘要域的值和D相同,则将该哈希桶的计数值域和状态值域分别加1。这里,将由流标识符f和更新后的辅表哈希桶的计数值组成的流记录记为R.若该辅助表哈希桶的计数值域大于先前主表中对应该数据流(流标识f)的第一流记录中的最小计数值,则确定R是一个比最小计数值对应的第一流记录更大的流记录;若该辅表哈希桶的状态值域大于先前主表中对应该数据流的第一流记录中的最小状态值,则确定R是一个比最小状态值对应的流记录更活跃的流记录。以上这两种情况将会触发流记录升级程序,将会导出主表中最小计数值或者最小状态值对应的第一流记录,并将流记录R写入被导出的第一流记录所在的主表(子表)哈希桶中.为了防止在主表中重复维护一个流记录,如果这两种情况同时发生,则我们只导出并用R替换最小计数值对应的流记录。
规则3:若辅助表中索引为g(f)的哈希桶不为空,且该哈希桶的摘要域的值和D不同,则说明在辅助表中发生了冲突,则将该哈希桶的内容丢弃,并采取和规则1相同的方式设置该哈希桶的内容,即将该哈希桶的摘要域,计数值域以及状态值域分别设为D,1和先前主表中对应该数据流的第一流记录中的最小状态值。
在一种示例性实施例中,步骤103中根据所述数据包映射在主表哈希桶中的第一流记录和所述数据包映射在辅助表哈希桶中的第二流记录,判断是否满足预设的流记录导出条件,包括:
根据所述数据包映射在全部子表哈希桶的第一流记录,确定第一流记录中的最小计数值和最小状态值;
在所述数据包映射在辅助表哈希桶中的第二流记录中的计数值大于所述第一流记录中的最小计数值的情况下,确定满足预设的流记录导出条件;
或者,
在所述数据包映射在辅助表哈希桶中的第二流记录中的状态值大于所述第一流记录中的最小状态值的情况下,确定满足预设的流记录导出条件。
在一种示例性实施例中,步骤104中所述根据所述数据包映射在主表哈希桶中的第一流记录确定被导出的一个第一流记录,包括:
在所述数据包映射在辅助表哈希桶中的第二流记录中的计数值大于所述第一流记录中的最小计数值的情况下,确定所述最小计数值归属的第一流记录为被导出的一个第一流记录;
或者,
在所述数据包映射在辅助表哈希桶中的第二流记录中的状态值大于所述第一流记录中的最小状态值,且所述数据包映射在辅助表哈希桶中的第二流记录中的计数值小于或等于所述第一流记录中的最小计数值的情况下,确定所述最小状态值归属的第一流记录为被导出的一个第一流记录。
可以看到,接收到数据包后首先确定流标识符,进一步根据步骤102将该数据包依次映射到各子表的哈希桶,这些子表哈希桶中存储的第一流记录构成了该数据包对应的第一流记录。例如,主表M包括d个子表,则接收到的数据包映射到M各子表后,对应的d条第一流记录构成了该数据包对应的第一流记录。本领域技术人员,可以根据相关方案从该数据包对应的第一流记录中确定最小计数值和最小状态值,不限于特定方法。具体如何确定在先主表中所述数据包对应的第一流记录中的最小计数值和最小状态值,不属于本公开实施例保护或限定的范围。
可以看到,步骤103中确定导出的第一流记录中记载了流标识符和计数值,由此得到了流标识符所指示的数据流的测算结果。
在一种示例性实施例中,所述方法还包括:
步骤105,在满足所述预设的流记录导出条件的情况下,根据所述数据包映射在辅助表哈希桶中的第二流记录,更新被确定导出的第一流记录归属的子表哈希桶。
在一种示例性实施例中,所述更新被确定导出的第一流记录归属的子表哈希桶,包括:
导出所确定的第一流记录;
将新的第一流记录写入被导出的第一流记录归属的子表哈希桶;
其中,新的第一流记录中的流标识符为所述数据包流标识符,新的第一流记录中的计数值和状态值均为所述数据包映射在辅助表哈希桶中的第二流记录中的计数值。
可以看到,根据步骤105,在导出包含了数据流测算结果信息的第一流记录后,将更新该位置的第一流记录。
在一种示例性实施例中,所述方法还包括:
步骤106,在满足所述预设的流记录导出条件的情况下,将所述数据包映射在辅助表哈希桶中的第二流记录更新为预设的第二流记录初始值。例如,第二流记录初始值中(第二流记录标识,计数值,状态值)为(0,0,0);或者,设置其他初始值。
在一种示例性实施例中,在步骤101或102之前,所述方法还包括:
步骤100,初始化各子表哈希桶中的第一流记录,初始化辅助表哈希桶中的第二流记录。
在一种示例性实施例中,第一流记录初始值为(0,0,0);相应地,前述步骤中判断子表哈希桶是否为空则包括:在子表哈希桶中第一流记录的流标识符为0且计数值为0的情况下,确定该子表哈希桶为空;否则,确定该子表哈希桶不为空。
在一种示例性实施例中,第二流记录初始值为(0,0,0);相应地,前述步骤中判断辅助表哈希桶是否为空则包括:在辅助表哈希桶中第二流记录的第二流记录标识为0且计数值为0的情况下,确定该辅助表哈希桶为空;否则,确定该辅助表哈希桶不为空。
需要说明的是,本领域技术人员可以采用其他初始值对子表哈希桶和/或辅助表哈希桶进行初始化,不限于上述示例。相应判断各表哈希桶是否为空的方法也根据初始值的不同对应调整即可,不在此一一举例。
本公开实施例提供的数据流测试方案在每一个子表哈希桶中都维护了一个状态值域,当一个数据包到达的时候,如果这个数据包属于这个哈希桶中维护的流记录,则将状态值域的值恢复成为这个哈希桶的计数值域的值,否则就将状态值域的值减1,即通过一个状态值域来动态检测一个流记录的活跃程度,而这个活跃程度可以为后续的第一流记录导出提供决策依据。这个基于数据流活跃程度的流级别测算方法能够实时监测数据流的活跃程度,并根据数据平面维护的流记录的活跃程度,决定是否要将某个数据流导出,从而为更活跃的数据流腾出空间,有效控制了数据平面的内存占用,整体提升了数据流测算的效率。
实施例二
本公开实施例提供一种数据流测算方法,其中辅助表的第二流记录标识为根据流标识符生成的摘要,其流程包括:
步骤零:初始化d个子表的各哈希桶中的第一流记录为初始值(0,0,0),初始化辅助表的各哈希桶中的第二流记录为初始值(0,0,0)。
步骤一:接收数据包,依次映射到d个子表中,包括:
1:接收输入数据包p;
2:将最小计数值的初始值设为正无穷大,最小状态值的初始值设为正无穷大,根据数据包p获取流标识符f,将已记录标识初始值设为-否(未记录);
3:对于i=1到d个子表,循环执行以下步骤4-22
4:索引<--hi(f)//hi(...)为子表哈希函数,根据第i个子表哈希函数,确定在第i个子表中的哈希桶索引;
5:如果否==已记录标识://判断已记录标识等于未记录,则执行步骤6-20
6: 如果Mi[索引]为空://判断第i个子表中索引指示的哈希桶为空,则执行步骤7-8
7: Mi[索引]<--(f,1,1)//将第一流记录(f,1,1)写入第i个子表中索引指示的哈希桶;
8: 已记录标识<--是//将已记录标识设为是,表示已记录;
9: 否则如果Mi[索引].流标识符==f://判断第i个子表中索引指示的哈希桶不为空,且所指示的哈希桶中所记录的流标识符与接收到的数据p的流标识符相同,则执行步骤10-12
10: Mi[索引].计数值++//将第i个子表中索引指示的哈希桶中的计数值加1;
11: Mi[索引].状态值<--Mi[索引].计数值//将第i个子表中索引指示的哈希桶中的状态值更新为上述更新后的计数值;
12: 已记录标识<--是//将已记录标识设为是,表示已记录;
13: 否则://判断第i个子表中索引指示的哈希桶不为空,且所指示的哈希桶中所记录的流标识符与接收到的数据p的流标识符不相同,则执行步骤14-20
14: Mi[索引].状态值—//将第i个子表中索引指示的哈希桶中的状态值减1;
15: 如果Mi[索引].计数值<最小计数值://判断第i个子表中索引指示的哈希桶中的当前计数值小于最小计数值,则执行步骤16-17;
16: 最小计数值<--Mi[索引].计数值//将最小计数值设为第i个子表中索引指示的哈希桶中的当前计数值;
17: 计数表<--i,计数索引<--索引//记录当前最小计数值对应的子表和子表哈希桶索引;
18: 如果Mi[索引].状态值<最小状态值://判断第i个子表中索引指示的哈希桶中的当前状态值小于最小状态值,则执行步骤19-20;
19: 最小状态值<--Mi[索引].状态值//将最小状态值设为第i个子表中索引指示的哈希桶中的当前状态值;
20: 状态表<--i,状态索引<--索引//记录当前最小状态值对应的子表和子表哈希桶索引;
21:否则://判断如果已记录标识等于已记录,则执行步骤22
22: Mi[索引].状态值—//将第i个子表中索引指示的哈希桶中的状态值减1;步骤二:将数据包映射到辅助表中,包括:
23:索引<--g(f)//g(...)为辅助表哈希函数,根据辅助表哈希函数,确定数据包在辅助表中的哈希桶索引;
24:如果否==已记录标识://判断已记录标识等于未记录,则执行步骤25-36
25: 从f生成8位摘要D//根据数据包的流标识符生成摘要D
26: 如果A[索引]为空或D!=A[索引].摘要://判断辅助表中索引指示的哈希桶为空,或者,辅助表中索引指示的哈希桶中所记录的摘要与生成的摘要D不相同,则执行步骤27;
27: A[索引]<--(D,1,最小计数值)//辅助表中索引指示的哈希桶中写入或更新第二流记录(D,1,最小计数值)
28: 否则://判断辅助表中索引指示的哈希桶不为空,且辅助表中索引指示的哈希桶中所记录的摘要与生成的摘要D相同,则执行步骤29;
29: A[索引].状态值++//辅助表中索引指示的哈希桶中状态值加1;
30: A[索引].计数值++//辅助表中索引指示的哈希桶中计数值加1;
31: 如果A[索引].计数值>最小计数值://判断辅助表中索引指示的哈希桶中计数值大于当前最小计数值,则执行步骤32-33;
32: 升级流记录(计数表,计数索引,f,A[索引].计数值)//满足导出流记录导出条件,导出第一流记录并更新对应的子表哈希桶;
33: A[索引]<--(0,0,0)//更新辅助表中索引指示的哈希桶的第二流记录(0,0,0);
34: 否则如果A[索引].状态值>最小状态值://判断辅助表中索引指示的哈希桶中状态值大于当前最小状态值,则执行步骤35-36;
35: 升级流记录(状态表,状态索引,f,A[索引].计数值)//满足导出流记录导出条件,导出第一流记录并更新对应的子表哈希桶;
36: A[索引]<--(0,0,0)//更新辅助表中索引指示的哈希桶的第二流记录(0,0,0);
37:否则://判断已记录标识等于已记录,则执行步骤38
38: A[索引].状态值—//辅助表中索引指示的哈希桶中状态值减1
其中,函数升级流记录(子表标识k,索引,标识符,计数值),包括:
39: 导出Mk[索引]中的流记录//导出最小状态值或最小计数值归属的子表哈希桶中的第一流记录;
40: Mk[索引]<--(标识符,计数值,计数值)//更新被导出第一流记录的哈希桶中的第一流记录,新的第一流记录为(标识符,计数值,计数值),即新的第一流记录中计数值和状态值均为所述数据包映射在辅助表哈希桶中的第二流记录中的计数值(A[索引].计数值)。
可以看到,满足预设的流记录导出条件时,将进行升级流记录(执行升级流记录函数),包括:
确定满足流记录导出条件的子表哈希桶,将该子表哈希桶(Mk[索引])中的第一流记录导出,即得到了数据流的测算结果;
采用新的第一流记录(标识符,计数值,计数值)更新被导出的子表哈希桶(Mk[索引])。
其中,子表各哈希桶中的第一流记录的标识符为0且计数值为0,则确定该哈希桶为空;否则,确定该哈希桶不为空。辅助表各哈希桶中的第二流记录的第二流记录标识为0且计数值为0,则确定该哈希桶为空;则否,确定该哈希桶不为空。
需要说明的是,本实施例提供了实现所述数据流测算方法的伪代码过程,用以辅助说明实施例一中相关步骤,并不限定本公开实施例提供的数据流测算方法的实现过程或步骤。本领域技术人员可以采用等效方式实现本公开实施例提供的数据流测算方法以实现测算目标。
示例
基于前述实施例,以主表包括:子表M1和M2,辅助表包括:A表为例,下面以具体实例对本申请实施例所提供的数据流测算方法进行说明,如图4所示。其中,对于任意一个数据包,同时使用fi来表示这个数据包本身,这个数据包的流标识符,以及这个数据包的流标识符的8位摘要。
实例1:数据包f1首先被映射到了M1中的一个空桶,因此我们将这个空桶的流标识符域设置为f1,将它的计数值域和状态值域均设为1。之后这个数据包继续被映射到主表M2和辅表A,但是在这两个表中我们只是简单地将它们的状态值减1。
实例2:数据包f2被映射到M1的一个具有不同流标识符f11的哈希桶中,使得这个哈希桶的状态值被减1。之后f2继续被映射到M2的一个具有相同流标识符f2的哈希桶中,因此这个哈希桶的计数值被增加1,同时它的状态值被置为更新后的计数值域的值(即6)。最后这个数据包被映射到辅表A的一个哈希桶中并使得这个哈希桶的状态值减1。
实例3:数据包f3在经过主表的时候没有找到一个具有相同流标识符的哈希桶,所以它映射到的哈希桶的状态值分别被减1,同时它记录了最小状态值3。随后,它被映射到了辅表A中的一个空哈希桶,因此这个空哈希桶的摘要域被设置成为f3,它的计数值域被设置成为1,它的状态值域被设置成为我们先前记录的最小状态值3。
实例4:数据包f4没有在主表中找到一个具有相同流标识符的哈希桶,因此它在记录了最小状态值2之后就进入了辅表。在那里,它仍然遇到了一个具有不同的摘要f17的哈希桶。因此这个哈希桶的内容被丢弃,之后这个哈希桶的摘要域被设置成为f4,它的计数值域被设置成为1,它的状态值域被设置成为之前记录的最小状态值(即2)。
实例5:数据包f5在主表中记录的最小计数值和最小状态值分别为8和6。它进入到辅表以后遇到了一个具有相同摘要f5的哈希桶,因此这个哈希桶的计数值和状态值被分别加1变成了5和3。由于5<8且3<6,因此不能触发流记录的升级程序。
实例6:数据包f6在主表中记录的最小计数值和最小状态值分别为4和0。在辅表中,它遇到了一个具有相同的摘要f6的哈希桶,因此这个哈希桶的计数值和状态值被分别加1。之后,由于辅表哈希桶的计数值5大于最小计数值4,所以触发了流记录的升级程序,于是M1中的流记录(f20,4)被导出,然后这个哈希桶的流标识符域被置为f6,它的计数值域和状态值域的值都被置为新的流记录的计数值(即5)。
实例7:数据包f7在主表中记录的最小计数值和最小状态值分别为3和-5。之后它被映射到了辅表中一个具有相同的摘要f7的哈希桶。更新后,这个哈希桶的计数值和状态值分别为2和-4,其中状态值-4大于数据包在主表中遇到的最小状态值-5,触发了数据流的升级程序,因此我们将主表中最小状态值-5对应的哈希桶中的流记录(d22,5)导出,并将这个哈希桶的流标识符置域为f7,将它的计数值域和状态值域分别置为新的流记录的计数值(即2)。
基于同一发明构思,本申请实施例还提供一种电子设备。图5为本申请实施例中的电子设备的结构示意图,参见图5所示,该电子设备50包括:至少一个处理器501;以及与处理器501连接的至少一个存储器502、总线503;其中,处理器501、存储器502通过总线503完成相互间的通信;处理器501用于调用存储器502中的程序指令,以执行上述一个或多个实施例中的数据流测算方法的步骤。
上述处理器可由中央处理器(Central Processing Unit,CPU)、微处理器(MicroProcessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。存储器可能包括计算机可读介质中的非永久性存储器,随机存储器(Random Access Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(Flash RAM),存储器包括至少一个存储芯片。
需要说明的是,在本申请实施例中,如果以软件功能模块的形式实现上述一个或多个实施例中的数据流处理方法或数据流恢复方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。
相应地,基于同一发明构思,本申请实施例还提供一种计算机可读存储介质,上述计算机可读存储介质包括存储的程序,其中,在程序运行时控制存储介质所在电子设备执行上述一个或多个实施例中的数据流测算方法的步骤。
在实际应用中,上述计算机可读存储介质可以如:ROM/RAM、磁碟、光盘等。
这里需要指出的是:以上电子设备或计算机可读存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请电子设备或计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (13)
1.一种数据流测算方法,其特征在于,包括:
根据接收到的数据包,获取所述数据包的流标识符;
根据预设的哈希函数和所述数据包的流标识符,将所述数据包分别映射到主表的哈希桶和辅助表的哈希桶中;其中,主表的哈希桶中记录第一流记录,辅助表的哈希桶中记录第二流记录;所述第一流记录包括:流标识符、计数值和状态值,所述第二流记录包括:第二流记录标识、计数值和状态值;
根据所述数据包映射在主表哈希桶中的第一流记录和所述数据包映射在辅助表哈希桶中的第二流记录,判断是否满足预设的流记录导出条件;
在满足预设的流记录导出条件的情况下,根据所述数据包映射在主表哈希桶中的第一流记录确定被导出的一个第一流记录,根据确定导出的第一流记录获得数据流测算结果;
其中,所述主表包括一个或多个子表。
2.根据权利要求1所述的方法,其特征在于,
所述第二流记录标识为:流标识符,或根据流标识符生成的摘要。
3.根据权利要求1或2所述的方法,其特征在于,
所述预设的哈希函数包括:每一个所述子表对应的子表哈希函数和所述辅助表对应的辅助表哈希函数;
根据预设的哈希函数和所述数据包的流标识符,将所述数据包分别映射到主表的哈希桶和辅助表的哈希桶中,包括:
根据各子表哈希函数和所述数据包的流标识符,依次将所述数据包分别映射到各子表的哈希桶中;
根据辅助表哈希函数和所述数据包的流标识符,将所述数据包映射到辅助表的哈希桶中。
4.根据权利要求3所述的方法,其特征在于,
所述根据各子表哈希函数和所述数据包的流标识符,依次将所述数据包分别映射到各子表的哈希桶中,包括:
针对主表中的每一个子表分别执行以下步骤:
根据该子表的子表哈希函数,确定所述数据包的流标识符对应的该子表的哈希桶索引;
在所述数据包的流标识符已被在先子表的子表哈希桶记录的情况下,将所述哈希桶索引指示的子表哈希桶中第一流记录中的状态值减1;
在所述数据包的流标识符未被在先子表的子表哈希桶记录,且所述哈希桶索引指示的子表哈希桶为空的情况下,将第一流记录写入所述哈希桶索引指示的子表哈希桶;其中,所述第一流记录中的流标识符为所述数据包的流标识符,所述第一流记录中的计数值为1,所述第一流记录中的状态值为1;
在所述数据包的流标识符未被在先子表的子表哈希桶记录,所述哈希桶索引指示的子表哈希桶不为空,且所述哈希桶索引指示的子表哈希桶中第一流记录中的流标识符与所述数据包的流标识符相同的情况下,将所述哈希桶索引指示的子表哈希桶中第一流记录中的计数值加1,将所述第一流记录中的状态值设置为更新后的计数值;
在所述数据包的流标识符未被在先子表的子表哈希桶记录,所述哈希桶索引指示的子表哈希桶不为空,且所述哈希桶索引指示的子表哈希桶中第一流记录中的流标识符与所述数据包的流标识符不相同的情况下,将所述哈希桶索引指示的子表哈希桶中第一流记录中的状态值减1。
5.根据权利要求3所述的方法,其特征在于,
所述根据辅助表哈希函数和所述数据包的流标识符,将所述数据包映射到辅助表的哈希桶中,包括:
根据所述辅助表哈希函数,确定所述数据包的流标识符对应的辅助表的哈希桶索引;
在所述数据包的流标识符已被主表哈希桶记录的情况下,将所述哈希桶索引指示的辅助表哈希桶中第二流记录中的状态值减1;
在所述数据包的流标识符未被主表哈希桶记录的情况下,根据所述数据包的流标识符更新辅助表哈希桶。
6.根据权利要求5所述的方法,其特征在于,
所述在所述数据包的流标识符未被主表哈希桶记录的情况下,根据所述数据包的流标识符更新辅助表哈希桶,包括:
根据所述流标识符或根据所述流标识符生成的摘要,确定所述数据包对应的第二流记录标识;
在所述哈希桶索引指示的辅助表哈希桶为空的情况下,将第二流记录写入所述哈希桶索引指示的辅助表哈希桶;其中,所述第二流记录中的第二流记录标识为所述数据包对应的第二流记录标识,所述第二流记录中的计数值为1,所述第二流记录中的状态值为所述数据包映射在主表哈希桶中的第一流记录中的最小状态值;
在所述哈希桶索引指示的辅助表哈希桶不为空,且所述辅助表哈希桶中第二流记录中的第二流记录标识与所述数据包对应的第二流记录标识相同的情况下,将所述辅助表哈希桶中第二流记录的计数值和状态值分别加1;
在所述哈希桶索引指示的辅助表哈希桶不为空,且所述辅助表哈希桶中第二流记录中的第二流记录标识与所述数据包对应的第二流记录标识不相同的情况下,更新所述哈希桶索引指示的辅助表哈希桶中的第二流记录;其中,更新后的第二流记录中的第二流记录标识为所述数据包对应的第二流记录标识,更新后的第二流记录中的计数值为1,更新后的第二流记录中的状态值为所述数据包映射在主表哈希桶中的第一流记录中的最小状态值。
7.根据权利要求6所述的方法,其特征在于,
所述根据所述数据包映射在主表哈希桶中的第一流记录和所述数据包映射在辅助表哈希桶中的第二流记录,判断是否满足预设的流记录导出条件,包括:
根据所述数据包映射在全部子表哈希桶的第一流记录,确定第一流记录中的最小计数值和最小状态值;
在所述数据包映射在辅助表哈希桶中的第二流记录中的计数值大于所述第一流记录中的最小计数值的情况下,确定满足预设的流记录导出条件;
或者,
在所述数据包映射在辅助表哈希桶中的第二流记录中的状态值大于所述第一流记录中的最小状态值的情况下,确定满足预设的流记录导出条件。
8.根据权利要求7所述的方法,其特征在于,
所述根据所述数据包映射在主表哈希桶中的第一流记录确定被导出的一个第一流记录,包括:
在所述数据包映射在辅助表哈希桶中的第二流记录中的计数值大于所述第一流记录中的最小计数值的情况下,确定所述最小计数值归属的第一流记录为被导出的一个第一流记录;
或者,
在所述数据包映射在辅助表哈希桶中的第二流记录中的状态值大于所述第一流记录中的最小状态值,且所述数据包映射在辅助表哈希桶中的第二流记录中的计数值小于或等于所述第一流记录中的最小计数值的情况下,确定所述最小状态值归属的第一流记录为被导出的一个第一流记录。
9.根据权利要求8所述的方法,其特征在于,
所述方法还包括:
在满足所述预设的流记录导出条件的情况下,根据所述数据包映射在辅助表哈希桶中的第二流记录,更新被确定导出的第一流记录归属的子表哈希桶。
10.根据权利要求9所述的方法,其特征在于,
所述更新被确定导出的第一流记录归属的子表哈希桶,包括:
导出所确定的第一流记录;
将新的第一流记录写入被导出的第一流记录归属的子表哈希桶;
其中,所述新的第一流记录中的流标识符为所述数据包流标识符,所述新的第一流记录中的计数值和状态值均为所述数据包映射在辅助表哈希桶中的第二流记录中的计数值。
11.根据权利要求8所述的方法,其特征在于,
所述方法还包括:
在满足所述预设的流记录导出条件的情况下,将所述数据包映射在辅助表哈希桶中的第二流记录更新为预设的第二流记录初始值。
12.一种电子设备,其特征在于,包括:
至少一个处理器;
以及与所述处理器连接的至少一个存储器、总线;
其中,所述处理器、存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至11任一项所述的数据流测算方法。
13.一种计算机可读存储介质,包括存储的程序,其中,在所述程序运行时控制所述存储介质所在电子设备执行如权利要求1至11任一项所述的数据流测算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110808358.7A CN113595816A (zh) | 2021-07-16 | 2021-07-16 | 一种数据流测算方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110808358.7A CN113595816A (zh) | 2021-07-16 | 2021-07-16 | 一种数据流测算方法、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113595816A true CN113595816A (zh) | 2021-11-02 |
Family
ID=78247788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110808358.7A Pending CN113595816A (zh) | 2021-07-16 | 2021-07-16 | 一种数据流测算方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113595816A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180087838A (ko) * | 2017-01-25 | 2018-08-02 | 삼성전자주식회사 | 최대화된 중복 제거 메모리를 위한 방법 및 장치 |
CN110019250A (zh) * | 2019-03-06 | 2019-07-16 | 清华大学 | 基于哈希函数的网络测量方法和计算机可读存储介质 |
WO2020181740A1 (zh) * | 2018-12-29 | 2020-09-17 | 长沙理工大学 | 一种高性能的openflow虚拟流表查找方法 |
CN112286966A (zh) * | 2020-09-23 | 2021-01-29 | 清华大学 | 一种数据流处理、恢复方法以及设备和存储介质 |
CN112632079A (zh) * | 2020-12-30 | 2021-04-09 | 联想未来通信科技(重庆)有限公司 | 一种数据流标识的查询方法及装置 |
CN112671611A (zh) * | 2020-12-23 | 2021-04-16 | 清华大学 | 基于sketch的大流检测方法和装置 |
-
2021
- 2021-07-16 CN CN202110808358.7A patent/CN113595816A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180087838A (ko) * | 2017-01-25 | 2018-08-02 | 삼성전자주식회사 | 최대화된 중복 제거 메모리를 위한 방법 및 장치 |
WO2020181740A1 (zh) * | 2018-12-29 | 2020-09-17 | 长沙理工大学 | 一种高性能的openflow虚拟流表查找方法 |
CN110019250A (zh) * | 2019-03-06 | 2019-07-16 | 清华大学 | 基于哈希函数的网络测量方法和计算机可读存储介质 |
CN112286966A (zh) * | 2020-09-23 | 2021-01-29 | 清华大学 | 一种数据流处理、恢复方法以及设备和存储介质 |
CN112671611A (zh) * | 2020-12-23 | 2021-04-16 | 清华大学 | 基于sketch的大流检测方法和装置 |
CN112632079A (zh) * | 2020-12-30 | 2021-04-09 | 联想未来通信科技(重庆)有限公司 | 一种数据流标识的查询方法及装置 |
Non-Patent Citations (2)
Title |
---|
ZONGYI ZHAO 等: "Continuous Flow Measurement with SuperFlow", 《2021 IEEE/ACM 29TH INTERNATIONAL SYMPOSIUM ON QUALITY OF SERVICE (IWQOS) 》, pages 1 - 3 * |
ZONGYI ZHAO 等: "HashFlow For Better Flow Record Collection", 《ARXIV:1812.01846V1》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107566206B (zh) | 一种流量测量方法、设备及系统 | |
US11057420B2 (en) | Detection of malware and malicious applications | |
US9515900B2 (en) | Measuring latency within a networking device | |
US10742532B2 (en) | Non-intrusive mechanism to measure network function packet processing delay | |
CN112671611B (zh) | 基于sketch的大流检测方法和装置 | |
US6473400B1 (en) | Computation of traffic flow by scaling sample packet data | |
US9276853B2 (en) | Hashing of network packet flows for efficient searching | |
US10887240B2 (en) | Automatic flow learning in network devices | |
CN112486914B (zh) | 一种数据包存储与快查方法与系统 | |
CN109479015B (zh) | 网络设备及其延迟监测方法 | |
CN110071843B (zh) | 一种基于流路径分析的故障定位方法及装置 | |
CN113507396B (zh) | 一种网络状态分析方法、装置、设备及机器可读存储介质 | |
CN113595816A (zh) | 一种数据流测算方法、设备和存储介质 | |
KR101338223B1 (ko) | 네트워크 트래픽 분석 시스템 및 방법 | |
CN112286966B (zh) | 一种数据流处理、恢复方法以及设备和存储介质 | |
Kong et al. | Time-out bloom filter: A new sampling method for recording more flows | |
CN112511522B (zh) | 探测扫描中减少内存占用的方法、装置和设备 | |
CN114710444A (zh) | 基于塔型摘要和可驱逐流表的数据中心流量统计方法和系统 | |
CN113965492A (zh) | 一种数据流统计方法及装置 | |
US10389630B2 (en) | Monitoring, measuring, analyzing communication flows between identities in an identity-enabled network using IPFIX extensions | |
US9900207B2 (en) | Network control protocol | |
CN114866322B (zh) | 一种网络异常流量检测方法和装置 | |
CN112839018B (zh) | 一种度数值生成方法以及相关设备 | |
JP7359299B2 (ja) | パケット識別装置、パケット識別方法およびパケット識別プログラム | |
JP5659393B2 (ja) | ネットワーク装置、及び、パケット処理方法 |
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 |