CN117221185A - 一种网络流量的评估方法、网络测量的装置以及系统 - Google Patents
一种网络流量的评估方法、网络测量的装置以及系统 Download PDFInfo
- Publication number
- CN117221185A CN117221185A CN202311100127.6A CN202311100127A CN117221185A CN 117221185 A CN117221185 A CN 117221185A CN 202311100127 A CN202311100127 A CN 202311100127A CN 117221185 A CN117221185 A CN 117221185A
- Authority
- CN
- China
- Prior art keywords
- data
- network
- queue
- hash
- dpdk
- 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
- 238000005259 measurement Methods 0.000 title claims abstract description 28
- 238000011156 evaluation Methods 0.000 title abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 76
- 238000012545 processing Methods 0.000 claims abstract description 59
- 230000008569 process Effects 0.000 claims abstract description 25
- 230000015654 memory Effects 0.000 claims description 51
- 230000006870 function Effects 0.000 claims description 41
- 239000000872 buffer Substances 0.000 claims description 36
- 230000007246 mechanism Effects 0.000 claims description 20
- 230000005540 biological transmission Effects 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000000691 measurement method Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 101100257624 Arabidopsis thaliana SPS4 gene Proteins 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000001303 quality assessment method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
- WCJYTPVNMWIZCG-UHFFFAOYSA-N xylylcarb Chemical compound CNC(=O)OC1=CC=C(C)C(C)=C1 WCJYTPVNMWIZCG-UHFFFAOYSA-N 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种对网络流量的评估方法,包括:采用预设的轮询模式驱动程序,针对各个核资源,询问是否存在空闲;若是,则进入下一步;使用存在空闲的目标核资源,从待评估网络流量中读取数据初始流量指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中;核资源针对其对应的数据队列,按照队列顺序,对所获取的初始流量指标进行进一步的数据处理。本申请提供的网络流量的评估方法,减少了网络测量过程中中断的产生,提高了CPU的利用率,能够显著提升测量的效率和准确性。本申请同时提供一种网络测量的装置以及系统。
Description
技术领域
本申请涉及网络测量技术领域,具体涉及一种网络流量的评估方法。本申请同时涉及一种网络测量的装置以及系统。
背景技术
网络测量在网络管理和开发中起着关键作用,因为它对于故障排除、网络异常检测、流量工程和负载平衡等至关重要。随着最近超高速网络的发展,网络线路速度已达到100G bps及以上。要实现可跟上线速并可扩展的网络测量变得越来越重要。
为测量网络速度,现有技术对数据传输过程中的各项网络指标进行计数,且网络测量平台不存储任何数据包跟踪,而是努力识别流量,使用sketch方法来估计具有保证误差边界的流量度量,由他来产生完了过流的基本指标,然后执行高级分析,例如识别D DoS攻击等。
现有技术下虽然已经广泛使用了概率sketch方法对网络指标进行计数,但是,随着sketch数据结构的大小变得非常大,对于高线速和细粒度测量而言,内存组件的成本高、操作系统管理硬件资源依赖基于中断、系统花费CPU周期长、绑定数据包/流处理延迟严重。如何实时、高效地获取所需要的网络指标,仍然是一个非常棘手的问题。
发明内容
本申请提供一种网络流量的评估方法,本申请同时提供一种网络测量的装置以及系统。上述方法有助于实现实时、高效地获得所需要的网络指标。
本申请提供的网络流量评估方法,包括:
采用预设的轮询轮询模式驱动程序,针对各个核资源,询问是否存在空闲;若是,则进入下一步;
使用存在空闲的目标核资源,从待评估网络流量中读取数据初始流量指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中;核资源针对其对应的数据队列,按照队列顺序,对所获取的初始流量指标进行进一步的数据处理。
优选的,所述从待评估网络流量中读取数据初始流量指标,并分配到与所述初始流量指标反映的数据性质匹配的目标数据队列中,包括:
对所读取的数据初始流量指标进行解析,获得其相关的数据包的数据性质;
根据数据性质,以预定的算法,将其分配到相匹配的目标数据队列中。优选的,所述轮询模式驱动程序是通过DPDK绑定线程实现的。
优选的,所述根据所述流量特征数据的特征,将其分配到对应的数据队列中,包括:
选择收到的流量特征数据中需要进行哈希处理的字段;
使用预定的哈希函数,对所述流量特征数据进行哈希处理,获得对应的哈希值;
根据哈希值确定重定向表中的目标存储地址;
通过所述目标存储地址,在重定向表中查阅获得核资源ID;
将所述流量特征数据分配到与所述核资源ID对应的队列中。
优选的,所述轮询模式驱动程序通过网卡提供的RSS功能与DPDK提供的RSS模式配合实现,包括:
所述DPDK提供RSS轮询模式驱动程序的接收模式;
所述网卡提供支持RSS模式并提供相应的API;
当数据包到达所述网卡时,所述网卡根据标准协议头计算一个哈希值;
所述哈希值与RSS散列表中的一组哈希键进行匹配;
所述哈希键用于标识哈希桶的值,每个所述哈希键对应一个哈希桶;
所述哈希桶是一个所述CPU核资源的队列,所述哈希桶是一个缓冲区,用于存储接收到的所述数据包;
每个所述哈希桶都关联一个所述CPU核心;
当所述数据包的哈希值与所述哈希键匹配时,所述数据包将被放入相应的哈希桶中;
通过所述RSS,所述DPDK将接收到的所述数据包分配到多个所述CPU核资源上进行处理;
传入的所述数据包流过网卡;
经过所述RSS接收方缩放,所有不同的所述数据包就会被分成不同的接收队列;
所述接收队列分别与相应的所述核资源绑定;
流入网卡的所述数据包通过所述RSS功能处理成目标队列;
每一个所述队列对应一个所述核资源,所述核资源只处理对应所述队列里的数据。
优选的,在环境抽象层中,自动检测可用内核,并将线程关联设置为某些内核,待检测到可用内核后,将所述轮询模式驱动程序的线程关联到所述可用内核。优选的,针对每个所述核资源的数据队列,采用环形缓冲区,所述环形缓冲区包括一个单一生产者和单一消费者;所述环形缓冲区是通过大页内存机制实现的。所述环形缓冲区是通过DPDK的大页内存机制实现的。
优选的,所述目标数据队列中的初始流量指标,采用sketch方法,从通过网卡的数据包中获得。
本申请同时提出一种网络测量装置,包括:申请核资源单元,用于确认核资源空闲情况,采用预设的轮询机制,针对各个核资源,询问是否存在空闲;若是,则进入下一步;
目标队列分配单元,用于使用存在空闲的目标核资源,从待评估网络流量中读取数据初始浏览指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中;
数据处理单元,用于核资源针对其对应的数据队列,按照队列顺序,对所获取的初始流量指标进行进一步的数据处理。
本申请另外提供一种网络测量的系统,其特征在于,包括网卡、服务器;
所述网卡是指具有RSS功能的网卡,接收待检测的数据,为所述方法的实施提供相应RSS接口,用于分配队列;
所述服务器用于分析待检测的队列,基于DPDK框架,采用预设的的轮询模式驱动程序,与所述网卡配合实现待检测数据的队列分配,并按照队列顺序,对所获取的初始指标进行进一步的数据处理。
与现有技术相比,本申请提供的网络流量的评估方法包括:采用预设的轮询模式驱动程序,针对各个核资源,询问是否存在空闲;若是,则进入下一步;使用存在空闲的目标核资源,从待评估网络流量中读取数据初始浏览指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中;核资源针对其对应的数据队列,按照队列顺序,对所获取的初始流量指标进行进一步的数据处理。
通过本申请提供的上述方法,便于结合DPDK库提供的资源进行流量评估,由于该方法为核资源设置了轮询机制,避免了中断方式造成的核资源运行被打断,并且,由于为每个核资源都设置了相应的队列,可以随时利用核计算资源进行处理,避免了使用传统的sketch方式进行流量评估时,存储资源需求不断增加的后果,有效节省了耗费在流量评估上的计算资源。
附图说明
图1为本申请第一实施例提供的网络流量测量的评估方法的流程图;
图2是本申请第一实施例涉及的DPDK的多核架构;
图3是本申请第一实施例所采用的网卡中RSS功能的示意图;
图4是本申请第一实施例中DPDK RSS模式的原理示意图;
图5是网卡实现RSS功能的流程图;
图6是本申请第二实施例提供的网络流量测量装置的单元框图;
图7是本申请第三实施例提供的网络流量测量系统的单元框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种网络流量的评估方法。该网络流量评估方法为后续的网络流量测量装置及系统提供了基础。请参看图1,该图为本申请第一实施例的流程图。以下结合图1-图5对本申请的第一实施例提供的一种网络流量的评估方法进行详细说明。
步骤S101,采用预设的轮询模式驱动程序,针对各个核资源,询问是否存在空闲;若是,则进入下一步。
本步骤用于获取空闲核资源。
所述核资源主要是是指独立的计算资源,即CPU(中央处理器),也包括与CPU配合使用的存储元件。
所述轮询模式驱动程序是通过DPDK(数据平面开发套件)轮询线程实现的,但DPDK在实现该轮询模式驱动程序的过程中,并不是唯一的可选方式,是否采用DPDK方式,无实质影响。
所述DPDK的全称是Data Plane DevelopmentKit,是Intel公司提出的一种高速网络数据包的软件开发套件。它是一种高性能数据平面开发工具包,主要用于网络数据包处理。DPDK提供了一组API,可以让应用程序直接访问网络设备的数据平面,绕过操作系统内核的网络协议栈,从而实现更快速的数据包处理和更低的延迟。DPDK通过旁路Linux系统网络协议栈,直接对网卡进行读写,结合对多核CPU中不同内核的绑定,能够实现线速收发。线速是指网络设备交换转发能力的一个标准。达到线速标准的设备,避免了转发瓶颈,称作“无阻塞处理”。
DPDK的主要功能包括:
1.高性能数据包处理:DPDK可以实现每秒处理数百万个数据包,大大提高了网络应用的处理能力和吞吐量。
2.零拷贝技术:DPDK支持零拷贝技术,可以减少数据包处理的复制次数,提高数据包处理的效率。
3.多核支持:DPDK可以利用多核CPU的优势,将数据包处理任务分配给多个CPU核心并行处理,从而提高数据包处理的效率。
4.支持多种硬件平台:DPDK支持多种硬件平台,包括Intel、ARM等。
5.轻量级设计:DPDK的设计非常轻量级,可以在嵌入式系统等资源受限的环境中运行。
DPDK是一种高性能、低延迟、高可扩展性的数据平面开发工具包,可以为网络应用提供更快速、更高效的数据包处理能力。
在DPDK技术下,PMD(Pol lMode Driver轮询模式驱动程序)是一种高性能的网络驱动程序,它可以通过轮询方式来获取网络数据包,从而实现零拷贝、低延迟的数据包处理。下面是实现PMD的大致步骤:
1.选择适合的网卡:DPDK支持多种网卡类型,需要选择适合的网卡来实现PMD。
2.初始化DPDK环境:在使用PMD之前,需要先初始化DPDK环境,包括分配内存、初始化网卡等。
3.启动PMD:启动PMD需要调用DPDK提供的API,比如rte_eth_dev_start()函数。在启动PMD之前,需要设置网卡的各种参数,比如MAC地址、IP地址、MTU等。
4.轮询网络数据包:启动PMD后,可以通过调用rte_eth_rx_burst()函数来轮询获取网络数据包。在获取数据包后,可以对数据包进行处理,比如解析、过滤、转发等。
5.发送网络数据包:在处理完数据包后,可以通过调用rte_eth_tx_burst()函数来发送数据包。需要注意的是,在发送数据包时需要使用DPDK提供的内存池来分配内存,以实现零拷贝。
6.停止PMD:在不需要使用PMD时,需要调用rte_eth_dev_stop()函数来停止PMD。同时,还需要释放DPDK环境所占用的资源,比如内存、网卡等。
对于DPDK技术中的轮询,通常是指在网络数据包处理过程中,DPDK应用程序会不断地轮询问网络接口对应的接收队列核资源,以便及时处理接收到的数据包。这个过程中,DPDK应用程序是在轮询网络接口对应的接收队列核资源,以获取接收到的数据包,从而进行后续的数据包处理。因此,这个轮询的主体是DPDK应用程序,它会不断地轮询网络接口以获取数据包。
所述轮询模式驱动程序是通过DPDK轮询线程实现的。具体是通过DPDK为一组网络接口控制器提供一组已签名的轮询模式驱动程序。所述预设的轮询模式驱动程序对数据队列和核资源进行相应的分配,该过程是动态变化的。当询问的核资源空闲时,会利用该核资源进行与流量评估相关的处理,这样,通过轮询模式驱动程序,能够避免采用中断模式造成对核计算资源的打断。
分配内核的过程中,轮询模式驱动程序需要通过DPDK特有的环境抽象层来协调管理。
所述环境抽象层是DPDK库中的重要组件之一,主要用于屏蔽不同操作系统和硬件平台之间的差异,提供一致的编程接口。在DPDK中,应用程序可以通过Env Abstraction来访问底层硬件资源,而不需要关心具体的硬件平台和操作系统。在本申请中,轮询模式驱动程序在该步骤中主要起到了两个作用,一是询问各个核资源是否存在空闲,针对空闲的核资源,分配轮询模式驱动程序进程,使得分配后的该核资源后续运行过程中只针对该进程进行处理,直到找到下个空闲的核资源,这种特定处理进程的方法能够提高每个核资源的利用率,综合提高了核资源的总体效率;二是越过了系统内核,目标数据不需要流过系统内核,因此,也不需要通过系统内核中断来处理所接收到的数据,进而不会因为测量数据而产生一些系统中断,不会对用户本身所需的数据传输时效和质量造成影响。具体可以根据图2理解,图2图中的208外围组件互联扩展总线(PCI-e总线)将209网卡直接和DPDK架构中的207环境抽象层链接,越过了内核态,避免了中断的发生,直接到达210用户态;数据通过DPDK结构中的环形缓冲区进行存储处理,最终可以流到用户应用。
所述轮询模式驱动程序还需要通过DPDK特有的环境抽象层来协调管理的具体方法为:在环境抽象层中,自动检测可用内核,并将线程关联设置为某些内核,待检测到可用内核后,将所述轮询模式驱动程序的线程关联到所述可用内核。
轮询模式驱动程序本身在运行的时候是需要一定的内存空间的,因此,在引入了DPDK架构后,启动轮询模式驱动程序对核资源进行询问,可以将空闲的核资源筛选出来,为轮询模式驱动程序本身所使用,这样使得轮询模式驱动程序运行时不会影响数据本身的传输,高效利用了核资源。
所述轮询模式驱动程序通过所述网络流量经过的网卡提供的RSS功能与DPDK提供的RSS模式配合实现。
步骤S102,使用存在空闲的目标核资源,从待评估网络流量中读取数据初始流量指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中。
该步骤用于使用存在空闲的目标核资源,从待评估网络流量中读取数据初始流量指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中。
所述从待评估网络流量中读取数据初始流量指标是因为网络流量的测量主要根据网络流量中初始的流量指标进行评估,所以在该步骤中,将网络流量中数据初始流量指标放入需要处理的目标数据队列中,后续就对这些目标数据队列进行进一步的处理。通常,网络流量的评估可以从多个方面进行,以下是几个常见的流量指标:
1.带宽:带宽是指网络连接可以传输的数据量大小,通常以每秒传输的比特数(bps)来衡量。带宽越大,网络传输速度越快,数据传输的效率越高。
2.时延:时延是指数据包从发送端到接收端所需的时间,包括发送延迟、传输延迟和处理延迟。时延越小,网络响应速度越快,用户体验越好。
3.丢包率:丢包率是指在数据传输过程中丢失的数据包占总数据包数的比例。丢包率越小,数据传输的可靠性越高。
4.抖动:抖动是指数据包到达接收端的时间间隔的变化量,通常用标准差来衡量。抖动越小,数据传输的稳定性越高。
5.吞吐量:吞吐量是指网络连接在单位时间内可以传输的数据量大小,通常以每秒传输的字节数(Bps)来衡量。吞吐量越大,网络传输速度越快,数据传输的效率越高。
综上所述,网络流量的质量可以从带宽、时延、丢包率、抖动和吞吐量等多个方面进行评价。不同的应用场景需要关注的评价指标也可能不同。
所述目标数据队列中的初始流量指标,采用sketch方法,从通过网卡的数据包中获得。
所述sketch技术是一种常用的网络流量测量技术,它可以用来实现网络流量的质量评价。sketch技术的基本思想是通过对网络数据包进行采样,然后对采样数据进行压缩,从而获得网络流量的概要信息。
在使用sketch技术进行网络流量质量评价时,首先需要确定采样的比例,即从原始数据包中随机选择多少个数据包进行采样。然后,对采样的数据包进行压缩,通常使用哈希函数来实现。压缩后的数据可以用来估计网络流量的各种指标,比如前文所述的带宽、时延、丢包率、抖动和吞吐量等。
sketch技术的主要优点是能够在保证精度的情况下大大降低数据的存储和处理成本。同时,sketch技术也可以很好地应用于实时流量监测和分析,比如网络安全、网络质量监测等领域。
现有技术中的sketch方法是一种对网络测量的概率算法,通过包括但不限于Count-Min sketch、Reversible sketch等的方法对网络测量相关指标进行估算,其本质都是通过哈希算法,将来自不同数据流的数据分别分散到对应的数据桶中,进而对每个数据桶中的有效数据进行计数,最终达到可以评估的效果。但是在现有技术的sketch方法中,数据的处理并不是实时的,而且,在使用sketch技术进行网络流量质量评价时,随着采样数据包数量的增加,所需的存储空间也会增加。这是因为sketch技术需要存储哈希表来记录每个哈希函数的结果,以及每个哈希函数的计数器值。当采样数据包数量增加时,哈希表的大小也会相应增加,从而占用更多的存储空间。
在sketch的更新过程中,涉及到三个关键问题,即更新计数器、更新集和更新关键部分。它们的含义如下:更新计数器:sketch中的计数器用于记录元素在数据流中出现的次数。在更新计数器的过程中,需要根据元素的哈希值找到对应的计数器,并将其值加1。更新集:sketch中的更新集用于记录数据流中出现的元素。在更新集的过程中,需要将新元素插入到更新集中,并更新对应的计数器。更新关键部分:sketch中的关键部分是指计数器值较大的部分,通常用于估计数据流中出现频率较高的元素。在更新关键部分的过程中,需要根据计数器的值和阈值进行比较,如果大于阈值,则将元素加入到关键部分中。
上述三个关键问题在sketch更新过程中共同协作,使得sketch能够高效地处理数据流,并提供准确的频率统计结果。
此外,在上述sketch技术的哈希函数数量也会影响存储空间的大小。通常情况下,哈希函数数量越多,sketch技术的精度也会相应提高,但同时也会占用更多的存储空间。因此,在使用sketch技术进行网络流量质量评价时,需要根据实际情况选择合适的采样比例和哈希函数数量,以达到存储空间和精度之间的平衡。
为避免上述问题,在本申请中,我们只采用sketch方法中的部分步骤,获取网络流量的相关初始指标,将这些指标作为前文所述的目标数据队列,分配给每个核资源,进行实时处理,该方法代替了sketch方法中将其分散到数据桶中等待处理的操作,避免了该方法所需要内存空间不断增加的问题。
所述从待评估网络流量中读取数据初始流量指标,并分配到与所述初始流量指标反应反映的数据性质匹配的目标数据队列中,包括:对所读取的数据初始流量指标进行解析,获得其相关的数据包的数据性质;根据数据性质,以预定的算法,将其分配到相匹配的目标数据队列中。
所述数据性质代表从用户端发送的请求的种类,其表示的种类包括但不限于视频、音频、文字、图片等形式。
根据上述所获得的数据性质,以预定的算法,将其分配到相匹配的目标数据队列中,包括:选择收到的流量特征数据中需要进行哈希处理的字段;使用预定的哈希函数,对所述流量特征数据进行哈希处理,获得对应的哈希值;根据哈希值确定重定向表中的目标存储地址;通过所述目标存储地址,在重定向表中查阅获得核资源ID;将所述流量特征数据分配到与所述核资源ID对应的队列中。
所述哈希函数是指一类函数,并不指代某种特定的函数,它有各种各样的实现。它是一种从任何一种数据中创建小的数字“指纹”的方法,把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做哈希值的指纹。哈希值通常用一个固定长度的字符串来代表。
所述重定向表中预存了每个核资源的ID,每个核资源的ID存放的地址是固定且唯一的,所述哈希值是一个核存储地址相等长度的字符串,哈希值也是唯一的,所述哈希值和重定向表中所存放核资源ID的地址是一一对应的关系。所以,可以通过所述哈希值,在重定向表中查找到对应的核资源ID,每个核资源又对应一个特定的队列,所以能够通过上述方法,将所述的流量特征数据分配到与所述核资源ID对应的队列中。
请参照图4,该图是RSS的工作原理示意图。图4详细描述了RSS功能实现的过程:401网络数据包流入后,对404待处理字段经过405哈希函数处理得到对应的406哈希值,通过406哈希值在402重定向表中,查找该哈希值所对应的核资源ID,最后在403中央处理器中,找到在重定向表中对应的核资源。
通过上述步骤,从待评估网络流量中读取数据初始流量指标,对所读取的数据初始流量指标进行解析,获得其相关的数据包的数据性质得到流量特征数据。请参看图5,获得流量特征数据后,进入步骤S501,选择收到的流量特征数据中需要进行哈希处理的字段;进入步骤S502,使用预定的哈希函数,对所述流量特征数据进行哈希处理,获得对应的哈希值;得到对应的哈希值后进入步骤S503,根据哈希值确定重定向表中的目标存储地址,本实施例中,因为重定向表只有128个条目,所以我们选择哈希值的最后7未来形成最终的哈希值;得到所述目标存储地址进入步骤S504,通过所述目标存储地址,在重定向表中查阅获得核资源ID;得到所述核资源ID后进入步骤S505,将所述流量特征数据分配到与所述核资源ID对应的队列中。
步骤S103,核资源针对其对应的数据队列,按照队列顺序,对所获取的初始流量指标进行进一步的数据处理。
所述队列顺序是按照数据指标到来的先后来确定的。
同时,核资源针对其对应的数据队列进行临时存储,而每个数据队列在每个核资源中是需要占用内存空间的,在这一部分,我们采用DPDK特有的环形缓冲区,即,针对每个所述核资源的数据队列,采用环形缓冲区,所述环形缓冲区包括一个单一生产者和单一消费者;所述环形缓冲区是通过大页内存机制实现的。所述环形缓冲区是通过DPDK的大页内存机制实现的。
所述环形缓冲区是一种常见的数据结构,常用于在生产者和消费者之间传递数据。在环形缓冲区中,数据被存储在一个环形的缓冲区中,生产者将数据写入缓冲区的尾部,消费者从缓冲区的头部读取数据。默认情况下,所有的数据队列都是采用多生产者和多消费者模式的环形缓冲区,但是由于这个模式下,每个数据队列的释放时间相对较大,因此本申请使用单一生产者和单一消费者模式来管理环形缓冲区。
Single-Producer,Single-Consumer(SPSC单一生产者单一消费者):指只有一个生产者和一个消费者的情况。在这种情况下,缓冲区的读写操作是串行的,因此不需要任何同步机制。
Multiple-Producer,Single-Consumer(MPSC多生产者单一消费者):指有多个生产者和一个消费者的情况。在这种情况下,多个生产者可以同时写入缓冲区,但消费者必须串行地从缓冲区中读取数据。因此,需要使用同步机制来保证数据的正确性。
Single-Producer,Multiple-Consumer(SPMC单一生产者多消费者):指有一个生产者和多个消费者的情况。在这种情况下,生产者可以将数据写入缓冲区,多个消费者可以并行地从缓冲区中读取数据。因此,需要使用同步机制来保证数据的正确性。
Multiple-Producer,Multiple-Consumer(MPMC多生产者多消费者):指有多个生产者和多个消费者的情况。在这种情况下,多个生产者可以同时写入缓冲区,多个消费者也可以并行地从缓冲区中读取数据。因此,需要使用同步机制来保证数据的正确性。
所述大页内存机制是一种将物理内存映射到大页上的技术。传统的操作系统中,内存以4KB的小页为单位进行管理,而大页内存机制则将内存以2MB或更大的大页为单位进行管理。这样可以减少页表的数量,提高内存访问效率,从而提高系统的性能和吞吐量。在DPDK中,环形缓冲区和内存池等关键内存使用了大页内存机制,将它们映射到大页上。这样可以减少内存访问的次数,降低转换后备缓冲区(TLB)的负载,从而减少丢包情况的发生。同时,大页内存机制还可以提高内存的连续性,减少内存碎片的产生,提高内存使用效率。
请参考图2,该图是DPDK(数据平面开发工具包)的多核架构,其中包含了包括204Mem PoollManager,205Ring Manager,206Pol lMode Driver和207EnvAbstraction四个DPDK库中的重要组件,它们分别起着不同的作用。
1.Mem PoollManager(内存池管理器):Mem PoollManager是DPDK中的内存池管理器,主要用于管理内存池,提供高效的内存分配和释放功能。在DPDK中,应用程序需要频繁地分配和释放大量的内存,而Mem PoollManager可以提供一种高效的内存管理方式,避免了频繁地调用系统malloc和free函数,从而提高了应用程序的性能。
2.Ring Manager(环形缓冲区管理器):Ring Manager是DPDK中的环形缓冲区管理器,主要用于管理环形缓冲区,提供高效的数据传输功能。在DPDK中,应用程序需要频繁地进行数据传输,而Ring Manager可以提供一种高效的数据传输方式,避免了频繁地访问系统内存,从而提高了应用程序的性能。
3.Pol lMode Driver(轮询模式驱动程序):Pol lMode Driver是DPDK中的轮询模式驱动程序,主要用于实现高性能的网络数据包处理。在DPDK中,Pol lMode Driver可以直接访问网络接口的硬件资源,避免了操作系统内核和网络协议栈的开销,从而提高了网络数据包处理的性能。
4.Env Abstraction(环境抽象层):Env Abstraction是DPDK中的环境抽象层,主要用于屏蔽不同操作系统和硬件平台之间的差异,提供一致的编程接口。在DPDK中,应用程序可以通过Env Abstraction来访问底层硬件资源,而不需要关心具体的硬件平台和操作系统。
这些组件的基本原理是:通过高效的内存管理、数据传输和网络数据包处理技术,提高DPDK应用程序的性能。同时,通过环境抽象层的设计,屏蔽不同操作系统和硬件平台之间的差异,提供一致的编程接口,使得DPDK应用程序可以在不同的硬件平台和操作系统上运行。
另外,207环境抽象层通过和208PCI-e总线连接外部设备,因此,208PCI-e总线能够将通过209网卡中传流入的数据,传入送到207环境抽象层中;,而207环境抽象层为不同的操作系统和硬件平台之间提供一致性的编程接口,底层资源提供接口,因此在DPDK中,可以通过环境抽象层来访问底层硬件资源。203北向应用程序编程接口和201用户应用程序连接,DPDK就是通过北向应用编程接口和用户应用程序的连接,实现和用户之间的通信。
通常情况下DPDK提供4种基本的轮询模式驱动程序接收模式,分别是NONE、接收方RSS(接收方缩放)、DCB(数据中心桥接)和VMDQ(虚拟机设备队列)。相应地,网卡供应商确定其产品是否可以支持每种模式并提供相应的API。而在本专利应用涉及的测量方法中,主要将RSS视为接收模式,因为DCB和VMDQ是为虚拟机和主机之间的通信而设计的,而本专利的设计不涉及任何虚拟机。
DPDK中的PMD RX模式是一种高性能网络数据包接收模式,可以在多核处理器上实现高吞吐量的数据包接收。其中,RSS(接收方缩放)是PMD RX模式的重要特性之一。RSS主要是一种哈希算法,可以将接收到的网络数据包分发到多个CPU核心上进行处理,从而实现多核负载均衡和提高系统吞吐量。
RSS的工作原理如下:
1.接收侧散列:当数据包到达网卡时,网卡会根据一些标准协议头(如IP、TCP、UDP等)计算一个哈希值,然后将哈希值与RSS散列表中的一组哈希键进行匹配。
2.哈希键:哈希键是一组用于标识哈希桶的值。每个哈希键对应一个哈希桶,哈希桶是一个CPU核心的队列。
3.哈希桶:哈希桶是一个缓冲区,用于存储接收到的数据包。每个哈希桶都关联一个CPU核心,当数据包的哈希值与哈希键匹配时,数据包将被放入相应的哈希桶中。
4.负载均衡:通过RSS,DPDK可以将接收到的数据包分配到多个CPU核心上进行处理,从而实现负载均衡和提高系统吞吐量。
图3为网卡的RSS功能示意图。图中传入数据包在数据包流中流过305网卡,通过303RSS接收方缩放,所有不同的数据包就会被分成不同的302接收队列,与相应的301核资源绑定。根据图3所示,流入网卡的数据包通过RSS功能处理成目标队列,此时,每一个队列对应一个核资源,该核资源只对该对应队列里的数据进行处理。
通过以上原理,所述轮询模式驱动程序通过所述网络流量经过的网卡提供的RSS功能与DPDK提供的RSS模式配合实现,包括:所述DPDK提供RSS轮询模式驱动程序的接收模式;所述网卡提供支持RSS模式并提供相应的API;当数据包到达所述网卡时,所述网卡根据标准协议头计算一个哈希值;所述哈希值与RSS散列表中的一组哈希键进行匹配;所述哈希键用于标识哈希桶的值,每个所述哈希键对应一个哈希桶;所述哈希桶是一个所述CPU核资源的队列,所述哈希桶是一个缓冲区,用于存储接收到的所述数据包;每个所述哈希桶都关联一个所述CPU核心;当所述数据包的哈希值与所述哈希键匹配时,所述数据包将被放入相应的哈希桶中;通过所述RSS,所述DPDK将接收到的所述数据包分配到多个所述CPU核资源上进行处理;传入的所述数据包流过网卡;经过所述RSS接收方缩放,所有不同的所述数据包就会被分成不同的接收队列;所述接收队列分别与相应的所述核资源绑定;流入网卡的所述数据包通过所述RSS功能处理成目标队列;每一个所述队列对应一个所述核资源,所述核资源只处理对应所述队列里的数据。
本申请的实施例一通过轮询模式驱动程序,将来自同一数据流中的初始流量指标转化成目标数据队列的任务,并且还分配了处理其数据的目标核资源,以及实现每个核资源将分配给他的对应的目标数据队列进行存储在公共位置的数据表中,进行进一步的处理。
由于该方法为核资源设置了轮询机制,避免了中断方式造成的核资源运行被打断,并且,由于为每个核资源都设置了相应的队列,可以随时利用核计算资源进行处理,避免了使用传统的sketch方式进行流量评估时,存储资源需求不断增加的后果,有效节省了耗费在流量评估上的计算资源。
本申请第二实施例提供一种网络测量的装置,该网络测量装置与本申请第一实施例的网络测量的评估方法对应,在此予以简要介绍。
本申请第二实施例提供的网络测量的装置,包括:申请核资源单元、目标队列分配单元、数据处理单元。
请参考图6,该图为网络测量装置的单元框图。
所述申请核资源单元601,用于确认核资源空闲情况,采用预设的轮询机制,针对各个核资源,询问是否存在空闲;若是,则进入下一步;具体地,在该单元中,轮询模式驱动程序询问各个核资源是否存在空闲,针对空闲的核资源,分配相应的目标数据队列,使得该核资源后续运行过程中只针对该对应的队列进行处理,这种特定的队列处理能够提高每个核资源的利用率,综合提高了核资源的总体效率。
所述目标队列分配单元602,用于使用存在空闲的目标核资源,从待评估网络流量中读取数据初始浏览指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中;具体地,对所读取的数据初始流量指标进行解析,获得其相关的数据包的数据性质;根据数据性质,以预定的算法,将其分配到相匹配的目标数据队列。所述根据数据性质,以预定的算法,将其分配到相匹配的目标数据队列。同时,每个数据队列在每个核资源中是需要占用内存空间的,在这一部分,我们采用DPDK特有的大页内存机制,以提高网络数据包处理的性能和效率,减少丢包情况的发生。
所述数据处理单元603,用于核资源针对其对应的数据队列,按照队列顺序,对所获取的初始流量指标进行进一步的数据处理。通过之前的步骤,已经获得了空闲的目标核资源。因为网络流量的测量主要根据网络流量中初始的流量指标进行评估,所以在该步骤中,将网络流量中数据初始流量指标放入需要处理的目标数据队列中,后续就对这些目标数据队列进行进一步的处理。
本申请第三实施例提供一种网络测量的系统,该网络测量的系统用于实现上述第一实施例提供的方法。
请参考图7,该图为网络测量系统的单元框图。
所述网卡701用于接收待检测的数据,为所述方法的实施提供相应RSS接口,用于分配队列;
所述服务器702用于分析待检测的队列,基于DPDK框架,采用预设的的轮询模式驱动程序,与所述网卡配合实现待检测数据的队列分配,并按照队列顺序,对所获取的初始指标进行进一步的数据处理。
从硬件角度看,网卡是指具有RSS功能的网卡,可以与DPDK的RSS接口相对应,提供相应的接口,用于支持本申请中测量方法所需的硬件环境。
服务器的中央处理器中本身就具有相应的DPDK的架构,但是如果使用不具有RSS功能的网卡,那么该DPDK架构将无法应用在后续的方法中,因此在选用网卡时,需采用具有RSS功能的网卡,相应地,所述服务器也采用Intel的CPU,这样才能保证服务器中的CPU具有RSS接口,以利用DPDK上的功能,共同实现网络测量的方法。
需要注意的是,为了实现RSS,需要满足以下条件:
1.网络接口控制器需要支持RSS功能。
2.系统内核需要支持RSS功能。
3.DPDK应用程序需要启用RSS功能。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (10)
1.一种网络流量的评估方法,其特征在于,包括:
采用预设的轮询模式驱动程序,针对各个核资源,询问是否存在空闲;若是,则进入下一步;
使用存在空闲的目标核资源,从待评估网络流量中读取数据初始流量指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中;
核资源针对其对应的数据队列,按照队列顺序,对所获取的初始流量指标进行进一步的数据处理。
2.根据权利要求1所述的网络流量评估方法,其特征在于,所述从待评估网络流量中读取数据初始流量指标,并分配到与所述初始流量指标反映的数据性质匹配的目标数据队列中,包括:
对所读取的数据初始流量指标进行解析,获得其相关的数据包的数据性质;
根据数据性质,以预定的算法,将其分配到相匹配的目标数据队列中。
3.根据权利要求1所述的网络流量的评估方法,其特征在于,所述轮询模式驱动程序是通过DPDK轮询线程实现的。
4.根据权利要求2所述的网络流量评估方法,其特征在于,所述根据数据性质,以预定的算法,将其分配到相匹配的目标数据队列中,包括:
选择收到的流量特征数据中需要进行哈希处理的字段;
使用预定的哈希函数,对所述流量特征数据进行哈希处理,获得对应的哈希值;
根据哈希值确定重定向表中的目标存储地址;
通过所述目标存储地址,在重定向表中查阅获得核资源ID;
将所述流量特征数据分配到与所述核资源ID对应的队列中。
5.根据权利要求3所述的网络流量评估方法,其特征在于,所述轮询模式驱动程序通过所述网络流量经过的网卡提供的RSS功能与DPDK提供的RSS模式配合实现,包括:
所述DPDK提供RSS轮询模式驱动程序的接收模式;
所述网卡提供支持RSS模式并提供相应的API;
当数据包到达所述网卡时,所述网卡根据标准协议头计算一个哈希值;
所述哈希值与RSS散列表中的一组哈希键进行匹配;
所述哈希键用于标识哈希桶的值,每个所述哈希键对应一个哈希桶;
所述哈希桶是一个所述CPU核资源的队列,所述哈希桶是一个缓冲区,用于存储接收到的所述数据包;
每个所述哈希桶都关联一个所述CPU核心;
当所述数据包的哈希值与所述哈希键匹配时,所述数据包将被放入相应的哈希桶中;
通过所述RSS,所述DPDK将接收到的所述数据包分配到多个所述CPU核资源上进行处理;
经过所述RSS接收方缩放,所有不同的所述数据包就会被分成不同的接收队列;
所述接收队列分别与相应的所述核资源绑定;
流入网卡的所述数据包通过所述RSS功能处理成目标队列;
每一个所述队列对应一个所述核资源,所述核资源只处理对应所述队列里的数据。
6.根据权利要求1所述的网络流量评估方法,其特征在于,包括:
在环境抽象层中,自动检测可用内核,并将线程关联设置为某些内核,待检测到可用内核后,将所述轮询模式驱动程序的线程关联到所述可用内核。
7.根据权利要求1所述的网络流量评估方法,其特征在于,包括:
针对每个所述核资源的数据队列,采用环形缓冲区,所述环形缓冲区包括一个单一生产者和单一消费者;所述环形缓冲区是通过大页内存机制实现的。所述环形缓冲区是通过DPDK的大页内存机制实现的。
8.根据权利要求1所述的网络流量评估方法,其特征在于,所述目标数据队列中的初始流量指标,采用sketch方法,从通过网卡的数据包中获得。
9.一种网络测量的装置,其特征在于,包括:
申请核资源单元,用于确认核资源空闲情况,采用预设的轮询机制,针对各个核资源,询问是否存在空闲;若是,则进入下一步;
目标队列分配单元,用于使用存在空闲的目标核资源,从待评估网络流量中读取数据初始浏览指标,并分配到所述初始流量指标反映的数据性质匹配的目标数据队列中;
数据处理单元,用于核资源针对其对应的数据队列,按照队列顺序,对所获取的初始流量指标进行进一步的数据处理。
10.一种网络测量的系统,其特征在于,包括网卡、服务器;
所述网卡是指具有RSS功能的网卡,接收待检测的数据,为所述方法的实施提供相应RSS接口,用于分配队列;
所述服务器用于分析待检测的队列,基于DPDK框架,采用预设的的轮询模式驱动程序,与所述网卡配合实现待检测数据的队列分配,并按照队列顺序,对所获取的初始指标进行进一步的数据处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311100127.6A CN117221185A (zh) | 2023-08-29 | 2023-08-29 | 一种网络流量的评估方法、网络测量的装置以及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311100127.6A CN117221185A (zh) | 2023-08-29 | 2023-08-29 | 一种网络流量的评估方法、网络测量的装置以及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117221185A true CN117221185A (zh) | 2023-12-12 |
Family
ID=89045327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311100127.6A Pending CN117221185A (zh) | 2023-08-29 | 2023-08-29 | 一种网络流量的评估方法、网络测量的装置以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117221185A (zh) |
-
2023
- 2023-08-29 CN CN202311100127.6A patent/CN117221185A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110402568B (zh) | 一种通信的方法及装置 | |
US10019396B2 (en) | Systems and methods for adaptive interrupt coalescing in a converged network | |
US9866479B2 (en) | Technologies for concurrency of cuckoo hashing flow lookup | |
US20170168986A1 (en) | Adaptive coalescing of remote direct memory access acknowledgements based on i/o characteristics | |
US20180285294A1 (en) | Quality of service based handling of input/output requests method and apparatus | |
US9092366B2 (en) | Splitting direct memory access windows | |
US20100265954A1 (en) | Method, System, and Computer Program Product for High-Performance Bonding Resequencing | |
US7849214B2 (en) | Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same | |
US20140115183A1 (en) | Information processing method, recording medium, and information processing apparatus | |
CN109857545B (zh) | 一种数据传输方法及装置 | |
WO2020026018A1 (zh) | 文件的下载方法、装置、设备/终端/服务器及存储介质 | |
CN111431757A (zh) | 虚拟网络的流量采集方法及装置 | |
US9276879B2 (en) | Memory transfer optimization of network adapter data placement when performing header-data split operations | |
US12095678B2 (en) | GPU-native packet I/O method and apparatus for GPU application on commodity ethernet | |
US8502710B2 (en) | Methods and computer program products for providing a compressed circular buffer for efficient storage of network performance data | |
US9104601B2 (en) | Merging direct memory access windows | |
CN114595043A (zh) | 一种io调度方法和装置 | |
CN104753814A (zh) | 基于网卡的报文分流处理方法 | |
US11334487B2 (en) | Cache sharing in virtual clusters | |
Julián-Moreno et al. | On the feasibility of 40 gbps network data capture and retention with general purpose hardware | |
CN117221185A (zh) | 一种网络流量的评估方法、网络测量的装置以及系统 | |
US9996468B1 (en) | Scalable dynamic memory management in a network device | |
US9338219B2 (en) | Direct push operations and gather operations | |
US10673937B2 (en) | Dynamic record-level sharing (RLS) provisioning inside a data-sharing subsystem | |
US20120036217A1 (en) | Data conversion device and data conversion method |
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 |