1. A method for sending data packets from any source node to any destination node in a communication network having a plurality of nodes, the method comprising: (a) measuring recent packet delivery performance of each node in the communication network by every other node; (b) determining reputation level of each node by every other node based on the measured recent packet delivery performance wherein the measuring of recent packet delivery performance is based on one or more node characteristics; (c) sending a route discovery message from a source node to a destination node through a neighboring node having a highest reputation level; (d) sending the route discovery message by each intermediate node between the source node and the destination node to the neighboring node that has the highest reputation level until the route discovery message is received by the destination node resulting in determining a set of highest reputation level intermediate nodes between the source node and destination node; (e) sending data packets from the source node to the destination node through the determined one or more intermediate nodes of highest reputation level.