如何指定 iperf 客户端端口
Posted
技术标签:
【中文标题】如何指定 iperf 客户端端口【英文标题】:How to specify iperf client port 【发布时间】:2012-04-21 08:44:01 【问题描述】:有没有办法强制 iperf 客户端使用特定端口号作为其传出端口,而不是让 iperf 选择要使用的随机端口?
【问题讨论】:
【参考方案1】:iperf 3 用户文档 https://iperf.fr/iperf-doc.php 显示您可以使用 --cport <port>
和 -B --bind
选项分配特定的客户端端口。查看 iperf3 用户文档以获取更多详细信息。这是使用客户端端口号 5500 的示例。
服务器在 10.0.0.2 上运行:
> iperf3 -s
客户端在 10.0.0.1 上运行:
> iperf3 -c 10.0.0.2 -B 10.0.0.1 --cport 5500
【讨论】:
您愿意解释一下 -p 和 --cport 之间的区别吗?谢谢--cport
是 IPERF3 中指定客户端端口的选项,而 -p
或 --port
指定服务器端端口。更多信息见link。
值得注意的是,虽然测试的主要部分使用了这些端口,(-p 实际上,这些答案都不正确:它们指定了目标端口,而不是客户端端口。似乎客户端端口是随机的(但在一次运行中是一致的),没有办法指定它
2019 年更新:最新版本 --cport 选项用于指定客户端端口
【讨论】:
Iperf3 v3.1 引入了 --cport 选项来指定客户端端口。 您可以使用 -B-p, --port # $IPERF_PORT The server port for the server to listen on and the client to connect to. This should be the same in both client and server. Default is 5001, the same as ttcp.
-p 选项表示在客户端或服务器中使用的端口号。那么你需要为服务器端和客户端设置相同的端口。
例如 服务器
iperf -s -p 10000
客户
iperf -c SERVER_IP -p 10000 -t60
【讨论】:
-p 选项只指定服务器的端口。【参考方案4】:iperf -c <remoteip> --port <remoteport> -B <localbindip>:<localbindport>
我已经能够使用上述方法做到这一点。
【讨论】:
这应该是正确的答案。我可以用 iperf2 做到这一点。对于 iperf3,我使用 --cport【参考方案5】:这是我在特定主机 (224.25.7.0) 和端口 (25700) 上为我解决的方法:
sudo apt install perf
在每台机器上
在收听方面 (10.14.17.14):
iperf -s -u -B 224.25.7.0%eno1 -i 1 -p 25700
eno1为接口名(可替换为本机ip地址)
在发送方 (10.14.17.13):
iperf -c 224.25.7.0 -u --ttl 5 -t 5 -B 10.14.17.13 -p 25700
Docker
要在 docker 容器或 k8s pod 中进行测试,您可以使用 bagoulla/iperf 映像:
sudo docker run --net=host --rm bagoulla/iperf:2.0 -s -u -B 224.25.7.0%eno1 -i 1 -p 25700
您可以将 args 替换为您需要的任何内容
【讨论】:
【参考方案6】:尝试: 服务器端-
iperf -s -i1 -fm -w512k -p1
客户端-
iperf -c <ipadr> -i1 -fm -w512k -p1
-p 选项表示端口号。
【讨论】:
这不是一个明确的答案。您为客户端指定的端口是客户端在连接到目标主机时将使用的端口。这里的问题是我们是否可以强制客户端在本地端点上连接到特定端口。以上是关于如何指定 iperf 客户端端口的主要内容,如果未能解决你的问题,请参考以下文章