首页 > 解决方案 > 如何在 DPDK testpmd 中设置从一个 NIC 到另一个 NIC 的循环转发模式?

问题描述

Testpmd 在 Hyper-V 虚拟机中运行,有两个网卡连接到“内部虚拟交换机”。我只想测试netvsc PMD的可用性。

./app/dpdk-testpmd -l 2,3 -- --total-num-mbufs=2048 -i --portmask=0x3 --port-topology=loop

我使用“start”或“start tx_first”,然后使用“show port stats all”进行检查。两个 NIC 上没有 Tx 包或 Rx 包。

然后我使用“set fwd txonly”,我可以在两个 NIC 上找到 Tx-packets,但这不是我想要的。那么我可以采取哪些步骤呢?

我要这个

标签: hyper-vdpdk

解决方案


通常,人们希望在与使用的一对端口相对的一侧使用数据包生成器testpmd。这种生成器开始发送数据包,同时testpmd简单地在一个端口上接收它们并从另一个端口传回它们。这就是port-topologytype的含义pairedport-topology默认情况下在testpmd. forward-mode反过来,另一个参数io默认设置为,这意味着在将接收到的数据包发回之前不会testpmd更改它们(例如,不交换 MAC 地址等)。

但是,在您的情况下,没有使用数据包生成器,这意味着它testpmd必须自己生成并发送一批数据包才能启动转发。这是通过指定 option 来完成的--tx-first

但是除了--tx-first出于某种原因省略 option 之外,您还可以使用 option --port-topology=loop,这可能是您的设置无法运行的原因。变体loop意味着由给定端口(例如,Port 0)接收的数据包必须从同一个端口(即,从Port 0)传回。您可能想要的是--port-topology=paired,正如我之前所说,默认情况下无论如何都会使用它。

因此,简而言之,您可能应该尝试testpmd如下运行:

./app/dpdk-testpmd -l 2,3 -- --total-num-mbufs=2048 -i --portmask=0x3 --tx-first

请注意,这种方式转发是自动启动的,但不会testpmd>提示您输入命令。如果您希望自动开始转发,同时获得交互式命令提示符,请尝试以testpmd这种方式运行:

./app/dpdk-testpmd -l 2,3 -- --total-num-mbufs=2048 -i --portmask=0x3 --tx-first --auto-start -i

推荐阅读