首页 / 基于可编程硬件DPU的Sketch实时网络测量方法、电子设备、介质

基于可编程硬件DPU的Sketch实时网络测量方法、电子设备、介质实质审查 发明

技术领域

[0001] 本发明涉及网络测量领域,尤其涉及一种基于可编程硬件DPU的Sketch实时网络测量方法、电子设备、介质。

相关背景技术

[0002] 现代生产网络依赖于高效的数据传输、可靠的连接性和稳定的性能来支持各种任务和业务需求。现代网络的拓扑结构更加复杂,网络流量大幅增长,随之带来了高延迟、高丢包率、网络拥塞等问题。网络测量技术在这样网络环境下扮演着至关重要的角色:①性能监测。监测延迟、丢包率、带宽利用率等网络性能指标,确保网络稳定高效运行。②故障诊断。当网络出现故障或性能下降时,提供实时数据以识别网络中的瓶颈、拥塞或故障点。③安全性。网络测量技术可帮助识别异常行为和潜在的安全威胁,检测和预防各种网络攻击。
[0003] P4(Programming Protocol‑independent Packet Processors)是一门描述数据平面设备的数据报处理行为的领域专用语言。P4允许用户编写数据报处理逻辑并在网络设备上进行部署,而无需依赖特定的硬件或协议。在可编程数据平面,P4是一种事实上的标准语言,并且已经被许多系统用于实现Sketch。
[0004] 数据处理单元(Data Processing Unit,DPU)是一种新兴的终端主机片上系统(System‑On‑A‑Chip,SoC),具有可编程的多核处理器、高速网络接口和加速引擎,专门设计用于执行数据密集型任务。DPU允许用户自定义其数据处理行为,例如可将以往部署在CPU核心上的网络功能卸载到DPU上,利用其多核SoC架构以高吞吐量和低延迟来执行数据报处理逻辑。
[0005] Sketch是一种基于概率算法的快速、低开销的网络测量技术。它利用固定大小的数据结构和hash算法来压缩网络流量信息并保留关键特征,在减少存储和计算开销的同时保持较高的测量精度,从而快速捕捉网络流量的特征并提供实时的测量结果。
[0006] 目前有三种在终端主机中实现Sketch以进行网络测量的方法:
[0007] 1.系统调用(System Call)方法:在用户空间中运行Sketch,通过系统调用从内核空间收集网络报信息进行测量。然而,频繁的系统调用和上下文切换引发了高额的CPU开销,处理每个数据报需要消耗数千个CPU周期,结果是导致了低数据报处理吞吐量和高数据报处理延迟,性能较差。
[0008] 2.基于跟踪点(Tracepoints)的方法:在内核空间网络栈中的跟踪点实现Sketch,当数据报到达网络栈中的跟踪点时,会触发Sketch来处理数据报,并将数据收集到用户空间进行进一步处理。然而,大多数跟踪点都存在安全隐患,使用它们容易导致内核和用户应用程序崩溃,因此无法在生产网络中应用。此外,虽然基于eBPF的跟踪点通过了安全验证,但它们的性能非常低,无法处理高速流量。
[0009] 3.基于数据平面开发工具套件(Data Plane Development Kit,DPDK)的方法:该方法使用DPDK绕过内核空间,在用户空间中构建Sketch,避免了不必要的数据报复制和上下文切换,从而实现了高性能。然而,这种方法需要在终端主机中单独配置内核空间和用户空间的数据报处理,增加了管理负担。此外,由于DPDK将CPU核心专用于数据报处理,会消耗大量CPU资源,这是不可接受的。
[0010] 综上,目前网络测量方法无法同时实现高性能和低开销。

具体实施方式

[0025] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026] 需要说明的是,在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
[0027] 如图1所示,本发明提供了一种基于可编程硬件DPU的Sketch实时网络测量方法,本实例中,所有的参数及其对应的含义如下表1所示:
[0028] 表1
[0029]
[0030]
[0031] 所述方法包括以下步骤:
[0032] 步骤S1,将Sketch程序转换为JSON格式的中间表示,记为Sketch
[0033] 具体地,使用P4C作为前端编译器,将用P414或P416语言编写的Sketch程序转换为基于JSON的中间表示(Intermediate Representation,IR)。
[0034] 在本实例中,使用8个Sketch作为输入,包括Count‑Min Sketch(CM),Count Sketch(CS),Counting Bloom Filter(CBF),Elastic Sketch(ES),FlowRadar(FR),SketchVisor(SV),UnivMon(UM)和NitroSketch(NS)。对于CM、CS和FR,使用8个计数器数组和8个哈希函数;对于ES,将其重部分(Heavy Part)和轻部分(Light Part)的大小分别设置为其总内存的1/4和3/4;对于SV,将其快速路径的大小设置为8KB;对于UM,为第一个数组分配4MB,为其余数组分配250KB;对于NS,将其几何采用率设置为0.01,并根据其5%的精度保证来选择参数。
[0035] 步骤S2,将Sketch程序的中间表示Sketch 抽象为一组原子化的数据结构和数据处理操作,记为Sketch 其中, 表示Sketch 的数据结构的集合,表示Sketch 的数据处理操作的集合。
[0036] 其中, 包含记录流量统计数据的矩阵,在 中,共有 个计数器数组,第i个数组 有 个计数器,每个计数器的长度为 位。
[0037] 分为三部分,即 其中: 为Sketch 的解析操作集合,每个解析操作解析特定包头,并从数据包中提取流ID; 为Sketch 的散列操作集合,每个散列操作以流ID作为输入,输出该流ID对应的计数器索引; 为Sketch 的更新操作集合,每个更新操作决定是否以及如何更新 中的计数器。
[0038] 步骤S3,获取每一Sketch 在DPU上运行的资源消耗数据,包括:根据Sketch 的数据结构获取存储资源,根据Sketch 的数据处理操作获取SoC核心数量。
[0039] 需要说明的是,DPU提供的硬件资源包括 个SoC核心, 个大小为 的L2缓存,一个 的L3缓存,以及 大小的DRAM。其中,L2缓存、L3缓存和DRAM用于存
放 中的Sketch 的数据结构,SoC核心用于执行 中的Sketch 的数据处理操作。
[0040] 步骤S301,分析Sketch 消耗的存储资源。Sketch 的数据结构需要占用存储空间。在 中,共有 个数组,第i个数组 有 个固定大小的计
数器,每个计数器有 位,因此 每个
Sketch 的存储资源消耗 等于 由 三部
分组成:
[0041]
[0042] 其中, 表示消耗的L2缓存资源, 表示消耗的L3缓存资源, 表示消耗的DRAM资源。
[0043] 步骤S302,分析Sketch 所需SoC核心数量,即Sketch 实现其最大性能所需的最少SoC核心数
[0044] 最少SoC核心数 由两种Sketch操作共同决定:
[0045] (1)无状态操作,包括解析操作集合 和散列操作集合 中不修改Sketch数据结构内容的操作;
[0046] (2)有状态操作,包括更新操作集合 中更新Sketch数据结构内容的操作。根据两类操作各自的性能瓶颈,分两种情况计算得到 具体为:
[0047] (2.1)无状态操作是性能瓶颈。该情况下,对于任意Sketch 计算 如下:
[0048]
[0049] 其中, 表示Sketch数据结构可以完全存放于L2和L3缓存中而无需额外的DRAM。
[0050] (2.2)有状态操作是性能瓶颈。该情况下,使用如下步骤计算最少SoC核心数[0051] ①初始化 的值为1,运行Sketch 在固定时间间隔△t后测量平均吞吐量μ1。
[0052] ②若 的值小于 将 的值加1。否则,转到步骤⑤。
[0053] ③运行Sketch 在固定时间间隔△t后测量出平均吞吐量μi,其中μi表示第i个时间间隔后的平均吞吐量测量值且i>=2。
[0054] ④根据自定义设定的阈值θ,若|μi‑μi‑1|>θ,转到步骤②。若|μi‑μi‑1|<θ,得到最少SoC核心数
[0055] 步骤S4,以DPU的资源限制为约束条件,以最小化所有Sketch 内存访问延迟的总和为目标,求解Sketch卸载至DPU的最优卸载策略。
[0056] S401,获取Sketch集合 存储资源消耗 和分配的SoC核心数 和目标DPU硬件对应资源的上限。
[0057] S402,选择SoC核心分配策略,分配策略决定分配给每个Sketch的核心数量。所述SoC核心分配策略包括:
[0058] (1)先到先服务(First‑Come,First‑Served,FCFS):该策略尽量满足较早提交的Sketch的核心需求,再分配剩余的核心给较晚提交的Sketch。该策略也可转化为基于优先级的方法,用其他类型的优先级代替提交时间的度量。
[0059] (2)上限(Upper Limit,UL):该策略首先设定一个阈值ul,然后将分配给每个Sketch的SoC核数上限设为ul与 之间的最小值。
[0060] (3)接受比最大化(Acceptance Ratio Maximization,ARMX):该策略最大化成功卸载的Sketch数量,即最大化成功卸载的Sketch占所有输入Sketch的比例。
[0061] S403,根据Sketch的资源消耗、及目标DPU硬件对应资源的上限设置约束条件,约束条件包括:
[0062] (1)保证成功卸载(Successful Offloading)。φ中的每个被卸载的Sketch至少应分配到一个SoC核心和足够的存储空间,即:
[0063]
[0064]
[0065] 其中,φ表示允许被卸载的Sketch的集合, 等于
[0066] (2)核心限制(Core Limitation):所有被卸载的Sketch占用的SoC核心数量应不超过DPU中SoC核心的总数,即:
[0067]
[0068] (3)存储限制(Memory Limitations):Sketch消耗的各级DPU存储器资源不得超过该级资源的上限,例如:
[0069]
[0070] 即各个Sketch消耗的L2缓存存储空间之和不超过DPU中L2缓存的总容量。
[0071] S404:基于SoC核心分配策略和约束条件对Sketch的卸载进行优化问题建模,目标是最小化所有Sketch在最坏情况下内存访问延迟的总和,使用ILP(Integer Linear Programming)求解器求解性能最优的卸载方案。
[0072] 其中,目标函数的表达式如下:
[0073]
[0074] 其中tl2,tl3和tD分别表示访问L2缓存、L3缓存和DRAM的平均延迟(以纳秒为单位),其值可以从DPU规格中获取。布尔变量pl2、pl3和pD表示Sketch是否访问特定类型的内存,若访问,则p为1。
[0075] 对于第i个Sketch 卸载方案包含四组决策变量:
[0076] 第一决策变量{x(i,j)}:表示 是否占用第j个SoC核心。若是,x(i,j)=1;否则,x(i,j)=0。
[0077] 第二决策变量 表示分配 的L2缓存给
[0078] 第三决策变量 表示分配 的L3缓存给
[0079] 第四决策变量 表示分配 的DRAM给
[0080] 步骤S5,基于步骤S4求解的最优卸载策略,将Sketch编译加载到DPU上。
[0081] 具体地,在本实例中,基于步骤S4求解的最优卸载策略,通过DPU软件开发套件DOCA(Data‑Center‑Infrastructure‑On‑A‑Chip Architecture)将Sketch编译加载到DPU。
[0082] 进一步地,所述方法还包括:
[0083] 步骤S6,运行Sketch程序,将收集到的网络测量数据传送给控制平面进程处理,将Sketch测量的网络流量数据转换为网络事件并做出网络管理决策。
[0084] 具体地,根据控制平面进程运行位置的不同,数据传送分为两种方式:若控制平面进程在当前终端主机的CPU中运行,则通过PCIe通道定期检索Sketch数据;若控制平面进程运行在外部的监视服务器上,则通过网络链路主动将Sketch数据发送给监视服务器。
[0085] 相应的,本申请还提供一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的基于可编程硬件DPU的Sketch实时网络测量方法。如图2所示,为本发明实施例提供的基于可编程硬件DPU的Sketch实时网络测量方法所在任意具备数据处理能力的设备的一种硬件结构图,除了图2所示的处理器、内存以及网络接口之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
[0086] 相应的,本申请还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述的基于可编程硬件DPU的Sketch实时网络测量方法。所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
[0087] 本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的。
[0088] 应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。

当前第1页 第1页 第2页 第3页