Known Issue: 100% packetloss on latency measurements 2x00/4x00 series
Posted by Wouter Debie, Last modified by Craig Godbold on 29 November 2023 01:53 PM

Brief summary

Observation A 100% packetloss when performing latency measurements
Affected version ByteBlower server 2x00/4x00 ( version 1.10.18 and later )
Cause Incorrect UDP checksum
Fix Waiting for fix from hardware vendor
Workaround IPv4: Set UDP checksum to 0x00 instead of automatic
IPv6: Set UDP length to UDPLength - 8

 

The issue

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.

Fix

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.

Workaround

IPv4 testing

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

IPv4Workaround

IPv6 testing

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

 

IPv6Workaround

BUT: Since the timetag is not covered by the UDPlength, some DUT can remove those last 8 bytes and remove the timetag.

(0 vote(s))
Helpful
Not helpful

Comments (0)

We to help you!