DPDK到底是什么

数据平面开发套件(DPDK ,Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。

DPDK到底是什么

一、DPDK到底是什么

数据平面开发套件(DPDK ,Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。

DPDK是一个linux基金会的开源项目。开发DPDK的主要目的,是在数据平面应用中为快速的数据包处理提供一个简单而完善的架构。在理解此工具集之后,开发人员可以以此为基础进行新的原型设计,或简单地为我所用。

DPDK架构通过创建EAL(Environment Abstraction Layer,环境抽象层)来为不同的工作环境创造函数库集,创建后开发者即可把自己的应用与函数库进行链接。该架构也包含跟踪调试,PCIe总线接入等功能,并有相关样例帮助开发者学习如何使用这些功能。

二、关键技术

环境抽象层

DPDK的创造的环境抽象层(EAL, Environment Abstraction Layer)主要负责对计算机底层资源(如硬件和内存空间)的访问,并对提供给用户的接口实施了实现细节的封装。其初始化例程决定了如何分配这些资源(PCI设备、计时器、控制台等)。

EAL提供的典型服务包括:

  • 加载和启动DPDK:DPDK及其应用程序会被链接为单一应用,因此需要通过某种方式进行加载DPDK。
  • 核关联/分配过程:EAL提供了将执行单元分配给特定核并创建执行实例的机制。
  • 预留系统内存:EAL为预留不同的内存区域提供便利,例如用于设备交互的物理内存区域。
  • 抽象PCI地址:EAL提供了访问PCI地址空间的接口。
  • 跟踪和调试功能:日志、堆栈转储等。
  • 实用的功能:libc中所没有提供的自旋锁和原子计数器。
  • CPU功能识别:在运行时确定CPU是否支持特定功能,确定当前CPU是否支持编译产生的二进制指令集。
  • 中断处理:向特定中断源注册/注销回调的接口。
  • 时钟功能:用于设置/删除在特定时间运行的回调函数接口。

轮询模式驱动

DPDK包括1Gb,10Gb,40Gb和半虚拟化抽象层的轮询模式驱动(PMD, Poll Mode Driver)。PMD由用户空间的特定的驱动程序提供的API组成,用于对设备和它们相应的队列进行设置。抛弃了基于中断的异步信号发送机制为该架构带来很大的开销节省。避免中断性能瓶颈是DPDK提升数据包处理速度的关键之一。

DPDK环境为数据包处理应用考虑了两种模型:运行至完成(run-to-completion)模型和管道(pipeline)模型。在运行至完成模型中,一个API向某个特定端口的接收描述符环轮询以接收数据包。接着这个数据包在同一个核上被处理,之后被一个发送用API放到端口的传输描述符环上;在管道模型中,一个核心会通过API对一个或多个端口的接收描述符环进行轮询,数据包通过环被接收和传递给另一个核心,然后在这个核心上被处理,之后可能被发送用API放到端口的传输描述符环上。

运行至完成是一个同步模型,每个指派给DPDK的逻辑核心执行如下所示的循环:

  1. 通过PMD接收用API来提取输出数据包
  2. 根据转发,一一处理收到的数据包
  3. 通过PMD发送用API发送输出数据包

相反,管道模型是一个异步模型,有的逻辑核心只执行数据包提取,而有的只执行处理,收到的数据包在这些逻辑核心之间通过环来传递。提取核心执行如下的循环:

  1. 通过PMD接收用API来提取输出数据包
  2. 通过队列提供数据包给处理核心

处理核心执行如下的循环:

  1. 从队列中提取数据包
  2. 根据重传(如果被转发)处理数据包

为了避免不必要的中断性能瓶颈,执行环境禁止任何异步通知机制的使用。在任何需要或合适的时候,异步通信都应尽可能采用环的方式。

在多核环境中避免锁竞争是一个重要的问题。为了处理这个问题,PMD被设计为可以尽可能地在单核私有资源下工作。例如,PMD为每个核心每个端口提供一个单独的队列。同样的,每个端口的接收队列只会被指派给少数一个逻辑核心并接收它的轮询。

延伸阅读

函数库

Malloc Library

提供分配任意大小内存的API。

Ring Library

提供对一种特殊的链表队列的管理,具有先进先出、定长、无锁、并发入/出队等特性。

优点:工作更快,实现简单,适用于块数据的入/出队;

一个简单的环结构

缺点:定长、环多导致内存占用增加。

Mempool Library

内存池用于分配固定大小的对象。在DPDK中内存池用名字区分,并用环来存储未使用的对象。

Mbuf Library

用于分配和释放缓冲区给DPDK应用来存储缓存信息,使用上述的内存池来存储。

一个单段缓冲区

IVSHMEM Library

为在虚拟机与主机或虚拟机间的零拷贝数据共享提供便利,得名于使用了QEMU的IVSHMEM机制。

Link Bonding Poll Mode Driver Library

纯软件函数库,允许多个PMD组合为单个逻辑PMD,类似于在linux中将多个网络接口组合为一个逻辑接口。

组合PMD

Timer Library

为DPDK执行单元提供时间服务以实现反馈函数的异步执行。时钟有单次工作的也有周期工作的,可载入一个核心上的时钟后在另一个上执行。时钟提供很高的精度,也可以在编译时禁用以提高性能。

Hash Library

创建散列表以提供快速查找功能。

LPM Library

为32位关键码实现的最长前缀匹配表查找方法。用于在IP转发应用中找到最合适的路由匹配。

LPM6 Library

即LPM for IPv6,为128位关键码实现的最长前缀匹配表查找方法,用于在IPv6转发应用中找到最合适的路由匹配。

文章标题:DPDK到底是什么,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/62035

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年7月27日 下午9:27
下一篇 2023年7月27日

相关推荐

  • 禅道项目管理软件怎么使用

    虽然禅道官网存在四个版本,但本质上只分为开源版、云禅道两个条线,因为:无论是开源版、专业版还是旗舰版,都是禅道项目管理软件的私有部署版本;云禅道是saas版本,并且又分为免费、企业版、旗舰版。 禅道成立于2010年,致力于为开发者提供高效的研发协同和管理解决方案。在2021年完成数千万元首次融资,由…

    2023年2月1日
    63200
  • 会议管理系统设计与实现

    如何设计与实现会议管理系统?在考虑设计及实现一个会议管理系统时,需要关注5个基本要素:1、用户友好的界面设计;2、鲁棒的数据库后端;3、高效的信息处理机制;4、灵活的会议安排及资源管理;5、安全可靠的权限和数据保护措施。 对于高效的信息处理机制而言,系统应提供快速响应用户请求的能力,同时确保数据处理…

    2024年1月9日
    17200
  • Python的解释器种类以及相关特点

    Python 是一种高级编程语言,主要有两种执行 Python 代码的方式:解释执行和编译执行。解释执行是逐行读取并解释代码,而编译执行则是将代码转换成机器码后再执行。Python 的解释器种类繁多,本文将对 Python 解释器的种类及其特点进行详细讲解。 CPython CPython 是 Py…

    2023年3月2日
    40900
  • 敏捷管理的特点是什么

    敏捷管理的特点有以下几点:1、个人与互动胜过过程与工具;2、可用的软件胜过复杂的文件;3、与客户合作胜过合同谈判;4、响应变更胜过遵循计划。敏捷管理的主要特点体现于管理职责,管理目标和管理手段的某些变化中。 1、个人与互动胜过过程与工具 在项目管理过程中,过程和工具是比较重要的。在过程、工具和个人、…

    2022年11月16日
    92100
  • 什么是数据挖掘中的文本挖掘

    数据挖掘中的文本挖掘是指从文本数据中发掘有价值的信息和知识的过程。其核心观点包括:1、模式识别、2、统计学分析、3、机器学习应用。文本挖掘利用多种技术对非结构化的文本数据进行处理,以发现其中的模式和趋势。这通常涉及如文本分类、情感分析、主题建模等任务。该技术如今广泛应用于市场分析、客户服务、安全监测…

    2023年11月21日
    23500
  • 在Scrum中如何平衡创新与交付

    在Scrum框架中,平衡创新与交付是确保项目成功的关键。此策略依靠1、维持产品愿景与市场需求的协同,2、采纳迭代与增量的方法实施,3、鼓励团队的自我管理与交叉功能合作,4、利用Sprint Review会议收集反馈,5、通过持续学习和改进追求创新。团队需保持对产品愿景的清晰了解,同时灵活地响应市场变…

    2023年12月11日
    22000
  • DevOps项目中的负载测试和性能优化

    DevOps项目中实施负载测试和性能优化为的是确保软件系统在预期最大负载下依然保持良好的性能和稳定性。1、预防系统过早的性能瓶颈;2、优化系统资源使用,提高用户满意度;3、确保系统可扩展性和可维护性。其中,预防系统的性能瓶颈至关重要,这涉及识别并解决可能在高负载情况下限制系统处理能力的问题。通过负载…

    2024年1月2日
    15100
  • 产品线管理是什么意思

    产品线管理的意思是:产品线(Product Line) 是指一群相关的产品,这类产品可能功能相似,销售给同一顾客群,经过相同的销售途径,或者在同一价格范围内。 如果能够确定产品线的优异长度,就能为企业带来最大的利润。 一、产品线管理是什么意思 产品线(Product Line) 是指一群相关的产品,…

    2023年4月18日
    2.2K00
  • oa软件那个好

    标题:OA软件的优选指南 OA软件即办公自动化软件,旨在提升企业的管理效率与工作流程的自动化。选择最佳OA软件需考虑功能全面性、用户友好性、定制灵活性、安全性及技术支持等因素。功能全面性指软件提供一站式办公解决方案,涵盖了通讯、任务管理、文档共享等。这些元素确保满足不同规模和需求的企业。接下来,本文…

    2024年1月11日
    10200
  • oa软件商

    标题:OA软件商在市场中的角色和挑战 在现代商业环境下,办公自动化(OA)软件商起着至关重要的角色。OA软件帮助公司提升1、工作效率;2、流程透明;3、数据安全;4、沟通合作。特别是在工作效率方面,OA软件通过自动化日常任务、集成多种工具与平台,减少了人为错误,为企业节省宝贵时间。借助先进的技术如人…

    2024年1月11日
    12000

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部