MPTCP 源码分析(七) 拥塞控制
来源:互联网 发布:sql中minus 编辑:程序博客网 时间:2024/06/03 11:55
http://www.cnblogs.com/lxgeek/p/4365776.html
简述
MPTCP的拥塞控制对TCP的拥塞控制的线性增加阶段进行了修改,而慢启动,快速重传、
快速恢复都没有改变。每条子路径拥有自己的cwnd,MPTCP的拥塞算法主要关心cwnd的改变。
拥塞算法设计原则
- MPTCP的Throughput 要达到MPTCP中所有子路径中最好的一条路径
- MPTCP应该和普通TCP一样从共享资源中获得相同资源
- MPTCP中的流量将从拥塞的子路径转移到不拥塞的路径。
算法理解
MPTCP的各个子路径运行着正常的TCP,因此直观的我们可以在每条子路径上运行自己的拥塞控制算法,
但是这样就违背了设计原则2,这样的效果是MPTCP的吞吐量就会超过其他正常TCP。因此有以下的算法:
其中a的取值参考[1]。这样的话,MPTCP就把每次cwnd的增加分摊到各个不同的子路径上,这样MPTCP就和正常TCP有着相同的吞吐量。
但是这样的算法设计存在问题,不能有效的利用网络环境,我们应该根据设计原则3,将流量移动到拥塞情况最少的路径上去。因此有以下
的算法:
此算法让各个子路径的拥塞窗口的变化联系起来,比如有两条路径,一条路径上面拥塞导致导致丢包严重,那么不断的减少Wtotal/2,
这样的话,就将流量从拥塞的路径移动到不拥塞的路径上。但是,这个算法存在两个问题:
1.如果拥塞的子路径完全没有流量,我们就无从得知这条子路径上拥塞情况以后是不是会改善。
2.没有考虑到RTT的的因素,比如对于一个智能手机来说,3G网络和WIFI相比丢包率更低,而RTT更大。
但是因为3G的拥塞情况更好,因此流量大部分会通过3G网络。而3G网络的吞吐量可能小于WIFI的吞吐量。
因此提出MPTCP的拥塞控制算法:
此算法通过 min操作来遵守设计原则2,通过a来保证各个子路径上都有适当的流量,从而达到
设计原则1和3。详细的算法描述可以参考[2]。
MPTCP的内核实现
MPTCP会在接收每一个ACK的时候,计算算法中的a。调用情况如下:
tcp_ack()
=>tcp_ca_event()
=>cwnd_event()
=>mptcp_ccc_cwnd_event()
在tcp_ack函数中也会增加cwnd,调用情况如下:
tcp_ack()
=>tcp_cong_avoid()
=>cong_avoid()
=> mptcp_ccc_cong_avoid()
参考资料:
[1]M. Honda, Y. Nishida, L. Eggert, P. Sarolahti, and H. Tokuda. Multipath Congestion Control for Shared Bottleneck. In Proc. PFLDNeT workshop, May 2009
[2]Design, implementation and evaluation of congestion control for multipath TCP
0 0
- MPTCP 源码分析(七) 拥塞控制
- MPTCP 源码分析(七) 拥塞控制
- SCTP协议源码分析--拥塞控制算法
- TCP BIC 拥塞控制源码分析
- SCTP协议源码分析--拥塞控制算法
- MPTCP 源码分析(0) MPTCP 理解
- 基于时延的mptcp的拥塞控制
- UDT拥塞控制算法协议及源码分析
- MPTCP 源码分析(一) MPTCP的三次握手
- MPTCP 源码分析(一) MPTCP的三次握手
- MPTCP 源码分析(二) 建立子路径
- MPTCP 源码分析(三) 子路径选择
- MPTCP 源码分析(六) 数据重发
- MPTCP 源码分析(二) 建立子路径
- MPTCP 源码分析(三) 子路径选择
- MPTCP 源码分析(六) 数据重发
- 拥塞控制分析之Reno
- 拥塞控制分析之Compound
- Oozie 大致概览
- module compiled against API version 9 but this version of numpy is 7的解决方法
- tjut 2824
- POJ 1861最小瓶颈树wa
- mybatis下使用log4j打印sql语句和执行结果
- MPTCP 源码分析(七) 拥塞控制
- BNU Training 2016.07.25 总结
- C语言系列(二)有符号数和无符号数详解
- CodeForces 501C Misha and Forest (STL queue)(拓扑排序)
- BestCoder Round #86 HDU 5804(暴力),HDU 5805(前缀和后缀差值最大),HDU 5806(尺取法),HDU 5807(简单DAG 分步式DP )
- Android文本的测量和绘制
- UVA 10305 Ordering Tasks(拓扑排序入门)【刘汝佳算法入门经典例6-15】
- Head First 装饰者模式
- 多线程实现的三个方法