Berkeley Snoop Protocol Software

This is the compressed archive of the BSD/OS 3.0 version of the Berkeley Snoop protocol (Version 2.0) developed by the Daedalus Research Group at UC Berkeley. This is where you click to look at individual files without downloading the whole thing.

And this is where you click to get the obsolete BSD/OS 2.1 version. You should really not look at this!

The protocol improves TCP performance over networks with wireless links. It has two components---a transport-aware link protocol for data transfers to mobile hosts and a link-aware transport protocol using the Explicit Loss Notification (ELN) mechanism for transfers from mobile hosts to fixed hosts on the Internet.

More information can be found here or in the papers at the bottom of this page.

The software deploys a lightweight, soft-state agent at the base station. This directory contains new files snoop.{c,h} that perform the core functions of the protocol. Additions to tcp_input.c under #ifdef ELN perform the link-aware modifications to TCP that help it react differently to corruption, as opposed to network congestion. snoop.c includes base station code to signal ELN to the TCP sender at the mobile host in this case.

When the option MIPSNOOP is turned on, the Snoop protocol uses the Daedalus multicast-based handoff software to avoid packet loss and delay during handoff. It uses multicast of packets from the home agent to a small number of base stations to prime the snoop caches in anticipation of a handoff. ip_mobile.{c,h} has this code. It is also part of the Daedalus handoff distribution.

For experiments with wireless bit-errors, use the code in ber.{c,h} and rand.c. These are only for experiments and demos.

The files in this distribution are placed in i386/conf/, netinet/ and sys/

We have also included two user-level utilities for configuration and experiments: netopts and netperf.

netopts is used to configure snoop; netopts -help has more information. Some of the more useful options are:
"netopts -sena" to enable snoop protocol processing
"netopts -sdis" to disable snoop
"netopts -eena" to enable bit-errors at receiver
"netopts -edis" to disable
"netopts -e0 to set error rate

As the name implies, netperf is a network performance utility. The full release of netperf is available from

Technical details of the snoop algorithms and performance results and other items of interest are in:

1. Improving Reliable Transport and Handoff Performance in Cellular Wireless Networks by H. Balakrishnan, S. Seshan, and R. Katz, in ACM Wireless Networks, Vol. 1, No. 4, December 1995.

2. A Comparison of Mechanisms for Improving TCP Performance over Wireless Links by H. Balakrishnan, V. Padmanabhan, S. Seshan, and R. Katz, in IEEE/ACM Trans. on Networking, Vol. 5, No. 6, December 1997.

3. Challenges to Reliable Data Transport over Heterogeneous Wireless Networks by H. Balakrishnan, PhD Thesis, UC Berkeley, 1998. (Especially Chapters 4 and 5)

Also see http://daedalus.cs.berkeley.edu/ for other related work in the Daedalus project at Berkeley.

Please send any comments, suggestions, bug reports etc. to hari@lcs.mit.edu

Hari Balakrishnan