CN115174446B - 一种网络流量统计的方法、装置及电子设备 - Google Patents
一种网络流量统计的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115174446B CN115174446B CN202210865058.7A CN202210865058A CN115174446B CN 115174446 B CN115174446 B CN 115174446B CN 202210865058 A CN202210865058 A CN 202210865058A CN 115174446 B CN115174446 B CN 115174446B
- Authority
- CN
- China
- Prior art keywords
- memory
- statistical information
- data packet
- protocol identifier
- reading
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000004590 computer program Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000003491 array Methods 0.000 description 9
- 238000012217 deletion Methods 0.000 description 9
- 230000037430 deletion Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000000903 blocking effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
技术领域
本申请涉及数据通信技术领域,尤其涉及一种网络流量统计的方法、装置及电子设备。
背景技术
随着网络业务向多元化发展,数据流量呈快速增长趋势。高速网络在传输、应用这些巨大的数据流量时,需要对这些数据流量进行精确快速的统计。
当前,通常基于硬件来实现网络流量信息的统计,网络流量的统计信息一般被缓存到DDR(Double Data Rate,双倍速率同步动态随机存储器)中。当进入新数据包时,需要先访问DDR,并从DDR中读取出与新数据包ID(Identity document,身份标示号)相同的网络流量的统计信息,再基于新数据包的信息来更新DDR中的与新数据包ID相同的网络流量的统计信息。但是,一般DDR中存储着庞大的信息,所以从DDR中读取网络流量的统计信息时会存在较大的时间开销。基于此,在面对短时进入大流量的网络流量信息时,会由于从DDR中读取网络流量的统计信息时花费大量时间造成读取不及时,从而导致进入的大流量的网络流量信息阻塞。
为缓解上述统计过程所发生的信息阻塞,现有技术一般将没来得及写入DDR中的网络流量信息作溢出丢弃处理。然而,这种处理方式将导致网络流量信息的统计结果不完整。所以针对短时大流量的网络流量信息,现有统计方式存在统计结果不精准的问题。
发明内容
本申请的目的在于提供一种网络流量统计的方法、装置及电子设备,用于解决现有网络流量统计方案在面对短时大流量网络流量信息时,统计速度较慢,统计结果不精准的问题。
第一方面,本申请提供了一种网络流量统计的方法,所述方法包括:
基于第一数据包的第一协议标识得到第一地址标识,从第一存储器中读取出所述第一地址标识对应的第一统计信息;其中,所述第一统计信息包含第二协议标识;
判断所述第一协议标识是否与所述第二协议标识相同;
若是,则基于所述第一数据包更新所述第一统计信息。
通过第一数据包的第一地址标识去读取第一存储器中含有与第一数据包的第一协议标识相同的第一统计信息,再基于第一数据包去更新第一统计信息。相较于现有技术基于id去读取DDR中的统计信息,这种读取方式速度更快,花费时间更少,因此能实现对网络流量信息的快速统计。
在一种可能的设计中,所述方法还包括:若所述第一协议标识与所述第二协议标识不相同,且所述第一存储器当前未执行读取外部存储器的操作,则将所述第一统计信息写入所述外部存储器,用所述第一数据包替换所述第一存储器中的第一统计信息,并发起读取所述外部存储器中包含所述第一协议标识的第二统计信息的操作;基于所述第一数据包更新所述第二统计信息。
在一种可能的设计中,所述方法还包括:若所述第一协议标识与所述第二协议标识不相同,且所述第一存储器当前正在执行读取所述外部存储器的操作,则发送通知信息至第二存储器;基于从所述外部存储器中读取出的包含所述第二协议标识的第三统计信息更新所述第一统计信息。
本申请提供了一种网络流量统计的方法,所述方法包括:
基于所述第一数据包的第一协议标识,逐一访问所述第二存储器中的各个存储空间;
确定所述第二存储器中是否存在包含所述第一协议标识的第四统计信息;
若不存在,且接收到所述第一存储器发送的通知信息,则将所述第一数据包的信息写入当前访问的第一存储空间,并发起读取所述外部存储器中包含所述第一协议标识的第二统计信息的操作;
基于所述第一数据包更新所述第二统计信息,并释放所述第一存储空间的信息。
上述方法引入第二存储器来解决当第一数据包与第一统计信息冲突,且第一存储器正在处理第一统计信息时,第一数据包等待较长时间的问题。第二存储器通过将第一数据包信息写入第二存储器的存储空间中,再读取出外部存储器中与第一数据包的第一协议标识相同的第二统计信息,并基于第一数据包更新第二统计信息。
通过第二存储器及时处理第一数据包,可以防止由于第一数据包与第一统计信息冲突而造成后续进入的大量数据包的堵塞,提高对大量数据包的统计速度,降低丢包率,从而实现对网络流量信息的精确统计。
在一种可能的设计中,在所述确定所述第二存储器中是否存在包含所述第一协议标识的第四统计信息之后,还包括:若不存在,且未接收到所述第一存储器发送的通知信息,则丢掉所述第一数据包。若存在,则基于所述第一数据包更新所述第四统计信息。
第二方面,本申请提供了一种网络流量统计的装置,所述装置包括:
读取模块,基于第一数据包的第一协议标识得到第一地址标识,从第一存储器中读取出所述第一地址标识对应的第一统计信息;其中,所述第一统计信息包含第二协议标识;
判断模块,判断所述第一协议标识是否与所述第二协议标识相同;
更新模块,若是,则基于所述第一数据包更新所述第一统计信息。
在一种可能的设计中,所述装置,还用于:若所述第一协议标识与所述第二协议标识不相同,且所述第一存储器当前未执行读取外部存储器的操作,则将所述第一统计信息写入所述外部存储器,用所述第一数据包替换所述第一存储器中的第一统计信息,并发起读取所述外部存储器中包含所述第一协议标识的第二统计信息的操作;基于所述第一数据包更新所述第二统计信息。
在一种可能的设计中,所述装置,还用于:若所述第一协议标识与所述第二协议标识不相同,且所述第一存储器当前正在执行读取所述外部存储器的操作,则发送通知信息至第二存储器;基于从所述外部存储器中读取出的包含所述第二协议标识的第三统计信息更新所述第一统计信息。
在一种可能的设计中,所述装置,还用于:基于所述第一数据包的第一协议标识,逐一访问所述第二存储器中的各个存储空间;确定所述第二存储器中是否存在包含所述第一协议标识的第四统计信息;若不存在,且接收到所述第一存储器发送的通知信息,则将所述第一数据包的信息写入当前访问的第一存储空间,并发起读取所述外部存储器中包含所述第一协议标识的第二统计信息的操作;基于所述第一数据包更新所述第二统计信息,并释放所述第一存储空间的信息。
在一种可能的设计中,所述装置,还用于:若不存在,且未接收到所述第一存储器发送的通知信息,则丢掉所述第一数据包。若存在,则基于所述第一数据包更新所述第四统计信息。
第三方面,本申请提供了一种电子设备,所述电子设备包括:
存储器,用于存放计算机程序;
处理器,用于执行所述存储器上所存放的计算机程序时,实现上述的一种网络流量统计的方法步骤。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的一种网络流量统计的方法步骤。
上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。
附图说明
图1为本申请提供的一种网络流量统计方法的流程图;
图2为本申请提供的一种可能的应用场景的统计模块的示意图;
图3为本申请提供的一种统计信息的结构图;
图4为本申请提供的一种网络流量统计方法的流程图;
图5为本申请提供的一种网络流量统计装置的示意图;
图6为本申请提供的一种电子设备的结构的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。
在本申请的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。A与B连接,可以表示:A与B直接连接和A与B通过C连接这两种情况。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
为了便于本领域技术人员更好理解本申请实施例所提供的技术方案,下面对涉及的专业术语作如下简要说明:
中央处理器(central processing unit,简称CPU),作为计算机系统的运算和控制核心,是信息处理、程序运作的最终执行单元。
智能网卡,也称智能网络适配器,除了能完成标准网卡所具有的网络传输功能之外,还提供内置的可编程、可配置的硬件加速引擎,能够将数据包处理工作负载从CPU转移到基于FPGA的智能网卡。
ram(Random Access Memory,随机存取存储器),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。
FIFO(First input First Output)先入先出队列,一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。
下面对本申请实施例的设计思想进行简要介绍。
现在网络业务多元化,数据流量快速增长,在处理大数据的云服务系统中,将CPU内核的一些工作卸载到智能网卡中,可以提升数据处理的性能,并且节省CPU的计算开销。因此只要是云服务厂商,智能网卡就是一个绕不开的设备需求,也是一大技术难点。而智能网卡需要对网络流量进行快速精准的统计。
当前,通常基于硬件来实现网络流量信息的统计,网络流量的统计信息一般被缓存到DDR中。当进入新数据包时,需要先访问DDR,并从DDR中读取出与新数据包ID相同的网络流量的统计信息,再基于新数据包的信息来更新DDR中与数据包ID相同的网络流量的统计信息。但是,一般DDR中存储着庞大的信息,所以从DDR中读取网络流量的统计信息时,会存在较大的时间开销。基于此,在面对短时进入大流量的网络流量信息时,会由于从DDR中读取网络流量的统计信息时花费大量时间造成读取不及时,从而导致进入的大流量的网络流量信息阻塞。
为缓解上述统计过程所发生的信息阻塞,现有技术一般将没来得及写入DDR中的网络流量信息作溢出丢弃处理。然而,这种处理方式将导致网络流量信息的统计结果不完整。所以针对短时大流量的网络流量信息,现有统计方式存在统计结果不精准的问题。
鉴于此,本申请实施例提供了一种网络流量统计的方法,如图1所示,在该方法中,通过第一数据包的第一地址标识去读取第一存储器中含有与第一数据包的第一协议标识相同的第一统计信息,再基于第一数据包去更新第一统计信息。相较于现有技术基于id去读取DDR中的统计信息,这种读取方式速度更快,花费时间更少,因此能实现对网络流量信息的快速统计。
另外,通过第一数据包的第一地址标识,从第一存储器中读取出的第一统计信息,存在第一统计信息的第二协议标识与第一数据包的第一协议标识不相同的情况,从而导致第一数据包与第一统计信息冲突。此时若等待第一存储器先处理完第一统计信息,再处理第一数据包,则会让第一数据包等待较长的时间,若此时有大量新的数据包进入,则会导致数据包堵塞,溢出。
基于此,本申请实施例通过引入第二存储器来解决当第一数据包与第一统计信息冲突,且第一存储器正在处理第一统计信息时,第一数据包等待较长时间的问题。第二存储器通过将第一数据包信息写入第二存储器的存储空间中,再读取出外部存储器中与第一数据包的第一协议标识相同的第二统计信息,并基于第一数据包更新第二统计信息。
通过第二存储器及时处理第一数据包,可以防止由于第一数据包与第一统计信息冲突而造成后续进入的大量数据包的堵塞,提高对大量数据包的统计速度,降低丢包率,从而实现对网络流量信息的精确统计。
下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施过程中,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
本申请实施例提供的方案可以适用于大多数需要对网络流量进行精确快速统计的场景中,尤其适用于云服务系统中,智能网卡对网络流量的统计场景。
如图2所示,为基于本申请实施例所提供的方法的一种基于FPGA(FieldProgrammable Gate Array,现场可编程逻辑门阵列)芯片的智能网卡的网络流量统计模块的示意图。在该统计模块中,可以包括SOC系统级芯片、ram、数组模块、FIFO、DDR。其中,ram和数组模块为内部存储器,DDR为外部存储器。ram作为一级缓存,深度为4096,也就是可以存放4096条统计信息。数组与ram为同级缓存,深度设置为16。DDR的深度要远远大于ram。
下面结合上述描述的应用场景,参考附图来描述本申请示例性实施方式提供的方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
实施例1:
参见图1所示,为本申请实施例提供的一种网络流量统计方法的流程示意图,该方法的具体实施流程如下:
步骤101:基于第一数据包的第一协议标识得到第一地址标识,从第一存储器中读取出第一地址标识对应的第一统计信息;
在本申请实施例中,第一存储器可以是ram。第一数据包携带的信息主要有:pkt_len、pkt_id。其中pkt_len表示第一数据包的字节数;pkt_id表示第一数据包的第一协议标识。第一统计信息的数据格式如图3所示,其中rd_ddr_flag表示读取外部存储器DDR的动作标识;tcp_id表示第一统计信息的第二协议标识;time_stamp表示第一统计信息的时间戳;tcp_all_len表示第一统计信息的总字节数;tcp_pkt_num表示第一统计信息中数据包的个数。
在本申请实施例中,第一数据包进入到如图2所示的统计模块。首先对第一数据包的pkt_id进行哈希hash处理,得到一个12bit地址ram_addr,使用这个ram_addr地址去访问ram,读取出ram中处于ram_addr地址的第一统计信息。
通过第一数据包的ram_addr去访问第一存储器ram,相较于现有技术通过pkt_id直接读取外部存储器DDR的统计信息,读取ram中的第一统计信息速度更快,时间消耗更小。
步骤102:判断第一协议标识是否与第二协议标识相同;
在本申请实施例中,判断第一数据包的pkt_id是否与读取出的第一统计信息的tcp_id相同。
若pkt_id与tcp_id相同,则执行步骤103的操作;若pkt_id与tcp_id不相同,表示第一数据包与ram中的第一统计信息存在hash冲突,则执行步骤104。步骤103:基于所述第一数据包更新所述第一统计信息。
具体的,将第一数据包的pkt_len加到第一统计信息的tcp_all_len上,将第一统计信息的tcp_pkt_num加1,并更改第一统计信息的时间戳time_stamp,然后再按照图3的格式,将更新后的第一统计信息写到地址为ram_addr的ram中。
通过上述方法,可以快速的读取出与第一数据包tcp_id相同的第一统计信息,以实现快速的更新第一统计信息。
步骤104:确定第一存储器当前是否正在执行读取外部存储器的操作;
在本申请实施例中,判断第一存储器ram当前是否正在执行读取外部存储器DDR的操作,即确定第一统计信息的rd_ddr_flag标志是否等于1。
在一种可能的实施方式中,当前第一统计信息的rd_ddr_flag标志不等于1,则代表ram当前未执行读取DDR的操作。此时,先将第一统计信息写入DDR中,再用第一数据包去替换ram中的第一统计信息,并发起读取DDR的操作。
具体来说,先将第一统计信息写入到DDR中,写入的地址为DDR中tcp_id与第一统计信息的tcp_id相同的位置,以此保证这条统计信息不会丢失。将第一统计信息写入DDR之后,用第一数据包替换ram中的第一统计信息:将pkt_id赋值给tcp_id,pkt_len赋值给tcp_all_len,rd_ddr_flag标志置为1,并添加时间戳。替换之后,发起读DDR操作,读取地址为DDR中tcp_id与pkt_id相同的位置。
在一种可能的实施方式中,当前第一统计信息的rd_ddr_flag标志等于1,则代表ram当前正在执行读取DDR的操作,不能直接用第一数据包替换第一统计信息,需要等到读取操作结束后才可以处理第一数据包。为防止由于等待时间太长而导致后面进入的大量数据包阻塞的情况,此时,会向数组模块发送一个通知notify_hash_clash。由数组模块来处理第一数据包,具体方法在实施例2会详细介绍。
具体来说,ram从外部存储器DDR中读取出与第一统计信息的tcp_id相同的第三统计信息,将第三统计信息与第一统计信息进行累加,即将第三统计信息的tcp_all_len与第一统计信息的tcp_all_len相加,第三统计信息的tcp_pkt_num与第一统计信息的tcp_pkt_num相加,修改时间戳,并把rd_ddr_flag标志置为0,再将累加的统计信息写入ram中。
上述通过将ram中的第一统计信息先写入外部存储器DDR中,再进行替换,可以防止出现hash冲突时第一统计信息的丢失;通过让数组来处理第一数据包,可以防止出现hash冲突且ram正执行读取操作时,第一数据包等待时间太长造成后面进入的大量数据包阻塞溢出,从而导致统计信息不精确的问题。
实施例2:
参见图4所示,为本申请实施例提供的一种网络流量统计方法的流程示意图,该方法的具体实施流程如下:
步骤401:基于第一数据包的第一协议标识,逐一访问第二存储器中的各个存储空间;
在本申请实施例中,第二存储器可以是如图3所示的数组模块。
值得说明的是,数组模块包括16个数组,主要是因为极端情况下,数据包每隔3到4个时钟周期就进入统计模块,假如全部地址hash冲突,去填满这16个数组,需要50个时钟周期左右。而一次读DDR请求过程大约花费50个时钟周期,所以当第一个数组填写数据并发起读取DDR请求后,到读取结束时,16个数组是还没有填满的,这个时候由于读取DDR操作完成了,将读取出的数据累加到第一个数组的数据中,再将第一个数组的数据写入DDR中,此时第一个数组就释放了。所以设定为16深度的数组模块刚好满足需求。
在本申请实施例中,第一数据包在读取第一存储器ram时,也会复制一份数据pkt_1_copy去访问数组模块。在两个时钟周期内,将这16个数组中的各个tcp_id与pkt_id逐一比较,寻找tcp_id与pkt_id相同的数组。
步骤402:确定第二存储器中是否存在包含第一协议标识的第四统计信息;
在本申请实施例中,通过将16个数组中的各个tcp_id与pkt_id逐一比较,来确定是否存在tcp_id与pkt_id相同的数组中的第四统计信息。
步骤403:若不存在,且接收到第一存储器发送的通知信息,则将第一数据包的信息写入当前访问的第一存储空间,并发起读取所述外部存储器中包含第一协议标识的第二统计信息的操作;
在本申请实施例中,如果16个数组中不存在tcp_id与第一数据包的pkt_id相同的数组,并且接收到上述实施例1的方法中第一存储器ram发送的notify_hash_clash通知,则将pkt_1_copy写入当前访问的第一存储空间。例如pkt_1_copy当前访问到array_id等于5的数组(array_id表示当前访问到了深度16的第几个),此时接收到notify_hash_clash通知,则将pkt_1_copy写入到这个array_id等于5的数组中,将array_id等于5的数组的tcp_pkt_num加1,rd_ddr_flag标志置为1,再发起读取DDR操作,读取地址为DDR中tcp_id与pkt_id相同的位置。并且array_id的数值再自动加1。
步骤404:基于第一数据包更新第二统计信息,并释放第一存储空间的信息。
在本申请实施例中,从DDR中读取出与pkt_id相同的第二统计信息后,依然采用两个时钟周期来逐一访问16个数组的各个tcp_id,找到pkt_id与tcp_id相同的数组,即写入数组中的pkt_1_copy。将第一数据包的pkt_len与第二统计信息的tcp_all_len进行累加,将tcp_pkt_num也进行累加,修改时间戳,rd_ddr_flag标志置为0,最后将累加后的这个数组的统计信息一并写到DDR中。此时这个数组相当于被释放了。
在一种可能的实施方式中,若不存在tcp_id与pkt_id相同的数组,且未接收到第一存储器ram发送的notify_hash_clash通知,则丢掉pkt_1_copy。
在一种可能的实施方式中,若存在tcp_id与pkt_id相同的数组,则基于第一数据包更新该数组中的第四统计信息,即将pkt_len累加到第四统计信息的tcp_all_len,并且第四统计信息的tcp_pkt_num加1,修改时间戳。
上述通过将pkt_1_copy累加到有相同id的数组中的第四统计信息中,可以进一步保证第一数据包被统计。
综上所述,通过数组来处理ram出现hash冲突情况,且ram正在执行读取DDR操作时第一数据包的统计工作,可以防止第一数据包等待时间太长,导致后面进入的大量数据包阻塞溢出,从而造成统计信息不精确的问题。
进一步的,本申请实施例还基于上述阐述的网络流量统计的方法,提供了统计信息的读取和删除的方法。
下面对本申请实施例中读取统计信息的方法做详细的阐述。
在本申请实施例中,读取操作对应的请求信号中携带地址信息host_op_ddr_addr,该地址信息host_op_ddr_addr为DDR的物理地址。
首先,读取操作对应的请求信号会先来到ram模块,然后将host_op_ddr_addr按照同样的hash算法进行变换成12bit的ram_addr,采用ram_addr从ram中读取出对应的统计信息。
读出ram中的统计信息后,判断读取出的统计信息的tcp_id与host_op_ddr_addr是否一致。如果一致,则继续判断rd_ddr_flag的值,如果为0,则代表ram_addr对应的统计信息是最新的,可以直接取走里面的数据。如果rd_ddr_flag等于1,则代表ram_addr对应的统计信息正在访问DDR,这个时候读取操作就开始等待,等到读取到DDR中统计信息后,将ram中ram_addr对应的统计信息与DDR中读取出的host_op_ddr_addr对应的统计信息进行累加,再把累加后的统计信息取走,作为读取操作的返回值。如果tcp_id与host_op_ddr_addr不一致,说明ram中没有存放需要读取的数值,这个时候就直接去读DDR,读取地址为host_op_ddr_addr,待到读ddr操作完成后,就将读取出的统计信息作为读取操作的返回值。
上述方法通过先从第一存储器ram中读取统计信息,可以更快的读取出统计信息,减少等待时间。
下面对本申请实施例中删除统计信息的方法做详细的阐述。
在本申请实施例中,删除统计信息操作一般分为两种,一种为整体删除,整体删除一般是在初始化的时候操作的,方法也很简单,就是把ram和DDR的地址都遍历一遍,将里面的数据全部清零。另一种为选择性删除,下面就选择性删除的方法作详细的阐述。
在本申请实施例中,删除操作对应的请求信号携带地址信息host_op_ddr_addr,该地址信息host_op_ddr_addr为DDR的物理地址。
首先,删除操作对应的请求信号会先来到ram模块,然后将host_op_ddr_addr按照同样的hash算法进行变换成12bit的ram_addr,采用ram_addr从ram中读取出对应的统计信息。
读出ram中的统计信息后,判断读取出的统计信息的tcp_id与host_op_ddr_addr是否一致。如果一致,则继续判断rd_ddr_flag的值,如果为0,则代表这个ram中host_op_ddr_addr地址对应的统计信息是最新的,可以直接将ram中host_op_ddr_addr对应的地址数据写为0。同时将DDR中host_op_ddr_addr对应的地址数据写为0,这样就完成了删除操作。如果rd_ddr_flag等于1,则代表ram中host_op_ddr_addr地址对应的统计信息正在访问DDR,这个时候删除操作就开始等待,等到读取操作结束后,将ram中host_op_ddr_addr对应的地址数据写为0,同时将DDR中host_op_ddr_addr对应的地址数据写为0,这样就完成了删除操作。如果tcp_id与host_op_ddr_addr不一致,说明ram中没有存放需要读取的数值,这个时候就直接去写DDR,将DDR中host_op_ddr_addr对应的地址数据写为0,这样就完成了删除操作。
值得说明的是,针对删除操作,可以在统计模块的前一级加上一个删除记录的模块,删除请求首先来到这个模块,记录下需要删除的地址和id。后续传过来需要统计的数据包,在经过这个删除记录模块时,会检测是否有删除记录。如果有对应id的删除记录,则直接将对应id的数据包丢掉,不再进入后面的统计模块。当然host控制有新增的需求,也要经过这个删除记录模块,若发现新增的统计地址与需要删除的地址有一样的,则会清除掉删除记录的信息。这样后续传过来需要统计的数据包就不会被丢掉,会进入到统计模块中。
综上所述,本申请实施例通过引入读取速度更快的第一存储器,来读取并更新统计信息,相较于现有技术直接从外部存储器中去读取并更新统计信息,本申请实施例提供的方法的统计信息的速度更快,时间开销更少。另外,本申请实施例还引入了第二存储器来解决当第一数据包与第一统计信息冲突,且第一存储器正在处理第一统计信息时,第一数据包等待较长时间的问题。通过第二存储器及时处理第一数据包,可以防止由于第一数据包与第一统计信息冲突而造成后续进入的大量数据包的堵塞,提高对大量数据包的统计速度,降低丢包率,从而实现对网络流量信息的精确统计。
基于同一发明构思,本申请还提供了一种网络流量统计的装置,用于解决现有网络流量统计方案在面对短时大流量网络流量信息时,统计速度较慢,统计结果不精准的问题。参见图5,该装置包括:
读取模块501,基于第一数据包的第一协议标识得到第一地址标识,从第一存储器中读取出所述第一地址标识对应的第一统计信息;其中,所述第一统计信息包含第二协议标识;
判断模块502,判断所述第一协议标识是否与所述第二协议标识相同;
更新模块503,若是,则基于所述第一数据包更新所述第一统计信息。
在一种可能的设计中,所述装置,还用于:若所述第一协议标识与所述第二协议标识不相同,且所述第一存储器当前未执行读取外部存储器的操作,则将所述第一统计信息写入所述外部存储器,用所述第一数据包替换所述第一存储器中的第一统计信息,并发起读取所述外部存储器中包含所述第一协议标识的第二统计信息的操作;基于所述第一数据包更新所述第二统计信息。
在一种可能的设计中,所述装置,还用于:若所述第一协议标识与所述第二协议标识不相同,且所述第一存储器当前正在执行读取所述外部存储器的操作,则发送通知信息至第二存储器;基于从所述外部存储器中读取出的包含所述第二协议标识的第三统计信息更新所述第一统计信息。
在一种可能的设计中,所述装置,还用于:基于所述第一数据包的第一协议标识,逐一访问所述第二存储器中的各个存储空间;确定所述第二存储器中是否存在包含所述第一协议标识的第四统计信息;若不存在,且接收到所述第一存储器发送的通知信息,则将所述第一数据包的信息写入当前访问的第一存储空间,并发起读取所述外部存储器中包含所述第一协议标识的第二统计信息的操作;基于所述第一数据包更新所述第二统计信息,并释放所述第一存储空间的信息。
在一种可能的设计中,所述装置,还用于:若不存在,且未接收到所述第一存储器发送的通知信息,则丢掉所述第一数据包。若存在,则基于所述第一数据包更新所述第四统计信息。
基于上述装置,解决现有网络流量统计方案在面对短时大流量网络流量信息时,统计速度较慢,统计结果不精准的问题。
基于同一发明构思,本申请实施例中还提供了一种电子设备,所述电子设备可以实现前述一种网络流量统计的装置的功能,参考图6,所述电子设备包括:
至少一个处理器601,以及与至少一个处理器601连接的存储器602,本申请实施例中不限定处理器601与存储器602之间的具体连接介质,图6中是以处理器601和存储器602之间通过总线600连接为例。总线600在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线600可以分为地址总线、数据总线、控制总线等,为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器601也可以称为控制器,对于名称不做限制。
在本申请实施例中,存储器602存储有可被至少一个处理器601执行的指令,至少一个处理器601通过执行存储器602存储的指令,可以执行前文论述的网络流量统计的方法。处理器601可以实现图5所示的装置中各个模块的功能。
其中,处理器601是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器602内的指令以及调用存储在存储器602内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。
在一种可能的设计中,处理器601可包括一个或多个处理单元,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。在一些实施例中,处理器601和存储器602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器601可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的网络流量统计的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器601进行设计编程,可以将前述实施例中介绍的网络流量统计的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的网络流量统计的方法的步骤。如何对处理器601进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行前文论述网络流量统计的方法。
在一些可能的实施方式中,本申请提供的网络流量统计的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该控制设备执行本说明书上述描述的根据本申请各种示例性实施方式的网络流量统计的方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (8)
1.一种网络流量统计的方法,其特征在于,所述方法包括:
基于第一数据包的第一协议标识得到第一地址标识,从第一存储器中读取出所述第一地址标识对应的第一统计信息;其中,所述第一统计信息包含第二协议标识;
判断所述第一协议标识是否与所述第二协议标识相同;
若是,则基于所述第一数据包更新所述第一统计信息;
若否,且所述第一存储器当前未执行读取外部存储器的操作,则将所述第一统计信息写入所述外部存储器,再用所述第一数据包替换所述第一存储器中的第一统计信息,包括:将所述第一协议标识赋值给所述第二协议标识,将所述第一数据包的字节数赋值给所述第一统计信息的总字节数,并发起读取所述外部存储器中包含所述第一协议标识的第二统计信息的操作;基于所述第一数据包更新所述第二统计信息。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一协议标识与所述第二协议标识不相同,且所述第一存储器当前正在执行读取外部存储器的操作,则发送通知信息至第二存储器;
基于从所述外部存储器中读取出的包含所述第二协议标识的第三统计信息更新所述第一统计信息。
3.一种网络流量统计的方法,其特征在于,所述方法包括:
基于第一数据包的第一协议标识,逐一访问第二存储器中的各个存储空间;
确定所述第二存储器中是否存在包含所述第一协议标识的第四统计信息;
若不存在,且接收到第一存储器发送的通知信息,则将所述第一数据包的信息写入当前访问的第一存储空间,并发起读取外部存储器中包含所述第一协议标识的第二统计信息的操作,其中,所述通知信息为所述第一存储器与所述外部存储器冲突的信息,所述冲突为:所述第一协议标识与所述第一存储器中第一地址标识对应的第一统计信息的第二协议标识不相同,且所述第一存储器正在执行读取所述外部存储器的操作,所述第一地址标识基于所述第一协议标识得到;
基于所述第一数据包更新所述第二统计信息,并释放所述第一存储空间的信息。
4.如权利要求3所述的方法,其特征在于,在所述确定所述第二存储器中是否存在包含所述第一协议标识的第四统计信息之后,还包括:
若不存在,且未接收到所述第一存储器发送的所述通知信息,则丢掉所述第一数据包;
若存在,则基于所述第一数据包更新所述第四统计信息。
5.一种网络流量统计的装置,其特征在于,所述装置包括:
读取模块,基于第一数据包的第一协议标识得到第一地址标识,从第一存储器中读取出所述第一地址标识对应的第一统计信息;其中,所述第一统计信息包含第二协议标识;
判断模块,判断所述第一协议标识是否与所述第二协议标识相同;
更新模块,若是,则基于所述第一数据包更新所述第一统计信息;若否,且所述第一存储器当前未执行读取外部存储器的操作,则将所述第一统计信息写入所述外部存储器,再用所述第一数据包替换所述第一存储器中的第一统计信息,包括:将所述第一协议标识赋值给所述第二协议标识,将所述第一数据包的字节数赋值给所述第一统计信息的总字节数,并发起读取所述外部存储器中包含所述第一协议标识的第二统计信息的操作;基于所述第一数据包更新所述第二统计信息。
6.如权利要求5所述的装置,其特征在于,所述装置,还用于:
若所述第一协议标识与所述第二协议标识不相同,且所述第一存储器当前正在执行读取外部存储器的操作,则发送通知信息至第二存储器;
基于从所述外部存储器中读取出的包含所述第二协议标识的第三统计信息更新所述第一统计信息。
7.一种电子设备,其特征在于,包括:
存储器,用于存放计算机程序;
处理器,用于执行所述存储器上所存放的计算机程序时,实现权利要求1-4中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210865058.7A CN115174446B (zh) | 2022-07-21 | 2022-07-21 | 一种网络流量统计的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210865058.7A CN115174446B (zh) | 2022-07-21 | 2022-07-21 | 一种网络流量统计的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115174446A CN115174446A (zh) | 2022-10-11 |
CN115174446B true CN115174446B (zh) | 2023-11-03 |
Family
ID=83497213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210865058.7A Active CN115174446B (zh) | 2022-07-21 | 2022-07-21 | 一种网络流量统计的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115174446B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009081549A (ja) * | 2007-09-25 | 2009-04-16 | Kyocera Corp | 署名検証方法、ストリーム生成方法、受信装置、およびストリーム送信装置 |
JP2009296158A (ja) * | 2008-06-03 | 2009-12-17 | Alaxala Networks Corp | 通信データ統計装置および通信データ統計方法 |
CN107005538A (zh) * | 2015-10-16 | 2017-08-01 | 华为技术有限公司 | 数据传输的方法、装置和系统 |
CN108400909A (zh) * | 2018-02-12 | 2018-08-14 | 腾讯科技(深圳)有限公司 | 一种流量统计方法、装置、终端设备和存储介质 |
CN109474518A (zh) * | 2017-09-07 | 2019-03-15 | 华为技术有限公司 | 转发报文的方法及装置 |
CN112363900A (zh) * | 2020-11-16 | 2021-02-12 | 中国科学院计算技术研究所 | 一种基于插桩的主机内容器网络性能分析方法及系统 |
CN113645140A (zh) * | 2021-07-06 | 2021-11-12 | 曙光信息产业(北京)有限公司 | 报文的统计方法、装置、存储介质及网络设备 |
CN113746692A (zh) * | 2021-07-21 | 2021-12-03 | 网宿科技股份有限公司 | 网络流量统计的方法、电子设备及存储介质 |
CN114244752A (zh) * | 2021-12-16 | 2022-03-25 | 锐捷网络股份有限公司 | 流量统计方法、装置和设备 |
CN114422404A (zh) * | 2022-01-18 | 2022-04-29 | 北京百度网讯科技有限公司 | 流量统计方法、装置、设备和存储介质 |
-
2022
- 2022-07-21 CN CN202210865058.7A patent/CN115174446B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009081549A (ja) * | 2007-09-25 | 2009-04-16 | Kyocera Corp | 署名検証方法、ストリーム生成方法、受信装置、およびストリーム送信装置 |
JP2009296158A (ja) * | 2008-06-03 | 2009-12-17 | Alaxala Networks Corp | 通信データ統計装置および通信データ統計方法 |
CN107005538A (zh) * | 2015-10-16 | 2017-08-01 | 华为技术有限公司 | 数据传输的方法、装置和系统 |
CN109474518A (zh) * | 2017-09-07 | 2019-03-15 | 华为技术有限公司 | 转发报文的方法及装置 |
CN108400909A (zh) * | 2018-02-12 | 2018-08-14 | 腾讯科技(深圳)有限公司 | 一种流量统计方法、装置、终端设备和存储介质 |
CN112363900A (zh) * | 2020-11-16 | 2021-02-12 | 中国科学院计算技术研究所 | 一种基于插桩的主机内容器网络性能分析方法及系统 |
CN113645140A (zh) * | 2021-07-06 | 2021-11-12 | 曙光信息产业(北京)有限公司 | 报文的统计方法、装置、存储介质及网络设备 |
CN113746692A (zh) * | 2021-07-21 | 2021-12-03 | 网宿科技股份有限公司 | 网络流量统计的方法、电子设备及存储介质 |
CN114244752A (zh) * | 2021-12-16 | 2022-03-25 | 锐捷网络股份有限公司 | 流量统计方法、装置和设备 |
CN114422404A (zh) * | 2022-01-18 | 2022-04-29 | 北京百度网讯科技有限公司 | 流量统计方法、装置、设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
基于机器自学习的互联网加密业务流早期识别;钮晓娜;郭云飞;张进;;计算机工程与设计(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115174446A (zh) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7509656B2 (en) | Counter functions in an application program interface for network devices | |
US8325603B2 (en) | Method and apparatus for dequeuing data | |
JP2013507022A (ja) | フローアウェアネットワークノード内でデータパケットを処理するための方法 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN111427859A (zh) | 一种消息处理方法、装置、电子设备及存储介质 | |
CN108062235B (zh) | 数据处理方法及装置 | |
CN113157467A (zh) | 一种多进程数据输出方法 | |
CN115391609A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN113472681A (zh) | 流量限速方法及装置 | |
US7784014B1 (en) | Generation of a specification of a network packet processor | |
CN115174446B (zh) | 一种网络流量统计的方法、装置及电子设备 | |
CN116737084A (zh) | 一种队列统计方法、装置、电子设备及存储介质 | |
US7792117B1 (en) | Method for simulating a processor of network packets | |
CN115438020A (zh) | 一种数据库资源调度方法、装置、设备及介质 | |
CN104052831A (zh) | 一种基于队列的数据传输方法、装置及通信系统 | |
CN112000482B (zh) | 一种内存管理的方法、装置、电子设备及存储介质 | |
CN115904211A (zh) | 一种存储系统、数据处理方法及相关设备 | |
CN113360448A (zh) | 数据包处理方法及装置 | |
US8284772B1 (en) | Method for scheduling a network packet processor | |
CN116996438B (zh) | 流表管理方法及装置 | |
CN116303125B (zh) | 请求调度方法、缓存、装置、计算机设备及存储介质 | |
CN115328923B (zh) | 时序生理数据的存储结构、查询方法、存储介质及系统 | |
CN109981397B (zh) | 网络性能获取方法及系统 | |
CN113934654A (zh) | 数据缓存加载方法及装置 | |
JP6869823B2 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |