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 on its way to becoming an RFC. Once released, this will be the official definition of DSR.
Working with DSR simulations
- 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
- 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.