如何测试两个盒子之间的网络速度?

如何测试两个盒子之间的网络速度?

我家里有千兆网络和几个基于 Ubuntu 的盒子。出于好奇,我想检查一下这两个盒子之间的速度。

我没有遇到任何速度问题,只是我内心的极客很好奇。另外,结果可能会让我知道是否有改进的空间,或者我配置错了什么。

那么如何正确测试 Ubuntu 机器之间的网络速度呢?

答案1

我使用iperf。它是一种客户端服务器结构,您在一端以服务器模式运行它,并从网络另一端的另一台计算机连接到它。

两台机器都运行:

sudo apt-get install iperf

iperf我们将在其中一台机器上启动一个服务器:

iperf -s

然后在另一台计算机上,告知iperf作为客户端连接:

iperf -c <address of other computer>

在客户端机器上,你会看到类似这样的内容:

oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.04 GBytes    893 Mbits/sec

当然,如果您在服务器机器上运行防火墙,则需要允许端口 5001 上的连接或使用标志更改端口-p


nc如果您愿意,您可以使用普通的旧版本 (netcat) 执行几乎相同的操作。在服务器计算机上:

nc -vvlnp 12345 >/dev/null

客户端可以通过隧道传输一千兆字节的ddnc

dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345

作为 demod:

$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s

那里的时间是给定的,dd但它应该足够准确,因为它只能以管道所能承受的速度输出。如果您对此不满意,您可以在调用中完成整个过程time

请记住,结果以兆为单位字节所以乘以 8 得到一个百万-每秒的速度。上面的演示以 944mbps 的速度运行。

答案2

以下命令不需要额外的包,但需要 SSH 访问:

ssh [email protected] 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress

示例输出:

2992238080 bytes (3.0 GB) copied, 27.010250 s, 111 MB/s
5859375+0 records in
5859375+0 records out
3000000000 bytes (3.0 GB) copied, 27.1943 s, 110 MB/s

该命令将一个 3GB(1000^3 字节)的充满零的虚拟文件打印到远程服务器的标准输出,该文件通过 SSH 打印(传输)到本地服务器的标准输出,然后通过管道传输到本地/dev/null(即忽略)。您甚至可以在执行测试时查看测试的进度。

当然不如其他工具那么精确,但我的用例是调试备份过程,我想在不安装额外软件包的情况下测试网络速度是否是问题所在。

答案3

与 Oli 对 iperf 的建议相同。只想补充几点:

  1. 还有支持跨平台测试的 Windows 客户端。
  2. -t <seconds>更改测试长度。更改同时连接的数量。例如, 同时测试 10 个连接 30 秒,并给出汇总结果以及 10 个单独的连接速度。-P <n>iperf -c [target IP] -P 10 -t 30
  3. 你不需要 sudo。你可以直接在以下网址下载二进制文件:http://iperf.fr/。它应该可以工作。使用 下载它wget,使用 使其可执行chmod,然后您就可以直接运行二进制文件。它运行完美。

我发现,使用默认设置时,单个连接速度波动很大。但是,使用 3 个以上的并行连接时,我的千兆字节交换机上的结果更加一致。(始终为 910-920Mbps)

答案4

如果您想在较低级别测试以太网 LAN,您可以使用 Etherate,它是一个免费的 Linux CLI 以太网测试工具:

https://github.com/jwbensley/Etherate

将其与 iPerf 等工具(非常好!)混合使用,这些工​​具可通过 IP 和 TCP 或 UDP 运行。Etherate 可直接通过以太网/OSI 第 2 层进行测试。

相关内容