# A Survey on Congestion Control for RPL-Based Wireless Sensor Networks
## 4 Congestion Control Schemes for RPL
### Schemes Forwarding Packets via a Single Parent
#### 4.1.4 PC-RPL  
[PERSON] et al. proposed PC-RPL (power-controlled RPL) to address both the load imbalance and hidden terminal problem [19]. Their work was motivated by the observations in the preliminary experiments using RPL. As traffic load increased, most packet losses occurred at links rather than queues and the link losses were caused by packet collision due to the hidden terminal problem. Also, when packets were severely lost at queues, such losses occurred only at a few bottleneck nodes with large unbalanced subtrees. To address the problems, they designed a distributed and adaptive control mechanism where transmission power and routing topology are jointly controlled.  
For parent selection, PC-RPL uses hop distance, ETX and RSSI. The most distinctive feature of PC-RPL is that it uses a reference RSSI value and adaptive RSSI thresholds. For each node \(k\), the reference RSSI value for its neighbor \(n_{k}\) is measured by making all nodes transmit DIO messages with the maximum transmission power without transmission power control. Node \(k\) includes its neighbor \(n_{k}\) in its parent candidate set when  
\[RSSI_{ref}(k,\ n_{k})\ >\ RSSI_{th}^{PS}(k) \tag{5}\]  
where \(RSSI_{ref}(k,\ n_{k})\) and \(RSSI_{th}^{PS}(k)\) are the reference RSSI value for \(n_{k}\) and the 'parent selection RSSI threshold', respectively. If node \(k\) suffers from the hidden terminal problem, it increases \(RSSI_{th}^{PS}(k)\) to select a 'closer' parent node. To improve load-balancing, node \(k\) adjusts the size of its subtree by enabling its potential children to select parents using adaptive RSSI thresholds. More specifically, a potential child node \(n_{k}\) can add node \(k\) to its parent candidate set when  
\[RSSI_{ref}(n_{k},k)\ >\ RSSI_{th}^{CC}(k) \tag{6}\]  
where \(RSSI_{ref}(n_{k},k)\) is the reference RSSI value that \(n_{k}\) has for node \(k\) and \(RSSI_{th}^{CC}(k)\) is the 'children control RSSI threshold' that node \(k\) maintains and sends to \(n_{k}\). When node \(k\) detects load imbalance indicated by frequent queue losses, it increases \(RSSI_{th}^{CC}(k)\) to detach its children nodes. Upon increasing \(RSSI_{th}^{CC}(k)\), node \(k\) propagates the increased threshold to its children by transmitting a DIO message. Consequently, a neighbor \(n_{k}\) can be added to the parent candidate set of node \(k\), when it satisfies the following condition.  
\[RSSI_{ref}(k,\ n_{k})\ >\max\left\{RSSI_{th}^{PS}(k),\ RSSI_{th}^{CC}(n_{k})\right\} \tag{7}\]  
When a node \(k\) changes its parent to \(p_{k}\), it tries to use 'just enough' transmission power to reach its parent \(p_{k}\) while maintaining reliability by configuring its data packet transmission power to \(p_{k}\), \(P_{tx}^{data}(k)\) as follows.  
\[P_{tx}^{data}(k)=P_{tx}^{DIO}-\left(RSSI_{ref}(k,\ p_{k})-RSSI_{th}^{def}\right) \tag{8}\]  
where \(P_{tx}^{DIO}\) and \(RSSI_{th}^{def}\) are the DIO transmission power fixed to 0 dBm and the default RSSI threshold set to the clear channel assessment threshold (-77 dBm) used for CSMA, respectively.  
The authors evaluated performance on a real testbed consisting of 49 nodes and one border router. Each node was a TelosB clone with IEEE 802.15.4 radio that employed TinyOS default CSMA. The duty cycling mechanism was disabled. PC-RPL was compared to the basic RPL and QU-RPL,in terms of PRR, hop count, end-to-end ETX, parent change frequency, routing overhead, and total transmission count. Experimental results show that PC-RPL was effective in addressing the hidden terminal problem which QU-RPL cannot alleviate. PC-RPL achieved a much higher PRR than QU_RPL. Also, the parent change frequency of PC-RPL was smaller than that of QU-RPL for all transmit power settings, while maintaining a high PRR.