mptcp耦合式拥塞控制

你。 提交于 2019-12-18 09:36:15

 [1]中关于耦合式的拥塞控制算法中,α\alpha的计算很是吓人。尝试推导。
 为什么放着原有的TCP拥塞控制不用,非要提出一个耦合式的拥塞控制呢。耦合式的拥塞控制导致发送端的吞吐量小于两条路径分别采用拥塞控制的吞吐量。[1]里面有个解释,就是不作恶。

Goal 1 (Improve Throughput) A multipath flow should perform at least as well as a single path flow would on the best of the paths available to it.
Goal 2 (Do no harm) A multipath flow should not take up more capacity from any of the resources shared by its different path than if it were a single flow using only one of these paths. This guarantees it will not unduly harm other flows.
Goal 3 (Balance congestion) A multipath flow should move as much traffic as possible off its most congested paths, subject to meeting the first two goals.

 本质原因在这里:可以发paper。
 [2]中简单推导了单径TCP拥塞控制的微分方程:
x˙=1prtt2x2p2=xrtt{I(1p)Dp} \dot x=\frac{1-p}{rtt^2}-\frac{x^2p}{2}=\frac{x}{rtt}\{I(1-p)-Dp\}
 使x˙=0\dot x=0,单径TCP的稳定点的吞吐量,x=1rtt2(1p)px=\frac{1}{rtt}\sqrt{\frac{2(1-p)}{p}}
 这是在每收到一个ack后,拥塞控制窗口ww+Iw\gets w+I;每次丢包,wDw\gets D推导出来的。I=1wI=\frac{1}{w}D=w2D=\frac{w}{2}
 那么,应该怎样控制mptcp的窗口变化,可以do not harm呢? [1]的作者可能盯着II的公式研究了很久,给出了这样一个控制公式:
Imptcp=maxwrrttr2(kSwkrttk)2=maxwrrttr2(kSxk)2 I_{mptcp}=\frac{\max \frac{w_r}{rtt_r^2}}{(\sum_{k\in S}{\frac{w_k}{rtt_k}})^2}=\frac{\max \frac{w_r}{rtt_r^2}}{(\sum_{k\in S}{x_k})^2}
 在稳定态:I(1p)=Dp=wp2I(1-p)=Dp=\frac{wp}{2}ImptcpI_{mptcp}带入,就可以得到:
kSxk=1rtt2(1p)p \sum_{k\in S} x_k=\frac{1}{rtt}\sqrt{\frac{2(1-p)}{p}}
 多径吞吐量,同只用最好路径的吞吐量差不多。
 费了老大劲,干什么呢!假设mptcp实用,肯定会选各路径独立的拥塞控制。
 关于α\alpha也就大致理解了,
α=wtotalmaxwrrttr2(kSwkrttk)2 \alpha=w_{total}\frac{\max \frac{w_r}{rtt_r^2}}{(\sum_{k\in S}{\frac{w_k}{rtt_k}})^2}
 内核中[3]的实现,则会乘以一些系数。

[1] Coupled Congestion Control for Multipath Transport Protocols
[2] AIMD吞吐量公式的推导
[3] mptcp_coupled.c https://github.com/multipath-tcp/mptcp/blob/mptcp_v0.95/net/mptcp/mptcp_coupled.c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!