DPDK是什么?等多家公司共同开发的一款开源软件套件运行至完成模型是同步模型而管道模型是异步模型
DPDK是什么?
DPDK(数据平面开发套件)是由6WIND、Intel等多家公司共同开发的一款开源软件套件。它主要运行在Linux系统上,旨在通过提供一系列函数库和驱动程序来加快数据包处理的速度,从而提升网络设备的性能和吞吐量。
DPDK的用途和目标
DPDK是一个由Linux基金会管理的开源项目,它的主要目标是提供一个简单而完善的架构,帮助开发者在数据平面应用中进行快速的数据包处理。通过使用DPDK,开发者可以轻松地设计和优化网络应用程序,从而提高数据处理效率和性能。
DPDK的架构
DPDK的架构中有一个核心概念叫做EAL(环境抽象层),它负责管理硬件资源,并为开发者提供一系列接口。EAL提供的典型服务包括:
- 加载和启动DPDK
- 核关联/分配
- 预留系统内存
- 抽象PCI地址
- 跟踪和调试
- 实用的功能,如自旋锁和原子计数器
- CPU功能识别
- 中断处理
- 时钟功能
DPDK的关键技术
环境抽象层(EAL)
EAL主要负责对底层资源的访问,包括硬件和内存空间,并对提供给用户的接口实施了实现细节的封装。
轮询模式驱动(PMD)
DPDK包括1Gb、10Gb、40Gb和半虚拟化抽象层的轮询模式驱动。PMD由用户空间的特定驱动程序提供的API组成,用于对设备和它们相应的队列进行设置。
DPDK支持两种数据包处理模型:运行至完成模型和管道模型。运行至完成模型是同步模型,而管道模型是异步模型。
DPDK的函数库
DPDK提供了一系列函数库,包括:
- Malloc Library:分配任意大小内存的API。
- Ring Library:提供对一种特殊链表队列的管理。
- Mempool Library:内存池用于分配固定大小的对象。
- Mbuf Library:分配和释放缓冲区给DPDK应用。
- IVSHMEM Library:为在虚拟机与主机或虚拟机间的零拷贝数据共享提供便利。
- Link Bonding Poll Mode Driver Library:允许多个PMD组合为单个逻辑PMD。
- Timer Library:为DPDK执行单元提供时间服务。
- Hash Library:创建散列表以提供快速查找功能。
- LPM Library:为32位关键码实现的最长前缀匹配表查找方法。
- LPM6 Library:为128位关键码实现的最长前缀匹配表查找方法。