In routing layer, the forward process is divided into two phases: path building phase and forward phase. In path building phase, each node count expected transmit times (ETX) to other nodes and flood the ETX value in the network. Then each node has a global topology of in none-directional map with ETX value as weight. Based on this global topology, the source node named S can compute a shortest path such as S->A->B->E-> D. Then each forward node named X is extended to a forward set called CFS-X with several nodes. A node is added to the CFS-X set if it satisfies two conditions simultaneously: 1) it is closer to the destination than node x; 2) distance between it and any node of CFS-X set is smaller than a threshold. Each node of CFS-X is signed a priority according to distance to the destination. And a forward timer is created by the priority value. In the forward phase, node S broadcast a coded packet recording CFS-A, if a node receives the broadcasted packet and it belongs to CFS-A set it will start the forward timer. If it receives the same packet again it will cancel the timer else send the packet when the time expires.