Known Issue: 100% packetloss on latency measurements 2x00/4x00 series
Posted by Wouter Debie, Last modified by Dries Decock on 03 April 2018 02:05 PM
Connect 2 ByteBlower ports back-to-back. Configure on these ports a frameblasting flow and activate a latency measurement. The report at the end of the test will show a packetloss of 100%.
What went wrong
Lets re-run the test and take a capture of the flow. Opening the capture in wireshark shows us the problem. The UDP checksums are incorrect. Why? In the ByteBlower server 2100 series it is the network-card itself that injects the timestamp to perform the latency measurement. This injection by the card allows us to have a 10ns precision. But the card performs the UDP checksum BEFORE it injects the timestamp. This results in an incorrect checksum. Your device-under-test (DUT) may drop those packets because of the incorrect checksum.
Our hardware vendor of the network-card already confirmed the issue and is working on a fix. Once this fix is released to us we will apply it to our ByteBlower software and release an update. We do have a workaround this issue.
In IPv4 the UDP checksum is optional. By setting it to 0 you disable the checksum and thereby also the checks on the receiving side. So your DUT won't drop the packets. The screenshot below shows you where you can set the UDP checksum to 0. Go to the Frame-view and under the "Layer 4" tab you can change the checksum
In IPv6 the UDP checksum in mandatory. So you can't use the same trick as on IPv4. Here we will have to change the UDP length. As explained in following article ( Background: Adding FrameTags to your ByteBlower frame - structure and behaviour ) the timetag is added normaly at the end of the UDP packet. If we substract the length of a timetag ( 8bytes ) from the UDP length then the timetag will not influence the UDP checksum and therefor the checksum will still be correct when the timetag is added by the network-card. The screenshot below shows you where and how you can change the UDP length value. Go to the Frame-view and under the "Layer 4"-tab you can change the Total Length. In this example the frame is 64Bytes. The UDPLength is dus 0x0A and minus 8 makes a UDPLength of 0x02
BUT: Since the timetag is not covered by the UDPlength, some DUT can remove those last 8 bytes and remove the timetag.