DPDK是什么
Intel® DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。具体体现在DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。
DPDK的优点
性能高
用户态开发
死后易重启
DPDK的缺点
无网络协议栈
开发困难,周期长
DPDK架构
DPDK、网卡、用户应用程序、内核之间的关系。DPDK在网卡收到包后绕过内核直达用户空间。
DPDK各个组件详细的介绍
DPDK核心思想
• 用户态模式下的PMD Driver
– 去除了中断影响,减少了操作系统内核的开销,消除了IO吞吐瓶颈;
– 避免了内核态和用户态的报文拷贝;用户态下软件崩溃,不会影响系统的稳
定性;
– Intel提供的PMD驱动,充分利用指令和网卡的性能;
• HugePage和m_buf管理
– 提供2M和1G的巨页,减少了TLB Miss,TLB Miss严重影响报文转发性能;
– 高效的m_buf管理,能够灵活的组织报文,包括多buffer接收,分片/重组,
都能够轻松应对;
• Ring
– 无锁化的消息队列,实际验证,性能充足;
• 向量指令
– 明显的降低内存等待开销,提升CPU的流水线效率。
DPDK核心组件
DPDK KNI模型
KNI(Kernel Interface)机制是为了让数据包重入内核协议栈,通过创建虚拟设备用于收发报文以达到利用内核本身已实现协议的目的。几个例子。如果利用DPDK做DNS服务器,那么对于TCP报文来说是没有必要处理的。完全可以原有的内核协议栈来处理。如果自己实现TCP的协议栈会很复杂。