Dynamic Source Routing (DSR)

The key distinguishing feature of DSR is the use of source routing. That is, the sender
knows the complete hop-by-hop route to the destination. Source routing means that each packet
contains in its header an ordered list of addresses through which the packet should pass on its
way to the destination. This source route is created by the node that originates the packet. The
usage of source routing allows the routing of packets to be loop-free, avoids the need for keeping
up-to-date routing information in intermediate nodes and allows nodes that overhear packets
containing source routes to cache this information for their own future use. When a node in the
ad hoc network attempts to send a data packet to a destination for which it does not already know
the route, it uses a route discovery process to determine the route to the destination.
A node that wishes to send a packet to a destination checks in its route cache if it has a
route available. If no route is found in the route cache, route discovery is initiated. The node
initiating the route discovery broadcasts a Route Request (RREQ) packet, containing its own
address, the destination (target) address and a unique request identification. Each Route Request
also contains an initially empty list of nodes through which this particular Route Request packet
has passed. Figure 4 is the illustration of the RREQ broadcast along the mobile nodes from the
source node to the destination node. If a node receives such a Route Request and discovers that it
is the target of the request, it responds with a Route Reply (RREP) back to the initiator of the
Route Request. The Route Reply contains a copy of the accumulated route record from the Route
Request. In Figure 5, show the RREP from node destination back to the source node. If a node
receiving a Route Request instead discovers that it is not the target of the request, it appends its own address to the route record list of the Route Request, and re-broadcasts the Route Request
(with the same request identification). Route Replies are sent back to the Route Request initiator
using a route found in the route cache of the replying node. If no such route exists, the replying
node should itself initiate a route discovery to find a route back to the originator of the original
Route Request (and piggyback its Route Reply, to avoid possible infinite recursion of route
If any link on a source route is broken, the source node is notified using a route error
(RERR) packet. The source removes any route using this link from its cache. A new route
discovery process must be initiated by the source if this route is still needed. DSR makes very
aggressive use of source routing and route caching. No special mechanism to detect routing
loops is needed.