## 4 Taxonomy of the Existing Multipath Routing Protocols
### Alternative Path Routing  
Most of the existing multipath routing protocols in this class were mainly developed to provide fault tolerance at the network layer of protocol stack. Since providing fault tolerance was the primary motivation of utilizing multipath routing approaches for reliable data transmission over unreliable links, most of the early works on multipath routing technique fall in this category. As link and node failures are the main causes of path failures, the primary objective of these protocols is to guarantee certain performance parameters through preserving multiple alternative paths as the backup routes. This section introduces the ongoing research on the fault-tolerant routing using multipath routing approach. Table 1 summarizes few of the protocols from this category. _Directed Diffusion_[14] is a query-based routing protocol that uses the concept of multipath routing to provide path failure protection. Figure 4 shows the main operations of this protocol. According to Figure 4(a), routing operation is initialized by the sink node through flooding _interest_ messages throughout the network. These _interest_ messages contain some information regarding to the task that should be performed by the sensor nodes. During this stage, all the intermediate nodes cache the  
Figure 3: Taxonomy of the existing multipath routing protocols based on their historic design. Figure 2: Taxonomy of the existing multipath routing protocols in wireless sensor networks. interest_ messages received from their neighbors for later use. Moreover, upon reception of an _interest_ message, the receiver node creates a gradient towards the node from which this message has been received. As it can be seen from Figure 4(b), in this stage several paths can be discovered between each pair of source-sink nodes. After that, whenever a source node detects an event matched with the existing information in its interest table, it forwards its data packets towards the sink node through all the constructed gradients. The sink node receives its requested data through several paths with a low-data rate. Based on the packet reception performance over each path, the sink node can select the best path, _i.e._, the path with minimum latency, for data transmission. For this, the sink node reinforces the selected path by sending low-rate _reinforcement_ messages towards the source node. Then, the source node merely transmits its data towards the sink node through the selected path. This process is demonstrated in Figure 4(c). Furthermore, sink node continues to send low-rate _interest_ messages over the remaining paths. This is to preserve the freshness of the established interest tables at the intermediate nodes, while it also maintains the discovered paths. When the active path fails to forward data packets, another available path can be used to provide fault-tolerant routing. Accordingly, whenever the data reception rate from the active path is reduced, the sink node reinforces the second available best path. Figure 4: A sample scenario for path creation in Directed Diffusion. **(a)** Interest propagation; **(b)** Gradient setup; **(c)** Path reinforcement and data transmission