如何在DPDK testpmd中设置从一个网卡到另一个网卡的循环转发模式?
How to set a loop forwarding mode from one NIC to another in DPDK testpmd?
Testpmd 在 Hyper-V VM 中 运行,并且有两个 NIC 连接到“internal virtual switch". I just want to test the availability of 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”,我可以在两个网卡上找到Tx-packets,但这不是我想要的。那么我可以做什么步骤呢?
DPDK应用testpmd不是一个会自动生成和发送数据包的数据包生成器。但是有一个选项 --tx-first
允许从每个接口发送突发(默认 32)个虚拟数据包。
由于您的环境是物理连接的,所以这应该可行。但我强烈建议首先检查 Linux 驱动程序是否 ping 或 arp 能够首先到达交叉连接的接口。
注:
- 我强烈建议阅读 testpmd doc 以了解更多详细信息
- 启用混杂模式使用选项
set promisc all on
通常,人们希望在与 testpmd
使用的一对端口相对的一侧使用数据包生成器。这样的生成器开始发送数据包,而 testpmd
只是在一个端口上接收它们并从另一个端口传回。这个是 what port-topology
of type paired
代表什么,这个port-topology
在testpmd
中默认使用。另一个参数 forward-mode
又默认设置为 io
,这意味着 testpmd
在发送数据包之前 不会 更改接收到的数据包返回(例如,不交换 MAC 地址等)。
但是,在您的情况下,没有使用数据包生成器,这意味着 testpmd
必须自己生成并发送一批数据包才能启动转发。这是通过指定选项 --tx-first
.
来完成的
但除了省略选项 --tx-first
之外,您出于某种原因使用了选项 --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
Testpmd 在 Hyper-V VM 中 运行,并且有两个 NIC 连接到“internal virtual switch". I just want to test the availability of 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”,我可以在两个网卡上找到Tx-packets,但这不是我想要的。那么我可以做什么步骤呢?
DPDK应用testpmd不是一个会自动生成和发送数据包的数据包生成器。但是有一个选项 --tx-first
允许从每个接口发送突发(默认 32)个虚拟数据包。
由于您的环境是物理连接的,所以这应该可行。但我强烈建议首先检查 Linux 驱动程序是否 ping 或 arp 能够首先到达交叉连接的接口。
注:
- 我强烈建议阅读 testpmd doc 以了解更多详细信息
- 启用混杂模式使用选项
set promisc all on
通常,人们希望在与 testpmd
使用的一对端口相对的一侧使用数据包生成器。这样的生成器开始发送数据包,而 testpmd
只是在一个端口上接收它们并从另一个端口传回。这个是 what port-topology
of type paired
代表什么,这个port-topology
在testpmd
中默认使用。另一个参数 forward-mode
又默认设置为 io
,这意味着 testpmd
在发送数据包之前 不会 更改接收到的数据包返回(例如,不交换 MAC 地址等)。
但是,在您的情况下,没有使用数据包生成器,这意味着 testpmd
必须自己生成并发送一批数据包才能启动转发。这是通过指定选项 --tx-first
.
但除了省略选项 --tx-first
之外,您出于某种原因使用了选项 --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