DPDK简介

DPDK简介

DPDK(Data Plane Development Kit)数据平面开发工具包,是一个开源软件项目。DPDK通过维护一系列能够加速多核CPU数据包处理的库,提供数据处理框架。DPDK通过绕过内核进行数据处理,表现出了比内核中断处理更高的效率。

DPDK项目架构

  • EAL

    EAL(Environment Abstraction Layer),EAL层负责访问低级资源包括硬件和内存空间。EAL屏蔽了内核具体细节,提供一个通用的接口访问库和操作系统。

  • Memory Management

    内存管理包括巨页支持、内存池、缓冲区管理。

  • Poll Mode Drivers

    为各种网络接口提供优化驱动,绕过内核网络栈减少延迟增加吞吐量。

  • Ring Buffers

    利用高效的队列机制提供高速进程间通信。

  • API for Packet Processing

    提供一系列包操纵库和函数的集合包括头解析,包分类和包转发。

  • Crypto and Security

    提供加密图像操作和安全通信的库和驱动

  • Eventdev and Timers

    提供事件驱动和时间管理功能

    从这幅图我们可以看出,其实DPDK作用是截获网卡,此时内核的网络模块会无法发现截获的网卡,从而绕过内核网络处理,利用用户协议栈进行解析,解析完毕之后直接通过KNI模块发给POSIX API进一步处理。

DPDK静态库

  • librte_eal

    提供访问硬件资源如内存、定时器和日志的基础API。

  • librte_mempool

    提供高效包处理内存池管理库。

  • librte_ring

    提供实现无锁FIFO先进先出队列以及DPDK组件间的高速通信相关的库。

  • librte_mbuf

    提供包缓冲区处理包括接收和传输相关的库。

  • librte_ethdev

    提供配置和查询以太网设备API包括接收和发送包。

  • librte_net

    提供网络协议处理相关的库。

  • librte_ip_frag

    提供IP分片和重组相关的库,支持IPV4、IPV6。

  • librte_kni

    提供DPDK应用和Linux内核网络栈间的通信,主要用于已有linux网络服务交互和调试。

posted @   LemHou  阅读(48)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示