# A Survey on Congestion Control for RPL-Based Wireless Sensor Networks
## 4 Congestion Control Schemes for RPL
### Schemes Exploiting Path Diversity
#### 4.2.1 Brpl  
To improve throughput and adaptability to time-varying traffic load and mobility, [PERSON] et al. proposed BRPL (backpressure RPL) [31] which switches smoothly and adaptively between RPL and backpressure routing according to the network conditions. BRPL exploits additional capacities of the suboptimal paths in the presence of heavy traffic load.  
Since RPL allows multiple instances to run in a network and a DAG for each RPL instance consists of one or more DODAGs (and one or more roots), the authors define a topology of RPL using the concept of multitopology routing and formalize the RPL protocol using a multicommodity model where each DAG corresponds to a commodity.  
BRPL constructs a DAG for upward routing by combining OF ranking with network congestion gradients reflected by differential queue gradients. For a DAG \(m\), each node \(x\) computes a weight \(w^{m}_{x,y}(t)\) for each neighbor \(y\) at each time slot \(t\) as follows.  
\[w^{m}_{x,y}(t)=\partial^{m}_{x}(t)\vec{p}^{m}_{x,y}(t)-(1-\partial^{m}_{x}(t) )\Delta Q^{m}_{x,y}(t)c_{x,y}(t) \tag{12}\]  
where  
\[\vec{p}^{m}_{x,y}(t)=p^{m}_{x,y}(t)+Rank^{m}_{y}(t) \tag{13}\]  
\[\Delta Q^{m}_{x,y}(t)=Q^{m}_{x}(t)-Q^{m}_{y}(x,t) \tag{14}\]  
and \(Q^{m}_{x}(t),\ Q^{m}_{y}(x,t),\ p^{m}_{x,y}(t),\ c_{x,y}(t)\) denote the queue backlog of node x, the queue backlog for the node \(y\) recorded in \(x\)'s neighbor table, the penalty(cost) of using the link \((x,y)\), and the logical link-layer channel capacity indicated by the maximum number of acknowledged packets that can be successfully transmitted from node \(x\) to \(y\) during timeslot \(t\), respectively. The parameter \(\theta^{m}_{x}(t)\) (\(0\leq\theta^{m}_{x}(t)\leq 1\)) determines a tradeoff between average queue backlogs and minimizing the objective function. As \(\theta^{m}_{x}(t)\) gets closer to 0, routing is more controlled by backpressure routing than by the OF ranking. Node \(x\) selects neighbors with the minimum weight as the potential parents.  
To adjust \(\theta^{m}_{x}(t)\) adaptively according to the degree of congestion, BRPL uses the online algorithm QuickTheta. This algorithm computes \(\theta^{m}_{x}(t)\) using the smoothed queue length and the parameter \(\beta_{x}(t)\) which indicates the mobility condition. \(\beta_{x}(t)\) also is adaptively adjusted by the online algorithm QuickBeta which observes the change of one-hop neighbor nodes. These adaptive algorithms make RPL smoothly switch to backpressure routing when traffic load is heavy or node mobility is high.  
Performance was evaluated through Cooja simulations and real-testbed experiments using the FIT IoT-LAB testbed [48]. The authors used 100 M3 Open Nodes from the Grenoble site offered by the FIT IoT-LAB testbed, and constructed a network consisting of five roots and 95 sensor nodes. For the MAC layer, a CSMA/CA driver combining with MiCMAC was used. The radio duty cycling was disabled. BRPL was compared with the basic RPL and backpressure routing. The basic RPL and BRPL both use the same ETX OF with the same (default) settings.  
In the experiments with traffic bursts, the packet loss rate of BRPL was over 4.5 times lower than that of RPL because BRPL can adapt to the traffic dynamics with the QuickTheta algorithm. In the experiments with the data sensing rate fixed over time, RPL showed the highest packet lossrate because RPL always chooses the optimal path based on the OF. Since BRPL and backpressure routing use suboptimal paths when the traffic load is high, they can enjoy lower packet loss rates and higher throughput than RPL. BRPL outperformed backpressure routing in terms of end-to-end delay when the traffic load was light. Since backpressure routing routes packets relying only on congestion gradients, it suffers from long end-to-end delays.