Coupled Congestion Control for Multipath Transport Protocols [draft-ietf-mptcp-congestion-07]
link:http://tools.ietf.org/html/draft-ietf-mptcp-congestion-07
重要文献:
[1] Wischik, D., Raiciu, C., Greenhalgh, A., and M. Handley,"Design, Implementation and Evaluation of Congestion Control for Multipath TCP", Usenix NSDI , March 2011.
[2] Damon的NSDI会议演讲视频: http://www.youtube.com/watch?v=iqx1cShqH6I
Design Goals:
1) Each subflow should have its own congestion control state (i.e. cwnd) in order to adapt the offered load to the capacity on that path. A simple way to achieve this is to employ standard TCP congestion control on each subflow. However, the problem is that, there will be unfair share between these subflows when their path share a common bottleneck.
2) be fair to TCP at bottleneck links: a multipath flow should perform at least as well as a single path flow would on the best of the paths available to it
3) use efficient paths: send all traffic using the least congested link
4) adapt quickly when congestion changes
5) do not oscillate
Example when applying for the design goals:
It is true that 3G path has lower loss and higher RTT than that of Wi-Fi. Therefore, in the case of MPTCP, 3G is the least congested link which should take as much traffic as possible. [Goal2]
However, today's Wi-Fi has higher bandwidth than 3G. Therefore, in the case of MPTCP, Wi-Fi is the best path where a regular TCP can achieve its best throughput. [Goal3]
Assuming the bandwidth for a regular TCP over Wi-Fi and 3G are 5Mbps and 0.5Mbps. Combining goal 2 and goal 3, the bandwidth allocation policy for MPTCP over 3G and Wi-Fi interfaces are: send 4.5Mbps on Wi-Fi and 0.5Mbps over 3G.
Algorithms(to achieve the five goals above):
->Principle: couples the additive increasefunction of the subflows, and, uses original TCP behavior in case of a drop
The congestion controller sets the aggregate bandwidth of multipath flow to be the same as a regular TCP flow would get on the best path available to the multipath flow.
The congestion controller estimates the bandwidth of a regular TCP flow by predicting loss rates and RTT and computing the target rate. Then the overall aggressiveness is adapted to achieve the desired rate.
->Details:
MPTCP maintains a congestion window Wr, one window for each path
increase Wr for each ACK on path r, by
alpha * bytes_acked * mss_i bytes_acked * mss_i min ( --------------------------- , ------------------- ) tot_cwnd cwnd_i
[此函数基于 BYTES, OFFICIAL DOCUMENT IN IETF ALSO PROVIDE PACKET-BASED COMPUTATION, 因为标准TCP congestion control IS BASED ON PACKET]
"alpha" is a parameter of the algorithm that describes the aggresiveness of the multipath flow. The value of alpha is chosen such that the aggregate throughput of the multipath flow is equal to the throughput a TCP flow would get if it ran on the best path.
The total throughput of a multipath flow depends on the value of alpha and theloss rates,maximum segment sizes and round trip times of its paths. alpha must be computed based on the observed properties of the paths, in order to provide fairness to regular TCP.
The formula to compute alpha is: cwnd_i max -------- i 2 rtt_i alpha = tot_cwnd * ---------------- / cwnd_i \ 2 | sum ---------| \ i rtt_i /
decrease Wr for each drop on path r, by Wr/2.
each server and client IP address pair maintains a single path, so multihome (multiaddress) hosts are required.
->What are the same with standard TCP [RFC5681]
1) slow start
2) fast retrasmit
3) fast recovery
4) multiplicative decrease of the congestion avoidance state