Is there a way to force an iperf client to use a specific port number as its outgoing port instead of letting iperf on choosing a random port to use?
Actually neither of these answers is correct: they specify the destination port, not the client port. It seems client port is random (but consistent in one run), without a way to specify it
Update 2019: recent versions --cport option to specify client port
iperf 3 user documentation https://iperf.fr/iperf-doc.php reveals you can assign a specific client port with --cport <port>
and -B --bind
option. Check iperf3 user documentation for further details. Here is an example of using client's port number 5500.
Server runs on 10.0.0.2:
> iperf3 -s
Client runs on 10.0.0.1:
> iperf3 -c 10.0.0.2 -B 10.0.0.1 --cport 5500
--cport
is an option in IPERF3 to specify client-side port while -p
or --port
to specify server-side port. More info see link. –
Boggle -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 option denotes the port # to be use in client or server.Then you need to set the same port to server side and client site.
For example Server
iperf -s -p 10000
Client
iperf -c SERVER_IP -p 10000 -t60
Actually neither of these answers is correct: they specify the destination port, not the client port. It seems client port is random (but consistent in one run), without a way to specify it
Update 2019: recent versions --cport option to specify client port
iperf -c <remoteip> --port <remoteport> -B <localbindip>:<localbindport>
I have been able to do this using the above.
This how I solved it for me on specific host (224.25.7.0) and port (25700):
sudo apt install perf
on each machine
On listen side (10.14.17.14):
iperf -s -u -B 224.25.7.0%eno1 -i 1 -p 25700
eno1 is the interface name (you can replace by the ip address of the machine)
On sending side (10.14.17.13):
iperf -c 224.25.7.0 -u --ttl 5 -t 5 -B 10.14.17.13 -p 25700
Docker
To test in a docker container or k8s pod, you can use the bagoulla/iperf image:
sudo docker run --net=host --rm bagoulla/iperf:2.0 -s -u -B 224.25.7.0%eno1 -i 1 -p 25700
You can replace the args to what ever you need insteadd
try: server side-
iperf -s -i1 -fm -w512k -p1
client side-
iperf -c <ipadr> -i1 -fm -w512k -p1
-p option indicates port no.
© 2022 - 2024 — McMap. All rights reserved.