keepalived-1.1.0 v1.1.0
authorAlexandre Cassen <acassen@freebox.fr>
Mon, 21 Jul 2003 15:32:20 +0000 (17:32 +0200)
committerAlexandre Cassen <acassen@freebox.fr>
Mon, 28 Sep 2009 08:58:58 +0000 (10:58 +0200)
commitccd28c6bd4275e175107a275464f3d53920d545e
treeb9495cb3ce62f2d960729f91f9aae5672eb96e28
parentf8952886fea4e53a2b73fe68b63cea0850858a07
keepalived-1.1.0

* keepalived-1.1.0 released.
* The release focus is : "High Performance"
* Name cleanup for the healthchecking directory. use check
  instead of healthcheck to be in conformance with watchdog and
  global software architecture.
* updated the SYNOPSIS file for documenting the table arg inside
  virtual/static_routes declaration. You can set routes refering
  to a specific TABLE-ID.
* Added a dummy debug var in the genhash declaration code to
  support compilation when compilation is done with debug flag.
* Added a set flag inside the real_server declaration correctly
  relfect the IPVS topology when inhibit_on_failure is used.
* fixed a daemon.h include depandency on signal.h
* VRRP : Added support to a global shared buffer for incoming
  advert handling. A new buffer is no longer allocated each time
  processing incoming advert, instead a shared room is used.
* VRRP : Added support to pre-allocated shared buffer for
  outgoing adverts. Each vrrp instance use a 'one time'
  allocated buffer instead of a 'all time' one.
* VRRP : Extended the socket pool design to support shared fd
  for the outbound channel. Now, socket pool create a sending
  socket and affect the fd returned to vrrp instances. This
  forces instances to use a shared socket instead of creating
  new socket for each outgoing adverts. The error detection
  is based on the incoming socket, so that outgoing socket is
  not created as long as incoming socket can not be created.
* Added support to netlink ipaddress as global keyword
  "static_ipaddress".
  look at doc/samples/keepalived.conf.static_ipaddress.
  IP addresses specified into this block will be added during
  daemon bootstrap and removed during daemon shutdown.
  Differential conf parsing is enabled for this block,
  removing/adding static_ipaddress can be done on the fly
  sending SIGHUP signal to daemon.
* VRRP : Extended track_interface to support multiple interface
  tracking. For those familiar with Nokia monitored circuit,
  this extention provide the same functionality.
  look at doc/samples/keepalived.conf.track_interface.
* VRRP : The VRRP instance lookup framework has been extended
  to use a o(1) scheduling design. Rewrote the whole instance
  lookup to use o(1) lookup instead of previous o(n^2). When
  receiving incoming adverts vrrp_scheduler performs a lookup
  over the VRID received to get local instance representation.
  Since the internal instance representation is an non-sorted
  linked list, then we run a lookup at o(n^2) complexity that
  introduce lantency and scheduling jitter side effect when
  runing large number of instances. To avoid this limitation
  a static hash table of 255 buckets were created. Since
  lookup is performed over VRID and since VRID is 8bit fixed,
  then the hashkey will be VRID. In order to extend code the
  hashkey is based on incoming fd too. Internally, a NIC is
  represented by a 2 fds : sending socket and receiving socket.
  Those fds are NIC specific so we are using them as a hash
  table lookup collision resolver. With this design we can now
  use the same VRID on different NICs. The collision design
  is a linked list so lookup is o(n^2) but due to low number
  of entries we can consider o(1) speed. But to reach best
  perf, differents VRID on all instance must be used. The
  design can be sumed by :
  VRID hash table :
     +---+---+---+---+---+---+.........+-----+
     | 1 | 2 | 3 | 4 | 5 | 6 |.........| 255 |
     +---+---+---+---+---+---+.........+-----+
           |       |
         +---+   +---+
         |fd3|   |fd1|
         +---+   +---+
                   |
                 +---+
                 |fd5|
                 +---+
  This hash table is filled during configuration parsing and
  VRRP instances are not duplicated but dynamically pointed
  to optimize memory.
* VRRP : The VRRP synchronization group lookup has been
  extended. During bootstrap a VRRP instance index is built upon
  sync_group instance name. This extension speed up
  synchronization since while synchronizing it perfoms the
  instance index instead of lookup by instance_name. The
  previous synchornization code has been rewritten to use this
  'list visiting' design for FAULT/BACKUP/MASTER states
  synchronization.
* VRRP : Optimized the vrrp_timer_vrid_timeout(...) to speed
  up vrid lookup over timeouted fd using a one pass lookup.
* Bradley Baetz, <bradley.baetz@optusnet.com.au> extended
  the scheduler framework to support child process handling.
  Adding support to new thread child facility for handling
  child processes, and modifying the scheduling select
  loop & signal handling to catch SIGCHLD, and call the
  appropriate process.
* Bradley Baetz, <bradley.baetz@optusnet.com.au> fixed
  the misc_check healthchecker using new thread child
  scheduling facility. Introduced a new keyword
  "misc_timeout" to kill processes which take too long
  time (default is delay_loop). SIGKILL is send to processes
  if they take too long time to shutdown.
* Bradley Baetz, <bradley.baetz@optusnet.com.au> extended
  daemon framework to block SIGCHLD to only receive it
  whn its unblocked in the scheduling loop.
* Extended healthchecker delay_loop to support long
  delay (ie: >1000s).
* VRRP : Added support to a shared kernel netlink command
  channel for setting ip address and routes.
* Extended the genhash code to support verbose output
  selection. command arg '-v' will generate a very verbose
  output.
* VRRP : Extended the logging code to select verbose log
  output or not. This selection is done by passing the
  '-D' option to command line while starting daemon.
  By default the output is silent.
* VRRP : Extended the gratuitous ARP framework to support
  shared buffer and shared socket. This increase performances
  for instances owning a bunch of VIP.
* VRRP : Extended the scheduling timer computation to support
  timer auto-recalibrating. While computing next instance
  timer, the scheduler will substract the time taken by
  previous advert handling. This provide software overhead
  adaptation. The recalibration is performed over usec timer
  to not pertube global scheduler.
* VRRP : Fixed a gratuitous ARP issue. Extended the
  ipaddress framework to point directly to interface
  reflected by netlink channel instead of storing device
  index. Extended the gratuitous ARP code to use new
  ipaddress structure and for sending garp over device
  ipaddess belong to. Needed if you run an instance on
  one device interface and set VRRP VIP on different
  interface.
* Extended watchdog framework to support polling delay
  selection via daemon command line. Created two new
  cmdline options :
       --wdog-vrrp  -R  Define VRRP watchdog polling
                        delay. (default=5s)
       --wdog-check -H  Define checkers watchdog
                        polling delay. (default=5s)
* Extended SMTP code to support bigger buffer while
  processing remote mta messages.
* Erik Barker, <erikb@netnation.com> extended initscript
  to support native redhat init functions.
* Extended the autoconf scripts and Makefile(s) to support
  code profiling. New configure option : --enable-profile
* list library has been extended to support multi-sized list &
  specific element deletion. Extended to return when list is
  empty. This reduce duplicated code to test is list is empty
  while processing.
* VRRP : Extended VRRP scheduler to support fd hash
  table design. Speed up instance lookup while
  computing instance sands. This offer o(1) design
  if we consider limited number of instances per
  device.
* VRRP : Extended vrrp new socket creation to replace
  refreshed instance fd into fd hash table index.
* VRRP : Extended vrrp framework to support
  blank virtual_ipaddress block, can be usefull
  if someone want to use just the VRRP advert
  as hello monitoring channel.
* Some code cleaning.
92 files changed:
CONTRIBUTORS
ChangeLog
Makefile.in
VERSION
configure
configure.in
doc/keepalived.conf.SYNOPSIS
doc/samples/keepalived.conf.track_interface
doc/samples/keepalived.conf.vrrp.static_ipaddress [new file with mode: 0644]
genhash/http.c
genhash/main.h
gmon.out [new file with mode: 0644]
keepalived.spec
keepalived/Makefile.in
keepalived/check/Makefile.in [moved from keepalived/healthcheck/Makefile.in with 96% similarity]
keepalived/check/check_api.c [moved from keepalived/healthcheck/check_api.c with 94% similarity]
keepalived/check/check_ci.c [moved from keepalived/healthcheck/check_ci.c with 98% similarity]
keepalived/check/check_daemon.c [moved from keepalived/healthcheck/check_daemon.c with 94% similarity]
keepalived/check/check_data.c [moved from keepalived/healthcheck/check_data.c with 97% similarity]
keepalived/check/check_http.c [moved from keepalived/healthcheck/check_http.c with 99% similarity]
keepalived/check/check_misc.c [moved from keepalived/healthcheck/check_misc.c with 55% similarity]
keepalived/check/check_parser.c [moved from keepalived/healthcheck/check_parser.c with 98% similarity]
keepalived/check/check_ssl.c [moved from keepalived/healthcheck/check_ssl.c with 99% similarity]
keepalived/check/check_tcp.c [moved from keepalived/healthcheck/check_tcp.c with 98% similarity]
keepalived/check/ipfwwrapper.c [moved from keepalived/healthcheck/ipfwwrapper.c with 97% similarity]
keepalived/check/ipvswrapper.c [moved from keepalived/healthcheck/ipvswrapper.c with 97% similarity]
keepalived/check/ipwrapper.c [moved from keepalived/healthcheck/ipwrapper.c with 98% similarity]
keepalived/core/daemon.c
keepalived/core/global_data.c
keepalived/core/global_parser.c
keepalived/core/layer4.c
keepalived/core/main.c
keepalived/core/pidfile.c
keepalived/core/smtp.c
keepalived/etc/init.d/keepalived.init
keepalived/etc/init.d/keepalived.rh.init [new file with mode: 0755]
keepalived/healthcheck/Makefile [deleted file]
keepalived/include/check_api.h
keepalived/include/check_ci.h
keepalived/include/check_daemon.h
keepalived/include/check_data.h
keepalived/include/check_http.h
keepalived/include/check_misc.h
keepalived/include/check_parser.h
keepalived/include/check_ssl.h
keepalived/include/check_tcp.h
keepalived/include/daemon.h
keepalived/include/global_data.h
keepalived/include/global_parser.h
keepalived/include/ipfwwrapper.h
keepalived/include/ipvswrapper.h
keepalived/include/ipwrapper.h
keepalived/include/layer4.h
keepalived/include/main.h
keepalived/include/pidfile.h
keepalived/include/smtp.h
keepalived/include/vrrp.h
keepalived/include/vrrp_arp.h
keepalived/include/vrrp_daemon.h
keepalived/include/vrrp_data.h
keepalived/include/vrrp_if.h
keepalived/include/vrrp_index.h [new file with mode: 0644]
keepalived/include/vrrp_ipaddress.h
keepalived/include/vrrp_iproute.h
keepalived/include/vrrp_ipsecah.h
keepalived/include/vrrp_netlink.h
keepalived/include/vrrp_notify.h
keepalived/include/vrrp_parser.h
keepalived/include/vrrp_scheduler.h
keepalived/include/vrrp_sync.h
keepalived/include/vrrp_track.h [new file with mode: 0644]
keepalived/libipvs/Makefile [deleted file]
keepalived/vrrp/Makefile.in
keepalived/vrrp/vrrp.c
keepalived/vrrp/vrrp_arp.c
keepalived/vrrp/vrrp_daemon.c
keepalived/vrrp/vrrp_data.c
keepalived/vrrp/vrrp_if.c
keepalived/vrrp/vrrp_index.c [new file with mode: 0644]
keepalived/vrrp/vrrp_ipaddress.c
keepalived/vrrp/vrrp_iproute.c
keepalived/vrrp/vrrp_ipsecah.c
keepalived/vrrp/vrrp_netlink.c
keepalived/vrrp/vrrp_notify.c
keepalived/vrrp/vrrp_parser.c
keepalived/vrrp/vrrp_scheduler.c
keepalived/vrrp/vrrp_sync.c
keepalived/vrrp/vrrp_track.c [new file with mode: 0644]
lib/list.c
lib/list.h
lib/scheduler.c
lib/scheduler.h