MPTCP 源码分析(七) 拥塞控制

简述

     MPTCP的拥塞控制对TCP的拥塞控制的线性增加阶段进行了修改,而慢启动,快速重传、
快速恢复都没有改变。每条子路径拥有自己的cwnd,MPTCP的拥塞算法主要关心cwnd的改变。
 
拥塞算法设计原则
  1. MPTCP的Throughput 要达到MPTCP中所有子路径中最好的一条路径
  2. MPTCP应该和普通TCP一样从共享资源中获得相同资源
  3. 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
     

转载于:https://www.cnblogs.com/lxgeek/p/4365776.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP拥塞控制机制是为了防止网络中的拥塞情况,并保证网络的可靠性和公平性。TCP拥塞控制机制主要包括四种算法:慢启动、拥塞避免、快速重传和快速恢复。 1. 慢启动(Slow Start):在TCP连接建立时,TCP会先发送一个很小的数据包,在收到对方的确认后,会逐渐增加发送数据包的数量,直到网络出现拥塞为止。这个过程被称为慢启动。慢启动算法的目的是为了快速占用可用的带宽,同时也可以避免网络出现拥塞。 2. 拥塞避免(Congestion Avoidance):当网络出现拥塞时,TCP会采用拥塞避免算法来减少发送数据包的数量。拥塞避免算法主要是通过增加拥塞窗口的大小来减少发送数据包的数量。拥塞窗口是指TCP可以发送的数据包数量,拥塞窗口的大小会根据网络出现拥塞的情况进行调整。 3. 快速重传(Fast Retransmit):当TCP发送的数据包在传输过程中丢失时,TCP会启动快速重传算法来尽快地重传数据包。快速重传算法不会等待超时,而是在接收到连续的三个相同的确认消息时,就会立即重传数据包。 4. 快速恢复(Fast Recovery):在快速重传算法中,当TCP重传数据包时,会将拥塞窗口减半,以便尽快减少发送数据包的数量。而在快速恢复算法中,当TCP重传数据包时,拥塞窗口不会减半,而是将拥塞窗口设置为拥塞窗口的一半,并继续发送数据包。这样可以减少网络的拥塞情况,同时也可以提高网络的吞吐量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值