## 4 Taxonomy of the Existing Multipath Routing Protocols
### Concurrent Multipath Routing
#### 4.2.1 Multipath Routing Protocols for Reliable Data Transmission
The source node determines the required number of paths to fulfill the reliability demands of the collected information according to the DPS fields of the data packets. During data transmission, all the intermediate nodes use the provided information by the DPS fields in the received data packets to determine the number of copies that should be transmitted to their next-hop neighboring nodes. This process continues until all the transmitted data packets reach to the sink node. According to the main operation of this protocol, ReInForm tries to improve data transmission reliability through utilizing the packet duplication technique at all the involved sensor nodes in the data transmission process. Accordingly, the elevated reliability of this protocol is achieved at the high cost of energy consumption and bandwidth utilization, which is in contrast with the primary demands of resource-constrained sensor nodes. _N-to-1 Multipath Routing Protocol_[33] is proposed according to the convergecast traffic pattern of wireless sensor networks. The main aim is to simultaneously discover multiple node-disjoint paths from all the sensor nodes towards a single sink node. Furthermore, during data transmission phase, all the intermediate nodes utilize a packet salvaging technique at each hop to improve data transmission reliability. The entire routing operation in N-to-1 multipath routing protocol is performed through a simple flooding strategy in two stages. The sink node starts the first stage of the route discovery process through broadcasting a _route update_ message. This stage, which is called _branch-aware flooding_, utilizes the main benefit of a simple flooding technique to construct a spanning tree and discover several paths from sensor nodes towards a single sink node. During this phase, each sensor node that receives a _route update_ message for the first time, selects the sender of this message as its parent towards the sink node. In addition, if an intermediate node overhears a _route update_ message from another neighboring node that introduces an alternative node-disjoint path through a different branch of the spanning tree, it adds this path to its routing table. This process continues until all the sensor nodes discover their primary path towards the sink node and a spanning tree same as Figure 6(a) is constructed through all the nodes. After that, the second stage of this protocol is initialized in order to discover more paths from each sensor node towards the sink node with the use of _multipath extension flooding_ technique. As it can be seen from Figure 6(b), each link between two individual nodes that belong to different branches of the constructed spanning tree can help to establish an additional path from these nodes towards the sink node. Accordingly, the main purpose of employing _multipath extension flooding_ technique in the second stage is to exchange some information regarding to the discovered node-disjoint paths in the first stage between the nodes belong to different branches of the constructed spanning tree. At the end of this stage, a routing tree similar to the Figure 6(b) is constructed by all the sensor nodes. Finally, source nodes split their traffic into several segments and distribute these data segments over the discovered paths. In fact, this protocol utilizes the single-path forwarding strategy for transmitting each data segment, while all the intermediate nodes use an adaptive per-hop packet salvaging technique to provide fast data recovery from node or link failures along the active paths. N-to-1 multipath routing protocol uses the broadcast nature of radio communications to construct several node-disjoint paths from sensor nodes towards the sink node without using additional control packets. This protocol also profits from the availability of several paths at the intermediate nodes to improve reliability of packet delivery by employing a per-hop packet salvaging strategy.