使用 TestPMD 测试 DPDK 性能和功能(Intel)
本文介绍数据平面开发套件 (DPDK) TestPMD 应用程序。它向您展示了如何构建和配置TestPMD,以及如何使用它来检查使用DPDK的不同网络设备的性能和功能。
TestPMD是随 DPDK 软件包一起分发的参考应用程序之一。其主要目的是在网络接口上的以太网端口之间转发数据包。此外,它还允许用户尝试不同驱动程序的某些功能,例如 RSS、过滤器和英特尔®以太网流量控制器。
我们还将查看 TestPMD 运行时命令行,该命令行可用于配置端口之间的数据包转发以及网络接口支持的其他功能。TestPMD 应用程序适用于所有版本的 DPDK。
测试PMD的示例设置
为了演示 TestPMD 的使用,我们将考虑两种典型的硬件设置。
在第一个设置(如图 1 所示)中,TestPMD 应用程序与两个连接到外部流量发生器的以太网端口一起使用。这允许用户在不同的网络工作负载下测试吞吐量和功能。
图 1.设置 1 – 使用外部流量生成器。
在第二种设置中,TestPMD 应用程序与环回模式下的两个以太网端口一起使用。这允许用户检查网络设备的接收和传输功能,而无需外部流量发生器。
图 2.设置 2 – 环回模式下的 TestPMD。
转发模式
TestPMD 具有可在应用程序中使用的不同转发模式。
- 输入/输出模式:此模式通常称为IO模式。它是最常见的转发模式,也是启动 TestPMD 时的默认模式。在 IO 模式下,CPU 内核从一个端口 (Rx) 接收数据包,并将其传输到另一个端口 (Tx)。如果需要,可以使用同一端口进行接收和传输。
- 仅 Rx 模式:在此模式下,应用程序会轮询来自 Rx 端口的数据包,并在不传输数据包的情况下释放它们。通过这种方式,它充当数据包接收器。
- 仅限 Tx 模式:在此模式下,应用程序生成 64 字节 IP 数据包,并从 Tx 端口传输这些数据包。它不处理数据包的接收,因此充当数据包源。
后两种模式(仅 Rx 和仅 Tx)对于分别检查数据包接收和传输非常有用。
除了这三种模式之外,还有其他转发模式 在TestPMD 文档中进行了说明。
编译和准备测试PMD
以下步骤用于编译和设置 TestPMD 应用程序:
从源目录编译 DPDK。这也会编译 TestPMD 应用程序:
初始化内核模块uio:
igb_uio插入内核模块:
保留巨大的页面内存供 DPDK TestPMD 应用程序使用。最简单的方法是使用DPDK附带的 dpdk-setup.sh 工具(有关此方面的更多信息,请参阅DPDK入门指南):
将网络接口端口绑定到igb_uio。对于此示例,我们将假定要使用的端口的 PCI 地址为 0000:83:00.1 和 0000:87:00.1:
运行测试PMD
TestPMD 可以使用一系列命令行参数在非交互模式下运行。它还可以在交互模式下运行,使用-i选项获取运行时命令行。运行时命令行允许动态配置 TestPMD:
在此示例中,-l选项指定逻辑内核。核心 12 用于管理命令行,核心 13 和 14 将用于转发数据包。-n 选项用于指定系统的内存通道数。双短划线将 DPDK 环境抽象层 (EAL) 命令与 TestPMD 应用程序命令分开,在本例中为交互模式的 -i 选项。运行应用程序时,您将看到一些如下所示的输出:
testpmd>提示符允许用户输入命令。这称为运行时命令行。例如,我们可以使用它来检查转发配置:
这表明TestPMD正在使用默认的io转发模式,如上所述。它还显示核心编号 13(这是我们从 中启用的第二个核心)将从端口 0 轮询数据包,将它们转发到端口 1,反之亦然。命令行上的第一个核心 12 用于处理运行时命令行本身。
要开始转发,只需键入 start:
然后,若要检查是否正在端口之间转发流量,请运行以下命令以显示应用程序正在使用的所有端口的统计信息:
此输出显示自数据包转发开始以来应用程序处理的数据包总数,以及两个端口接收和传输的数据包数。流量速率以每秒数据包数 (pps) 显示。在此示例中,在端口接收的所有流量都以 1488 万 pps 的理论线速转发。线速是给定数据包大小和网络接口的最大速度。
要停止转发,只需键入停止即可。这将停止转发并显示两个端口的累积统计信息以及总体摘要。
使用多核
对于单个内核不足以转发所有传入流量的情况,可以使用多个内核来处理来自不同端口的数据包。
在前面的示例中,核心 13 和 14 可用于转发数据包,但仅使用核心 13。要启用另一个内核,我们可以使用以下命令:
现在,核心 13 将从端口 0 接收数据包并在端口 1 上传输它们,核心 14 将从端口 1 接收数据包并在端口 0 上传输它们。
更改转发模式
如上所述,TestPMD 具有不同的转发模式。要将转发模式更改为仅 Rx,我们可以使用 set fwd 命令:
现在,如果我们查看端口统计信息,我们会看到仅显示收到的数据包。由于没有传输的数据包,因此 Tx 统计信息将保持在 0:
在 TestPMD 中获取帮助
TestPMD 为运行时可用的命令提供了联机帮助。这些部分分为几个部分,可以使用帮助进行访问。
以下部分提供了帮助:
例如,要获取有关显示统计信息和其他信息的命令的帮助,请执行以下操作:
结论
在本文中,我们介绍了如何编译,设置和运行TestPMD以及如何通过运行时命令行对其进行配置。