mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/kube-vip/kube-vip.git
synced 2026-09-20 08:03:47 +08:00
This PR adds an explicit configuration option `vip_skipdad`. This allows for a proper behaviour in IPv6 networks with RT mode and ECMP. Without this option only one node can ever hold the same IPv6 VIP what defeats the purpose of ECMP. While the ARP mode currently has a recovery mode for failed DAD, RT mode misses it. It is also more feasible to use config option, as recovery mode in RT mode would always introduce a ~5s blackholing (we know there will be a conflict, so first attempt to add a VIP will fail and only the next one will force IFA_F_NODAD). For simplicitly we ignore IPv4/IPv6 checks, as kernel transparently strips IFA_F_NODAD from v4 addresses without throwing errors. For systems with IPv4 duplicate detection (called ACD and used e.g. in RHEL10's NetworkManager) this code has no effect as it's only userspace action and addresses we add via netlink bypass any check. First discovered on a dual-stack cluster with two routing-table-mode advertisers: the ingress VIP answered or timed out depending on which ECMP path the flow hashed to; with NODAD both advertisers accept traffic. Signed-off-by: Mat Kowalski <mko@redhat.com>