Related to MAC-layer feedback, this implementation detail had a profound effect on our results. While an IEEE 802.11 interface repeatedly retransmits the packet at the head of its queue, it head-of-line blocks, waiting for a link-level acknowledgement from the receiver. This head-of-line blocking reduces the available transmit duty cycle of the interface significantly. For this reason, upon notification of a MAC retransmit retry failure, we traverse the queue of packets for the interface, and remove all packets addressed to the failed transmission’s recipient. We pass these packets back to the routing protocol for re-forwarding to a different next hop. This change virtually eliminated what we’d previously thought to be MAC contention in high mobility simulations where neighbors were lost frequently; the timeouts and head-of-line blocking were what really had
been causing the drops at the interface queue. The implementation of DSR for ns-2 [25] implements this useful optimization, though we don’t see it mentioned in the published
work on DSR.