如何从命令行在以太网链路上创建大量流量?

如何从命令行在以太网链路上创建大量流量?

当我的一台服务器通过其所在的网络链路传输大量数据时,我似乎遇到了网络问题。我确信过去我能够从命令行将随机数据传输到给定的 IPv4 地址或 MAC 地址,持续固定时间。这是一种非常简单的方法,可以测试特定链路上的流量负载是否是问题的原因。

我并不担心计算链接速度,我只是想尝试使链接饱和或至少重载(~1​​00Mbps)。能够使用基本工具从典型的 Ubuntu 16.04 命令行轻松完成此操作,让我能够轻松地 ssh 到一台机器(设置 GNU Screen 会话)并定位另一台机器。然后我可以通过链接或主机找出其中哪一个(如果有)触发了我的网络问题。

答案1

可以使用 Netcat 来完成此操作。

在目标机器(将接收数据)上设置 netcat 以在端口(下例中为 12345)上接收数据并将其通过管道传输到 /dev/null。使用 /dev/null 是因为它应该是发送数据的最快的地方,如果使用磁盘上的文件,则可能会减慢传输速度。

nc -vvlnp 12345 >/dev/null

现在在源机器(将发送数据)上设置 netcat 以将一组数据传输到目标机器。如果您想确保不进行压缩,这可以是 /dev/zero 或 /dev/random。在下面的示例中,1M 位数据块被发送 1k 次到地址 10.10.0.2 的目标。

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

答案2

这可以使用 iperf 实现。更多详细信息请参见此处https://www.freebsd.org/cgi/man.cgi?query=iperf&sektion=1&manpath=freebsd-release-ports。它支持包括 Windows 在内的多个平台,因此不同平台之间也不会出现任何问题。

相关内容