Re: send garp to unicast peer when leaving fault state?

Quentin Armitage <[email protected]> Wed, 22 May 2019 08:59:14 +0100
Newsgroups gmane.linux.keepalived.devel
Organization The Armitage family
Message-ID <[email protected]>
--===============8201942792376855646==
Content-Type: multipart/alternative; boundary="=-mAKmmMcYIBvh52Dp0LBG"


--=-mAKmmMcYIBvh52Dp0LBG
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit

On Mon, 2019-05-20 at 08:59 +0200, Olivier Matz wrote:
> 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
> 
Olivier,

This is clearly an issue, and keepalived currently has no direct mechanism to send gratuitous ARPs when leaving fault state.
I think your suggestion that keepalived when using unicasting should send gratuitous ARP messages when transitioning out of
fault state is the correct solution.

Could you please raise an issue at https://github.com/acassen/keepalived/issues including the details above so that we can
track the progress and anyone else experiencing the issue can add their own input.

Many thanks,
Quentin Armitage

--=-mAKmmMcYIBvh52Dp0LBG
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 7bit

<html><head></head><body bgcolor="#ffffff" text="#2e3436" link="#2a76c6" vlink="#2e3436"><div>On Mon, 2019-05-20 at 08:59 +0200, Olivier Matz wrote:</div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><pre>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

</pre></blockquote><div>Olivier,</div><div><br></div><div>This is clearly an issue, and keepalived currently has no direct mechanism to send gratuitous ARPs when leaving fault state. I think your suggestion that keepalived when using unicasting should send gratuitous ARP messages when transitioning out of fault state is the correct solution.</div><div><br></div><div>Could you please raise an issue at <a href="https://github.com/acassen/keepalived/issues">https://github.com/acassen/keepalived/issues</a> including the details above so that we can track the progress and anyone else experiencing the issue can add their own input.</div><div><br></div><div>Many thanks,</div><div>Quentin Armitage</div><div><br></div></body></html>
--=-mAKmmMcYIBvh52Dp0LBG--



--===============8201942792376855646==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============8201942792376855646==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Keepalived-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/keepalived-devel

--===============8201942792376855646==--