send garp to unicast peer when leaving fault state?

Olivier Matz <[email protected]> Mon, 20 May 2019 08:59:25 +0200
Newsgroups gmane.linux.keepalived.devel
Message-ID <20190520065925.dpbaxg235xuol2r3@platinum>
Hi,

I have an issue in the following VRRP scenario:
- unicast peering
- fast advertisements (100ms)

Machine A
    version 3
    state BACKUP
    interface eth0
    garp_master_delay 1
    virtual_router_id 1
    priority 200
    advert_int 100
    unicast_peer {
      192.168.0.1
    }
    virtual_ipaddress {
      10.200.0.2/24
    }
    preempt_delay 30

Machine B
    version 3
    state BACKUP
    interface eth0
    garp_master_delay 1
    virtual_router_id 1
    priority 100
    advert_int 100
    unicast_peer {
      192.168.0.2
    }
    virtual_ipaddress {
      10.200.0.1/24
    }
    preempt_delay 30


1/ initial state: A is master

2/ set eth0 down on machine A

   A switch to fault, B becomes master

   B sends advertisements to A, but after some time, the
   ARP cache expires, so B regularly sends ARP requests that
   have no answers.

4/ set eth0 up on machine A

   A changes to backup, and after ~300ms (down timer), it thinks there
   is no other master so it changes to master, bypassing the preemt_delay.

I workarounded the issue by using static ARP entries.

Is there a feature in keepalived to solve this issue? Should keepalived
send gratuitous ARPs when leaving the fault state when using unicast
peers? Or is it something that should be done in a user script?

Thanks,
Olivier