DPDK-Pktgen Ubuntu 安装与使用


系统及DPDK版本:

  • 系统:Ubuntu 2204
  • DPDK:21.11.1
  • Pktgen-DPDK:22.04.1

关于DPDK,其实Ubuntu的软件源中就已经包含了最新的Stable版本的DPDK,如果不想自己编译的话,直接 apt install dpdk 也是可以的(甚至更方便)。

安装编译依赖:

  • sudo apt install build-essential python3-pip python3-pyelftools libnuma-dev libpcap0.8-dev pkg-config
  • sudo pip3 install meson ninja

DPDK 编译安装:

apt 安装跳过此步

  1. 进入解压完毕的DPDK源码根目录
  2. meson -Dexamples=all build
  3. cd build
  4. ninja
  5. sudo ninja install
  6. sudo ldconfig

Pktgen-DPDK编译:

  1. 进入解压后的Pktgen源码根目录
  2. meson build
  3. cd build
  4. ninja
  5. 编译完毕后的pkten在[Pktgen dir]/build/app/pktgen

DPDK驱动绑定以及Huge Pages设置:

dpdk驱动绑定脚本:dpdk-devbind.py

一般用法:sudo dpdk-devbind.py -b=[driver name] [PCI device ID] [PCI device ID]

如:sudo dpdk-devbind.py -b=vfio-pci 06:00.0 07:00.0 #将PCI ID为06:00.0 07:00.0两张网卡驱动替换为vfio-pci

可通过sudo dpdk-devbind.py -s 查看当前PCI设备驱动状态:

sudo dpdk-devbind.py -s

Huge Pages 脚本:dpdk-hugepages.py

一般用法:sudo dpdk-hugepages.py -p [single huge page size(1G/256M)] --setup [totally huge pages size]

如:sudo dpdk-hugepages.py -p 1G --setup 8G #设置8页单页大小为1G,总共共8G的Huge Pages

和上面一样,也可以通过sudo dpdk-hugepages.py -s来查看当前huge pages设置状态

sudo dpdk-hugepages.py -s

Pktgen 简单使用:

驱动绑定以及Huge pages设置完毕后就可以启动Pktgen了,如下是一个简单启动命令:

sudo ./pktgen -l 1-3 -n 2 -- -T -P -m "2.0,3.1"

-l: 使用CPU Cores 1、2、3

-n: 内存通道(不知道具体影响,但是能找到的实例都设置了

--:此符号前是DPDK的配置参数,此符号后是DPDK Application的配置参数,此处即是Pktgen的参数

-T: 启用彩色文本输出

-P: Enable PROMISCUOUS mode on all ports

-m string: 重点!指定cpu core与NIC的绑定关系,格式参照下图:

-m 参数解释

回车!接下来就是见证奇迹的时刻:

Pktgen主界面

可能遇到的问题

DPDK 绑定网卡时报错如下:

Error: bind failed for 0000:04:00.0 - Cannot open /sys/bus/pci/drivers/vfio/bind: [Errno 2] No such file or directory: '/sys/bus/pci/drivers/vfio/bind'
Error: unbind failed for 0000:04:00.0 - Cannot open /sys/bus/pci/drivers//unbind: [Errno 13] Permission denied: '/sys/bus/pci/drivers//unbind'

解决: 系统未开启iommu,/etc/default/grub中修改添加GRUB_CMDLINE_LINUX=”intel_iommu=on”,重启即可。


发表评论

您的电子邮箱地址不会被公开。