How is loss calculated for UDP performance tests?

One of the Performance metrics for UDP testing is loss. But, how is loss calculated?

A UDP performance test has two performance endpoints, a server and a client. Depending on whether it is an Upload or Download test, one endpoint generates and sends the UDP traffic and the 2nd endpoint receives it.

UDP is an unreliable transport, meaning that packets may not make it to its destination. UDP packets can be dropped by a network device along the way, usually due to congestion.

UDP packets may also arrive at their destination out of order. This means that a packet that was transmitted first, may not arrive at the destination first.

CDRouter Performance uses sequence numbers to keep track of each UDP packet sent/received. The receiving endpoint examines each UDP packet for this sequence number and determines if packets are missing or arrived in the wrong order. It counts both missing and packets arriving out of order as lost.

However, it should be noted that a packet that arrives out of order is still counted when calculating achieved bandwidth, whereas, a missing packet is not.

Can I determine if the loss is due to missing packets or out-of-order packets?

There is not a direct way of knowing, but you can make a strong assumption by looking at the results in a performance test log.

This is an example summary of UDP test that shows 0 loss. This test was configured to send at a rate of 500Mb/sec -


[  4] local 202.254.1.7 port 33056 connected to 202.254.1.23 port 19750
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  60.0 MBytes   503 Mbits/sec  0.013 ms  0/42715 (0%)
[  4]   1.00-2.00   sec  59.3 MBytes   497 Mbits/sec  0.020 ms  0/42215 (0%)
[  4]   2.00-3.00   sec  60.0 MBytes   503 Mbits/sec  0.016 ms  0/42734 (0%)
[  4]   3.00-4.00   sec  59.2 MBytes   497 Mbits/sec  0.019 ms  0/42180 (0%)
[  4]   4.00-5.00   sec  60.0 MBytes   503 Mbits/sec  0.015 ms  0/42741 (0%)
[  4]   5.00-6.00   sec  59.2 MBytes   497 Mbits/sec  0.015 ms  0/42181 (0%)
[  4]   6.00-7.00   sec  60.0 MBytes   503 Mbits/sec  0.016 ms  0/42736 (0%)
[  4]   7.00-8.00   sec  59.2 MBytes   497 Mbits/sec  0.018 ms  0/42182 (0%)
[  4]   8.00-9.00   sec  60.0 MBytes   503 Mbits/sec  0.015 ms  0/42739 (0%)
[  4]   9.00-10.00  sec  59.2 MBytes   497 Mbits/sec  0.019 ms  0/42181 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  0.019 ms  0/424604 (0%)
[  4] Sent 424604 datagrams

However, if the summary line showed the expected bandwidth, but it also showed some loss, then it was likely due to packets arriving out-of-order.


[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  0.020 ms  17354/340949 (5%)
[  4] Sent 340949 datagrams

And, if the results showed both lower than expected bandwidth and loss, it would likely mean that the loss was due to missing packets.


[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   496 MBytes   465 Mbits/sec  0.020 ms  17354/340949 (5%)
[  4] Sent 340949 datagrams