VRRP rfc3768 on VPP interfaces, VIP is dead.
Keepalived creates a separate vmac interface (macvlan) for the VIP. Everything looks correct in the kernel, show vrrp says healthy, but VPP has no idea the interface or address exist, because there's no way to make VPP aware of it. As a result, VPP drops every ARP request for the VIP 100% loss.
It only mirrors interfaces VPP itself explicitly owns, and by design never scans for whatever an external tool adds (as far as I know).
While this is a specific and rare case, it may not be obvious, as acceptable by configuration.
Steps to reproduce
# both nodes set vpp settings interface eth1 set interfaces ethernet eth1 address '192.0.2.<1|2>/24' set high-availability vrrp group VRRP2 interface 'eth1' set high-availability vrrp group VRRP2 vrid '2' set high-availability vrrp group VRRP2 priority '<200|100>' set high-availability vrrp group VRRP2 address '192.0.2.100/24' set high-availability vrrp group VRRP2 peer-address '<other node's address>' set high-availability vrrp group VRRP2 hello-source-address '<own address>' set high-availability vrrp group VRRP2 rfc3768-compatibility commit
vppctl show interface addr
eth1 (up): L3 10.130.2.1/24 L3 192.0.2.1/24 local0 (dn): tap4096 (up):
vppctl show ip fib 192.0.2.100/32
ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto flowlabel ] epoch:0 flags:none locks:[adjacency:1, default-route:1, lcp-rt:1, ]
192.0.2.0/24 fib:0 index:13 locks:3
interface refs:1 entry-flags:connected,attached, src-flags:added,contributing,active, cover:-1
path-list:[25] locks:2 uPRF-list:17 len:1 itfs:[1, ]
path:[28] pl-index:25 ip4 weight=1 pref=0 attached: oper-flags:resolved, cfg-flags:glean,
eth1
lcp-rt refs:1 entry-flags:local, src-flags:added,
path-list:[30] locks:1 flags:local, uPRF-list:24 len:0 itfs:[]
path:[33] pl-index:30 ip4 weight=1 pref=0 receive: oper-flags:resolved, cfg-flags:local,
[@0]: dpo-receive: 0.0.0.0 on local0
forwarding: unicast-ip4-chain
[@0]: dpo-load-balance: [proto:ip4 index:14 buckets:1 uRPF:17 to:[0:0]]
[0] [@4]: ipv4-glean: [src:192.0.2.0/24] eth1: mtu:2026 next:1 flags:[] ffffffffffff5254000101000806No specific /32 entry anywhere for 192.0.2.100
VPP does not know the VIP exists
There is a proposal to consider documenting this limitation and also to prohibit such configurations in the CLI.