| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 拥塞控制算法(一) -> 正文阅读 |
|
[网络协议]拥塞控制算法(一) |
一、CUBIC参考链接:CUBIC拥塞控制算法 1. BIC1.1 基础原理BIC是以对数形式增大拥塞窗口,改善了之前线性增加拥塞窗口。
1.2 一些细节
1.3 优缺点
2. CUBIC1. 基本原理CUBIC的关键特征是其窗口增长仅取决于两个连续拥塞事件之间的时间。
CUBIC的窗口增长公式: K = W m a x × β C 3 ( 2 ) K=\sqrt[3]{\frac{W_{max}\times \beta }{C} }\qquad(2) K=3CWmax?×β??(2)
K 是上述函数在没有进一步丢包的情况下将当前的拥塞窗口 W 增加到 W m a x W_{max} Wmax?经历的时间 2. 公式推导首先,我们定义一个三次函数
所以: 将前两个条件带入得到: 由第三个条件求得K 下图是CUBIC的函数图像,图像以K为轴,极值为
W
m
a
x
W_{max}
Wmax? 3. 运行模式在拥塞避免阶段每收到一个ACK,CUBIC都会使用公式(1)计算在下个RTT的窗口增长速率。CUBIC使用 W ( t + R T T ) W(t+RTT) W(t+RTT)作为拥塞窗口的候选值,假设当前拥塞窗口大小为 c w n d cwnd cwnd。 根据 cwnd的值,CUBIC有三种运行模式。
3.1 TCP友好型区域标准TCP协议在网络时延带宽积小或者RTT小的情况下表现仍不错,CUBIC被设计为在这两种情况下可以很好的兼容标准TCP协议。 算法执行过程中,每收到一个ACK后都会判断当前是否处于标准TCP阶段,即TCP友好域,以此来更好的兼容TCP。 因此需要通过TCP的AIMD(加法增、乘法减)特性并使用加法因子 α 和乘法因子 β 去估算在TCP传统拥塞算法下的拥塞窗口大小。 由该函数可以看出,该函数是一个线性函数,这与TCP的线性调整拥塞窗口相符。 3.2 凸区域当在拥塞避免阶段收到一个ACK,如果协议不处于TCP模式,且cwnd小于 W m a x W_{max} Wmax?,那么协议就处于凸区域,在这个区域,cwnd 的增量为: W ( t + R T T ) ? c w n d c w n d \frac{W(t+RTT)-cwnd }{cwnd} cwndW(t+RTT)?cwnd? 3.3 凹区域当前的cwnd 大于 W m a x W_{max} Wmax?时,协议就会进入凹区域。 由于 cwnd大于先前的饱和点 W m a x W_{max} Wmax? ,这表明自上次拥塞事件以来,网络条件可能受到干扰,这可能意味着在一些竞争流离开后,可用带宽会增加。 由于网络是高度异步的,可用带宽的波动总是存在的。凹区域使得窗口在开始时增长非常缓慢,并逐渐增加其增长率。 由于CUBIC正在搜索一个新的 W m a x W_{max} Wmax?,我们也将此阶段称为最大探测阶段。由于没有修改凹区域的窗口增长函数,因此两个区域的窗口增长函数保持不变。因此 cwnd的增量同样为: W ( t + R T T ) ? c w n d c w n d \frac{W(t+RTT)-cwnd }{cwnd} cwndW(t+RTT)?cwnd? 4.一些细节4.1 乘法因子当出现数据包丢失时,CUBIC会通过乘法因子 β 来降低拥塞窗口,这里取β=0.2 。虽然自适应性的设置 β 会导致更快的收敛,但是会使协议的分析变得更加困难,并影响协议的稳定性。 4.2 快速收敛机制新的流量加入网络时,网络中的现有流量需要放弃其部分带宽份额,以使新流量有一定的增长空间。
为了不至于混淆,可以将之前记录的 W m a x W_{max} Wmax?记为 W l a s t m a x W_{lastmax} Wlastmax?。当发生丢包时,CUBIC会比较 W l a s t m a x W_{lastmax} Wlastmax?和 W m a x W_{max} Wmax?的大小。 如果 W m a x W_{max} Wmax? 小于 W l a s t m a x W_{lastmax} Wlastmax? ,这表明由于可用带宽的变化,该流的窗口饱和点正在降低。这种情况下,CUBIC的做法是通过进一步的减小 W m a x W_{max} Wmax? 来释放更多的可用带宽,使得新加入的流量有一定的增长空间。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:52:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |