Dynamic Source Routing (DSR)

des-dsr is our Dynamic Source Routing (DSR) protocol implementation as a variant for underlay routing. Currently there are actually several variants that also enable multi-path routing.
Description:
DSR is quite similar to AODV, since a route is only discovered when it is required (reactive routing). However, DSR uses source routing instead of relying on the routing tables of the intermediate nodes. Source routing allows the source to partially or completely specify the route the packets shall take through the network. Source routing has many advantages, e.g., it allows simple error detection, makes route tracing unnecessary, and enables a node to discover all the possible paths to a destination including the chance to optimize the routes based on the available information. It also allows the sources to directly react to topology changes, to preserve ressources, or prevent congestion by forcing packets to travel over one particular path.

The addresses of the nodes on the routes from the source to the destination are accumulated during the route discovery. Each node that forwards a Route-Request (RREQ) will add its address to the list that is contained in the header. On reception by the destination a Route-Reply (RREP) is generated that contains a copy if this list. The RREP travels backwards along the route to the source and the information is subsequently available on all traversed nodes (all all that overheard the packet). All data packets will contain such a list of to specify the route. As the path can consist of many hops or the addresses can be quite large (for example IPv6), the overhead is larger compared to AODV. To improve the performance, DSR specifies the (optional) flow id extension that enables virtual switched circuit like forwarding of packets. Like in AODV, nodes that are not the destination and have a matching route available, can already reply to a RREQ.
The following figure depicts the route discovery from source S to destionation D:

Variants:
Several variants of DSR have been implemented and evaluated in experiments. These variants support different path metrics, enable uni- or multi-path routing, and use different data structures to store routes.
- des-dsr-hc: unicast variant as specified in RFC 4728 with hop count as metric
- des-dsr: unicast variant that applies a ETX like RREQ forwarding but the destination replies only to the first RREQ
- des-dsr-linkcache: des-dsr that uses a link cache instead of a route cache (more fine granular information that can be used to optimize routes)
- des-dsr-etx: uses the ETX metric instead of hop count (improved RREQ forwarding and the destination can generate multiple RREPs)
- des-dsr-etx-backup: like des-dsr-etx but the sources keeps a second route as backup
- des-dsr-etx-lb: like des-dsr-etx-backup but uses both routes for load balancing
- des-dsr-linkcache-etx: uses a link cache as well as the ETX metric
- des-dsr-mdsr: is based on MDSR (Protocol 1) by Nasipuri and Das
- des-dsr-smr: is based on SMR by Lee and Gerla
- des-dsr-backuppath1: is based on BackupPath (Scheme 1) by Lim, Xu, and Gerla
- des-dsr-backuppath2: is based on BackupPath (Scheme 2) by Lim, Xu, and Gerla
- 963 reads
- Printer-friendly version