# An Analysis of MPTCP Congestion Control
## 7 MPTCP Congestion Control
### Experimental Validation of Simulation Results  
In Section 7.4, an analysis and subsequent simulation provided some evidence that MPTCP coupled CC would not work well when subflow paths are disjoint, or when subflow path characteristics are not similar. To validate this idea, we run an experiment based on the topology in Figure 18. This topology mirrors the second scenario from the previous simulations. A single MPTCP connection with two subflows is competing against a single TCP flow. The network is configured such that the two MPTCP subflows take disjoint paths with the first subflow competing against TCP. All experiments are run for ten minutes duration, with the first and last 30 s of data discarded to ensure that throughput measurements reflect performance during steady state conditions. Experiments are run for bandwidth limitations of 12 Mbps and 24 Mbps. In each case, the set of path RTTs are {(10 ms, 10 ms), (10 ms, 20 ms), (10 ms, 30 ms), (50 ms, 50 ms), (50 ms, 100 ms), (50 ms, 150 ms)}. This repeats the simulation scenarios where the RTT of the second path is equal to, twice, and triple the RTT of first path. All three MPTCP protocols (LIA, OLIA and BALIA) are tested. Figure 18: Experimental Topology for MPTCP Disjoint Path. As the paths are disjoint, MPTCP should attain all the available bandwidth over the second path. Over the first path, MPTCP should attain half the available bandwidth, with the TCP flow attaining the other half. For the case of 12 Mbps, the first MPTCP subflow and the TCP flow should attain approximately 6 Mbps each, with the second MPTCP attaining approximately 12 Mbps. For the case of 24 Mbps, the ideal scenario should see these numbers doubled to 12 Mbps and 24 Mbps, respectively. Figure 19 displays the box plot of throughput achieved for each of TCP, MPTCP subflow 1 and MPTCP subflow 2 for a bandwidth of 12 Mbps and RTT of (50 ms, 150 ms). As can be seen, for all three coupled CC algorithms, MPTCP completely backed off on the path shared with TCP (RT = 50 ms), instead utilising all of the available bandwidth on the second path. This reflects the assumption by all three algorithms that the bottleneck is shared, and that MPTCP should get no more bandwidth than TCP. Had the paths truly been shared, then this is a reasonable outcome, however in the case of the disjoint paths, MPTCP is not attaining a fair bandwidth share for the circumstances, while the coupled CC algorithms behaved more aggressively where the RTTs were lower, the range of throughput attained throughout the experiments were more variable. We calculate the percentage of expected bandwidth achieved by dividing the average attained throughput by the expected throughput. For ideal fairness, each (sub)flow should score close to 100%. Results for all 18 experiments where the bandwidth is 12 Mbps are listed in Table 2, Table 3 records the results where the bandwidth is 24 Mbps. In all cases, MPTCP was successful in utilising all the available resources on the second path. \begin{table}
\begin{tabular}{c c c c c c c c} \hline \hline  & \multicolumn{6}{c}{**Path Bandwidth—12 Mbps**} \\ \hline \hline  & **RTT Path 1** & \multicolumn{3}{c}{**10 ms**} & \multicolumn{3}{c}{**50 ms**} \\ \hline \hline  & **RTT Path 2** & **10 ms** & **20 ms** & **30 ms** & **50 ms** & **100 ms** & **150 ms** \\ \hline \multirow{3}{*}{LIA} & TCP & 125.6\% & 107.4\% & 132.0\% & 183.2\% & 195.6\% & 195.8\% \\ \cline{2-7}  & MPTCP Subflow 1 & 72.4\% & 90.7\% & 66.3\% & 14.6\% & 2.4\% & 2.4\% \\ \hline \multirow{3}{*}{OLIA} & TCP & 188.0\% & 190.4\% & 188.8\% & 189.2\% & 195.4\% & 193.6\% \\ \cline{2-7}  & MPTCP Subflow 1 & 10.0\% & 7.6\% & 9.4\% & 7.4\% & 2.8\% & 4.6\% \\ \hline \multirow{3}{*}{BALIA} & TCP & 149.0\% & 134.6\% & 127.0\% & 184.0\% & 193.8\% & 193.6\% \\ \cline{2-7}  & MPTCP Subflow 1 & 49.2\% & 63.2\% & 71.4\% & 13.4\% & 4.0\% & 4.6\% \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Share of 12 Mbps bandwidth attained at Switch One-Disjoint Paths.