Least-Cost Opportunistic Routing
In opportunistic routing, each node maintains a group of candidate relays to reach a particular destination, and transmits packets to any node in this group. If a single candidate relay receives the packet, it becomes the effective relay to forward the packet further. If no candidate receives the packet, then the current sender re-transmits. If multiple candidates receive the packet, then the link layer chooses a single receiver to be the relay. This choice could be made at random, or it could be driven by information coming from the routing layer, for example to use the best receiver as the relay.