We picked DSR as our implementation protocol. Because according to the comparison results of some ad hoc routing protocols, DSR has good performance in packet delivery ratio, less control message. Also it is still has space to improve.

I’ll very briefly review the DSR.
If a node S wants to send a packet to destination D, it will check its route cache see if there is a route to D. if not, it will initiate a Route Discovery, broadcast a Route Request message. If a node receives a Route Request, it will check if there is a route to D in its route cache, if there is one, it will append the route into source route and reply it to S, otherwise it will broadcast again.

DSR use source route, every data packet contain the route information. For example, when E receive a packet from S, it check the source route in the packet and know next hop is F, so it will send packet to F. If E-F link is broken, E will try to find a alternative route to D in its route cache, for example, there is a route E-C-G-K-D, it will send the packet and also send a error message to S. This is called salvaging the packet. If it can not find one, this packet will be dropped.