如何使用 TTCP 或 IPERF 执行网络环回测试?

如何使用 TTCP 或 IPERF 执行网络环回测试?

这台 PC 有两个千兆以太网端口。它们充当两个独立的网络适配器。我正尝试在两者之间进行简单的环回测试。我尝试过 TTCP 和 IPERF。它们让我很为难,因为我使用的是同一台物理 PC。

使用 pcattcp...

在接收端:

C:\PCATTCP-0114>pcattcp -r
PCAUSA Test TCP Utility V2.01.01.14 (IPv4/IPv6)
  IP Version  : IPv4
Started TCP Receive Test 0...
TCP Receive Test
  Local Host  : GIGA
**************
  Listening...: On TCPv4 0.0.0.0:5001

  Accept      : TCPv4 0.0.0.0:5001 <- 10.1.1.1:33904
  Buffer Size : 8192; Alignment: 16384/0
  Receive Mode: Sinking (discarding) Data
  Statistics  : TCPv4 0.0.0.0:5001 <- 10.1.1.1:33904
16777216 bytes in 0.076 real seconds = 215578.95 KB/sec +++
numCalls: 2052; msec/call: 0.038; calls/sec: 27000.000

C:\PCATTCP-0114>

在发射机端:

C:\PCATTCP-0114>PCATTCP.exe -t 10.1.1.1
PCAUSA Test TCP Utility V2.01.01.14 (IPv4/IPv6)
  IP Version  : IPv4
Started TCP Transmit Test 0...
TCP Transmit Test
  Transmit    : TCPv4 0.0.0.0 -> 10.1.1.1:5001
  Buffer Size : 8192; Alignment: 16384/0
  TCP_NODELAY : DISABLED (0)
  Connect     : Connected to 10.1.1.1:5001
  Send Mode   : Send Pattern; Number of Buffers: 2048
  Statistics  : TCPv4 0.0.0.0 -> 10.1.1.1:5001
16777216 bytes in 0.075 real seconds = 218453.33 KB/sec +++
numCalls: 2048; msec/call: 0.037; calls/sec: 27306.667

C:\PCATTCP-0114>

响应正常。但为什么显示 0.0.0.0?是不是只通过其中一个网络适配器?

我想要 10.1.1.1 作为服务器(接收方),10.1.1.2 作为客户端(发送方)。这些是手动分配给每个网络适配器的 IP 地址。如何在 TTCP 中指定这些地址?

IPERF 工具也有这个-B选项。不幸的是,我只能使用此选项将服务器绑定到 10.1.1.1 地址。我无法将客户端绑定到 10.1.1.2 地址。我可能做错了。该选项可以同时-B用于服务器端和客户端吗?客户端的语法是什么样的?

更新


从我发布的答案中可以看出,我已经弄清楚了如何使用 IPERF 来实现这一点。我研究了使用 TTCP 实现相同功能的方法,并找到了选项-a,但当我尝试使用它时,我在客户端收到了 Winsock 错误。

在服务器端:

C:\PCATTCP-0114>pcattcp -r -a 10.1.1.1
PCAUSA Test TCP Utility V2.01.01.14 (IPv4/IPv6)
  IP Version  : IPv4
Started TCP Receive Test 0...
TCP Receive Test
  Local Host  : GIGA
**************
  Listening...: On TCPv4 10.1.1.1:5001

在客户端:

C:\PCATTCP-0114>pcattcp -t 10.1.1.1 -a 10.1.1.2
PCAUSA Test TCP Utility V2.01.01.14 (IPv4/IPv6)
  IP Version  : IPv4
Started TCP Transmit Test 0...
TCP Transmit Test
  Transmit    : TCPv4 10.1.1.2 -> 10.1.1.2:5001
  Buffer Size : 8192; Alignment: 16384/0
  TCP_NODELAY : DISABLED (0)
*** Winsock Error: connect Failed; Error: 10061 (0x0000274D)

C:\PCATTCP-0114>

它看起来像是在尝试连接自身?

答案1

我查看了 IPERF 的帮助,我认为我现在已经明白了。

在服务器端:

C:\>iperf -s -B 10.1.1.1
------------------------------------------------------------
Server listening on TCP port 5001
Binding to local address 10.1.1.1
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[160] local 10.1.1.1 port 5001 connected with 10.1.1.2 port 35202
[ ID] Interval       Transfer     Bandwidth
[160]  0.0-10.0 sec   420 MBytes   352 Mbits/sec

s

在客户端:

C:\>iperf -c 10.1.1.1 -B 10.1.1.2
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
Binding to local address 10.1.1.2
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[132] local 10.1.1.2 port 35202 connected with 10.1.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[132]  0.0-10.0 sec   420 MBytes   352 Mbits/sec

C:\>

C

如果您发现此处任何错误,请告诉我。

我仍然想知道这是否可行,以及如何使用 TTCP 来实现?如果您知道答案,请发布。

答案2

IP 的工作方式是选择从源到目标的最佳路由。主机内的环回比主机外的以太网接口更好,因此即使您认为您正在测试连接两个网络适配器的以太网环路,您也会发现您的机器的两个 IP 地址之间发送的流量不会通过它,而是通过环回短路。

如果您希望流量在外部循环,则需要在设备上运行两个不同的路由实例,并且只让其中一个外部接口为它们所知。如果您的设备是路由器,则可以使用 VRF(虚拟路由设施)来分离路由实例。

由于您的机器是主机,因此最好的选择是安装虚拟机并将其中一个网络接口传递给虚拟机,而另一个网络接口由“裸机”处理。

相关内容