1、DPDK特点
DPDK全称为Date planedevelopment kit,是一个用来进行包数据处理加速的软件库。与传统的数据包处理相比,DPDK具有以下特点:
1) 轮询:在包处理时避免中断上下文切换的开销,
2) 用户态驱动:规避不必要的内存拷贝和系统调用,便于快速迭代优化
3) 亲和性与独占:特定任务可以被指定只在某个核上工作,避免线程在不同核间频繁切换,保证更多的cache命中
4) 降低访存开销:利用内存大页HUGEPAGE降低TLB miss,利用内存多通道交错访问提高内存访问有效带宽
5) 软件调优:cache行对齐,预取数据,多元数据批量操作
2、DPDK框架
图1 DPDK框图
在上图中,核心库Core Libs提供系统抽象、大页内存、缓存池、定时器及无锁环等基础组件。
PMD库,提供全用户态驱动,以便通过轮询和线程绑定得到极高网络吞吐,支持各种本地和虚拟网卡。
Classify库,支持精确匹配,最长匹配和通配符匹配,提供常用包处理的查表操作。
Qos库,提供网络服务质量相关组件,限速和调度。
Mellanox DPDK中保留了Linux内核态驱动,框图如下:
图2 MellanoxDPDK框图
Mellanox DPDK在用户空间使用PMD驱动,与网卡之间有两条路径,控制路径使用user verbs,经过内核,用于对象的创建、初始化、修改、查询和释放。数据路径之间访问网卡