Make UDP tests honor the -w option for setting the socket buffer
size. This appears to be necessary on some long, high-bandwidth paths to get sane results, either by reducing packet loss or by somehow allowing the sending host of a test to go faster. Fixes #219.
This commit is contained in:
parent
d65986030a
commit
72ac83e7f2
@ -124,7 +124,7 @@ number of parallel client streams to run
|
|||||||
run in reverse mode (server sends, client receives)
|
run in reverse mode (server sends, client receives)
|
||||||
.TP
|
.TP
|
||||||
.BR -w ", " --window " \fIn\fR[KM]"
|
.BR -w ", " --window " \fIn\fR[KM]"
|
||||||
TCP window size / socket buffer size (this gets sent to the server and used on that side too)
|
window size / socket buffer size (this gets sent to the server and used on that side too)
|
||||||
.TP
|
.TP
|
||||||
.BR -M ", " --set-mss " \fIn\fR"
|
.BR -M ", " --set-mss " \fIn\fR"
|
||||||
set TCP maximum segment size (MTU - 40 bytes)
|
set TCP maximum segment size (MTU - 40 bytes)
|
||||||
|
@ -132,7 +132,7 @@ const char usage_longstr[] = "Usage: iperf [-s|-c host] [options]\n"
|
|||||||
" --cport <port> bind to a specific client port (TCP and UDP, default: ephemeral port)\n"
|
" --cport <port> bind to a specific client port (TCP and UDP, default: ephemeral port)\n"
|
||||||
" -P, --parallel # number of parallel client streams to run\n"
|
" -P, --parallel # number of parallel client streams to run\n"
|
||||||
" -R, --reverse run in reverse mode (server sends, client receives)\n"
|
" -R, --reverse run in reverse mode (server sends, client receives)\n"
|
||||||
" -w, --window #[KMG] TCP window size (socket buffer size)\n"
|
" -w, --window #[KMG] set window size / socket buffer size\n"
|
||||||
#if defined(HAVE_TCP_CONGESTION)
|
#if defined(HAVE_TCP_CONGESTION)
|
||||||
" -C, --congestion <algo> set TCP congestion control algorithm (Linux and FreeBSD only)\n"
|
" -C, --congestion <algo> set TCP congestion control algorithm (Linux and FreeBSD only)\n"
|
||||||
#endif /* HAVE_TCP_CONGESTION */
|
#endif /* HAVE_TCP_CONGESTION */
|
||||||
|
@ -228,6 +228,22 @@ iperf_udp_accept(struct iperf_test *test)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set socket buffer size if requested. Do this for both sending and
|
||||||
|
* receiving so that we can cover both normal and --reverse operation.
|
||||||
|
*/
|
||||||
|
int opt;
|
||||||
|
if ((opt = test->settings->socket_bufsize)) {
|
||||||
|
if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(opt)) < 0) {
|
||||||
|
i_errno = IESETBUF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(opt)) < 0) {
|
||||||
|
i_errno = IESETBUF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new "listening" socket to replace the one we were using before.
|
* Create a new "listening" socket to replace the one we were using before.
|
||||||
*/
|
*/
|
||||||
@ -291,6 +307,22 @@ iperf_udp_connect(struct iperf_test *test)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set socket buffer size if requested. Do this for both sending and
|
||||||
|
* receiving so that we can cover both normal and --reverse operation.
|
||||||
|
*/
|
||||||
|
int opt;
|
||||||
|
if ((opt = test->settings->socket_bufsize)) {
|
||||||
|
if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(opt)) < 0) {
|
||||||
|
i_errno = IESETBUF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(opt)) < 0) {
|
||||||
|
i_errno = IESETBUF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write a datagram to the UDP stream to let the server know we're here.
|
* Write a datagram to the UDP stream to let the server know we're here.
|
||||||
* The server learns our address by obtaining its peer's address.
|
* The server learns our address by obtaining its peer's address.
|
||||||
|
Loading…
Reference in New Issue
Block a user