当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

我在我的家中安装了一个千兆网络,还有几个基于Ubuntu的盒子。出于完全的好奇心,我想检查两个盒子之间的速度。我没有任何速度或任何问题,它真的只是我很奇怪的怪胎。另外,也许结果会让我知道是否有改进的余地,或者我有错误配置的东西。

那么如何正确测试Ubuntu盒子之间的网络速度?

最佳解决方案

我使用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

客户端可以通过nc隧道通过dd管道传输千兆字节的零。

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得到megabits-per-second速度。上面的演示以944mbps运行。

次佳解决方案

同Oli对iperf的建议一样。只是想补充几点:

  1. 还有可以跨平台进行测试的Windows客户端。

  2. -t <seconds>更改测试长度。 -P <n>更改了同时连接的数量。例如,iperf -c [target IP] -P 10 -t 30一起测试10个连接30秒,并给出汇总结果以及10个单独的连接速度。

  3. 你不需要sudo。您可以简单地在http://iperf.fr/下载二进制文件。它应该工作。用wget下载它,用chmod使它可执行,并且可以直接运行二进制文件。它完美的作品。

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

第三种解决方案

使用this script,您可以轻松测试您的机器和某个远程主机之间的连接速度。使用示例:

$ scp-speed-test.sh user@remote_host 80000
  • user@remote_host是您的目标主机(您必须拥有ssh-access到该主机)

  • 80000是接收到远程主机的测试文件的近似大小(以kbs为单位)。这不是强制性的论据。

第四种方案

好的脚本。我喜欢我的结果以mbps为单位,所以我编辑了脚本的最后部分来做一些简单的划分。

# print result
echo ""
#echo "Upload speed:   $up_speed kB/s"
#echo "Download speed: $down_speed kB/s"

up_mbps=$(echo "scale=0; $up_speed/125" |bc)
down_mbps=$(echo "scale=0; $down_speed/125" |bc)

echo ""
echo "Upload speed:    $up_mbps mbps"
echo "Download speed:  $down_mbps mbps"

因此,而不是像这样的结果:

Upload speed:   9124.93 kB/s
Download speed: 13631.51 kB/s

它现在显示如下:

Upload speed:    114 mbps
Download speed:  88 mbps

第五种方案

如果你想测试你的以太网局域网,你可以使用Etherate这是一个免费的Linux CLI以太网测试工具:

https://github.com/jwbensley/Etherate

像iPerf这样的工具(非常好!)可以通过IP和TCP或UDP进行操作。 Etherate直接通过以太网/OSI第2层进行测试。

第六种方案

两台主机之间的带宽基准测试还有其他一些不错的命令行工具:

nuttcp

server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address

nepim

 server$ nepim
 client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address

goben

 server$ goben
 client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/414.html,未经允许,请勿转载。