-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
JSON output missing receiver bandwidth for UDP #584
Comments
Right. This is a very old bug, one that might have been present in iperf3 from the beginning. I sort of realized it (why didn't I file an issue for it?) when I was doing the work on #562. As you correctly pointed out, UDP tests don't break out the client-side and receiver-side statistics separately. I'm not sure if what's reported is the client, sender, or a mish-mash of the two. It's also not clear to me why TCP is different. It'd be a good thing if UDP tests could emit statistics output that's more like TCP in this respect (both sender and receiver side separately), although I'm not sure how to maintain some kind of compatibility with programs that consume the existing JSON output. (In #562, I fixed the human-readable output for UDP, which you presented in your first output snippet...I was less worried about backward compatibility in that case because programs shouldn't be trying to read that output anyway.) |
Is there any resolution done to this problem for UDP JSON output ? We are trying to parse out the JSON output but not sure what is what . A example JSON output is :-
but we are not sure what is this bytes thing , is it sent bytes or the received bytes ? |
When it will be fixed? I need to get receiver's bps from JSON output. Maybe there is some workaround? |
It's not on the roadmap right now. Fixing this actually requires a change to the state machine and protocol between the client and server. |
May I ask... If testing with UDP and I parse the json from the client side and get
Will I have a fair representation as to whether the transmission is sending and receiving data from the server side? What would I have to do to verify both directions os send/receive was successful? Parse the text output from:
|
@awardblvr : It depends I guess on how you define "successful". I suppose one measure might be that if |
Thanks..., I only want to know that I can read this ONE json output and see
BASICALLY that the packets transferred from server-->client and the packets
transmitted from client-->server arrived and that there were no lost
packets on either the client-received packets:
I believe that is:
end.sum.packets .
end.sum.lost_packets
end.sum_receiver.packets <--- NEW with PATCH
end.sum_receiver.lost_packets <--- NEW with PATCH
Please correct me if I am wrong!
"end": {
"sum": {
"end": 10.00,
"seconds": 10.00,
"bits_per_second": 1058280.26,
"bytes": 1322892,
"packets": 81,
"start": 0,
"jitter_ms": 0.056,
"lost_packets": 0,
"lost_percent": 0
},
"streams": [
{
"udp": {
"end": 10.00,
"socket": 5,
"seconds": 10.00,
"bits_per_second": 1058280.26,
"bytes": 1322892,
"packets": 81,
"out_of_order": 0,
"start": 0,
"jitter_ms": 0.056,
"lost_packets": 0,
"lost_percent": 0
}
}
],
"sum_sender": { <--- NEW with PATCH
"end": 10.00,
"seconds": 10.00,
"bits_per_second": 1058280.26,
"bytes": 1322892,
"packets": 81,
"start": 0,
"jitter_ms": 0,
"lost_packets": 0,
"lost_percent": 0
},
"sum_receiver": { <--- NEW with PATCH
"end": 10.00,
"seconds": 10.00,
"bits_per_second": 1058271.16,
"bytes": 1322892,
"packets": 81,
"start": 0,
"jitter_ms": 0.0568,
"lost_packets": 0,
"lost_percent": 0
}
Thanks
…-A
On Thu, Sep 13, 2018 at 10:04 AM Bruce A. Mah ***@***.***> wrote:
@awardblvr <https://github.com/awardblvr> : It depends I guess on how you
define "successful". I suppose one measure might be that if
end.sum.lost_packets is zero, then the receiver didn't detect any lost
packets. There are some edge cases around this however, mostly having to do
with what happens to packets that are still in flight when the client
declares the test completed.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#584 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AFE_e3JCfwSxfr_negMTgZCq8Z6xIkdlks5uapAegaJpZM4NgILa>
.
|
Encountered a similar issue with the lack of independent Tx/Rx B/Ws for UDP. I calculated RxMbps using the TxRate and Drop %.
Server --- 10Mbps ---SRX(Router) ---5Mbps -----Client I test both directions @ 20Mbps. iPerf3 UDP Upload: Remote: 10.8.8.100 iPerf3 UDP Download: Remote: 10.8.8.100 |
@hakujin22, "RxMbps = TxMbps - (TxMbps * (result.lost_percent / 100))" will probably not work in general. This is because the data is gathered only locally and not also from the remote end. E.g. in the data you sent, the server to client end to end link bandwidth is 5Mbps. However, assuming the Upload is server to client, you got 10Mbps on the server. This is because this is the measure of the server to SRX (router) throughput and not end to end. @bmah888, since the server data can be received using the
This approach seem to be backward compatible with current solution. If you approve this may be a usable approach I will try to implement it. |
Using latest version, with UDP testing, sending bandwidth is always 1Mbits/sec. Running
iperf3 -u
gives lower bandwidth for receiver, which makes sense given packet loss:However, the JSON output of
iperf3 -u -J
is apparently missing the bandwidth on the receiver. "bits_per_second" is the usual 1Mbit/sec of the sender:The TCP reports have the JSON keys "sum_sent" and "sum_received", however UDP reports only have "sum".
Is there any way to calculate the UDP receiver's bandwidth from the data provided in the JSON?
The text was updated successfully, but these errors were encountered: