Mailing lists
About us
Technology Transfer
Secure Spread
What is Wackamole?

Wackamole is an application that helps with making a cluster highly available. It manages a bunch of virtual IPs, that should be available to the outside world at all times. Wackamole ensures that a single machine within a cluster is listening on each virtual IP address that Wackamole manages. If it discovers that particular machines within the cluster are not alive, it will almost immediately ensure that other machines acquire these public IPs. At no time will more than one machine listen on any virtual IP. Wackamole also works toward achieving a balanced distribution of number IPs on the machine within the cluster it manages.

What problems will Wackamole solve, and how is different from other tools?
Wakamole operates on a cluster of tightly connected machines (all on the same LAN). It works by managing a pool of IP addresses that you expect to be available at all times. These IP addresses are virtual (meaning no machine has any of those IPs as its default IP address). Wackamole will work to ensure that all of the IP addresses in the pool are assigned as virtual IPs to the machines in the cluster. No IP address is held by more than one machine and every IP address is available.

This allows you to run a service using multiple DNS RR records without the worry of one of the machines crashing -- if the machine crashes, the virtual IP addresses it was responsible for will be managed by the remaining machines in the cluster.

There is no other software like Wackamole. Wackamole is quite unique in that it operates in a completely peer-to-peer mode within the cluster. Other products that provide the same high-availability guarantees use a "VIP" method. A networking appliance assumes a single virtual IP address and "maps" requests to that IP address to the machines in the cluster. This networking appliance is a single point of failure by itself, so most industry accepted solutions incorporate classic master-slave failover or bonding between two identical appliances. These networking appliances can be:
  • simple commodity servers running user applications to provide high availability,
  • operating system features like IPVS under Linux or similar such features under Windows 2000 and FreeBSD,
  • hardware networking component like Foundry ServerIron, Cisco LocalDirector or other content-aware switch, Cisco Arrowpoint content switched, Extreme Networks' load-balancers and other such hardware products.

How it works:

Wackamole is an application that runs as root in a cluster to make it highly available. It uses the membership notifications provided by the Spread toolkit to generate a consistent state that is agreed upon among all of the connected Wackamole instances. Wackamole uses this knowledge to ensure that all of the public IP addresses served by the cluster will be covered by exactly one Wackamole instance.

Wackamole works towards achieving a balanced distribution of the clusters IP space between its instances. First, each instance immediately claims its preferred IP address. Then, if the number of virtual IP addresses acquired by any two machines does differ by more than one, Wackamole will work towards making the them differ by one or less. Wackamole has the ability to balance all the IP addresses at once or do it gradually.

Under what license(s) is Wackamole available?
Wackamole is released under the CNDS Open Source License. PLEASE READ THE LICENSE. Please remember that the author of this software maintains intellectual property rights and under his sole discretion can release this revision and any later revision under alternative licenses as he sees fit.
Important People
Wackamole is developed at the Center for Networking and Distributed Systems, The Johns Hopkins University.


Yair Amir
Ryan Caudy
Ashima Munjal
Theo Schlossnagle

For a complete list: See the NOTICE file that accompanies this distribution.

Wackamole: latest release
wackamole version 2.1.4 was released on December 28th, 2007 (12.28.2007).

Supporting the following platforms:
  • Linux (since release 1.0.0)
  • FreeBSD (since release 1.2.0)
  • Solaris 8 (since release 1.2.0)
  • MacOSX (since release 1.2.0)

Where can I get Wackamole?
Wackamole is publicly available, and is available here or from the following sites:
If you are interested in the development tree, a publicly available, read-only, anonymous CVS tree exists:
  • MODULE NAME wackamole
  • Browsable via web through viewcvs here.

ChangeLog (full version)
wackamole changes from 2.1.3 to 2.1.4
  • Fix interfaces with numbers in them on Solaris (e1000g0)
  • Get config.w32.h into the distribution (thanks Wez)

Assorted Documentation and Related Links

Where was Wackamole created?

Copyright © 1999-2003 The Johns Hopkins University. All rights reserved.
Questions or comments to:
TEL: (410) 516-5562
FAX: (410) 516-6134
Center for Networking and Distributed Systems
Computer Science Department
Johns Hopkins University
3400 N. Charles Street Baltimore, MD 21218-2686