在同一台 PC 上连接的两个 LAN 适配器之间进行 ping 操作?

在同一台 PC 上连接的两个 LAN 适配器之间进行 ping 操作?

我在同一台 PC 上安装了 2 个 1Gbps USB 以太网适配器,它们通过电缆连接在一起,我想在它们之间执行 ping 操作(也许使用 iperf)以快速验证性能。我已为它们分配了同一子网上的不同静态地址,但我的 ping 操作是在网络堆栈中处理的,不会通过硬件。

我如何强制 ping 通过硬件然后通过适配器之间的线路出去?

背景:我有几十个不同年龄的 1G USB RJ-45 以太网适配器,我试图在不将流量放到 LAN 上的情况下快速识别出那些死机和速度慢的适配器。

顺便说一句,这是一台带有 WSL Ubuntu 20.04 的 Win10 PC,因此任何通过任一域运行的解决方案对我来说都可以。

编辑:两个适配器都在 USB3 端口上。

答案1

WSL 不会有帮助。但是,如果你可以在硬件上启动实际的 Linux(并且你的 USB 适配器实际上受支持...),则可以使用“网络命名空间”轻松分离两个接口:

ip addr add fd00::1/64 dev usb1
ip addr add fd00::2/64 dev usb2

ip netns add foo
ip link set usb2 netns foo

ip netns exec foo iperf3 -s &
iperf3 -c fd00::2

答案2

老实说,最好的办法是购买第二台机器,或者使用一台或两台虚拟机,并将以太网适配器通过 USB 级别连接到虚拟机(不是桥接/呈现为虚拟接口)......


阅读“主机模型“ 概念。

从根本上来说:

  • 这 ”弱宿主模型“意味着系统将接受任何接口上配置的任何地址的流量,无论它是在哪个接口上接收的。
  • 这 ”强宿主模型“意味着系统只会接受发往数据包到达的接口上专门配置的地址的流量。

这种情况在你的情况下会进一步恶化,因为你正在通信的目标地址实际上是在本地系统上,因此无需通过有线方式传输数据。

ping可以使用 Windows 实用程序的选项设置源地址-S srcaddr,但我不指望这对你来说会很好,因为它没有将传输绑定到特定的接口……即使有选项可以做到这一点,如上所述,你可能正在使用弱主机模型,数据包将“短路“并且永远不会出现在网络上……您可能会对 Linuxping实用程序更加满意-I,但我不知道 WSL 在这个级别上是如何工作的。


ping并不是性能/功能的绝佳指标,因此一旦确认链接,我建议iperf3也运行。

相关内容