## 2 Routing in Wireless Sensor Networks  
Since, data transmission from the target area towards the sink node is the main task of wireless sensor networks, the utilized method to forward data packets between each pair of source-sink nodes is an important issue that should be addressed in developing these networks. Due to the intrinsic features of low-power wireless sensor networks, routing in these networks is much more challenging compared to the traditional wireless networks such as _ad hoc_ networks [4, 5]. First of all, according to the high density of sensor nodes, routing protocols should be able to support data transmission over long distances, regardless of the network size. In addition, some of the active nodes may fail during network operation due to energy depletion of the sensor nodes, hardware breakdowns or environmental factors, but this issue should not interrupt the normal network operation. Moreover, as sensor nodes are tightly limited in terms of power supply, processing capability, memory capacity and available bandwidth, routing and data dissemination should be performed with efficient network resource utilization. Furthermore, since the performance demands of the wireless sensor networks are application specific, routing protocols should be able to satisfy the QoS demands of the application for which the network is being deployed. For example, challenges in designing routing protocols for time critical applications (e.g., target tracking and disaster management) are different from issues that should be considered in developing routing protocols for other applications such as habitat monitoring. According to the aforementioned differences between wireless sensor networks and traditional wireless networks, numerous routing protocols were proposed over the past decade to address the routing challenges imposed by the new features of sensor networks. [PERSON] _et al_. [4] classified the existing routing protocols in wireless sensor networks from two different perspectives: (1) network structure and (2) protocol operation. From the network structure point of view, routing algorithms are classified as flat, hierarchical and location-based routing protocols. Flat routing protocols are designed for networks with homogenous nodes, _i.e._, all the network nodes have the same processing and data transmission capabilities while their packet forwarding role is also similar. Directed Diffusion [14], Sensor Protocols for Information via Negotiation (SPIN) [15], Rumor Routing [16], Minimum Cost Forwarding Algorithm (MCFA) [17], and Energy-Aware Routing (EAR) [18] can be included in this category. According to the simple structure of the flat network architecture, this group of routing protocols demonstrates several advantages such as the low overhead of topology maintenance and the ability of multipath discovery. Hierarchical routing protocols were originally proposed to improve network scalability and energy efficiency through node clustering. In this group of routing protocols, all the sensor nodes are grouped into clusters and one node with more resources in each cluster is assigned as the cluster head. Each cluster head is responsible for processing the received data packets from its cluster nodes, communicating with other cluster heads or the sink node, and coordinating the cluster nodes. In contrast, all the cluster members should sense the environment and forward their collected data towards the respective cluster head for further operations. Although this approach can provide higher network scalability, clustering operation and cluster head replacement (which is required to prevent fast energy depletion of the cluster heads) impose high signaling overhead to the network.