问题描述
我在我的家中安装了一个千兆网络,还有几个基于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的建议一样。只是想补充几点:
-
还有可以跨平台进行测试的Windows客户端。
-
-t <seconds>
更改测试长度。-P <n>
更改了同时连接的数量。例如,iperf -c [target IP] -P 10 -t 30
一起测试10个连接30秒,并给出汇总结果以及10个单独的连接速度。 -
你不需要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层进行测试。
第六种方案
两台主机之间的带宽基准测试还有其他一些不错的命令行工具:
server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address
server$ nepim
client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address
server$ goben
client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address