# A Mathematical Model for Efficient and Fair Resource Assignment in Multipath Transport
## 2 Terminology
### Fairness  
Since TCP traffic is elastic, each participant--a flow or subflow--has a potentially unlimited demand which is restricted by the limited capacity of the links. The task of fairness is to share the link capacity in a proper way between the participants. From the view of a network operator, ensuring no user has to starve is a crucial aspect of maintaining user satisfaction. However, no absolute value for a guaranteed minimum capacity can be specified because it cannot be predicted how many flows will share a link. For reasons of simplicity and better overview, in the further figures with network examples, the interfaces are omitted and the (sub)flows are drawn besides the links. Definition 6: Bottleneck subflow fairness (BSF): A bottlenecked link may be shared by a number of multipath TCP subflows along with legacy TCP flows which compete for the available bandwidth. The idea of BSF is that each MPTCP subflow should get the same capacity share like a TCP flow [21]. Figure 2 shows an example network scenario which illustrates the BSF mechanism. There are six nodes \(\mathsf{a},\mathsf{b},\mathsf{c},\mathsf{d},\mathsf{e},\mathsf{m}\) and two flows \([\mathsf{a},\mathsf{e}]\) and \([\mathsf{m},\mathsf{e}]\) inside the network. All link capacities are given in Mbps. Multipath flow \([\mathsf{a},\mathsf{e}]\) has two subflows \([\mathsf{a},\mathsf{b},\mathsf{d},\mathsf{e}]\) and \([\mathsf{a},\mathsf{c},\mathsf{d},\mathsf{e}]\) in this scenario. Both subflows share the same bottleneck link \((\mathsf{d},\mathsf{e})\) with the single path flow \([\mathsf{m},\mathsf{e}]\). Thus, for bottleneck subflow, for fair allocation, each subflow should get the same allocation as the single path flow on the bottleneck link \((\mathsf{d},\mathsf{e})\). This corresponds to a capacity allocation of \(20\,\mathrm{Mbps}\) for flow \([\mathsf{a},\mathsf{e}]\) and \(10\,\mathrm{Mbps}\) for flow \([\mathsf{m},\mathsf{e}]\). Let \(sf_{i}\) where \(i=1,\ldots,n\) be \(n\) legacy TCP flows or MPTCP subflows sharing a link \((g,h)\) with capacity \(cap_{gh}\). If all \(sf_{i}\) are bottlenecked on \((g,h)\), the assignment \(sf\_alloc_{i}\) for each \(sf_{i}\) is  
\[sf\_alloc_{i}=cap_{gh}/n\quad\text{for $i=1,\ldots,n$.} \tag{1}\]  
The more common case is that a subset of the (sub)flows \(sf_{1},\ldots,sf_{m},\ m<n\) is already bottlenecked on other links where each of them gets an assignment \(sf\_alloc_{i}<cap_{gh}/n,\ i=1,\ldots,m\). The remaining \(sf_{m+1},\ldots,sf_{n}\) which are bottlenecked on \((g,h)\) then get the assignment  
\[sf\_alloc_{i}=\frac{cap_{gh}-\sum_{j=1}^{m}sf\_alloc_{j}}{n-m}\quad\text{for $i=m+1,\ldots,n$.} \tag{2}\]  
Definition 7: Bottleneck flow fairness (BFF): An MPTCP flow may have more than one subflow on the same shared bottleneck link. The BFF approach requires that all subflows of the same MPTCP flow should get the same  
Figure 2: Example for bottleneck subflow fair allocation. Blue circles: nodes; black arrows/numbers: links with capacities; colored arrows/numbers: flows with capacity assignments. All numerical values are given in Mbps. aggregated share as a single legacy TCP flow [21]. In other words, an MPTCP user should not get an advantage by deploying multiple subflows on the same link. Practical methods based on coupling the congestion window sizes of individual subflows [22] as well as feedback-based path failure (FPF) or buffer blocking protection (BBP) [23] have been proposed to ensure that an MPTCP flow gets at least the same share as a legacy TCP flow and avoid (sub) flows being underutilized._  
In Figure 3, subflows \([\mathrm{a},\mathrm{c},\mathrm{d},\mathrm{e}]\) and \([\mathrm{a},\mathrm{b},\mathrm{d},\mathrm{e}]\) of the multipath flow \([\mathrm{a},\mathrm{e}]\) are coupled together and considered as a single flow on bottleneck link \((\mathrm{d},\mathrm{e})\). According to the bottleneck flow fair allocation, the bottleneck capacity of link \((\mathrm{d},\mathrm{e})\) should be shared equally between the competing flows \([\mathrm{a},\mathrm{e}]\) and \([\mathrm{m},\mathrm{e}]\).