## 2 Related Work  
The growing interest in WSNs and the continual emergence of new techniques has inspired some efforts to design congestion control protocols in this area. Normally, current congestion control protocols in WSNs can be typically classified into two broad categories [3-34]: congestion avoidancemechanisms and congestion release mechanisms [10-14]. (1) The existing congestion avoidance mechanism is mainly achieved by two kinds of methods. 1 The first is the rate allocation method [10,11]. It requires that the sending rate allocated to the node must be equal to the sum rates which are the rate of generated data by the node and that of all its children nodes. But it is very difficult to allocate the sending rate for each node under the dynamic condition of network topology. Furthermore, if some nodes in the network are not active, bandwidth and other resources of network will be wasted. 2 The second is the cache notification method [12-14] which is passively applied to the circumstances where network congestion has already occurred. In addition, this method can effectively avoid the phenomenon of node-level congestion, however, the system-level congestion (local network congestion) is inevitable. (2) Congestion release mechanism [15-34] is achieved by methods of rate adjustment. The weakness of this mechanism is the same as 2. Although the two categories above are good for improving network performance, nevertheless, all such methods like (1) and (2) are passive adjustments after the occurrence of congestion (energy and bandwidth have been wasted). In addition, more attention should be paid to address the issues of QoS of network. The Congestion Control and Fairness (CCF) routing scheme [10] uses packet service time at the node as an indicator of congestion. However, the service time alone may be misleading when the incoming rate is equal or lower than the outgoing rate through the channel with high utilization. On the other hand, the Priority-based Congestion Control Protocol (PCCP) [11] rectifies this deficiency by observing the ratio between packet service time and inter-arrival time at a given node to assess the congestion level. However, both CCF and PCCP ignore current queue utilization which leads to increased queuing delays and frequent buffer overflows accompanied by increased retransmissions. The CODA protocol [12] uses both a hop-by-hop and an end-to-end congestion control scheme to react to the congestion by simply dropping packets at the node preceding the congestion area and employing the additive increase and multiplicative decrease (AIMD) scheme to control a source's generation rate. Thus, CODA partially minimizes the effects of congestion, and as a result retransmissions still occur. Similar to CODA, Fusion [13] uses a static threshold value for detecting the onset of congestion even though it is normally difficult to determine a suitable threshold value that works in dynamic channel environments. In both CODA and Fusion protocols, nodes use a broadcast message to inform their neighboring nodes the onset of congestion, though this message is not guaranteed to reach the sources. The interference-aware fair rate control (IFRC) protocol [14] uses static queue thresholds to determine congestion levels, whereas IFRC exercises congestion control by adjusting the outgoing rate on each link based on the AIMD scheme. Consequently, the IFRC reduces the number of dropped packets by reducing the throughput. By contrast, the proposed scheme varies the rate adoptively based on the current and predicted congestion level. The control parameters in the proposed scheme are updated according to changing environment, while the IFRC [14] and others [12,13] require that the parameters and thresholds have to be selected before each network deployment. SenTCP [15] is an open-loop hop-by-hop congestion control with a few special features. It jointly uses the average local packets service time and the average local packet inter-arrival time to estimate the current local congestion degree in each intermediate node.