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 protocol fails totally #36

Closed
bmah888 opened this issue Feb 28, 2014 · 5 comments
Closed

UDP protocol fails totally #36

bmah888 opened this issue Feb 28, 2014 · 5 comments

Comments

@bmah888
Copy link
Contributor

bmah888 commented Feb 28, 2014

From tru64.freak on December 09, 2010 08:04:11

What steps will reproduce the problem? 1. iperf3 -s
2. iperf3 -c server -u 3. What is the expected output? What do you see instead? no idea what to expect. What I get is:
client:
Connecting to host server, port 5201
error: Unable to read from stream socket: Connection refused

server:

Server listening on 5201

Accepted connection from 10.1.1.2, port 1840
Teh client has unexpectedly close the connection.
--------------- What version of the product are you using? On what operating system? iperf verion 3.0-BETA4 (2 Aug 2010)
OS: Tru64 v5.1 Please provide any additional information below. it is very disappointing that UDP does not work. As UDP is unreliable, and there is no compensation for packet loss/corruption as compared to TCP, it can be extremely useful in diagnosing connections that have problems.
It's a shame you haven't fixed this bug already.

Original issue: http://code.google.com/p/iperf/issues/detail?id=36

@bmah888
Copy link
Contributor Author

bmah888 commented Feb 28, 2014

From jdugan.esnet on December 15, 2010 11:31:10

UDP support is planned but is not yet finished. Patches are always welcome. "Talk is cheap. Show me the code." -- Linus Torvalds

@bmah888
Copy link
Contributor Author

bmah888 commented Feb 28, 2014

From kridgway@harris.com on June 22, 2011 01:28:18

UDP does not work because the -u parameter is not transferred correctly from the client to the server. The problem is with the use of getopt in iperf_api.c where the first parameter in params[0] is assumed to be the application name as it would be in agrv[]. The fix is to modify the loop on lines 623-630 as follows:

for (param = strtok(pstring, " "), n = 1, params = NULL; param; param = strtok(NULL, " ")) {
    if ((params = realloc(params, (n+1)*sizeof(char *))) == NULL) {
        i_errno = IERECVPARAMS;
        return (-1);
    }
    params[n] = param;
    n++;
}
params[0] = "";

@bmah888
Copy link
Contributor Author

bmah888 commented Feb 28, 2014

From andre.gomes.pt on July 04, 2011 17:31:31

For UDP testing, the server must also be initialized with -u option. So:

server> iperf -s -u
client> iperf -c -u

This works one time only. Issue 41 describes the problem. Hope this helps.

@bmah888
Copy link
Contributor Author

bmah888 commented Feb 28, 2014

From milutz on February 08, 2012 16:29:34

Re: comment 3

The referenced change is lines 623-630 as of r318 in the iperf_api.c file in the repo, but if your looking at the beta4 release its lines 590-597

If you don't have a diff tool handy, the changes are changing 'n=1' (not 0) in the first line and adding the 'params[0] = "";' after the block.

I can also confirm that this change (in my case solely made on the server side to the beta4 release) makes UDP mode work repeatedly, and without requiring specifying the "-u" when the server is run - its a surprisingly simple and potent fix!

@bmah888
Copy link
Contributor Author

bmah888 commented Feb 28, 2014

From jef.poskanzer on November 24, 2012 12:19:16

This one is fixed by the new JSON-based parameter transfer.

Status: Fixed

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

No branches or pull requests

1 participant