Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iperf3.9 packet count for burst mode seems broken when sending UDP traffic #1192

Closed
funglee2k opened this issue Aug 21, 2021 · 3 comments
Closed

Comments

@funglee2k
Copy link

NOTE: The iperf3 issue tracker is for registering bugs, enhancement
requests, or submissions of code. It is not a means for asking
questions about building or using iperf3. Those are best directed
towards the iperf3 mailing list at [email protected] or
question sites such as Stack Overflow
(http://www.stackoverflow.com/). A list of frequently-asked questions
regarding iperf3 can be found at http://software.es.net/iperf/faq.html.

Context

For some reason, iperf3 -b packet count for burst mode seems broken. Iperf3 actually sends as fast as possible when I use the "packet count for burst mode".

  • Version of iperf3:
    iperf 3.9 (cJSON 1.7.13)
    Linux ip-172-31-33-18 5.4.0-1048-aws ability to run iperf on a single port #50-Ubuntu SMP Mon May 3 21:44:17 UTC 2021 x86_64
    Optional features available: CPU affinity setting, IPv6 flow label, SCTP, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing, authentication

Two files installed: https://iperf.fr/iperf-download.php#more-recent
ubuntu@ip-172-31-33-18:$ md5sum iperf3_3.9-1_amd64.deb
0b50b6f6a64b61c967f31304c2fffdb7 iperf3_3.9-1_amd64.deb
ubuntu@ip-172-31-33-18:
$ md5sum libiperf0_3.9-1_amd64.deb
3334f380a401bf23517fadec6238bb7e libiperf0_3.9-1_amd64.deb

  • Hardware:
    AWS EC2 instances

  • Operating system (and distribution, if any):
    Ubuntu 20.04 LTS
    ubuntu@ip-172-31-33-18:~$ uname -a
    Linux ip-172-31-33-18 5.4.0-1048-aws ability to run iperf on a single port #50-Ubuntu SMP Mon May 3 21:44:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Please note: iperf3 is supported on Linux, FreeBSD, and macOS.
Support may be provided on a best-effort basis to other UNIX-like
platforms. We cannot provide support for building and/or running
iperf3 on Windows, iOS, or Android.

Please fill out one of the "Bug Report" or "Enhancement Request"
sections, as appropriate.

Bug Report

  • Expected Behavior
    When using -b 10M/100, we expect to see iperf3 sending at 10Mbps with a burst of 100 packets.

  • Actual Behavior
    Iperf3 sending as fast as possible, for example

ubuntu@ip-172-31-33-18:~$ iperf3 -c localhost -4 -u -t 5 -l 1360 -R -b 10M/100 --get-server-output
Connecting to host localhost, port 5201
Reverse mode, remote host localhost is sending
[ 5] local 127.0.0.1 port 41672 connected to 127.0.0.1 port 5201
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 240 MBytes 2.02 Gbits/sec 0.002 ms 0/185276 (0%)
[ 5] 1.00-2.00 sec 280 MBytes 2.35 Gbits/sec 0.002 ms 0/215599 (0%)
[ 5] 2.00-3.00 sec 266 MBytes 2.23 Gbits/sec 0.002 ms 0/205015 (0%)
[ 5] 3.00-4.00 sec 274 MBytes 2.29 Gbits/sec 0.002 ms 0/210911 (0%)
[ 5] 4.00-5.00 sec 280 MBytes 2.35 Gbits/sec 0.003 ms 0/216159 (0%)


[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 1.31 GBytes 2.25 Gbits/sec 0.000 ms 0/1033000 (0%) sender
[ 5] 0.00-5.00 sec 1.31 GBytes 2.25 Gbits/sec 0.003 ms 0/1032960 (0%) receiver

Server output:

Server listening on 5201

Accepted connection from 127.0.0.1, port 60380
[ 5] local 127.0.0.1 port 5201 connected to 127.0.0.1 port 41672
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 240 MBytes 2.02 Gbits/sec 185400
[ 5] 1.00-2.00 sec 280 MBytes 2.35 Gbits/sec 215600
[ 5] 2.00-3.00 sec 266 MBytes 2.23 Gbits/sec 205000
[ 5] 3.00-4.00 sec 274 MBytes 2.29 Gbits/sec 210900
[ 5] 4.00-5.00 sec 280 MBytes 2.35 Gbits/sec 216100


[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 1.31 GBytes 2.25 Gbits/sec 0.000 ms 0/1033000 (0%) sender

iperf Done.

  • Steps to Reproduce
    ** Installation 3.9
    sudo dpkg -i libiperf0_3.9-1_amd64.deb iperf3_3.9-1_amd64.deb
    Selecting previously unselected package libiperf0:amd64.
    (Reading database ... 93789 files and directories currently installed.)
    Preparing to unpack libiperf0_3.9-1_amd64.deb ...
    Unpacking libiperf0:amd64 (3.9-1) ...
    Selecting previously unselected package iperf3.
    Preparing to unpack iperf3_3.9-1_amd64.deb ...
    Unpacking iperf3 (3.9-1) ...
    Setting up libiperf0:amd64 (3.9-1) ...
    Setting up iperf3 (3.9-1) ...
    Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
    Processing triggers for man-db (2.9.1-1) ...
    ubuntu@ip-172-31-33-18:$ iperf3 -v
    iperf 3.9 (cJSON 1.7.13)
    Linux ip-172-31-33-18 5.4.0-1048-aws ability to run iperf on a single port #50-Ubuntu SMP Mon May 3 21:44:17 UTC 2021 x86_64
    Optional features available: CPU affinity setting, IPv6 flow label, SCTP, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing, authentication
    ** start server
    ubuntu@ip-172-31-33-18:
    $ iperf3 -s -D
    ** Without the burst mode, everything looks normal. (The following is a working case without burst mode.
    ubuntu@ip-172-31-33-18:~$ iperf3 -c localhost -4 -u -t 5 -l 1360 -R -b 10M
    Connecting to host localhost, port 5201
    Reverse mode, remote host localhost is sending
    [ 5] local 127.0.0.1 port 41108 connected to 127.0.0.1 port 5201
    [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
    [ 5] 0.00-1.00 sec 1.19 MBytes 10.0 Mbits/sec 0.022 ms 0/919 (0%)
    [ 5] 1.00-2.00 sec 1.19 MBytes 10.0 Mbits/sec 0.027 ms 0/919 (0%)
    [ 5] 2.00-3.00 sec 1.19 MBytes 10.0 Mbits/sec 0.070 ms 0/919 (0%)
    [ 5] 3.00-4.00 sec 1.19 MBytes 10.0 Mbits/sec 0.074 ms 0/919 (0%)
    [ 5] 4.00-5.00 sec 1.19 MBytes 10.0 Mbits/sec 0.025 ms 0/919 (0%)

[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 5.96 MBytes 10.0 Mbits/sec 0.000 ms 0/4596 (0%) sender
[ 5] 0.00-5.00 sec 5.96 MBytes 10.0 Mbits/sec 0.025 ms 0/4595 (0%) receiver

iperf Done.

**With burst mode "-b 10M/10", it seems server sending really fast.

ubuntu@ip-172-31-33-18:~$ iperf3 -c localhost -4 -u -t 5 -l 1360 -R -b 10M/10
Connecting to host localhost, port 5201
Reverse mode, remote host localhost is sending
[ 5] local 127.0.0.1 port 42043 connected to 127.0.0.1 port 5201
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 201 MBytes 1.69 Gbits/sec 0.003 ms 0/155274 (0%)
[ 5] 1.00-2.00 sec 235 MBytes 1.97 Gbits/sec 0.003 ms 0/181217 (0%)
[ 5] 2.00-3.00 sec 232 MBytes 1.95 Gbits/sec 0.016 ms 38/178878 (0.021%)
[ 5] 3.00-4.00 sec 232 MBytes 1.95 Gbits/sec 0.003 ms 0/178992 (0%)
[ 5] 4.00-5.00 sec 236 MBytes 1.98 Gbits/sec 0.003 ms 0/181583 (0%)


[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 1.11 GBytes 1.91 Gbits/sec 0.000 ms 0/875960 (0%) sender
[ 5] 0.00-5.00 sec 1.11 GBytes 1.91 Gbits/sec 0.003 ms 38/875944 (0.0043%) receiver

iperf Done.

**With burst mode, -b 1M/10, iperf3 could not send at 1Mbps but 2.0Gbps

ubuntu@ip-172-31-33-18:~$ iperf3 -c localhost -4 -u -t 5 -l 1360 -R -b 1M/10 --get-server-output
Connecting to host localhost, port 5201
Reverse mode, remote host localhost is sending
[ 5] local 127.0.0.1 port 46677 connected to 127.0.0.1 port 5201
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 211 MBytes 1.77 Gbits/sec 0.041 ms 0/163023 (0%)
[ 5] 1.00-2.00 sec 237 MBytes 1.99 Gbits/sec 0.004 ms 0/183098 (0%)
[ 5] 2.00-3.00 sec 242 MBytes 2.03 Gbits/sec 0.003 ms 0/186494 (0%)
[ 5] 3.00-4.00 sec 252 MBytes 2.11 Gbits/sec 0.003 ms 0/194086 (0%)
[ 5] 4.00-5.00 sec 227 MBytes 1.90 Gbits/sec 0.018 ms 454/175425 (0.26%)


[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 1.14 GBytes 1.96 Gbits/sec 0.000 ms 0/902140 (0%) sender
[ 5] 0.00-5.00 sec 1.14 GBytes 1.96 Gbits/sec 0.018 ms 454/902126 (0.05%) receiver

Server output:
Accepted connection from 127.0.0.1, port 60376
[ 5] local 127.0.0.1 port 5201 connected to 127.0.0.1 port 46677
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 211 MBytes 1.77 Gbits/sec 163040
[ 5] 1.00-2.00 sec 237 MBytes 1.99 Gbits/sec 183090
[ 5] 2.00-3.00 sec 242 MBytes 2.03 Gbits/sec 186500
[ 5] 3.00-4.00 sec 252 MBytes 2.11 Gbits/sec 194080
[ 5] 4.00-5.00 sec 228 MBytes 1.91 Gbits/sec 175430


[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 1.14 GBytes 1.96 Gbits/sec 0.000 ms 0/902140 (0%) sender

iperf Done.

  • Possible Solution

Don't know.
Please submit patches or code changes as a pull request.

Enhancement Request

  • Current behavior

  • Desired behavior

  • Implementation notes

If submitting a proposed implementation of an enhancement request,
please use the pull request mechanism.

@funglee2k
Copy link
Author

iperf3.9-likely-bug.txt
iperf3.10.1-no-issue.txt

I checked out src code, and it seems that I can reproduce the bug with 3.9.

@davidBar-On
Copy link
Contributor

I believe this issue was fixed by PR #1090 in iperf3.10.

@funglee2k
Copy link
Author

funglee2k commented Aug 21, 2021

I believe this issue was fixed by PR #1090 in iperf3.10.

thanks David.

Please mark it duplicated and close it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants