# Towards Adaptive Multipath Managing:
## 3 System Detail Design
In this case, the number of paths within the MPTCP connection (denoted as \(path\_num\)) will be halved, and the half of paths that has high performing transmission quality will be used in multipath transmission. 2. For a case in which \(buf\_bloc\_count=3\), namely three consecutive buffer blocking events occurred in the receiver buffer, MPTCP-LM\({}^{3}\) views this case as \"a timeout event in the TCP congestion avoidance phase\". In this case, only one path that has the highest transmission quality is used in MPTCP (\(path\_num\) is set to one). In addition, the value of \(buf\_bloc\_count\) is reset back to zero. As for path transmission quality, in MPTCP, there are two recommended schedulers used to distinguish multiple paths and assign data to these paths for transmission accordingly, which are the lowest-RTT-first scheduler and the largest-\(c\)_vnd_-first scheduler, which differentiate the transmission quality of multiple paths by using each path's own RTT and \(c\)_vnd_[29], respectively. In MPTCP-LM\({}^{3}\), the transmission quality of multiple paths is differentiated by a function of two transport layer networking variables (namely RTT and \(c\)_vnd_), enabled by the Simple Additive Weighting (SAW) method [30], which is probably the most popular choice for multiple attribute decision making systems due to its simplicity. By using SAW, the transmission quality of each path in MPTCP-LM\({}^{3}\) is determined by the weighted sum of both the RTT and \(c\)_vnd_ values. Assume that path \(p_{i}\) is one of multiple paths within the MPTCP-LM\({}^{3}\) connection; the MPTCP-LM\({}^{3}\)'s SAW based path quality evaluation method calculates the transmission quality of \(p_{i}\) by using the following equation,  
\[\left.\begin{array}{l}\mathbb{R}_{p_{i}}=\sigma\times cwnd^{\prime}p_{i}\ +\ \ell\times RTT^{\prime}p_{i}\ ;\\ s.t.\ \  
1. Estimating each path's transmission quality (\(\mathbb{R}\)) periodically (per RTT) by jointly considering its own _cwnd_ and RTT values;
2. Sorting all the paths in \(p_{\text{list}}\) in descending order according to their own \(\mathbb{R}\) values;
3. If there is no receiver buffer blocking occurring at the receiver side, assigning traffic over all the paths in \(p_{\text{list}}\), as the regular MPTCP does;
4. If there is a receiver buffer blocking event detected, but \(buf\_block\_count<3\), halving the number of paths in multipath transmission, and then incrementing the value of \(buf\_block\_count\) by one, by using the following Equations (5) and (6), \[path\_num\leftarrow\left\lceil\frac{1}{2}\times path\_num\right\rceil\,.\] (5) \[buf\_block\_count\gets buf\_block\_count\,+\,1\,.\] (6) In this case, the top half of paths in the \(p_{\text{A\_list}}\) will be used in multipath transmission (there is \(p_{\text{A\_list}}=p_{\text{list}}\) at the beginning of MPTCP based multipathing). 5. If there is a receiver buffer blocking detected and \(buf\_block\_count=3\), reducing the number of paths to one, then resetting the value of \(buf\_block\_count\) back to zero, by using the following Equations (7) and (8), \[path\_num\gets 1.\] (7) \[buf\_block\_count\gets 0\,.\] (8) In this case, only the first path in \(p_{\text{A\_list}}\) can be used for data transmission. By using the above operations, MPTCP-LM\({}^{3}\) can intelligently aggregate the bandwidth of multiple paths for data transmission while possibly mitigating the receiver buffer blocking problem.