LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: keepalived and "stupid" router

To: <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: keepalived and "stupid" router
Cc: <keepalived-devel@xxxxxxxxxxxxxxxxxxxxx>
From: "Alexandre Cassen" <alexandre.cassen@xxxxxxxxxx>
Date: Tue, 19 Nov 2002 11:26:09 +0100 (MET)
Hi christian,

> My new Problem is that we have an Router (Bintec XL2) which does not react
> on "Gratious ARP". And the Network guys say they can not change the
> ARP-Timeout. So at the moment I am looking at 20-30 minutes timout :(
> ARP-Proxy would be to much for the Router as it has a lot to do.
>
> Has anybody got an idea ?

In fact this depend of the code your switch is running... grrr... (wonderful 
answer :) )

Some switch are not compliant with RFC and implements extension Gratuitous ARP 
recognation. The problem you seem to have is that your switch doesn t recognize 
VRRP gratuitous ARP. The problem can be :

1. Too many Gratuitous ARP are sent per VRRP VIP. Currently Keepalived code 
implements a 5 gratuitous ARP broadcast per VRRP VIPs. So you switch can 
consider this like a flood and put the port or VIP into its firmeware blocker 
table... Personnaly I really don t think the problem is here.

2. The gratuitous ARP broadcasted are not compliant with your switch firmeware 
code, it doesn t recognize the gratuitous ARP since it is not complete. 
According to RFC (and many constructor firmware specs) Gratuitous ARP are sent 
using 'ARPOP_REQUEST' option flags. This is what Keepalived code implements a 
broadcast of ARP-Request over each VRRP VIP. But some constructor with their 
mystic proprietary consideration want in addition a 'ARPOP_REPLY' that will 
validate the previous ARP-Request. So to sum the GARP code need to send 
ARP-Request + ARP-Reply... grrrrr very noisy, I agree...

=> I have tested the Keepalived/VRRP GARP code with 3Com,CISCO & Enterasys 
switch and they only need ARP-Request msg. So I implemented the code that way 
considering that those hardware were mostly used.

=> Your Bintec (I don t know this hardware) seems to handle Gratuitous ARP with 
the ARP-Reply need.

So I can see 2 solutions :) :

1. You go into the network room and burn the Bintec switch :). Replacing with 
another switch. You can even implement a topology with another network network 
segment. You put a HUB/Switch into one port of the Bintec core-switch and then 
you plug your Linux/Keepalived box into this new ethernet segment. That way 
Gratuitous ARP will not be sent to another Bintec-switch port, all GARP 
broadcast will be sent to the same Bintec-switch port.

2. I slightly enhance the Keepalived/VRRP code to extend it to the ARP-Reply. 
But this can be possible that your Bintec doesn t handle GARP that way too... 
But we can test. If this work I will apply into the new code.

=> I personaly prefer the 2. I am currently preparing the code to the next 
release, I have done many code-cleanup... I plan the publication for this week. 
So, when I will publish the new code, I will send you a patch to enable 
ARP-Reply into the VRRP Framework... And we will try.

> I have read here
> http://www.linuxvirtualserver.org/Joseph.Mack/HOWTO/LVS-HOWTO.failover.html#
> keepalived_vrrpd about VRRPD that it uses an Soft Ethernet with a MAC-Adress
> from the Private Range.

No. The current Keepalived/VRRP code doesn t handle VRRP Virtual-MAC (VMAC) 
support since this is not easy to do with Linux Kernel. It only deal with 
Gratuitous ARP that work nice and is quite enought since upper level topology 
mostly implements proxy-arp...

=> So to not complecate the code and keep it as portable as possible, I have 
decided to not spend time on this.

> I am a bit confused - is that a seperate Package ? I Found something here :
> http://www.linuxvirtualserver.org/~acassen/
> As far as I can see it is almost the same as in keepalived.

Ok. In fact on www.linux-vs.org/~acassen/ you can find 2 VRRP implementations. 
the vrrpd-0.6.tar.gz that is only a proof of concept tool and must be 
considered as unstable and not secure. And Keepalived. Keepalived implements a 
strong VRRP framework, I have spent long time debugging and secure auditing the 
code.....

=> If someone plan to use VRRP, Keepalived is hightly recommanded. I have leave 
the old previous code but, please, use Keepalived instead.

> Is somebody using this in Prodution ?

Yes. I cannot give a list (to protect user) but I have a huge list of people 
running the Keepalived code in production.

Best regards,
Alexandre



<Prev in Thread] Current Thread [Next in Thread>