## 2 Priority-based Coverage-aware Congestion Control (PCC)  
### System Model and Design Considerations  
We design our congestion control mechanism based on the system model shown in Figure 2. We consider a WSN with \(N\) sensor nodes that act both as source nodes as well as routers to forward packets through a multihop network to the sink. Each sensor node has a fixed size buffer to store packets, which is shown for node \(C\) in Figure 2. The buffer of node \(C\) contains packets generated by itself and packets from other sensors, like packet \(P_{A}\) from node \(A\) and packet \(P_{B}\) from node \(B\). Under normal condition of the physical attribute monitored by the WSN, nodes generates _Non-Event_ packets at a constant rate of \(r\) packets per second (pkts/sec) which are forwarded towards the sink. Upon sensing an event, sensor nodes generate _Event_ packets at higher rate, \(k\times r\) pkts/sec where \(k\geq 1\), to report the information to the sink. A one-bit field in the packet header is used to identify _Event_ packets. The intermediate nodes can use this bit to route packets with different priority. Based on the above system model, the goal is to find a novel mechanism to efficiently collect information generated by the nodes in the WSN. Before discussing the details of our approach, we first explain the objectives, the design challenges and the corresponding solutions to the challenges. 1. High _Event_ Packets Throughput: In a WSN with both _Event_ and _Non-Event_ packets, it is important to ensure that _Event_ packet throughput is high. In addition, since _Event_ packet generation rate is  
Figure 2: The overall system model. normally higher than that of _Non-Event_ packets, congestion may occur when events are detected by different sensor nodes simultaneously. Therefore, our mechanism should first guarantee high _Event_ packet throughput when nodes are congested, to make sure that emergency information, like fire in the forest, is reported to the sink correctly and in a timely manner. We set up two thresholds in the sensor node queue to drop _Event_ and _Non-Event_ packets to give the former higher priority. To the best of our knowledge, few papers differentiate _Event_ and _Non-Event_ packets in WSNs with the exception of Event-to-Sink Reliable Transport (ESRT) [7]. Note that our work is different from ESRT, which is implemented in the transport layer and is an end-to-end congestion control method. _PCC_, on the other hand, is distributed and is based on network layer queue scheduling and MAC layer information feedback, as will be discussed in the following sections. 2. Coverage Fidelity: As we explained in Section 1., packet throughput from a specific sensor node drastically decreases when packets traverse multiple hops to the sink. Therefore, packets generated by nodes nearby the sink have much higher probability of reaching the sink than those generated by nodes far away from the sinks. This leads to a spatial bias in the information collected in a multihop WSN. However, it is crucial to achieve coverage fidelity in a WSN because each monitoring area is usually equally important or remote areas are even more important since they are more difficult to be monitored by direct methods. Unlike other proposed methods, we consider the fairness among different areas at the application layer. Our proposed mechanism ensures that the sink receives equal number of packets with the same priority from all the sensor nodes in the sensor network. In IFRC [8], authors describe MAC layer fairness. However, MAC layer fairness does not ensure application layer fairness since the sink is biased to receive packets from nodes that are near it. 3. Flexible Queue Scheduler: Most queue schedulers drop packets from the tail rather than any position in the queue. But tail-dropping does not work well in our new scheme.