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

简述      MPTCP的拥塞控制对TCP的拥塞控制的线性增加阶段进行了修改,而慢启动,快速重传. 快速恢复都没有改变.每条子路径拥有自己的cwnd,MPTCP的拥塞算法主要关心cwnd的改变.   拥塞算法设计原则 MPTCP的Throughput 要达到MPTCP中所有子路径中最好的一条路径 MPTCP应该和普通TCP一样从共享资源中获得相同资源 MPTCP中的流量将从拥塞的子路径转移到不拥塞的路径.   算法理解      MPTCP的各个子路径运行着正常的TCP,因此直观的我们可以在每…
简述:      在TCP协议中影响数据发送的三个因素分别为:发送端窗口值.接收端窗口值和拥塞窗口值. 本文主要分析MPTCP中各个子路径对接收端窗口值rcv_wnd的处理.   接收端窗口值的初始化      根据<MPTCP 源码分析(二) 建立子路径>中描述服务端在发送完SYN/ACK并接收到ACK的时候建立新的sock. 在内核实现中,针对连接请求分为两个步骤处理: SYN队列处理:当服务端收到SYN的时候,此连接请求request_sock将被存放于listening socket的…
本文主要说明Setting的实现以及Mail这个功能模块如何使用Setting. 首先区分一下ABP中的Setting和Configuration. Setting一般用于需要通过外部配置文件(或数据库)设置的简单类型数据(一般就是字符串),比如SMTP HOST. Configuration一般只需要通过内部代码完成的配置,一般用于设置复杂类型的数据. 目前Abp在setting 这个功能模块只能从配置文件读取设置,无法从其他source(比如数据库)读取设置.也可以自定义SettingSto…
当项目非常大时,如果所有的状态都集中放到一个对象中,store 对象就有可能变得相当臃肿. 为了解决这个问题,Vuex允许我们将 store 分割成模块(module).每个模块拥有自己的 state.mutation.action.getter.甚至是嵌套子模块——从上至下进行同样方式的分割. namespaced表示当前模块是否使用命名空间,如果使用的话,那么设置了namespaced属性的模块将和其它模块独立开来,调用时得指定命名空间后才可以访问得到 例如: <!DOCTYPE html>…
先来看看官网的介绍: 官网介绍的很好理解了,也就是监听一个数据的变化,当该数据变化时执行我们的watch方法,watch选项是一个对象,键为需要观察的数据名,值为一个表达式(函数),还可以是一个对象,如果时对象可以包含如下几个属性: handler         ;对应的函数                          ;可以带两个参数,分别是新的值和旧的值,上下文为当前Vue实例            immediate     ;侦听开始之后是否立即调用 ;默认为false     …
简述:      MPTCP依然按照正常的TCP进行三次握手,只是在握手过程中增加了MPTCP特有的信息.   建立过程      三次握手过程如下图所示: 左边客户端发送的第一个SYN包携带有客户端自身的KEY,右边发送SYN/ACK的时候携带了自身的KEY, 而最后左边的客户端发送最后一个ACK的时候携带着双方的KEY.MPTCP中关于MP_CAPABLE的定义如下: Subtype的定义如下:   MPTCP的内核实现       MPTCP在客户端上发送SYN包的调用情况如下: 关键函数…
本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/642794         本博客已迁移到本人独立博客: http://www.yun5u.com/          欢迎加入Heritrix群(QQ):109148319,10447185  , Lucene/Solr群(QQ) :  118972724 网上关于Heritrix的基本介绍有很多,这里就不再重复.我这里主要介绍下它的优缺点.然后我会介绍它的运作流程以及我会从流程中…
这次是逆雪寒对模板引擎实现的分析: 1 /* 函数 template函数是在global.func.php 里面定义的. 在前面的phpcms 的首页 index.php 里就见到了. 用法: include template() 用法很熟, 呵呵其实和 dz 的模板引擎一样的用法. 但DZ的模板引擎比 PHPCMS 的简单很多,因为没有用到模板的标签技术. 大家有空可以研究下DZ的模板引擎. 这里不说. 好分析下下面这个 模板的主要函数吧. 他的作用是返回编译好的模板文件路径. 也就是把模板…
简述      TCP使用定时器函数tcp_retransmit_timer进行数据重发,MPTCP需要重发数据的时候, 不仅仅在原路径发送数据,而且会在另外一条子路径进行重发.这样考虑的原因是: 考虑网络中间件设备的影响, 保证子路径上数据序列号的完整性.目前的版本0.89依然如此实现, 以后应该会优化.   内核实现      MPTCP的结构如下图所示:   如上图所示:每一个slave subsock 和 master subsock实际上维持着一个正常的TCP链路,因此,他们都具有 重…
简述:      MPTCP在发送数据方面和TCP的区别是可以从多条路径中选择一条 路径来发送数据.MPTCP在接收数据方面与TCP的区别是子路径对无序包 进行重排后,MPTCP的mpcb需要多所有子路径的包进行排序.查看图1可知. +-------------------------------+ | Application | +---------------+ +-------------------------------+ | Application | | MPTCP | +----…