Skip to content

Missing or incorrect rtt, rttvar, pmtu, and snd_cwnd values during reverse mode TCP tests #803

Open
@ejv

Description

@ejv

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug:reverseBugs related to the use of --reverse

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions