# Towards Adaptive Multipath Managing:
## 3 System Detail Design  
Figure 6 illustrates the architecture of our MPTCP-LM\({}^{3}\) system, which involves an MPTCP sender, an MPTCP receiver, and \(n\) multiple paths. As an extension of the standard MPTCP, the MPTCP-LM\({}^{3}\) receiver was responsible for the path collection and reassembling if any MPTCP segment data arrived in the receiver buffer. At the MPTCP-LM\({}^{3}\) sender side, there was an additional MPTCP-LM\({}^{3}\) module compared with the standard MPTCP, which was a Lightweight Multipath Management Mechanism (LM\({}^{3}\)) that aimed to (i) prevent the use of an underperforming or failure path in multipath transmission, (ii) collect appropriate paths into MPTCP for smart bandwidth aggregation and parallel transmission, and (iii) reduce the receiver buffer blocking and optimize the quality of service when deploying MPTCP on the multihomed mobile computing devices. Following is the detail of the design of the proposed MPTCP-LM\({}^{3}\) solution. Simply, in MPTCP-LM\({}^{3}\), the receiver buffer maintaining the out-of-order data for reordering is viewed as a router queuing packets for forwarding. Further, a large number of out-of-order data held in the limited receiver buffer and resulting in receiver buffer blocking can be viewed as a large number of packets held in the overloaded router and resulting congestion. In view of this, MPTCP-LM\({}^{3}\) thinks of buffer blocking occurring at the receiver side as \"congestion\" occurring in the receiver buffer, like network congestion caused by an overloaded router (the router buffer gets full). Therefore, we borrowed ideas from the classic TCP's congestion Avoidance (CA) mechanism [28] to design the LM\({}^{3}\) mode for the receiver buffer blocking avoidance. In order to make the paper self-contained, we introduce the general ideas of the CA mechanism as follows. The CA mechanism is maintained by a TCP sender to adjust the _cvnd_ size and alleviate network congestion. The main operations of the TCP's CA mechanism running in the congestion avoidance state can be summarized as follows [28]: (i) for every packet acknowledged, the _cvnd_ is additively increased by one Maximum Segment Size (MSS) each RTT; (ii) for any packet loss (three duplicate ACKs are received), set the _cvnd_ value to half the current _cvnd_ size; (iii) on timeout, the _cvnd_ size is reset to one MSS. More simply, the TCP's CA operations can be expressed by using the following mathematical model:  
\[cvnd_{new}=\left\{ \begin{array}{ll}\frac{1}{2}\times cwnd_{old},&\text{if a packet loss event is detected;}\\ 1\;\text{MSS},&\text{if a timeout event is detected,}\end{array} \right. \tag{1}\]  
Inspired by the idea of the above TCP's CA mechanism, MPTCP-LM\({}^{3}\) was designed to adjust the number of transmission paths intelligently, like the _cvnd_ adjustment in TCP's CA mechanism, to protect possibly against receiver buffer blocking. To this end, in the connection establishment phase, MPTCP-LM\({}^{3}\) set a buffer blocking counter (_buf_block_count_) and triggered these counters with receiver  
Figure 6: The architecture of MPTCP-Lightweight Multipath Management Mechanism (LM\({}^{3}\)). buffer blocking events. The \(buf\_bloc\_count\) was set with a default value of zero and was incremented by one when a receiver buffer blocking occurred in the receiver buffer. After three consecutive receiver buffer blocking events, the \(buf\_bloc\_count\) was reset back to its default value. According to the \(buf\_bloc\_count\) value, MPTCP-LM\({}^{3}\) could adaptively abandon or exploit multiple paths, similar to the \(c\)_c_vnd_ adjustment in TCP's CA mechanism, following the principles below:  
1. For a case in which \(buf\_bloc\_count=1\) (or \(buf\_bloc\_count=2\)), namely there is a single buffer blocking event occurring in the receiver buffer, MPTCP-LM\({}^{3}\) views this case as \"a packet loss event in the TCP congestion avoidance phase\".