TCP AIMD Algorithm (copy)
什么是流控(Flow Control)?
流控关注的是如何动态的调整源端的发送速率,以使网络资源得到充分的利用,同时又不发生拥塞。因此,流控是一种在相互竞争的源端之间合理的分配有限的网络资源的机制。
什么是最优化流控(Optimal Flow Control)?
最优化流控试图从优化理论的角度研究并解释流控问题。它将流控机制看作是一种求解凸规划问题的分布式算法。
流控的要点是什么?
- 效率:流控算法应当使得网络资源得到充分的利用;
- 公平:使用网络资源的各个用户之间应当满足某种公平性的原则,尽可能减小资源分配的不平衡;
- 扩展能力:算法应当对不同规模的网络都有较好的适应能力,不会因为网络规模的增加而无法应用。这要求算法必须是分布式的。
- 动态性能:流控算法将在一个复杂的时变环境下应用,所以算法不能是静态的,它必须有良好的动态性能。一般情况下,动态性能包括两方面:稳定性和响应速度。
什么是TCP?
TCP是Internet的流控机制。TCP协议的基本思想是源端通过线性增加发送速率来探测网络的剩余容量,与此同时,当检测到拥塞的时候乘性的减少其发送速率。
以TCP Tahoe为例,它的基本过程如下:首先,每个连接小心的从单个包的窗口大小开始发送,每收到一个确认包,窗口大小即增加1。这样实际上每个RTT(Round Trip Time)时间窗口大小加倍。这就是通常所说的TCP“慢启动阶段”。当窗口大小达到某个阈值,源端即进入“拥塞避免”阶段,在这个阶段只有接收到窗口内的全部确认包,窗口大小才会增加1。这样每个RTT时间窗口大小只增加1,这就是所谓的加性增长。而这个决定何时由“慢启动”进入“拥塞避免”的阈值本身即意味着网络的可能容量,它会根据检测到丢包的情况做相应的调整。一旦检测到丢包,源端即设定这一阈值为此刻窗口大小的一半,重传丢包,并再次进入“慢启动”阶段。
什么是AIMD原理?
AIMD原理说明了TCP过程将会收敛到一个同时满足效率和公平性的平衡点上。
考虑仅有两个用户和一个瓶颈的系统。系统状态可以用下图表示。同时任意一点表示系统分配给用户1和用户2的资源(即用户可使用的发送速率)。当x1+x2=X时,系统效率最高。对应于图中的一条线段,称为效率线。当x1=x2时,系统公平性最高,对应图中的公平线。公平线和效率线的交点为系统的控制目标,称为最优点。与效率线平行的直线,效率为一定值,称为等效率线。过原点的任何一条直线,其公平性相同,称为等公平线。效率线上方为过载区,下方为轻载区。
假设两用户按照某种节拍同步动作,且遵循同样的规则。当发生丢包时,同时降低速率,否则同时升高速率,考虑以下几种速率升降的方式:
加性增(AI):x(t+1)=x(t)+A, A>0
加性减(AD):x(t+1)=x(t)-B, B<0
乘性增(MI):x(t+1)=C*x(t), C>1
乘性减(MD):x(t+1)=D*x(t), D<1
从图中可以看出,AI和AD的轨迹为45度的直线。AI使公平性增加,同时向过载区移动。AD使公平性降低,同时向轻载区移动。
MI和MD的轨迹为过原点的直线。MI和MD在等公平线上移动,故保持公平性不变。MI使轨迹向过载区移动,而MD使轨迹向轻载区移动。
如下图所示,AIMD过程的结果将收敛到效率线和公平线的交点。所以,TCP通过加性增乘性减完成了一种兼顾效率和公平的资源分配。
优化流控的提法
研究方向
-流控和多径路由的联合优化
基于优化流控的框架,Han研究了多径路由问题。他们提出了一种源端算法用于在源端和目的端之间最优的分割流量。
-流控和物理层功率控制的联合优化
Mung Chiang研究了链路速率是干扰受限的多跳无线自组织网络。他提出了一种分布式的功率控制算法,该算法通过与TCP协作,提高了端到端的吞吐量和网络的能量的利用率。
主要参考文献
[routing-cross-layer] Han, H., Shakkottai, S., Hollot, C.V., Srikant R., Towsley, D.: Overlay TCP for Multi-Path Routing and Congestion Control. ENS-INRIA ARC-TCP Workshop, Paris, France, (2003)
[physical-cross-layer] Mung Chiang. To Layer or Not To Layer: Balancing Transport and Physical Layers in Wireless Multihop Networks. INFOCOM 2004
TCP AIMD Algorithm (copy)相关推荐
- 万字长文 | 全(小区局域)网最强 TCP/IP 拥塞控制总结
来源 | 后端技术指南针 头图 | CSDN付费下载自视觉中国 先唠唠嗑 在正式开始文章技术点之前,想先聊一下我对面试中的TCP/IP问题的一些拙见,希望对盆友们有所帮助. 在招聘岗位描述中,几乎必然 ...
- 【译】TCP Implementation in Linux
TCP Implementation in Linux: A Brief Tutorial 一个简单教程关于 TCP 协议在 linux 内核的实现 翻译:内核小王子 (欢迎订阅微信公众号) 原文:H ...
- boost::copy相关的测试程序
boost::copy相关的测试程序 实现功能 C++实现代码 实现功能 boost::copy相关的测试程序 C++实现代码 #include <boost/range/algorithm/c ...
- Boost:compute::copy的复制数据测试程序
Boost:compute::copy的复制数据测试程序 实现功能 C++实现代码 实现功能 compute::copy的复制数据测试程序 C++实现代码 #include <vector> ...
- MySQL加索引语句不加锁:ALGORITHM=INPLACE, LOCK=NONE
线上无锁添加索引:加索引的语句不加锁 ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE; ALGO ...
- TCP Congestion Control
TCP Congestion Control Congestion occurs when total arrival rate from all packet flows exceeds R ove ...
- 为什么我的modbus tcp server只能连一个client_TCP 协议概览
文章说明,视频分享 喜欢c++ Linux后台服务器开发的朋友可以后台私信[架构]获取图中视频 背景知识--互联网分层模型 应用层(DNS,FTP,HTTP,RTSP,SSH,TLS/SSL, XMP ...
- TCP/UDP常用端口及对应服务列表
计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口 ...
- 常用的协议端口号(TCP and UDP)
这是在网上搜集到的一些资料,共享出来! 端口号 协议 解释 0 TCP Reserved 0 UDP Reserved 1 TCP tcpmux TCP Po ...
- TCP/UDP常用端口列表
前言 文章的表格中列举了Linux 中的服务.守护进程.和程序所使用的最常见的通信端口,该列表还可以在 /etc/services 文件中找到,更多详细信息推荐查看由互联网号码分派局(IANA)制定的 ...
最新文章
- 微调torchvision 0.3的目标检测模型
- three.js学习资料整理
- mysql表中插中文报错_向mysql表中插入含有中文的数据时报错:[Err] 1366
- linux 连接存储,在Linux中连接和使用云存储的三种途径
- dump排查内存异常 java_如何排查Java应用内存泄漏问题
- 4.1线程组(Thread Group)
- 浅谈5类过零检测电路
- 安科瑞变电站综合自动化系统在变电站的应用-Susie 周
- 微信公众号订阅号开发项目小记
- 七腾OA办公平台解决方案
- 8个优秀的CSS实践,超详细
- k3cloud怎样使金额字段显示金额符号
- Linux之RPM包的命名规则和包的依赖性
- C语言代码简化技巧(一)
- vue-pdf打印出现方字块乱码问题
- 高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息
- JQuery jQuey Ajax- POST请求
- camstar portal 7全屏显示
- VisionPro 9.X 各版本下载地址
- 全网唯一一套labview深度学习教程:tensorflow+目标检测:龙哥教你学视觉—LabVIEW深度学习教程
热门文章
- iPhone 开发分辨率 持续更新
- java.lang.UnsupportedOperationException: Required method instantiateItem was not overridden
- STM32F401CCU6踩坑系列
- 第十四届全国大学生信息安全竞赛部分wp
- wps转PDFmathtype公式错位乱码
- 设置计算机网络文件共享,局域网电脑文件共享怎么设置
- 家里两台电脑怎么共享文件_一招教你在两台电脑之间怎么共享文件?
- Java 拾遗补阙 ----- 继承父类的成员变量与方法区别
- 3dmax实例教程-使用3ds Max 创建一个完整的场景
- 百旺如何看是否清卡_百旺开票系统每月清卡怎么操作?