zoukankan      html  css  js  c++  java
  • 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
         
  • 相关阅读:
    [剑指Offer] 10.矩形覆盖
    [剑指Offer] 9.变态跳台阶
    [剑指Offer] 8.跳台阶
    [剑指Offer] 7.斐波那契数列
    ArtifactTransferException: Failure to transfer org.apache.openejb:javaee-api:jar:5.0-1
    -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HO 解决办法
    java中判断list是否为空的用法
    PL/SQL快速选中一行并执行
    substring的用法
    Oracle---------sql 中取值两列中值最大的一列
  • 原文地址:https://www.cnblogs.com/lxgeek/p/4365776.html
Copyright © 2011-2022 走看看