简述

     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

     

MPTCP 源码分析(七) 拥塞控制的更多相关文章

  1. MPTCP 源码分析(五) 接收端窗口值

    简述:      在TCP协议中影响数据发送的三个因素分别为:发送端窗口值.接收端窗口值和拥塞窗口值. 本文主要分析MPTCP中各个子路径对接收端窗口值rcv_wnd的处理.   接收端窗口值的初始化 ...

  2. ABP源码分析七:Setting 以及 Mail

    本文主要说明Setting的实现以及Mail这个功能模块如何使用Setting. 首先区分一下ABP中的Setting和Configuration. Setting一般用于需要通过外部配置文件(或数据 ...

  3. vuex 源码分析(七) module和namespaced 详解

    当项目非常大时,如果所有的状态都集中放到一个对象中,store 对象就有可能变得相当臃肿. 为了解决这个问题,Vuex允许我们将 store 分割成模块(module).每个模块拥有自己的 state ...

  4. Vue.js 源码分析(七) 基础篇 侦听器 watch属性详解

    先来看看官网的介绍: 官网介绍的很好理解了,也就是监听一个数据的变化,当该数据变化时执行我们的watch方法,watch选项是一个对象,键为需要观察的数据名,值为一个表达式(函数),还可以是一个对象, ...

  5. MPTCP 源码分析(一) MPTCP的三次握手

    简述:      MPTCP依然按照正常的TCP进行三次握手,只是在握手过程中增加了MPTCP特有的信息.   建立过程      三次握手过程如下图所示: 左边客户端发送的第一个SYN包携带有客户端 ...

  6. Heritrix源码分析(七) Heritrix总体介绍(转)

    本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/642794         本博客已迁移到本人独立博客: http://www.yun ...

  7. phpcms 源码分析七: 模板引擎实现

    这次是逆雪寒对模板引擎实现的分析: 1 /* 函数 template函数是在global.func.php 里面定义的. 在前面的phpcms 的首页 index.php 里就见到了. 用法: inc ...

  8. MPTCP 源码分析(六) 数据重发

    简述      TCP使用定时器函数tcp_retransmit_timer进行数据重发,MPTCP需要重发数据的时候, 不仅仅在原路径发送数据,而且会在另外一条子路径进行重发.这样考虑的原因是: 考 ...

  9. MPTCP 源码分析(四) 发送和接收数据

    简述:      MPTCP在发送数据方面和TCP的区别是可以从多条路径中选择一条 路径来发送数据.MPTCP在接收数据方面与TCP的区别是子路径对无序包 进行重排后,MPTCP的mpcb需要多所有子 ...

随机推荐

  1. selenium 多窗口切换(windows)

    在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用 ,这样要去操作新窗口中的元素,这时就需要主机切换到新窗口进行操作..WebDriver 提供了switchTo() ...

  2. k8s的chart学习(下)

    1.开发自己的chart Kubernetes 给我们提供了大量官方 chart,不过要部署微服务应用,还是需要开发自己的 chart,下面就来实践这个主题. 1.1创建 chart 执行 helm ...

  3. 第一篇:Hello World

    Hello World RabbitMQ是一个消息代理:它接受和转发消息.你可以把它想象成一个邮局:当你把邮件放在邮箱里时,你可以确定邮差先生最终会把邮件发送给你的收件人.在这个比喻中,RabbitM ...

  4. hdu 5174(计数)

    Ferries Wheel Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  5. hdu 3006(状态压缩)

    The Number of set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  6. Android 使用WebView控件展示SVG图

    1.添加布局界面代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  7. MATLAB二维插值和三维插值

    插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...

  8. KISSY - A Powerful JavaScript Framework

    KISSY 是一款跨终端.模块化.高性能.使用简单的 JavaScript 框架.除了完备的工具集合如 DOM.Event.Ajax.Anim 等,它还提供了经典的面向对象.动态加载.性能优化解决方案 ...

  9. redis发布订阅、HyperLogLog与GEO功能的介绍

    一.发布订阅 1.模型 发布者发布消息,订阅者接收消息 2.API 2.1.publish 2.2.订阅 2.3.取消订阅 unsubsribe 2.4.其他api 二.HyperLogLog 极小空 ...

  10. Interface与abstract类的区别

    含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必 ...