{"id":27294566,"url":"https://github.com/nerdalert/iperf3","last_synced_at":"2025-04-11T22:53:26.012Z","repository":{"id":32574542,"uuid":"36157493","full_name":"nerdalert/iperf3","owner":"nerdalert","description":"Docker Build for IPerf3 a Network Performance and Bandwidth Testing App","archived":false,"fork":false,"pushed_at":"2024-05-07T01:36:39.000Z","size":9,"stargazers_count":200,"open_issues_count":6,"forks_count":52,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-11T22:53:21.390Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nerdalert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-05-24T05:22:34.000Z","updated_at":"2025-04-04T05:58:54.000Z","dependencies_parsed_at":"2022-09-01T10:41:10.195Z","dependency_job_id":"85836451-7f8e-40c0-bd0d-136d61cf12d9","html_url":"https://github.com/nerdalert/iperf3","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdalert%2Fiperf3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdalert%2Fiperf3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdalert%2Fiperf3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdalert%2Fiperf3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nerdalert","download_url":"https://codeload.github.com/nerdalert/iperf3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248492950,"owners_count":21113162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-11T22:53:24.953Z","updated_at":"2025-04-11T22:53:26.003Z","avatar_url":"https://github.com/nerdalert.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# iperf3\n\n[![iPerf3 image CI](https://github.com/nerdalert/iperf3/actions/workflows/build-image.yml/badge.svg)](https://github.com/nerdalert/iperf3/actions/workflows/build-image.yml)\n\n\n\n###  IPerf3 Docker Build for Network Performance and Bandwidth Testing\n\nImage on Docker Hub [hub.docker.com/r/networkstatic/iperf3/](https://hub.docker.com/r/networkstatic/iperf3/)\n\n### Run \n\n`docker run -it --rm -p 5201:5201 networkstatic/iperf3 --help`\n\n### Usage\n\nTo test bandwidth between two containers, start a server (listener) and point a client container (initiator) at the server.\n\n#### Iperf3 Server\n\nStart a listener service on port 5201 and name the container \"iperf3-server\":\n\n```\ndocker run  -it --rm --name=iperf3-server -p 5201:5201 networkstatic/iperf3 -s\n```\n\nThat returns an iperf3 process bound to a socket waiting for new connections:\n\n```\n-----------------------------------------------------------\nServer listening on 5201\n-----------------------------------------------------------\n```\n\n#### Iperf3 Client Side\n\nFirst, get the IP address of the new server container you just started:\n\n```\ndocker inspect --format \"{{ .NetworkSettings.IPAddress }}\" iperf3-server\n(Returned) 172.17.0.163\n```\n\nNext, initiate a client connection from another container to measure the bandwidth between the two endpoints.\n\nRun a client container pointing at the server service IP address. \n\n*Note* if you are new to Docker, the  `--rm` flag will destroy the container after the test runs. I also left out explicitly naming the container on the client side since I don't need its IP address. I typically explicitly name containers for organization and to maintain a consistent pattern.\n\n```\ndocker run  -it --rm networkstatic/iperf3 -c 172.17.0.163\n```\n\nAnd the output is the following:\n\n```\nConnecting to host 172.17.0.163, port 5201\n[  4] local 172.17.0.191 port 51148 connected to 172.17.0.163 port 5201\n[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd\n[  4]   0.00-1.00   sec  4.16 GBytes  35.7 Gbits/sec    0    468 KBytes\n[  4]   1.00-2.00   sec  4.10 GBytes  35.2 Gbits/sec    0    632 KBytes\n[  4]   2.00-3.00   sec  4.28 GBytes  36.8 Gbits/sec    0   1.02 MBytes\n[  4]   3.00-4.00   sec  4.25 GBytes  36.5 Gbits/sec    0   1.28 MBytes\n[  4]   4.00-5.00   sec  4.20 GBytes  36.0 Gbits/sec    0   1.37 MBytes\n[  4]   5.00-6.00   sec  4.23 GBytes  36.3 Gbits/sec    0   1.40 MBytes\n[  4]   6.00-7.00   sec  4.17 GBytes  35.8 Gbits/sec    0   1.40 MBytes\n[  4]   7.00-8.00   sec  4.14 GBytes  35.6 Gbits/sec    0   1.40 MBytes\n[  4]   8.00-9.00   sec  4.29 GBytes  36.8 Gbits/sec    0   1.64 MBytes\n[  4]   9.00-10.00  sec  4.15 GBytes  35.7 Gbits/sec    0   1.68 MBytes\n- - - - - - - - - - - - - - - - - - - - - - - - -\n[ ID] Interval           Transfer     Bandwidth       Retr\n[  4]   0.00-10.00  sec  42.0 GBytes  36.1 Gbits/sec    0             sender\n[  4]   0.00-10.00  sec  42.0 GBytes  36.0 Gbits/sec                  receiver\n\niperf Done.\n```\n\nOr you can do something fancier in a one liner like so (docker ps -ql returns the CID e.g. container ID of the last container started which would be the server we want in this case)\n\n```\ndocker run  -it --rm networkstatic/iperf3 -c $(docker inspect --format \"{{ .NetworkSettings.IPAddress }}\" $(docker ps -ql))\nConnecting to host 172.17.0.193, port 5201\n[  4] local 172.17.0.194 port 60922 connected to 172.17.0.193 port 5201\n[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd\n[  4]   0.00-1.00   sec  4.32 GBytes  37.1 Gbits/sec    0    877 KBytes\n[  4]   1.00-2.00   sec  4.28 GBytes  36.7 Gbits/sec    0   1.01 MBytes\n[  4]   2.00-3.00   sec  4.18 GBytes  35.9 Gbits/sec    0   1.01 MBytes\n[  4]   3.00-4.00   sec  4.23 GBytes  36.3 Gbits/sec    0   1.13 MBytes\n[  4]   4.00-5.00   sec  4.20 GBytes  36.1 Gbits/sec    0   1.27 MBytes\n[  4]   5.00-6.00   sec  4.19 GBytes  36.0 Gbits/sec    0   1.29 MBytes\n[  4]   6.00-7.00   sec  4.17 GBytes  35.8 Gbits/sec    0   1.29 MBytes\n[  4]   7.00-8.00   sec  4.17 GBytes  35.8 Gbits/sec    0   1.29 MBytes\n[  4]   8.00-9.00   sec  4.17 GBytes  35.8 Gbits/sec    0   1.29 MBytes\n[  4]   9.00-10.00  sec  4.22 GBytes  36.3 Gbits/sec    0   1.29 MBytes\n- - - - - - - - - - - - - - - - - - - - - - - - -\n[ ID] Interval           Transfer     Bandwidth       Retr\n[  4]   0.00-10.00  sec  42.1 GBytes  36.2 Gbits/sec    0             sender\n[  4]   0.00-10.00  sec  42.1 GBytes  36.2 Gbits/sec                  receiver\n\niperf Done.\n```\n#### Iperf3 Client Side\n\nYou can use a public iperf3 server to measure your Internet speed\n\n```\ndocker run  -it --rm networkstatic/iperf3  -c ams.speedtest.clouvider.net -p 5208  -R -P15\n```\nThe downstream speed is in the last line:\n\n```commandline\n[SUM]   0.00-10.00  sec  2.72 GBytes  2.34 Gbits/sec                  receiver\n```\nSo in this case: 2.34 Gbits/sec\n\nThanks to ESNET for re-rolling iperf from the ground up. It is a killer piece of software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerdalert%2Fiperf3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnerdalert%2Fiperf3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerdalert%2Fiperf3/lists"}