Download
Mailing lists
FAQ
What is mod_backhand?
mod_backhand is project that allows seamless redirection of HTTP requests from one web server to another. This redirection can be used to target machines with under-utilized resources, thus providing fine-grained, per-request load balancing of web requests.

Backhand is a project that was initiated in class at The Johns Hopkins University in The Department of Computer Science. After a simple proof of concept, written in C++, the project was pursued as a graduate qualifier project.

A proof of concept was realized, but a deployable product was needed. In order for public use, testing and, ultimately, acceptance, we wished to provide drop-in functionality in the most popular web server on the net.

mod_backhand was born. This drop-in module for the Apache Web Server provides a turnkey solution for intra-cluster redirection of HTTP on a per-request basis. The redirection is based on various system resources available within the cluster. This service is provided seamlessly, preserving remote host information for access/authentication purposes. As with the methodology of Apache, the redirection mechanism can be enabled or disable for individual directories.

System resources are announced by the module to the cluster via ethernet broadcasts and/or IP multicasts. These resources are made available to the decision making algorithms that drive mod_backhand.


What problems will mod_backhand solve, and how is different from other tools?
First, we must clear a common misconception. mod_backhand may allow you to better utilize your resources, but if your bottleneck lies in your bandwidth, you will not be able to push more information. mod_backhand cannot use more than 100% of your egress point(s) bandwidth.

However, if you have intensive CGI scripts or your machines are too weak to individually process the incoming requests, then mod_backhand is a solution.

There are other tools commercially and freely available to attempt to load balance incoming requests within a cluster of web servers. All of these tools come at a price, except mod_backhand. If mod_backhand is not enabled for a certain directory or if it decides not to redirect a request, there is no overhead, as it is a "part" of Apache (thanks to the module API and dynamically loadable shared objects).

Simply put, mod_backhand, can attempt to remedy the incorrect assignment of requests. In a grossly oversimplified scenario of two machines: if an incoming request is directed at machine B, and mod_backhand finds the available resources for machine A greater than the cost of forwarding from B->A plus the available resources on machine B, then it will be redirected to A.

This redirect comes at a small cost, but a calculated and understood cost that better utilizes available resources.

mod_backhand can be used by itself or in conjunction with most load balancing tools: Cisco's LocalDirector, LinuxDirector, naive DNS tricks (round robin of multiple IPs). The advantage of mod_backhand over these lower-level (OSI) tools, is that it works on a per-request basis. All of the previously mentioned tools work on the TCP/IP level, handling connections not requests. This is a concern when using the pipelined (multiple requests per connection) HTTP 1.0 (and 1.1) protocols.


How it works:
Backhand is built on top of the standard module API provided by Apache. The guts of this are available via source code, but you can also look at an implementation overview of mod_backhand.

Some interesting implementation designs in this project are that of candidacy functions rather than strict determination functions. This combined with the ability to cascade functions, provides extremely configurable run-time configuration alternatives while maintaining speed in the decision making process.


Under what license(s) is mod_backhand available?
mod_backhand is released under a Apache-Style license and can be considered Open Source software. 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. You can also visit the legal license for mod_backhand.

This license is modeled after the license presented for the Apache Project by the Apache Group.


Where can I get help setting up mod_backhand on my cluster of web servers?
Well, as it is open source, you can partially help yourself. But, if you require something more, help is available. After designing and testing this software, our group has learned to tackle certain obstacles. If you need to fine tune a cluster or make use of some of the features in Backhand for motives other than load balancing, we can help.

This project was developed at The Center for Networks and Distributed Systems at The Johns Hopkins University, contact us and we will work something out.

Here is a list of 3rd party companies that may assist in the installation and configuration of mod_backhand.

Important People
Creators:
Yair Amir
Theo Schlossnagle

Major Contributors:
Baruch Awerbuch
Ryan Borgstrom
Rob Butler (NT Backhand Broadcaster)

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

mod_backhand: latest release
mod_backhand version development was released on Jan 10th, 2003 (01.10.2003).

Supporting the following platforms:
  • Linux (since release 0.5)
  • Solaris (since release 1.0)
  • BSDI (since release 1.0.5)
  • (Net|Free|Open)BSD (since release 1.0.5)
  • Linux (alpha fix) (since release 1.0.7)
  • FreeBSD (since release 1.0.8)
  • FreeBSD-4.x (since release 1.2.0)
  • Windows NT through ntbhb (see related links) (since release 1.2.1)

Where can I get mod_backhand?
mod_backhand 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:
  • CVSROOT :pserver:anonymous@commedia.cnds.jhu.edu:/storage/cvs
  • MODULE NAME mod_backhand
  • Browsable via web through viewcvs here.

ChangeLog (full version)
mod_backhand changes from 1.2.2 to development
  • Update the hostname redirection to allow redirects all the time.

Assorted Documentation and Related Links

Where was mod_backhand created?

Copyright © 1999 Theo Schlossnagle. All rights reserved.