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