我正在使用iperf3,这应该是iperf的重写版本。我使用这个的原因是因为当涉及到TCP和UDP吞吐量时,我喜欢iperf,现在我想测试我的端点之间的SCTP吞吐量。
然而,当我试图使用——sctp命令时,我看到人们一直在使用它说命令不可识别。是我正在使用的实现没有实现这个命令吗?
https://github.com/esnet/iperf这是我正在使用的实现,找不到任何与此相关的SCTP命令的明显文档。大多数SCTP iperf实现都是在测试中手动添加的,并且通常不提供源代码。
任何帮助将不胜感激!
获取支持linux内核lksctp module
的iperf副本。使用标准过程安装它。(如果失败,请告知错误信息以及操作系统和内核详细信息)。现在要在internet中使用SCTP,这些都是正确的语法。
创建SCTP服务器,
iperf -z -s
(-z
表示选择SCTP协议,-s
表示选择服务器)
创建SCTP客户端,
iperf -z -c <host address> -t <time duration for the connection in second>s -i <interval of the time to print the bandwidth in terminal in second>s
(-z
表示SCTP, -c
表示客户端。主机地址应该是已经运行iperf -z -s
的服务器的ip地址。-t
:指定通信时长。-i
是指定显示带宽的间隔)
的例子:
iperf -z -c 0.0.0.0 -t 10s -i 2s
这里的通信时间是10秒,它将报告每2秒间隔的带宽。
注:
(1)要为SCTP使用iperf,您必须在内核中启用SCTP模块并重新编译它。内核版本必须是2.6或更高版本。使用uname -a
或uname -r
检查。如果您有一个较低的内核,那么从Linux内核档案下载一个新的内核。通过启用SCTP来编译它。
首先通过在终端运行这两个命令来检查它是否已经启用。
modprobe sctp
lsmod | grep sctp If you get any output then SCTP is already enabled.
(2) If still iperf with -z
失败。试试下面的解决方案。如果两台机器分别是A和B。
首先使'A'为服务器,'B'为客户端。它不会成功的。所以
exit by using `ctrl + z` and kill iperf
using `pkill -9 iperf`.
然后使'B'为服务器,'A'为客户端。它可能会成功。如果再次失败,使用上述命令终止iperf,然后再次重复步骤1。它可能会成功。
(第二个解决方案适用于我与fedora 20
和kernel 2.6
及以上)
无法通过谷歌找到任何最近的答案,所以我想我会在这里为那些希望在RHEL/CentOS上安装Iperf3以使用SCTP的人留下一个答案。
您需要先安装lksctp-tools-devel,然后从源代码构建以启用SCTP支持。Yum Install Iperf3 3.17 with lksctp-tools-devel没有启用SCTP