IPv6 BFD interop with Huawei, checksum 0 UDP

Ville O vojamo at gmail.com
Wed Jun 12 13:32:10 CEST 2024


Hello,

At least some Huawei devices use a checksum of 0 for all IPv6 BFD UDP
packets after finishing Poll/Final.
All packets sent with states other than Up or with flags other than C
have the correct checksums.

IPv6 checksum issues with UDP seem to be rather common with network
vendors, for example Cisco has very relevant problems in IPv6 BFD [1]
and has added a command around this issue [2]; other vendors have
articles around various problems with the mandatory checksums.

Following the RFCs this should be a bug on the Huawei side since the
checksum is mandatory.
But getting Huawei to fix this could be difficult or impossible and I
personally do not have options to pursue that. These problem devices
are not under my control. I have no relationship with Huawei.

This issue could be worked around on the BIRD side at least on the
Linux platform.
RFC6936 allows [3] for hosts to enable accepting IPv6 UDP with a
checksum of 0 and this is implemented in Linux kernels from 3.16 with
sockopt "UDP_NO_CHECK6_RX".
I have tested that this indeed works: checksum 0 packets are received
to AF_INET6, SOCK_DGRAM sockets when it is enabled.

I wonder if it would be acceptable to enable this option on the IPv6
socket(s) used for BFD in BIRD, if supported by the platform?

I understand this idea may be controversial given it is not portable
and the reason for the workaround. At minimum I hope this post may be
informative for others failing to setup IPv6 BFD with Huawei.


Regards,

VO


[1] https://bst.cisco.com/quickview/bug/CSCtb33440
[2] https://bst.cisco.com/quickview/bug/CSCtb87599
[3] https://datatracker.ietf.org/doc/html/rfc6936#section-4


More information about the Bird-users mailing list