The Dynamic Source Routing Protocol
The Dynamic Source Routing protocol (DSR) is a simple and efficient
routing protocol designed specifically for use in multi-hop wireless
ad hoc networks of mobile nodes. DSR allows the network to be
completely self-organizing and self-configuring, without the need
for any existing network infrastructure or administration.
DSR has been implemented by numerous groups, and deployed on
several testbeds. Networks using the DSR protocol have been connected
to the Internet. DSR can interoperate with Mobile IP, and nodes using
Mobile IP and DSR have seamlessly migrated between WLANs, cellular
data services, and DSR mobile ad hoc networks.
The
protocol is composed of the two main mechanisms of "Route Discovery"
and "Route Maintenance", which work together to allow nodes to
discover and maintain routes to arbitrary destinations in the ad hoc
network. All aspects of the protocol operate entirely on-demand,
allowing the routing packet overhead of DSR to scale automatically
to only that needed to react to changes in the routes currently in
use.
The protocol allows multiple routes to any destination and
allows each sender to select and control the routes used in routing
its packets, for example for use in load balancing or for increased
robustness. Other advantages of the DSR protocol include easily
guaranteed loop-free routing, support for use in networks containing
unidirectional links, use of only "soft state" in routing, and very
rapid recovery when routes in the network change. The DSR protocol
is designed mainly for mobile ad hoc networks of up to about two
hundred nodes, and is designed to work well with even very high
rates of mobility.
Definition of the DSR protocol
DSR is officially defined by an Internet-Draft. As of August 2003, the most
current is "The Dynamic Source Routing Protocol for Mobile Ad Hoc
Networks (DSR)", Johnson, Maltz, Hu, 16-Apr-03, draft-ietf-manet-dsr-09.txt
DSR is on its way to becoming an RFC. Once released, this will be the
official definition of DSR.
The most current explanation of the DSR protocol can be found in
David B. Johnson, David A. Maltz, and Josh Broch. DSR:
The Dynamic Source Routing Protocol for Multi-Hop Wireless Ad Hoc
Networks. in Ad Hoc Networking, edited by Charles E. Perkins, Chapter
5, pp. 139-172, Addison-Wesley, 2001.
Working with DSR simulations
The following resources might be helpful for working with DSR as
implemented in the ns-2 simulator.
- A
HREF="http://www.monarch.cs.rice.edu/ftp/monarch/wireless-sim/ns-cmu.ps">
Wireless and Mobility Extensions to ns (ps file) This
documenation extends what is available in the ns-2 mannual
documentation.Revised 8/5/99
- DSR ns-2 FAQ by Bryan
Hogan . Discusses implementation of
DSR inside ns2.27.
Implementations of DSR
Unless noted, I have not reviewed or run these implementations. For
other implementations of DSR and other protocols, see also Wikipedia
Ad hoc protocols implementations.
- The Click DSR Router Project at the PecoLab at UC Boulder. Main Home Page A userlevel
implementation of DSR implemented with the Click framework. Runs on
top of Linux.
- The MicroSoft
Research Mesh Connectivity Layer (MCL)
MCL implements a layer 2.5 multi-hop
routing protocol on Windows XP. This protocol is derived from the DSR
protocol and is called Link Quality Source Routing (LQSR)
protocol. LQSR supports for both single and multiple radios per node
and a variety of link quality metrics including ETX, RTT, Packet Pair
and hop count. In addition, it also includes a new link quality metric
we call Weighted Expected Transmission Time (WCETT). WCETT takes link
bandwidth, link loss rate, and channel diversity into account when
selecting links in a multi-radio mesh network.
- The
Monarch Project implementation is a set of kernel patches that
supports FreeBSD 3.3 and 2.2.7. Josh Broch and I are the primary
authors of this code. The implementation is quite old now, and I do
not know how much work would be required to make it operate with
FreeBSD 5.x.
- Alex Tzu-Yu Song has implemented DSR in his system called PICONET II. more
information available at http://piconet.sourceforge.net/thesis/main.html.
Recommended by "ng jiahui" ngjiahui21 [at- yahoo.com
- OPNET 9.1+ includes DSR and AODV implementations in the Modeller,
and they are available in the contributes modules section of the OPNET
website. There are outdated implemenations from NIST available for outdated DSR
implementation and outdated AODV
Implementation.
- INSIGNIA DSR
Implementation maintained at Freshmeat.net. I have no idea what
this implementation is about.
- Monarch DSR
Implementation maintained at Freshmeat.net. I have no idea what
this implementation is about. As far as I know, no member of the
Monarch Project has anything to do with this code.
Support code for DSR and MANET Testbeds
cmu-atg-2004-07-30.tgz
contains the source code for the Automatic Traffic Generator (ATG)
used in the Caterpult testbed built in 1998. The code is written in
java and is not of high quality, but several folks have asked for it.
There's a README file with more information.