Description
Context
When running TCP tests in reverse mode (--reverse
), the following values are not reported at the specified report interval and also return a value of 0
on the very last report:
pmtu
rtt
rttvar
snd_cwnd
Note: Running in the default standard mode (not reverse mode) seems to work perfectly fine and is not affected.
Command:
iperf3 --client <host> --interval 5 --time 15 --parallel 5 --reverse --json
Version of iperf3:
3.6
Note: The listener (on the remote side) is also running an identical operating system and build of iperf3 3.6.
Hardware:
Virtual machine
Operating system (and distribution, if any):
Ubuntu 18.04.1 LTS
Expected Behavior
Note: Per the command provided above, the test runs for a total of 15 seconds, reporting at 5 second intervals, therefore yielding 3 distinct reports.
In the default standard mode ("forward") the rtt
,rttvar
,pmtu
, and snd_cwnd
values are correctly reported. In reverse mode these values are either missing or returning an incorrect value of 0
.
This is demonstrated below.
// Default mode ("forward")
// Report 1 (5 seconds)
// Note: rtt, rttvar, pmtu, and snd_cwnd are correctly provided.
}, {
"socket": 8,
"start": 0,
"end": 5.00017,
"seconds": 5.0001702308654785,
"bytes": 10109056,
"bits_per_second": 16173938.939275235,
"retransmits": 0,
"snd_cwnd": 394240,
"rtt": 93604,
"rttvar": 78,
"pmtu": 1460,
"omitted": false
}, {
// Default mode ("forward")
// Report 2 (10 seconds)
// Note: rtt, rttvar, pmtu, and snd_cwnd are correctly provided.
}, {
"socket": 8,
"start": 5.00017,
"end": 10.000167,
"seconds": 4.9999971389770508,
"bytes": 9650432,
"bits_per_second": 15440700.03523943,
"retransmits": 0,
"snd_cwnd": 394240,
"rtt": 93594,
"rttvar": 78,
"pmtu": 1460,
"omitted": false
}, {
// Default mode ("forward")
// Report 3 (15 seconds, final report)
// Note: rtt, rttvar, pmtu, and snd_cwnd are correctly provided.
"omitted": false
}, {
"socket": 8,
"start": 10.000167,
"end": 15.000311,
"seconds": 5.0001440048217773,
"bytes": 9520896,
"bits_per_second": 15232994.875057576,
"retransmits": 0,
"snd_cwnd": 394240,
"rtt": 93994,
"rttvar": 683,
"pmtu": 1460,
"omitted": false
}, {
Actual Behavior
// Reverse mode
// Report 1 (5 seconds)
// Note: rtt, rttvar, pmtu, and snd_cwnd are missing in reverse mode.
}, {
"socket": 8,
"start": 0,
"end": 5.000139,
"seconds": 5.0001392364501953,
"bytes": 9054848,
"bits_per_second": 14487353.366468906,
"omitted": false
}, {
// Reverse mode
// Report 2 (10 seconds)
// Note: rtt, rttvar, pmtu, and snd_cwnd are missing in reverse mode.
}, {
"socket": 8,
"start": 5.000139,
"end": 10.000138,
"seconds": 4.9999990463256836,
"bytes": 9534976,
"bits_per_second": 15255964.509844305,
"omitted": false
}, {
// Reverse mode
// Report 3 (15 seconds, final report)
// Note: rtt, rttvar, pmtu, and snd_cwnd are now visible, however, they return values of 0.
// Note: In reverse mode, the 0 values seem to always be provided on the very last report.
}, {
"socket": 8,
"start": 10.000138,
"end": 15.000168,
"seconds": 5.0000300407409668,
"bytes": 9527936,
"bits_per_second": 15244606.008147953,
"retransmits": 0,
"snd_cwnd": 0,
"rtt": 0,
"rttvar": 0,
"pmtu": 0,
"omitted": false
}, {
Steps to Reproduce
- Clone iperf repo.
- Build (
./configure; make; make install
) on Ubuntu 18.04.1 LTS. - Run:
iperf3 --client <host> --interval 5 --time 15 --parallel 5 --reverse --json
I'm happy to provide further information if necessary. Thanks.