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

[WIP] Iperf3 support #43

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

Conversation

teto
Copy link
Member

@teto teto commented Mar 22, 2016

To test, you have to use iperf3 from https://github.com/RichardWithnell/iperf/tree/dce or https://github.com/teto/iperf/tree/matt
and compile it with
./configure CFLAGS="-g -U_FORTIFY_SOURCE -fPIC" LDFLAGS="-pie -rdynamic" --with-pic --disable-shared --disable-static(otherwise it generates a shell script one can't use within dce).

For now test fails with error 'Unable to create a new stream'.

Related to #27

@teto
Copy link
Member Author

teto commented Jun 13, 2016

I went back to this and found the culprit:
In iperf3, this failed because template = "/tmp/XXXXXX" and DCE does not create /tmp by default thus the call to mkstemp fails.

    /* Create and randomize the buffer */
    sp->buffer_fd = mkstemp(template);
    if (sp->buffer_fd == -1) {
        fprintf(stderr, "iperf: mkstemp\n");
        i_errno = IECREATESTREAM;
        free(sp->result);
        free(sp);
        return NULL;
    }

This is an issue that keeps hitting me in the back, I wish DCE could create some basic filesystem at the start, and simplify the way it handles path, wouldn't it be possible to use chroot everytime a node wakes up instead of regenerating filenames ?

Anyway, according to dce-iperf.cc,

  PointToPointHelper pointToPoint;
  pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));

but then iperf3 says that the sender sends more than 5Mbps (even though the receiver is ok), does it make sense ? are the extra packets rejected by the traffic control and reinjected later ?

    "end":  {
        "streams":  [{
                "sender":   {
                    "socket":   5,
                    "start":    0,
                    "end":  10.0001,
                    "seconds":  10.0001,
                    "bytes":    6320520,
                    "bits_per_second":  5.05637e+06,
                    "retransmits":  104,
                    "max_snd_cwnd": 146248,
                    "max_rtt":  241732,
                    "min_rtt":  125458,
                    "mean_rtt": 189064
                },
                "receiver": {
                    "socket":   5,
                    "start":    0,
                    "end":  10.0001,
                    "seconds":  10.0001,
                    "bytes":    6164136,
                    "bits_per_second":  4.93127e+06
                }
            }],
        "sum_sent": {
            "start":    0,
            "end":  10.0001,
            "seconds":  10.0001,
            "bytes":    6320520,
            "bits_per_second":  5.05637e+06,
            "retransmits":  104
        },
        "sum_received": {
            "start":    0,
            "end":  10.0001,
            "seconds":  10.0001,
            "bytes":    6164136,
            "bits_per_second":  4.93127e+06
        },
        "cpu_utilization_percent":  {
            "host_total":   0,
            "host_user":    13.4072,
            "host_system":  1.15032,
            "remote_total": 0,
            "remote_user":  10.1644,
            "remote_system":    0.815329
        }
    }
}

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

Successfully merging this pull request may close these issues.

1 participant