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

UDP and IPv6 iperf3 fails with "unable to accept stream connection: Invalid argument" error #1809

Open
joudinet opened this issue Dec 13, 2024 · 1 comment

Comments

@joudinet
Copy link

Context

  • Version of iperf3:
iperf 3.17.1 (cJSON 1.7.15)
Linux testbed-1 6.11.11 #1 SMP Thu Dec 12 17:55:41 UTC 2024 armv7l
Optional features available: CPU affinity setting, IPv6 flow label, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing, authentication, bind to device, support IPv4 don't fragment, POSIX threads
  • Hardware:
    armv7l GNU/Linux

  • Operating system (and distribution, if any):
    Linux (Buildroot)

Bug Report

  • Expected Behavior
    Should be possible to run an iperf3 test in UDP on a IPv6 address.

  • Actual Behavior

$ iperf3 -c fe80::aabb:ccff:fedd:eeff%wifi0 -u -b 30M -V
iperf 3.17.1
Linux testbed-1 6.11.11 #1 SMP Thu Dec 12 17:55:41 UTC 2024 armv7l
Control connection MSS 1428
Setting UDP block size to 1428
Time: Fri, 13 Dec 2024 14:09:13 UTC
Connecting to host fe80::aabb:ccff:fedd:eeff%wifi0, port 5201
      Cookie: zqym5vfwatgl5kei56tgxsz34s7dn72mcl6a
      Target Bitrate: 30000000
iperf3: error - unable to read from stream socket: Resource temporarily unavailable
  • Steps to Reproduce
    • Get Ipv6 of target host (here, for the wifi0 interface):
$ ip -6 a show wifi0
5: wifi0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet6 fe80::aabb:ccff:fedd:eeff/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
  • Run an iperf3 server in the target host: iperf3 -s
  • From the client host, try to start an UDP iperf3 test using the IPv6 of the target host (and the client output network interface, here, it is also wifi0) :
$ iperf3 -c fe80::aabb:ccff:fedd:eeff%wifi0 -u -b 30M -V
iperf 3.17.1
Linux testbed-1 6.11.11 #1 SMP Thu Dec 12 17:55:41 UTC 2024 armv7l
Control connection MSS 1428
Setting UDP block size to 1428
Time: Fri, 13 Dec 2024 14:09:13 UTC
Connecting to host fe80::aabb:ccff:fedd:eeff%wifi0, port 5201
      Cookie: zqym5vfwatgl5kei56tgxsz34s7dn72mcl6a
      Target Bitrate: 30000000
iperf3: error - unable to read from stream socket: Resource temporarily unavailable
  • Possible Solution
    It works if the test is done using an IPv4 address of the target host or in TCP. It is the combination of UDP and IPv6 that fails to work.
davidBar-On added a commit to davidBar-On/iperf that referenced this issue Dec 14, 2024
@davidBar-On
Copy link
Contributor

"Resource temporarily unavailable (EAGAIN)" usually means that the read should be retried. I created a branch in my private iperf3 fork that changes the one try rcv() with Nread() that does such retries..

Can you build iperf3 for the Client from this branch, run the client using this version and see if the problem is fixed? (If you don't know how to build iperf3 from the branch, I can send you instructions.) If it is not fixed, please run the Client using --debug=3 and send the output for further analysis.

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