Hi all,
I have just published the new Keepalived release. The work done on this
release was focused on the VRRP framework, adding extension and probe the
code on a real world production env. I would like to specially thanks Paul,
<xerox@xxxxxxxxxx> for his time simulating heavy load on its network and
providing me access to his pre-production Internet Backbone.
The most important issue we observed was VRRP instance state flapping. We
simulated a heavy loaded network using juno & ping flooding to simultate
DOS. The constatation were : "hey VRRP is constantly flapping.... !!!!!
Whats the hell with this". The problem was not, as I previously posted, a
packet dropping issue due to a congested network, it was, it was... yes,
yes, it was :) => grrr a VRRP timer degradation that caused a too long
delay sending MASTER advert.... After the issue fixed, we probe on the
heavy loaded network (with 2 linux routers) => 80,000 pps, and no
problems... After a 3 days work fulltime on this issue, the bug was fixed
with one code line !!!! some time coding network engine is really
frustrating ! :)
The ChangeLog for this new release is :
2002-05-30 Alexandre Cassen <acassen@xxxxxxxxxxxx>
* keepalived-0.5.9 released.
* Added support to realserver_group. The work is not yet finished
since
it introduces new compilation design currently not supported. So
please
do not use yet.
* VRRP : Review the script notification. Moved to a script per VRRP
instance state => Created new keywords notify_backup|master|fault
to run a specific script during backup|master|fault state
transition.
* VRRP : Added support to quoted strings for
notify_backup|master|fault.
Can now launch script passing arguments.
See sample directory for examples.
* VRRP : Added a protocol extension called
"virtual_ipaddress_excluded".
This configuration block is similar to "virtual_ipaddress" block =>
those VIPs (called E-VIPs) are set throught netlink kernel
channel and
gratuitous arp are sent over each E-VIP. The only difference is that
they are not added into VRRP packet adverts. This can be usefull for
big env where you want to run many VRRP VIPs (200 for example).
VRRP packet lenght are limited to a 20 VIPs, if you want more
VRRP VIPs
add them to the "virtual_ipaddress_excluded" configuration block.
* VRRP : Added more logging facility when setting/removings VIPs &
E-VIPs.
* VRRP : Created a new FSM state called become_master in charge of
VIPs/E-VIPs/notifications handling. The goto_master state is now
a state
where the instance send an advert to force a new MASTER election
setting
the instance into a transition mode. If election success its finaly
transit to become_master state to own VIPs/E-VIPs and launch
scripts.
* VRRP : Force a new MASTER election when receiving a lower prio
advert.
* VRRP : Review the vrrp_scheduler.c to use more conventional FSM
design.
This reduce and beautifull the code.
* VRRP : Fixed a very noisy flapping issue observed on heavy
loaded env.
Simulating big traffic on a backbone figure out this flapping issue.
Added support to a TIMER_MICRO_ADJUST to prevent against timer
degradation.
This can be view as a DOS protection policy. VRRP MASTER timers
are adjusted
if they are too degradated, due to heavy loaded networking env
introducing
latency receiving/sending VRRP protocol adverts.
Thanks goes to Paul, <xerox@xxxxxxxxxx> for pointing it out and
providing
access to its Internet routing backbone.
Any comments will be welcome,
Best regards,
Alexandre
|