DPDK(25.03) 零基础配置笔记

DPDK 零基础配置笔记

DPDK(Data Plane Development Kit,数据面开发工具包)是一个高性能数据包处理库,主要用于绕过 Linux 内核网络协议栈,直接在用户空间对网卡收发的数据进行操作,以此实现极高的数据吞吐。
DPDK 的核心价值是:使用轮询 + 巨页内存 + 用户态驱动,提升网络收发性能
适用场景:高频交易、软件路由器、防火墙、负载均衡器等对网络性能要求极高的系统。

基本数据简要解释

  • igb_uio:一种用户态网卡驱动模块(Intel 提供的),DPDK 可以通过它绕过内核协议栈直接操作网卡。

  • vfio-pci:另一种用户态驱动方式,比 igb_uio 更现代,需开启 IOMMU 支持(虚拟化设备映射)。

  • hugepages(巨页内存):DPDK 用于分配高速大内存的一种机制,常用 2MB 或 1GB 大页,可减少页表开销。

  • meson:现代化构建系统(替代传统的 make),DPDK 自 20.11 起全面改用 meson+ninja 构建。

  • ninja:与 meson 搭配使用的高效构建工具。

  • usertools/dpdk-devbind.py:DPDK 提供的网卡绑定脚本,可切换网卡使用的驱动。

  • sk_buff:由网卡抓取数据到协议栈进行解析的一个 buffer

  • mbuf:dpdk 识别的数据包。对应 sk_buff。

  • pf_ring:轻量级数据包捕获工具,适合简单场景,但性能和灵活性不及 DPDK。
  • Netmap:高性能用户态网络框架,配置较 DPDK 简单,但功能较少。
  • DPDK:功能最全面,性能最优,但配置复杂,适合高性能需求场景。
  • KNI:内核网络接口,用于接受网卡数据给 DPDK 处理或处理后的数据将数据发送回内核。如将不需要处理的数据直接写回内核。

  • NIC:系统正常调用的与网卡沟通的硬件设备。

DPDK 优化过程(以网卡接受数据到应用程序为例)

传统内核路径:
网卡 -> DMA -> sk_buff -> 协议栈 -> copy -> 应用程序 (共 2 次拷贝)

DPDK 路径:
网卡 -> DMA (零拷贝) -> mbuf -> DPDK 应用程序 (仅 1 次拷贝)

环境搭建教程(以 VMware 虚拟网卡 + Ubuntu 24.10 为例)

VMware 添加独立虚拟网卡用于 DPDK 通信

虚拟机设置 -> 网路适配器 -> 添加 -> 桥接模式 -> 进入配置文件
-> 将新网卡的 “e1000” 单队列网卡更改为 “vmxnet3” 多队列网卡 -> 配置完成

巨页设置/挂载

DPDK需要大页内存来提高性能。
想要访问设置的巨页信息,就必须将巨页文件系统挂载。
原因:内核配置文件分配的巨页内存存在于内核中,用户态的 DPDK 只有通过挂载的 hugetlbfs 才能访问。

chipen@ubuntu:~$ tail -1 /etc/sysctl.conf
vm.nr_hugepages = 256	# 设置巨页大小, 条件允许的话, 1024 以上为宜
chipen@ubuntu:~$ sudo sysctl -p 
vm.nr_hugepages = 256
chipen@ubuntu:~$ cat /proc/meminfo | 

你可能感兴趣的:(DPDK,计算机网络)