Sunday, May 13, 2018

iperf enhanced reports for UDP Latency

This is a pretty specific question, I hope no one minds. Given this is a very common tool, I thought I'd check with the gurus.

iperf 2.0.9+ supports additional information on UDP latency with the --enhancedreports or -e option.

Minimum example commands:

[Server] iperf -s -u -e -i 1 [Client] iperf -c 192.168.1.1 -u -e -i 1 

This information appears on the target, i.e. server side of the test:

------------------------------------------------------------ Server listening on UDP port 5001 with pid 5167 Receiving 1470 byte datagrams UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.1.1 port 5001 connected with 192.168.1.1 port 59592 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Latency avg/min/max/stdev PPS [ 3] 0.00-1.00 sec 122 KBytes 1.00 Mbits/sec 0.063 ms 0/ 6254 (0%) 659.932/659.882/660.502/ 8.345 ms 6252 pps [ 3] 1.00-2.00 sec 122 KBytes 1.00 Mbits/sec 0.020 ms 0/ 6250 (0%) 660.080/659.919/666.878/ 0.110 ms 6250 pps [ 3] 2.00-3.00 sec 122 KBytes 1.00 Mbits/sec 0.020 ms 0/ 6250 (0%) 660.113/659.955/660.672/ 0.047 ms 6250 pps [ 3] 3.00-4.00 sec 122 KBytes 1.00 Mbits/sec 0.022 ms 0/ 6250 (0%) 660.153/659.994/660.693/ 0.047 ms 6250 pps [ 3] 4.00-5.00 sec 122 KBytes 1.00 Mbits/sec 0.021 ms 0/ 6250 (0%) 660.192/660.034/660.617/ 0.049 ms 6250 pps 

I can find no documentation anywhere about the exact meaning of the Latency columns.

The values are also strange because,

  1. the default UDP bandwidth limit is 1 Mbit/s which means the latency cannot be measured in XXX milliseconds (ms) on a normally functioning network, only lower
  2. the first set of digits, e.g. "659." seem to increase monotonically, i.e. "659.", "660.", "661.", "662." as the test progresses
  3. those first sets of digits even keep increasing with subsequent tests! So, if it ended on "699.", then doing the client command again to start a new test, the result will start from "700."

I even briefly checked the source code and it only mentions "transit time".

Note. I like iperf rather than iperf3 for UDP testing. It seems far more reliable, with no spurious packet loss under ideal test conditions or default packet and buffer size issues in older versions. It is just not as convenient as iperf3 because it does not traverse NAT with a single port combination if you test in both directions.



No comments:

Post a Comment