CN114244752A - 流量统计方法、装置和设备 - Google Patents
流量统计方法、装置和设备 Download PDFInfo
- Publication number
- CN114244752A CN114244752A CN202111547420.8A CN202111547420A CN114244752A CN 114244752 A CN114244752 A CN 114244752A CN 202111547420 A CN202111547420 A CN 202111547420A CN 114244752 A CN114244752 A CN 114244752A
- Authority
- CN
- China
- Prior art keywords
- hash
- flow
- cache table
- data packet
- cache
- 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
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Abstract
本发明实施例提供一种流量统计方法、装置和设备,该方法包括:接收数据流对应的数据包,数据包关联有数据流对应的流量标识,确定流量标识对应的哈希值,若在预设的哈希表中查询到与哈希值和流量标识对应的哈希表项,则将数据包对应的统计信息更新到预设的缓存表中与流量标识对应的缓存表项,哈希表和缓存表位于可编程芯片内,缓存表项用于记录流量标识对应的数据包统计信息,若根据设定的刷新时间间隔确定缓存表达到刷新时间,则将缓存表刷新到主存中,主存位于可编程芯片外部。通过在可编程芯片内完成了流量统计的处理,从而提高了流量统计的处理速度。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种流量统计方法、装置和设备。
背景技术
随着网络技术的发展,网络规模不断扩大,目前,在很多应用场景中都有流量统计的需求,其流量统计是指对每条数据流进行报文数和字节数的统计。
以云端服务器为用户提供服务的场景为例,在实际应用中,云端服务器为用户提供服务同时,需要保证高安全、可控、易维护。有状态防火墙是保证高安全的重要技术手段。连接追踪技术是有状态防火墙的基础,流量统计是连接追踪技术的重要组成部分。
然而,随着用户使用数据量的增大,如何高效地完成数据流量统计成为亟待解决的问题。
发明内容
本发明实施例提供一种流量统计方法、装置和设备,能够实现高效地处理流量统计。
第一方面,本发明实施例提供一种流量统计方法,应用于可编程芯片,所述方法包括:
接收数据流对应的数据包对应的统计信息,所述数据包关联有所述数据流对应的流量标识;
确定所述流量标识对应的哈希值;
若在预设的哈希表中查询到与所述哈希值和所述流量标识对应的哈希表项,则将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项,所述哈希表和所述缓存表位于所述可编程芯片内;所述缓存表项用于记录所述流量标识对应的数据包统计信息;
若根据设定的刷新时间间隔确定所述缓存表达到刷新时间,则将所述缓存表刷新到主存中,所述主存位于所述可编程芯片外部。
可选地,所述哈希表项中存储指向所述缓存表项的指针;
所述将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项,包括:
根据所述指针确定所述缓存表项;
将所述数据包对应的统计信息更新到所述缓存表项中。
可选地,所述方法还包括:
若在所述哈希表中未查询到与所述哈希值和所述流量标识对应的哈希表项,则确定所述缓存表中是否具有空闲的缓存表项;
若所述缓存表中具有空闲的缓存表项,则在所述哈希表中创建与所述哈希值和所述流量标识对应的哈希表项;
在所述空闲的缓存表项中写入所述流量标识与所述数据包对应的统计信息。
可选地,所述方法还包括:
若所述缓存表中不具有空闲的缓存表项,则将所述数据包对应的统计信息和所述流量标识更新到所述主存中。
可选地,所述缓存表项用于存储所述流量标识、所述数据包对应的统计信息以及所述数据包对应的写入时间,所述方法还包括:
若所述刷新时间与所述写入时间的差值达到设定的老化时长,则删除所述缓存表项以及所述哈希表项。
可选地,所述查询所述哈希表项的步骤包括:
确定所述哈希表中是否存在所述哈希值;
若所述哈希表中存在所述哈希值,则在与所述哈希值对应的多组结构体中查询是否存在包含所述流量标识的结构体,所述多组结构体分别用于存储不同的流量标识;
若所述多组结构体中存在包含所述流量标识的结构体,则确定所述哈希表中存在与所述哈希值和所述流量标识对应的哈希表项。
可选地,所述方法还包括:
接收与所述流量标识对应的删除指令;
若在所述哈希表中查询到与所述流量标识对应的哈希值以及所述流量标识对应的哈希表项,则在所述缓存表中删除与所述流量标识对应的所述缓存表项,以及删除所述主存内与所述流量标识对应的数据包统计信息,删除所述哈希表项;
若在所述哈希表中未查询到与所述流量标识对应的哈希值以及所述流量标识对应的哈希表项,则删除所述主存内与所述流量标识对应的数据包统计信息。
第二方面,本发明实施例提供一种流量统计装置,该装置包括:
接收模块,用于接收数据流对应的数据包对应的统计信息,所述数据包关联有所述数据流对应的流量标识;
确定模块,用于确定所述流量标识对应的哈希值;
更新模块,用于若在预设的哈希表中查询到与所述哈希值和所述流量标识对应的哈希表项,则将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项,所述哈希表和所述缓存表位于所述可编程芯片内;所述缓存表项用于记录所述流量标识对应的数据包统计信息;
刷新模块,用于若根据设定的刷新时间间隔确定所述缓存表达到刷新时间,则将所述缓存表刷新到主存中,所述主存位于所述可编程芯片外部。
可选地,所述哈希表项中存储指向所述缓存表项的指针,所述更新模块具体可以用于:根据所述指针确定所述缓存表项;将所述数据包对应的统计信息更新到所述缓存表项中。
可选地,所述流量统计装置还可以包括创建模块,具体可以用于:
若在所述哈希表中未查询到与所述哈希值和所述流量标识对应的哈希表项,则确定所述缓存表中是否具有空闲的缓存表项;若所述缓存表中具有空闲的缓存表项,则在所述哈希表中创建与所述哈希值和所述流量标识对应的哈希表项;在所述空闲的缓存表项中写入所述流量标识与所述数据包对应的统计信息。
可选地,所述创建模块还用于:
若所述缓存表中不具有空闲的缓存表项,则将所述数据包对应的统计信息和所述流量标识更新到所述主存中。
可选地,所述缓存表项用于存储所述流量标识、所述数据包对应的统计信息以及所述数据包对应的写入时间;
所述方法还包括第一删除模块具体用于:
若所述刷新时间与所述写入时间的差值达到设定的老化时长,则删除所述缓存表项以及所述哈希表项。
可选地,所述更新模块还可以具体用于:
确定所述哈希表中是否存在所述哈希值;若所述哈希表中存在所述哈希值,则在与所述哈希值对应的多组结构体中查询是否存在包含所述流量标识的结构体,所述多组结构体分别用于存储不同的流量标识;若所述多组结构体中存在包含所述流量标识的结构体,则确定所述哈希表中存在与所述哈希值和所述流量标识对应的哈希表项。
可选地,所述流量统计装置还可以包括第二删除模块,具体可以用于:
接收与所述流量标识对应的删除指令;若在所述哈希表中查询到与所述流量标识对应的哈希值以及所述流量标识对应的哈希表项,则在所述缓存表中删除与所述流量标识对应的所述缓存表项,以及删除所述主存内与所述流量标识对应的数据包统计信息,删除所述哈希表项;若在所述哈希表中未查询到与所述流量标识对应的哈希值以及所述流量标识对应的哈希表项,则删除所述主存内与所述流量标识对应的数据包统计信息。
第三方面,本发明实施例提供一种电子设备,包括:可编程芯片和主存,所述主存位于所述可编程芯片外部;其中,所述可编程芯片用于执行上述第一方面的流量统计方法。
本发明实施例采用可编程芯片来完成数据的流量统计。在本发明实施例中,首先接收数据流对应的数据包对应的统计信息,其中数据包关联有数据流对应的流量标识,接着,根据数据流对应的流量标识确实其对应的哈希值。然后在预设的哈希表中查找是否有与哈希值和流量标识对应的哈希表项,若在预设的哈希表中查询到与哈希值和流量标识对应的哈希表项,则将数据包对应的统计信息更新到预设的缓存表中与流量标识对应的缓存表项,其中哈希表和缓存表位于可编程芯片内,缓存表项用于记录流量标识对应的数据包统计信息。最后,根据设定的刷新时间间隔判断缓存表是否达到刷新时间,若根据设定的刷新时间间隔确定缓存表达到刷新时间,则将缓存表刷新到主存中,并且主存位于可编程芯片外部。
在上述方案中,哈希表和缓存表都位于可编程芯片内,通过从哈希表中查找到与哈希值和流量标识对应的哈希表项,将统计信息更新到缓存表中与流量标识对应的缓存表项中,以完成数据流的流量统计。因此,流量统计的过程可以在可编程芯片内独立完成,不再需要在主存中进行流量统计的操作,从而使得流量统计的处理过程更高效。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种流量统计方法的流程图;
图2为本发明实施例提供的一种使用指针确定缓存表项结果的示意图;
图3为本发明实施例提供的一种流量统计方法的应用示意图;
图4为本发明实施例提供的另一种流量统计方法的流程图;
图5为本发明实施例提供的一种流量统计装置的结构示意图;
图6为与图5所示实施例提供的流量统计装置对应的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
在实际应用中,很多场景中都会遇到流量统计问题。随着网络支持的业务和应用日渐增多,也产生了越来越多的数据流,然而在这种需求下,再直接使用芯片外的主存缓存数据流的流量统计信息将达不到性能要求。那么,针对如何提高流量统计的处理速度这个问题,提供了本发明实施例给出的解决方案。
本发明实施例提供的流量统计方法可以应用于可编程芯片,其可编程芯片可以是现场可编程逻辑门阵列(Field Programmable Gate Array,简称FPGA)、复杂可编程逻辑器件(Complex Programmable Logic Device,简称CPLD)、专用集成电路(ApplicationSpecific Integrated Circuit,简称ASIC)等,可以根据实际需求进行选择。
本发明实施例提供的方案,通过直接在可编程芯片内的哈希表中查找到与哈希值和流量标识对应的哈希表项,根据查找到的哈希表项将统计信息更新到可编程芯片内的缓存表中与流量标识对应的缓存表项中,以完成数据流的流量统计过程。显然,整个流量统计的过程都是直接在可编程芯片内完成的,将不再直接使用可编程芯片外的主存来进行流量统计信息的处理,只需要定期将流量统计结果定期刷新到可编程芯片外的主存中,因此,加速了数据流的流量统计过程。
下面结合以下实施例对本文提供的流量统计方法的执行过程进行示例性说明。
图1为本发明实施例提供的一种流量统计方法的流程图,应用于可编程芯片,如图1所示,该方法可以包括如下步骤:
101、接收数据流对应的数据包对应的统计信息,数据包关联有数据流对应的流量标识。
102、确定流量标识对应的哈希值。
103、若在预设的哈希表中查询到与哈希值和流量标识对应的哈希表项,则将数据包对应的统计信息更新到预设的缓存表中与流量标识对应的缓存表项,哈希表和缓存表位于可编程芯片内,缓存表项用于记录流量标识对应的数据包统计信息。
104、若根据设定的刷新时间间隔确定缓存表达到刷新时间,则将缓存表刷新到主存中,主存位于可编程芯片外部。
在本发明实施例中,可以根据数据流应的流量标识对每一条流入的数据流进行流量统计,流量统计是指对每条数据流进行报文数和字节数的统计,其中每条数据流中传输的各个数据包都可以具有相同的源IP地址、目的IP地址和目的端口等特点,也可以具有不同的源IP地址、目的IP地址和目的端口,只要数据包被分配相同的数据流标识就可以作为同一条数据流,这里不做具体限定。对每条数据流进行流量统计的目的,比如可以根据流量统计结果进行收费,可以根据流量统计结果进行限速使用,可以根据数据流的流量统计结果对数据流的状态进行检测,若数据流出现超时老化时,可以及时删除老化数据流,释放资源,以提高网卡性能。
在实际应用中,一条数据流中可能包含有多个数据包,每个数据包都关联有数据流对应的流量标识,根据数据包所关联的流量标识就可以判断该数据包属于那个数据流。即当连续接收到若干个数据包对应的统计信息时,可以根据数据包所关联的流量标识,将属于同一条数据流的数据包对应的统计信息都分配同一条数据流对应的表项中。
可编程芯片接收数据流对应的数据包对应的统计信息的方式可以是直接接收发送端发送的数据包对应的统计信息,其统计信息中包括数据包关联有数据流对应的流量标识和数据包对应的字节长度等信息。可编程芯片接收数据流对应的数据包对应的统计信息的方式也可以是发送端先将数据包发送至中央处理器,可编程芯片接收中央处理器解析处理后得到的数据包所关联有数据流对应的流量标识和数据包对应的字节数等信息,其具体形式不做限定。
当对于数据流中的数据包进行字节数和报文数统计时,首先接收数据流对应的数据包对应的统计信息,统计信息中包含有数据包关联有数据流对应的流量标识和数据包的字节数。接着,进行哈希计算确定接收到的数据包关联的数据流对应的流量标识对应的哈希值。
当确定流量标识对应的哈希值后,还需要根据哈希值和流量标识在哈希表中查找到与之匹配的哈希表项,其具体的查找过程可以是:根据计算得到的哈希值确定哈希表地址,然后在哈希表地址中查找是否保存有其流量标识对应的哈希表项。
可选地,查询哈希表项的具体过程可以为:
确定所述哈希表中是否存在计算得到的哈希值,若哈希表中存在哈希值,则在与哈希值对应的多组结构体中查询是否存在包含流量标识的结构体,多组结构体分别用于存储不同的流量标识。若多组结构体中存在包含流量标识的结构体,则确定哈希表中存在与哈希值和流量标识对应的哈希表项。
在与哈希值对应存在多组结构体,这样可以增加哈希项,使得哈希表可以存储更多的哈希项,可以增加匹配命中率,避免哈希冲突。
若在预设的哈希表中查找到与哈希值和流量标识对应的哈希表项,说明此数据流对应的流量统计信息已经在缓存表中存储过。然后,根据数据包关联有数据流对应的流量标识,在缓存表中查找对应的缓存表项。缓存表项用于记录流量标识对应的数据包统计信息,需要特别注意的是,每一个缓存表项用于存储一段时间内该流量标识对应的全部数据包的统计信息,并不是仅用于存储一个数据包的统计信息。
根据流量标识在缓存表中查找对应的缓存表项的查找过程可以为从头遍历这个缓存表查找流量标识,也可以根据哈希表项中存储指向缓存表项的指针,来确定具体的缓存表项。
结合图2示例性说明使用指针确定缓存表项的过程。在图2中,哈希表项中包括指向缓存表项的指针ptr、流量标识id、占用指示位vld,每个指针指向了流量标识所在的位置。缓存表中每一个缓存表项中都包括流量标识、存储时间、字节数、报文数。哈希表项中的指针,确定指针指向的流量标识对应的缓存表项。这种确定哈希表项的方式可以使得这个查找过程更快速,不再需要遍历整个缓存表一一查找流量标识对应的表项,可以快速的查找到其对应的缓存表项。
之后,根据确定的哈希表项,将数据包对应的统计信息更新到预设的缓存表中与流量标识对应的缓存表项。
可选地,将数据包对应的统计信息更新到预设的缓存表中与流量标识对应的缓存表项的过程可以实现为:
根据查找到的缓存表项,读取该缓存表项中存储的原字节数和原报文数,并在原报文数的基础上加一得到最新报文数,并将缓存表项中的原报文数更新为最新报文数。同时在原字节数的基础上加上数据包对应的字节数得到最新字节数,并将缓存表项中的原字节数更新为最新字节数。
将接收到的数据包的统计信息更新到与流量标识对应的缓存表项之后,还需要根据设定的刷新时间间隔定期的将缓存表刷新到可编程芯片外的主存中去。刷新时间间隔可以根据实际需求进行设定,比如可以设定每隔1秒刷新一次。若根据设定的刷新时间间隔确定缓存表达到刷新时间,则将缓存表刷新到主存中。
由于可编程芯片的资源是有限的,为了更充分地利用,当可编程芯片内某一条数据流长时间内没有任何操作时,可以将这条数据流删除,留出空余的表项,这样可以将更多数据流的流量统计过程在可编程芯片内完成。因此,每一个缓存表项都存储有流量标识、数据包对应的统计信息以及数据包对应的写入时间,并且更新缓存表项中的统计信息时,该数据包对应的写入时间也会更新,那么就可以根据写入时间和刷新时间来确定该数据包对应的数据流是否为老化流。若刷新时间与写入时间的差值达到设定的老化时长,就可以确定该缓存表项中对应的数据流为老化流,则删除缓存表项以及对应的哈希表项。
上述删除老化流对应的哈希表项和缓存表项的过程是在可编程芯片内自动完成的,当达到刷新时间进行刷新操作的同时,也会自动计算刷新时间与写入时间的差值,只要刷新时间与写入时间的差值达到设定的老化时长,就自动删除对应的哈希表项和缓存表项。其老化时长可以根据实际使用情况来进行设定。
这里需要说明的是,删除老化流的操作只是在可编程芯片中进行的,把可编程芯片内的老化流删除后,可以释放更多的空间,使得其可以处理更多的数据流。并且删除老化流后不影响主存中该数据流的统计信息,假设在可编程芯片中将该条数据流作为老化流删除后,当可编程芯片再次接收到该条数据流时,该条数据流作为新的数据流进行处理,但是当该统计信息同步到主存中时,是在原统计信息的基础上进行加和处理的,以得到新的统计信息。
那么,除了自动对缓存表项中存储的老化流进行删除外,还可以根据外部发送删除指令,删除数据流对应的信息。其具体的过程可以为:
首先接收删除指令,删除指令中包括流量标识。然后,在哈希表中查询是否有与流量标识对应的哈希值以及流量标识对应的哈希表项。若在哈希表中查询到与流量标识对应的哈希值以及流量标识对应的哈希表项,则删除哈希表项并将在缓存表中删除与流量标识对应的缓存表项以及主存内与流量标识对应的数据包统计信息删除。若未在哈希表中查询到与流量标识对应的哈希值以及流量标识对应的哈希表项,则删除主存内与流量标识对应的数据包统计信息。
不管是自动在可编程芯片内完成老化流的删除,还是根据外部删除指令,删除数据流的对应信息的操作,都可以释放更多空间,从而提高网卡的性能。
同时,中央处理器还可以向可编程芯片发送清空指令,将可编程芯片内的整个缓存表和哈希表进行删除,具体过程可以为:接收清空指令,将哈希表和缓存表进行清空处理,并将主存内的统计信息做清空处理。
对哈希表和缓存表以及主存内的统计信息进行清空处理,是将哈希表中所有哈希表项进行清空,对缓存表中所有的缓存表项进行清空,并且将主存内的所有统计信息进行清空。进行这样的清空处理可以释放大量的空间,以方便后续大量的数据流进行处理。
由上述可知,可编程芯片接收到的删除指令只是对具体的一条数据流的信息进行删除,只删除这条数据流对应的表项。然而,可编程芯片接收到的清空指令是哈希表、缓存表和主存中的所有表项和信息进行清空。
综上,当接收到一个数据包的统计信息后,根据数据包关联有数据流对应的流量标识,确定流量标识对应的哈希值。接着,在哈希表中查询是否包含有哈希值和流量标识对应的哈希表项,若在预设的哈希表中查询到与哈希值和流量标识对应的哈希表项,则将数据包对应的统计信息更新到缓存表中与流量标识对应的缓存表项,并当缓存表达到刷新时间后,将缓存表刷新到主存中。哈希表和缓存表都位于可编程芯片内,即整个流量统计的过程都在可编程芯片内完成的,不再需要在可编程芯片外的主存中进行数据流的流量统计,只需定期将缓存表中的统计信息刷新到主存中,加速了整个流量统计的过程。
为便于理解,结合图3示例性说明。在图3中,假设可编程芯片为FPGA,FPGA接收数据流对应的数据包对应的统计信息,其数据包关联有数据流对应的流量标识,该流量标识为1,数据包对应的统计信息有字节数,该数据包对应有150个字节。接着,进行哈希计算确定流量标识1对应的哈希值为0,在哈希表中查询哈希值为0的位置,再确定是否有流量标识为1的哈希表项。在哈希表中查询到其对应的哈希表项,根据该哈希表项中指针指向的缓存表项,读取缓存表项中的原字节数和原报文数,其原字节数为500个字节,原报文数为3。并进行计算得到最新字节数即原字节数和该数据包对应的字节数之和为650个字节,原报文数加1该数据流最新报文数为4,并将最新字节数和最新报文数替换掉缓存表项中的原报文数和字节数,并将写入时间进行更新。假设缓存表每隔5秒刷新一次,则当缓存表达到刷新时间间隔,将缓存表的内容刷新到主存中。
在以上实施例中,在进行数据流的流量统计过程中,假设在预设的哈希表中查询到与哈希值和流量标识对应的哈希表项的情形。但是,实际应用中,还可能出现哈希表项中不存在与哈希值和流量标识对应的哈希表项的情形,也就是该数据包对应的是新的数据流,未在可编程芯片内存储过信息。针对这种情形可以结合如下图4所示的流量统计方法进行示例性说明。
图4为本发明实施例提供的另一种流量统计方法的流程图,应用于可编程芯片,如图4所示,该方法包括如下步骤:
401、接收数据流对应的数据包对应的统计信息,数据包关联有数据流对应的流量标识。
402、确定流量标识对应的哈希值。
403、若在哈希表中未查询到与哈希值和流量标识对应的哈希表项,则确定缓存表中是否具有空闲的缓存表项,若有,则执行步骤404,若没有,则执行步骤406。
404、在哈希表中创建与哈希值和流量标识对应的哈希表项。
405、在空闲的缓存表项中写入流量标识与数据包对应的统计信息。
406、将数据包对应的统计信息和流量标识更新到主存中。
本实施例中,当可编程芯片接收到数据包对应的统计信息后,首先进行哈希运算确定数据包关联的流量标识对应的哈希值,然后根据计算得到的哈希值和流量标识在哈希表中查询是否有与其对应的哈希表项,若未在哈希表中查询到与哈希值和流量标识对应的哈希表项,则接着确定缓存表中是否有空闲的缓存表项。
在本发明实施例中,进行流量统计的数据包所关联的数据流若未在可编程芯片中存储,那么首先要确认缓存表中是否还有空闲的缓存表项,若存在空闲的缓存表项,则需要在可编程芯片内创建流量标识对应的哈希表项和缓存表项。并将数据包对应的统计信息写入到新创建的缓存表项中。若没有空闲的缓存表项,则直接将数据包对应的统计信息和流量标识更新到主存中。
由上述可知,若在哈希表中未查询到与哈希值和流量标识对应的哈希表项后,首先确定可编程芯片内的缓存表中是否还能存储数据包对应数据流的统计信息,若还有空闲缓存表项可以进行存储,优先在缓存表中完成流量统计的过程,这样可以直接在可编程芯片内完成整个流量统计过程,可以加速流量统计过程。当缓存表中没有空闲的缓存表项可以进行存储时,再在可编程芯片外的主存中进行流量统计信息的写入。
本实施例提供的方案的具体执行过程可以参考前述其他实施例中的相关说明,在此不赘述。
实际应用中,诸多应用领域都会涉及到对流量统计问题,都可以使用本发明实施例的技术方案。
以下将详细描述本发明的一个或多个实施例的流量统计装置。本领域技术人员可以理解,这些装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成的。
图5为本发明实施例提供的一种流量统计装置的结构示意图,如图5所述,该装置包括:接收模块11、确定模块12、更新模块13、刷新模块14。
接收模块11,用于接收数据流对应的数据包对应的统计信息,所述数据包关联有所述数据流对应的流量标识;
确定模块12,用于确定所述流量标识对应的哈希值;
更新模块13,用于若在预设的哈希表中查询到与所述哈希值和所述流量标识对应的哈希表项,则将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项,所述哈希表和所述缓存表位于所述可编程芯片内;所述缓存表项用于记录所述流量标识对应的数据包统计信息;
刷新模块14,用于若根据设定的刷新时间间隔确定所述缓存表达到刷新时间,则将所述缓存表刷新到主存中,所述主存位于所述可编程芯片外部。
可选地,所述哈希表项中存储指向所述缓存表项的指针,所述更新模块13具体可以用于:根据所述指针确定所述缓存表项;将所述数据包对应的统计信息更新到所述缓存表项中。
可选地,所述流量统计装置还可以包括创建模块15,具体可以用于:若在所述哈希表中未查询到与所述哈希值和所述流量标识对应的哈希表项,则确定所述缓存表中是否具有空闲的缓存表项;若所述缓存表中具有空闲的缓存表项,则在所述哈希表中创建与所述哈希值和所述流量标识对应的哈希表项;在所述空闲的缓存表项中写入所述流量标识与所述数据包对应的统计信息。
可选地,所述创建模块15还用于:若所述缓存表中不具有空闲的缓存表项,则将所述数据包对应的统计信息和所述流量标识更新到所述主存中。
可选地,所述缓存表项用于存储所述流量标识、所述数据包对应的统计信息以及所述数据包对应的写入时间,所述方法还包括第一删除模块16具体用于:若所述刷新时间与所述写入时间的差值达到设定的老化时长,则删除所述缓存表项以及所述哈希表项。
可选地,所述更新模块13还可以具体用于:确定所述哈希表中是否存在所述哈希值;若所述哈希表中存在所述哈希值,则在与所述哈希值对应的多组结构体中查询是否存在包含所述流量标识的结构体,所述多组结构体分别用于存储不同的流量标识;若所述多组结构体中存在包含所述流量标识的结构体,则确定所述哈希表中存在与所述哈希值和所述流量标识对应的哈希表项。
可选地,所述流量统计装置还可以包括第二删除模块17具体可以用于:接收与所述流量标识对应的删除指令;若在所述哈希表中查询到与所述流量标识对应的哈希值以及所述流量标识对应的哈希表项,则在所述缓存表中删除与所述流量标识对应的所述缓存表项,以及删除所述主存内与所述流量标识对应的数据包统计信息,删除所述哈希表项;若在所述哈希表中未查询到与所述流量标识对应的哈希值以及所述流量标识对应的哈希表项,则删除所述主存内与所述流量标识对应的数据包统计信息。
图5所示装置可以执行前述实施例中提供的流量统计方法,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
在一个可能的设计中,上述图5所示流量统计装置的结构可实现为一种电子设备,如图6所示,该电子设备可以包括:可编程芯片和主存,所述主存位于所述可编程芯片外部。其中所述可编程芯片,用于接收数据流对应的数据包对应的统计信息,所述数据包关联有所述数据流对应的流量标识;确定所述流量标识对应的哈希值,若在预设的哈希表中查询到与所述哈希值和所述流量标识对应的哈希表项,则将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项;若根据设定的刷新时间间隔确定所述缓存表达到刷新时间,则将所述缓存表刷新到主存中;所述哈希表和所述缓存表位于所述可编程芯片内,所述缓存表项用于记录所述流量标识对应的数据包统计信息。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种流量统计方法,其特征在于,应用于可编程芯片,所述方法包括:
接收数据流对应的数据包对应的统计信息,所述数据包关联有所述数据流对应的流量标识;
确定所述流量标识对应的哈希值;
若在预设的哈希表中查询到与所述哈希值和所述流量标识对应的哈希表项,则将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项,所述哈希表和所述缓存表位于所述可编程芯片内;所述缓存表项用于记录所述流量标识对应的数据包统计信息;
若根据设定的刷新时间间隔确定所述缓存表达到刷新时间,则将所述缓存表刷新到主存中,所述主存位于所述可编程芯片外部。
2.根据权利要求1所述的方法,其特征在于,所述哈希表项中存储指向所述缓存表项的指针;
所述将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项,包括:
根据所述指针确定所述缓存表项;
将所述数据包对应的统计信息更新到所述缓存表项中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在所述哈希表中未查询到与所述哈希值和所述流量标识对应的哈希表项,则确定所述缓存表中是否具有空闲的缓存表项;
若所述缓存表中具有空闲的缓存表项,则在所述哈希表中创建与所述哈希值和所述流量标识对应的哈希表项;
在所述空闲的缓存表项中写入所述流量标识与所述数据包对应的统计信息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述缓存表中不具有空闲的缓存表项,则将所述数据包对应的统计信息和所述流量标识更新到所述主存中。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述缓存表项用于存储所述流量标识、所述数据包对应的统计信息以及所述数据包对应的写入时间;
所述方法还包括:
若所述刷新时间与所述写入时间的差值达到设定的老化时长,则删除所述缓存表项以及所述哈希表项。
6.根据权利要求1所述的方法,其特征在于,查询所述哈希表项的步骤包括:
确定所述哈希表中是否存在所述哈希值;
若所述哈希表中存在所述哈希值,则在与所述哈希值对应的多组结构体中查询是否存在包含所述流量标识的结构体,所述多组结构体分别用于存储不同的流量标识;
若所述多组结构体中存在包含所述流量标识的结构体,则确定所述哈希表中存在与所述哈希值和所述流量标识对应的哈希表项。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收与所述流量标识对应的删除指令;
若在所述哈希表中查询到与所述流量标识对应的哈希值以及所述流量标识对应的哈希表项,则在所述缓存表中删除与所述流量标识对应的所述缓存表项,以及删除所述主存内与所述流量标识对应的数据包统计信息,删除所述哈希表项;
若在所述哈希表中未查询到与所述流量标识对应的哈希值以及所述流量标识对应的哈希表项,则删除所述主存内与所述流量标识对应的数据包统计信息。
8.一种流量统计装置,其特征在于,包括:
接收模块,用于接收数据流对应的数据包,所述数据包关联有所述数据流对应的流量标识;
确定模块,用于确定所述流量标识对应的哈希值;
更新模块,用于若在预设的哈希表中查询到与所述哈希值和所述流量标识对应的哈希表项,则将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项,所述哈希表和所述缓存表位于可编程芯片内;所述缓存表项用于记录所述流量标识对应的数据包统计信息;
刷新模块,用于若根据设定的刷新时间间隔确定所述缓存表达到刷新时间,则将所述缓存表刷新到主存中,所述主存位于所述可编程芯片外部。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
创建模块,用于若在所述哈希表中未查询到与所述哈希值和所述流量标识对应的哈希表项,则确定所述缓存表中是否具有空闲的缓存表项;若所述缓存表中具有空闲的缓存表项,则在所述哈希表中创建与所述哈希值和所述流量标识对应的哈希表项;在所述空闲的缓存表项中写入所述流量标识与所述数据包对应的统计信息。
10.一种电子设备,其特征在于,包括:可编程芯片和主存,所述主存位于所述可编程芯片外部;
所述可编程芯片,用于接收数据流对应的数据包对应的统计信息,所述数据包关联有所述数据流对应的流量标识;确定所述流量标识对应的哈希值,若在预设的哈希表中查询到与所述哈希值和所述流量标识对应的哈希表项,则将所述数据包对应的统计信息更新到预设的缓存表中与所述流量标识对应的缓存表项;若根据设定的刷新时间间隔确定所述缓存表达到刷新时间,则将所述缓存表刷新到主存中;所述哈希表和所述缓存表位于所述可编程芯片内,所述缓存表项用于记录所述流量标识对应的数据包统计信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111547420.8A CN114244752A (zh) | 2021-12-16 | 2021-12-16 | 流量统计方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111547420.8A CN114244752A (zh) | 2021-12-16 | 2021-12-16 | 流量统计方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114244752A true CN114244752A (zh) | 2022-03-25 |
Family
ID=80757511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111547420.8A Pending CN114244752A (zh) | 2021-12-16 | 2021-12-16 | 流量统计方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114244752A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174446A (zh) * | 2022-07-21 | 2022-10-11 | 天翼云科技有限公司 | 一种网络流量统计的方法、装置及电子设备 |
CN115988574A (zh) * | 2023-03-15 | 2023-04-18 | 阿里巴巴(中国)有限公司 | 基于流表的数据处理方法、系统、设备和存储介质 |
CN116055191A (zh) * | 2023-02-02 | 2023-05-02 | 成都卓讯智安科技有限公司 | 一种网络入侵检测方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080010428A1 (en) * | 2006-07-10 | 2008-01-10 | Alcatel | Method and system for updating network flow statistics stored in an external memory |
CN102546299A (zh) * | 2012-01-09 | 2012-07-04 | 北京锐安科技有限公司 | 一种在大流量下进行深度包检测的方法 |
CN105337991A (zh) * | 2015-11-23 | 2016-02-17 | 湖南戎腾网络科技有限公司 | 一种一体化的报文流查找与更新方法 |
CN105515919A (zh) * | 2016-01-20 | 2016-04-20 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希压缩算法的网络流量监控方法 |
-
2021
- 2021-12-16 CN CN202111547420.8A patent/CN114244752A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080010428A1 (en) * | 2006-07-10 | 2008-01-10 | Alcatel | Method and system for updating network flow statistics stored in an external memory |
CN102546299A (zh) * | 2012-01-09 | 2012-07-04 | 北京锐安科技有限公司 | 一种在大流量下进行深度包检测的方法 |
CN105337991A (zh) * | 2015-11-23 | 2016-02-17 | 湖南戎腾网络科技有限公司 | 一种一体化的报文流查找与更新方法 |
CN105515919A (zh) * | 2016-01-20 | 2016-04-20 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希压缩算法的网络流量监控方法 |
Non-Patent Citations (2)
Title |
---|
曹建业;董永吉;冶晓隆;龚莉萍;: "基于NetFlow的流量统计系统的设计与实现", 计算机工程与设计, no. 02, pages 381 - 385 * |
李渊 等: "基于哈希压缩算法的网络流量监控方法研究", 计算机与网络, vol. 41, no. 14, pages 52 - 54 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174446A (zh) * | 2022-07-21 | 2022-10-11 | 天翼云科技有限公司 | 一种网络流量统计的方法、装置及电子设备 |
CN115174446B (zh) * | 2022-07-21 | 2023-11-03 | 天翼云科技有限公司 | 一种网络流量统计的方法、装置及电子设备 |
CN116055191A (zh) * | 2023-02-02 | 2023-05-02 | 成都卓讯智安科技有限公司 | 一种网络入侵检测方法、装置、电子设备和存储介质 |
CN116055191B (zh) * | 2023-02-02 | 2023-09-29 | 成都卓讯智安科技有限公司 | 一种网络入侵检测方法、装置、电子设备和存储介质 |
CN115988574A (zh) * | 2023-03-15 | 2023-04-18 | 阿里巴巴(中国)有限公司 | 基于流表的数据处理方法、系统、设备和存储介质 |
CN115988574B (zh) * | 2023-03-15 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 基于流表的数据处理方法、系统、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114244752A (zh) | 流量统计方法、装置和设备 | |
US9473373B2 (en) | Method and system for storing packet flows | |
CN110191428B (zh) | 一种基于智能云平台的数据分配方法 | |
CN112866111B (zh) | 流表管理的方法和装置 | |
CN101789905A (zh) | 防止未知组播攻击cpu的方法和设备 | |
CN112632079B (zh) | 一种数据流标识的查询方法及装置 | |
CN108566344B (zh) | 一种报文处理方法和装置 | |
CN113595822A (zh) | 一种数据包管理方法、系统和装置 | |
CN107070719B (zh) | 一种设备管理方法和装置 | |
CN106878052B (zh) | 一种用户迁移方法和装置 | |
CN113452615B (zh) | 一种提高大规格acl匹配效率的方法和装置 | |
CN108390811B (zh) | 一种gre隧道建立方法及其设备 | |
CN111241189A (zh) | 一种同步数据的方法和装置 | |
CN115242892B (zh) | 一种流标识获取方法、装置、设备及介质 | |
WO2023142605A1 (zh) | 一种基于区块链的数据处理方法和相关装置 | |
CN108111420B (zh) | 一种流表项管理方法、装置、电子设备及存储介质 | |
EP4280561A1 (en) | Information flow identification method, network chip, and network device | |
CN114063931A (zh) | 一种基于大数据的数据存储方法 | |
CN111131197B (zh) | 一种过滤策略管理系统及其方法 | |
CN113965492A (zh) | 一种数据流统计方法及装置 | |
CN114697147B (zh) | 一种设备搜索方法、装置、设备及存储介质 | |
CN112965833B (zh) | 日志处理方法及装置 | |
CN115988574B (zh) | 基于流表的数据处理方法、系统、设备和存储介质 | |
CN115242733B (zh) | 报文组播方法、组播网关、电子设备及存储介质 | |
CN111901248B (zh) | 一种负载均衡方法、装置、设备及机器可读存储介质 |
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 |