为了测试我的网络,我想在两台主机之间发送 x MB/s。我知道它ping
可以用来发送大量数据,但我需要一个可以设置带宽的解决方案(不必非常精确)。
$ sendTrafic --throughput 10M 10.0.0.1
知道我该怎么做吗?我想过一个scappy
每秒运行 x 次的脚本,但应该有更好的东西。
编辑:我使用了以下解决方案:
# On receiving node:
iperf -s -u
# On sending node:
iperf -c <ip> -u -b 10m -t 30
它将第一台主机配置为 UDP 服务器,第二台主机配置为 UDP 客户端,以 10Mb/s 的速度发送 30 秒。
感谢大家的帮助。
答案1
如果您不想安装iperf
(恕我直言,这不是我过去使用过的最可靠的工具),您可以使用pv
andnetcat
您首先需要安装pv
and netcat
(它在大多数发行版中都可用)。
在接收站点上,您将需要在可访问端口上有一个侦听套接字:
#if you want the output you can remove the redirection or redirect it to a different file.
#if you want to listen to a TCP port below 1024 you will need to use root
nc -l 4444 > /dev/null
在发送机器上,您将使用以下命令:
dd if=/dev/urandom bs=1000 count=1000 | pv -L 10M | nc <ip> 4444
dd if=/dev/urandom bs=1000 count=1000
将发送 1000 个随机字符(1000 字节)的块 1000 次: 1000B * 1000 = 1MB 。您可以调整计数以增加发送的数据量。
pv -L 10M
:将写入速率限制为 10 兆字节/秒 (*1024)。
netcat <ip> 4444
将通过端口 TCP 4444 将数据发送到 IP。
您可以使用以下命令发送更多数据甚至真实文件:
cat /some/files| pv -L 1M | nc <ip> 4444
另一边:
nc -l 4444 > /some/destinationfiles