NS-3下默认的数据调度算法是Round_Robin算法,但是在Linux的内核中默认的调度算法是最小RTT(Min_RTT),同时在ns-3下默认的子流窗口大小为1,但是在Linux内核中默认的子流窗口数目是10。

ns-3下轮询算法或者说数据包的调度算法流程如下:在子流建立后,子流的默认窗口大小是1,所以轮询算法调度子流时每一次调用都是发送一个窗口大小的数据包,通常这个值得大小等于MSS,这是子流建立后首次发送数据包的情况,然后当子流接收到ACK信息时,根据ACK的信号进行窗口的变化,然后进行数据的调度,每一次调度都是对所有窗口进行一次轮询,发送一个MSS大小的数据包,当有些窗口有空闲时,该窗口并不会一次发送所有窗口大小的数据包,而是每一次发送一个MSS后进入下一个子流进行数据包的发送,每次发送一个MSS,这就相当于是有N个水桶,每个水桶里面的水量不一样,当桶内有水时,每一个桶都取一瓢水,然后一直汲取,直到水桶为空,而不是将其中一个桶的水汲取完后才进行下一个桶的汲取。但是这个会导致两个问题:

1.当一个MPTCP流可以建立多条子流的时候,如果待发送的数据量超过一个MSS,那么会启用至少两条流,因为每一次都给每一条子流调度一个MSS的数据包;

2.当子流之间性能差异很大时,不会选择最好的路径发送数据,如一个MPTCP连接只有2个子流s1与s2,其中s1的RTT为10ms,s2的RTT为100ms,窗口都是10000,发送的总的数据量为10000,那么根据RR算法会选择每一条自流都是发送5000字节的数据(假设每一个包携带的数据为1000),这样就会使得发送时间为百毫秒级别,而如果只是使用s1,那么发送时间为十毫秒级别。

linux-mptcp调度算法,MPTCP的轮询调度算法相关推荐

  1. 轮询调度算法(Round-Robin Scheduling)

    round robin是按照某种合理的顺序平等地选择一组中的所有元素的方法,通常是从列表的顶部到底部,然后再从列表的顶部开始,如此反复.一个简单的解释就是 "轮流 ".作为一个形容 ...

  2. linux-mptcp调度算法,NS-3实现MPTCP的轮询调度算法

    NS-3下默认的数据调度算法是Round_Robin算法,但是在Linux的内核中默认的调度算法是最小RTT(Min_RTT),同时在ns-3下默认的子流窗口大小为1,但是在Linux内核中默认的子流 ...

  3. php pcntl 进程池_PHP 进程池与轮询调度算法实现多任务的示例代码

    phper 请了解进程调度策略,CPU 时间片,进程控制[创建,销毁,回收,进程信号]与及进程运行流程和基本的进程组,信号中断原理,以及进程之间的关系. 关于进程的更多内容可参考本人前面撸过的文章或是 ...

  4. 仲裁器设计(二)-- Round Robin Arbiter 轮询调度算法

    作者:李虹江 原文:https://mp.weixin.qq.com/s/r-nckE5nGz9mc5KqjPXKYg 本文授权转自IC加油站微信号,未经作者授权,严禁二次转载. 上一篇老李讲了固定优 ...

  5. roundrobin来历_golang实现权重轮询调度算法(Weighted Round-Robin Scheduling)

    最近在看golang连接mysql数据库的例子(Go-MySQL-Driver),但是想到连接数据库肯定会有连接多从库的需求,而且每个从库的权重也会不一样,参考<< package mai ...

  6. WINDOWS与LINUX下的DNS轮询配置

    11月12日我参加了51CTO的技术沙龙"Exchange Server系统升级与迁移",两位老师的分享都比较精彩,也让我学到了一些EXCHANGE在升级和迁移方面的知识和经验.记 ...

  7. linux主备dns切换时间,linux实现DNS轮询实现负载平衡

    导读 DNS 轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响:别的 DNS 服务器 Cache 的影响:windows 客户端也有一个DNS Cache.这些都会影响 DNS 轮询的效果 ...

  8. linux中dns轮询,linux实现DNS轮询实现负载平衡

    linux实现DNS轮询实现负载平衡 DNS轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响:别的DNS服务器Cache的影响:windows客户端也有一个DNS Cache.这些都会影响 ...

  9. Nginx的继续深入(日志轮询切割,重写,负载均衡等)

    Nginx的访问日志轮询切割 通常什么情况Nginx会把所有的访问日志生成到一个制定的访问日志文件access.log里面,但时间一长,日志个头很大不利于日志的分析和处理. 有必要对Nginx日志进行 ...

最新文章

  1. 时代亿信 认证墙-SID强身份认证产品
  2. JQUERY设置或返回属性值attr
  3. 关于TCP粘包的拙见
  4. 数据结构基础学习之(串与数组)
  5. keil 函数最多可以传几个参数_Keil C51中如何让一个函数返回多个值?我把数组指针传入函数中,但发现编译后DATA区会随...
  6. Drools 规则引擎的使用
  7. 1《游戏脚本高级编程》之命令脚本的随想
  8. Wpf MessageBox的用法
  9. C++实现轻量级极简httpserver和httpclient(提供http和websocket接口)
  10. 有限自动机DFA 、 无限自动机NFA
  11. python3模拟登录_python3模拟登录有哪些情况
  12. 墨刀实现区域内滚动效果
  13. [NHZXOI2017]二叉堆
  14. DBeaver解决连接Oracle之后出现库名为数字问题
  15. 如何在 ubuntu 上安装 mercury mw150us 网卡驱动
  16. Qt 自定义控件 标尺控件 QLsRuler
  17. 隐式内联函数和显式内联函数
  18. mel表达式_Maya Mel基础知识教程 了解运用Mel
  19. RIL.java【2】
  20. 自行实现ONVIF协议网络摄像机(IPC)开发(0):专栏开篇

热门文章

  1. javascript字符串比较大小
  2. 怎样才能选好贵金属交易平台
  3. 灰色系装修风格怎么做才能显高级,温馨?
  4. miniblink C#版使用教程
  5. localStorage.setItem()使用
  6. 听说你想去大厂看学姐,带你看看虎牙产品运营三面+HR面
  7. 微信小程序开发笔记—获取颜色十六进制值
  8. 考试酷解析——A4_Declarations
  9. 达梦数据库关键字屏蔽
  10. Unity 3D之简单鱼群算法(直接套上就好)