DPDK主要以IA(Intel Architecture)多核处理器为目标平台以,应对高性能数据包处理问题。
其核心组件主要如图所示:
其利用了大量的有助于包处理的软硬件特性,如huge page 、缓存行对齐、线程绑定、预取、NUMA、IA最新指令利用、Intel DDIO、内存交叉访问等。
下面部分摘自Intel DPDK官网
ring 管理器(librte_ring):环结构在有限大小的table(内存表??)中提供无锁的FIFO API。其比无锁队列有一些优点:
更容易实施,适应批量操作,更快。内存池管理器(librte_mempool)使用一个环,可以将其用作在逻辑内核上连接在一起的的内核之间的通信机制。
内存池管理器(librte_mempool)
内存池管理器负责分配内存中的对象池。一个内存池被命名并使用环来存储free对象。也提供乐一些其他可选的服务,例如每个内核对象缓存和对齐的帮助器以确保对象被填充在所有RAM通道上均匀分布。
网络数据包缓冲区管理(librte_mbuf)
mbuf库提供了创建和销毁DPDK应用程序用来存储信息的缓冲区。消息缓存在启动时被创建,并使用mempool库存储在mempool中。