hyper-v - 如何在 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,但这不是我想要的。那么我可以采取哪些步骤呢?
解决方案
通常,人们希望在与使用的一对端口相对的一侧使用数据包生成器testpmd
。这种生成器开始发送数据包,同时testpmd
简单地在一个端口上接收它们并从另一个端口传回它们。这就是port-topology
type的含义paired
,port-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
推荐阅读
- java - 列出 azure blob 容器中的文件时发生错误
- postgresql - 是否可以将现有数据库与 Strapi CMS 连接?
- javascript - 收到 200 响应后等待有效数据?
- python - 渲染 OBJ pyopengl
- python - 熊猫按某些 cumsum 拆分行
- symfony4 - 包含对象的对象的 Swagger 注释问题
- java - 如果没有 @Repository 注释,代码可以正常工作,而使用注释也可以正常工作。有什么区别?
- embedded - STM32F4-Disc1:keil MDK 版本 5 中的用户定义软件延迟不起作用
- oracle - 将 PostgreSQL 转储转换为 Oracle
- mongodb - MongoDB Scala 客户端 - java.lang.NoSuchMethodError: com.mongodb.MongoClientSettings.getUuidRepresentation()Lorg/bson/UuidRepresentation;