#dpdk #thread #driver #mbuf

rpkt-dpdk

DPDK的安全FFI库

1 个不稳定版本

0.1.0 2023年11月22日

#4#dpdk

Apache-2.0

160KB
4K SLoC

运行测试用例

  1. 将以下行添加到 ~/.cargo/config
[target.x86_64-unknown-linux-gnu]
runner = 'sudo -E'
  1. 测试用例必须在单个线程中运行,因此使用以下命令运行测试
cargo test -- --test-threads=1

示例

包含的示例用于测试各种DPDK相关功能的实现是否正确。

环回速度测试

使用两个服务器,其中一个启动 loopback_tx.rs 以生成流量。另一个启动 looback_rx.rs 以接收流量并在同一端口上回环流量。

Rss测试

  1. 使用 loopback_tx.rs 生成流量。
  2. 使用 rss_rx.rs 接收流量。此程序将打印出每秒钟每个队列接收到的IP/UDP流的数量。

mbuf的校验和卸载测试

  1. 使用 checksum_offload_tx.rs 生成流量。请注意,此示例接受0-5范围内的命令行参数(4/5生成带有尾随未使用字节的UDP数据包),并根据此参数生成不同类型的流量。
  2. 使用 checksum_offload_rx.rs 接收流量
  3. 此示例可以启用 multiseg 功能来运行。

例如,如果我们向UDP数据包的末尾添加未使用的字节,而tx卸载可以正确计算校验和值,rx校验和将报告无效的校验和。这是一个有趣的发现。

巨帧测试

  1. 如果我们使用Mellanox NIC,我们需要首先使用以下命令将mtu设置为9000
ip link set dev NAME mtu 9000

其中 NAME 是Linux内核中的接口名称,可以使用DPDK的 dpdk-devbind.py 脚本来检查。

DPDK设备

Intel E810

  1. 通过将以下行添加到 /etc/default/grubGRUB_CMDLINE_LINUX 字段来配置大页面和iommu
GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt hugepagesz=1G hugepages=16 default_hugepagesz=1G intel_pstate=disable"
  1. 运行以下命令以在grub系统中应用更改
grub-mkconfig -o /boot/grub/grub.cfg
  1. 重新启动系统,并使用以下命令检查内核参数是否生效
cat /proc/cmdline

Intel E810驱动程序兼容性

似乎为了正确使用Intel E810驱动程序,我们需要安装正确的设备驱动程序版本。似乎我们需要升级E810固件、升级Linux ICE驱动程序版本以及更新Intel DDP版本。

注意

仅将ICE驱动程序升级到1.11.14即可修复此问题。访问英特尔官方网站

https://www.intel.com/content/www/us/en/download/19630/intel-network-adapter-driver-for-e810-series-devices-under-linux.html

并下载最新的ICE驱动程序版本。

解压驱动程序,切换到 /src 文件夹,执行以下命令

make -j
sudo make install
sudo rmmod ice
sudo modprobe ice

要检查 ice 驱动程序版本是否正确升级,使用以下命令

modinfo ice
sudo ethtool -i DEVICE_NAME

依赖项

~0.2–2.7MB
~53K SLoC