-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Bidirect mode implementation #780
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
Conversation
if !sender => sender_has_retransmits = -1
Add enum iperf_part
Iperf cannot be both reverse and bidirectional
Let us know the failed usecases. We've tried to design this as much user-friendly as possible. Ultimately, user should be able to do --bidir on any of his/her existing configs. |
You might have missed the rest of sentence...I wrote "It seems to work in the very limited test cases I have tried so far" (emphasis mine). I meant that I had tested only a few cases and it worked in all of those. |
|
Hope this can be added soon, bidir testing is essential for so many use cases. |
|
What's the latest status? Is the merge conflict resolved? We'd like to help test it out. |
|
I think you should be able to test it out now if you check out the @LikHait : Do you think you can try to resolve the merge conflicts in If it takes a little time for this change to settle down, this might result in me doing some 3.6.x releases off a new release branch created from the 3.6 tag. I guess I'm OK with that. |
|
I will try to do it in two weeks. |
|
@bmah888: Could you help with t_timer? Why is it fail?
|
|
@LikHait : Thanks for fixing the merge conflict. I'll look at why tests are failing, might be a little later this week (I hope). |
|
I'm not able to reproduce that test failure either. I've tried on a CentOS 7 VM with both GCC (whatever CentOS 7 comes with) and with clang-5.0 (what Travis CI was using when it failed). |
|
Merged. Let's see how well this fares on the mainline! Thanks for submitting an innovative implementation of this feature. |
|
@LikHait @bmah888 This new feature works great! I just used it to test a new fiber optic cable plant with two machines pushing line rate through a 40Gbps link in both directions at the same time. I never was able to get iperf2 to go full speed bidirectionally -- this new version of iperf3 was the only tool I could get working at line rate in both directions simultaneously to validate the link. Thank you! |
|
Thanks for the great work @LikHait and @bmah888. I'm seeing this while trying out the new |
|
Hello everyone, would be useful to add to -Y flag to get the same behavior as --bidir Thanks |
Do you use updated iperf build on both sides? |
|
unable to create new stream : Permission denied on my phone |
iperf3.6 doesn't support bidir feature. It's merged to master later |
|
Thanks for submitting this feature |
Aquantia actively uses iperf3 for our AQC 10G products verification and testing.
Must have testing in our case is bidirect traffic runs. We suffer from iperf3 missing this feature builtin.
Here is our proposal on implementation of --bidir (bidirectional) option for iperf.
We've tried to minimize the impact and reuse existing iperf3 apis an maximum.
Short overview of the solution:
int senderis replaced byenum iperf_mode modewith 3 states:iperf_stream: add new flag "sender"
Now streams are created depending on mode:
sender == 1and halfsender == 0. In future it'll be possible to create asymmetric bidir flows.iperf_new_stream (struct iperf_test * test, int s)changed toiperf_new_stream (struct iperf_test * test, int s, int sender)Summary information output is changed for each type of iperf_stream (senders and receivers)
Examples
iperf3 -c localhost --bidir -P 4Interval output:
Sum output:
Comparison with legacy runs
We did a verification on our Aquantia AQC107 10G NICs.
We compared legacy usecase (using two servers for bidirect) with
--bidir.Two servers run:
iperf3 -c server -R -P 4 -t 100
iperf3 -c 169.254.177.210 -p 5202 -P 4 -t 100
New, bidir run
iperf3 -c 169.254.177.210 --bidir -P 4 -t 100
We've added an extra column in output, Role:
[TX-C]. This helps to distinguish results data.Same data is available in updated json output.
CC @cail