(1) DPDK 简介

news/2025/4/26 12:09:11/

1、DPDK 是什么?

DPDK全称 Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持。通俗地说,就是一个用来进行 包数据处理加速的软件库

当然现在,也不光只用Intel的处理器支持,还有其它的处理器也慢慢支持DPDK,比如NXP LS系列的众多平台,LS1012A, LS1028A, LS1043A, LS1046A, LS1088A, LS2088A, and LX2160 family of SoCs 等在 DPDK中都已经支持。

换句话说,DPDK 是一个跑在用户空间的,数据包处理加速软件库

DPDK 专注于网络应用中数据包的高性能处理绕过了Linux内核协议栈对数据包处理过程 ,在用户空间上利用自身提供的数据平面库来收发数据包。可以大幅提升IPV4的转发性能。

2、DPDK 解决什么问题的?如何解决?

高速高性能的网络数据包处理。可达到千兆、万兆的速度。

要实现高速、高性能的需求,就要想尽一切办法,降低延迟。

考虑到 linux内核中网络协议栈可能引起的延迟:

  • 不必要的内存拷贝和系统调用
  • 高速网络数据处理时的内存 cache miss 
  • 多核cpu任务切换带来的cpu cache miss
  • 中断上下文切换带来的开销 

基于上述的问题,DPDK均有对应的解决方案。

(1) 为了减少不必要的内存拷贝和系统调用,DPDK中采用 UIO技术,直接将报文拷贝到用户空间处理,避免了很多不必要的内存拷贝和系统调用。

(2) 内存的cache miss 问题,可以通过 大页内存 HUGEPAGE 来解决 ,降低cache miss(访存开销),利用内存多通道交错访问提高内存访问有效带宽,即提高命中率,进而提高cpu访问速度。

(3) 通过CPU亲和性,绑定网卡和线程到固定的core,减少cpu任务切换。特定任务可以被指定只在某个核上工作,避免线程在不同核间频繁切换,保证更多的cache命中。

(4) 通过无锁队列,减少资源竞争。cache行对齐,预取数据,多元数据批量操作。

(5) 通过轮询可在包处理时避免中断上下文切换的开销

3、DPDK 对 NXP LS 系列CPU支持的框架

PMD:Pool Mode Driver,轮询模式驱动,通过非中断,以及数据帧进出应用缓冲区内存的零拷贝机制,提高发送/接受数据帧的效率。

EAL:Environment Abstract Layer,环境抽象(适配)层,PMD初始化、CPU内核和DPDK线程配置/绑定、设置HugePage大页内存等系统初始化。

4、DPDK build  and  binary 

DPDK 官方文档:http://doc.dpdk.org/guides-17.05/index.html

DPDK源码(NXP提供):

git clone https://source.codeaurora.org/external/qoriq/qoriq-components/dpdk -b github.qoriq-os/
integration

先介绍下 编译DPDK出来的 binary 文件

关于如何 build DPDK 可以参考 LSDKUG_Rev19.09.pdf 第9章节。


http://www.ppmy.cn/news/219529.html

相关文章

DPU网络开发SDK—DPDK(八)

rte_eal_init() 接上次内容继续对rte_eal_init()所做的工作进行分析。 25. 内存堆初始化 调用rte_eal_malloc_heap_init()进行初始化。 如果进程类型是primary的,需要额外先做如下工作:初始化mem_config.malloc_heaps数组,初始化元素的数…

DPDK and XDP and ebpf

另外除了以下文章还有个ebpf https://qiita.com/sg-matsumoto/items/8194320db32d4d8f7a16 图片上传有问题,原文参考 https://cloud.tencent.com/developer/article/1484793 xdp其他文章 https://blog.cloudflare.com/l4drop-xdp-ebpf-based-ddos-mitigations/…

DPDK——概述

一、使用传统协议栈的问题 https://blog.csdn.net/u011426247/article/details/113374288 传统的协议栈结构如下: 其存在的不足如下: 异步模式的弊端 在没有请求到来的时候,线程将会休眠,当数据到来时,将由操作系统…

DPDK简介之二

前沿 DPDK是专为快速收发包所开发的一系列的库文件和驱动代码。可以在Intel的芯片上运行。可以用来在极短的时间里面完成收发包(一般低于80个周期)。可以运行第三方的快速路径栈而DPDK最大的优点就是改进小封包吞吐量与作业负荷效能,传统的网…

DPDK Mempool

mempool是DPDK提供的内存池,其用处有: 由于DPDK使用UIO让DMA将网卡中的数据直接拷贝至用户态,因此需要一块固定的区域提供给DMA重复利用内存,提高效率 结构 mempool的主要结构如下图所示。 mempool为每个注册的lcore都分配了一…

D8PSK

我所调试的部分是一个D8PSK的收发系统。按理说,D8PSK在本科通信原理学习中也是一个可以说是最简单的系统了,可是实现起来并没有那么简单。当然当时学通信原理时就知道事情没有那么简单,但是却不知道怎样开始做一个系统,现在算是补…

DPDK

摘要 http://www.dpdk.org/ Intel开源的x86平台上的报文处理套件。 要求 Kernel > 2.6.33 glibc > 2.7 Kernel需要支持UIO、HUGETLBFS、PROC_PAGE_MONITOR 如果使用HPET支持, Kernel需要支持HPET和HPET_MMAP 如果使用HPET timer和电源管理(power management)功能,…

DPDK AF_XDP

DPDK AF_XDP AF_XDP 是 kernel v4.18 新加入的一个协议族(如AF_INET), 主要使用 XDP 实现(下图是 XDP 的基本原理图). 核心原理是在 kernel NAPI poll 位置(网卡驱动内部实现, 为内核最早RX数据包位置)运行 BPF 程序, 通过不断调用 poll 方法, 最终将数据包送到正确的XDP程序处…