TCP 拥塞控制

TCP 拥塞控制

相关名词

  1. 滑动窗口

tcp通过滑动窗口进行流量控制,所谓的窗口可以理解为接收端所能提供的缓冲区大小。

TCP是一个滑动窗口协议,即一个TCP连接的发送端在某个时刻能发多少数据是由滑动窗口控制的

  1. RTT(Round trip time)

表示从发送端到接收端的一去一回需要的时间。

TCP在数据传输过程中会对RTT进行采样(即对发送的数据包及其ACK的时间差进行测量,并根据测量值更新RTT值)

  1. RTO (Retransmission TimeOut)

发送数据包,启动重传定时器,重传定时器到期所花费的时间

TCP根据得到的RTT值更新RTO值,即Retransmission TimeOut,就是重传间隔,发送端对每个发出的数据包进行计时,如果在RTO时间内没有收到所发出的数据包的对应ACK,则任务数据包丢失,将重传数据。一般RTO值都比采样得到的RTT值要大。

TCP拥塞控制算法

  1. BIC(Binary Increase Congestion)
  2. BIC方法
  • 如果发生丢包,窗口大小为W1,要保持线路满载不丢包,则说明实际窗口Wmax应该在当前窗口值W1以下。
  • 如果当前窗口值W2没有丢包,则说明实际实际Wmax值应该在当前窗口值以上。
  1. 何时调整?
  • 每收到一个ACK时,便将窗口设置到Wmax和Wmin值的中点,直到持续接近Wmax值。
  1. 如何突破?
  • 当当前窗口值已经达到Wmax值时,说明带宽已经有空闲资源,此时最大带宽可能已经不止Wmax值!
  • 如何去寻找新的Wmax值? 丢包! 按照逼近Wmax值的路径倒回去,采用与之对称的方案。

整个BIC过程可以参考如下图

##### BIC缺陷

  • 可以通过上图和下图了解到 如果RTT时间不同,通过BIC算法搜索到的Wmax的时间是不同的,因此带宽就会被RTT短的连接无情的占有。

?

  1. CUBIC(CU-BIC?)

CUBIC相对于BIC解决的就是在探索Wmax的时间公平问题。

如何让寻找Wmax探索曲线跟RTT无关?

很简单。找一条数学上定义的曲线即可!该曲线的曲线方程自变量里没有RTT就好了。

Wmax曲线公示?

$f(x)=x^3-x^2+1$ 类似于BIC窗口探测曲线的公式

所以我们实际上需要确定该1元3次函数的各项参数($f(x)=ax^3+bx^2+cx+d$)

CUBIC 公式的建立

  • 由上图可知 $f(x)=h(x)+Wmax$ (1)
  • 其中
  • $f(0)=\beta Wmax$ (2)
  • $()f(2r)=Wmax + \beta Wmax$ (3)
  • $f(r)=Wmax$ (4)
  • 将(2),(3),(4)代入(1)中 可得:
  • $h(r)=0$ (5)
  • $h(0)=(\beta-1)Wmax$ (6)
  • 由实际情况我们可以合理推算出 h(x) 的一个合理形式 $h(x)=a(x-r)^3$ (7)
  • 将(6)式代入到(7)中,得表达式$ r=\sqrt[3]{\frac{(1-\beta)Wmax}a} $ (8)
  • 将 (7)(8)式联合代入 (1)中,并将 $a$ 替换成 c 可得 $f(x)=c(x-\sqrt[3]{\frac{(1-\beta)Wmax}a} )+Wmax$

其中 C 即 CUBIC中的C

?

CUBIC :$f(x)=c(x-\sqrt[3]{\frac{(1-\beta)Wmax}a} )+Wmax$

到这里 我们可以理解到 $\beta$ 控制了曲线的高度,也就是 最开始的Wmin值,r则控制了从起始窗口到Wmax窗口的时间,这个r和C成反比,C越大 时间越小。

c越大,时间越小参考附图1.

因此,我们可以通过控制 C 和$\beta$的值来控制 TCP的高速率传输,而不受 RTT值的影响。

参考博客

BIC和CUBIC简介

附图一

原文地址:https://www.cnblogs.com/shitou6/p/9060423.html

时间: 2024-12-27 17:04:37

TCP 拥塞控制的相关文章

linux内核工程导论-网络:tcp拥塞控制

这篇文章本来是在tcp那篇里面的,但是那篇太长了,不专一.就完善了一下提取出来了. TCP拥塞控制 拥塞控制讨论的是很多个同时存在的tcp连接应该怎么规划自己的数据包发送和接收速度,以在彼此之间共享带宽,同时与其他实体的机器公平的竞争带宽,而不是自己全占. 拥塞控制的核心是AIMD(additive-increase/multiplicative-decrease ),线性增加乘性减少.为啥不用线性增加线性减少,或者是乘性增加乘性减少呢?这个有人专门研究过,只有AIMD可以收敛聚合使得链路公平.

网络协议|TCP/IP协议相关

双方会发送保活报文,当一方断开连接时,超过一定次数的保活报文没有被收到,就会停止发送. 在浏览器敲入URL并且按回车之后会发生什么: http状态码 post和get的区别 cookie和session的区别 原文地址:https://www.cnblogs.com/cykfory/p/10353501.html

【网络协议】TCP的拥塞控制机制

前言 计算机网络中的带宽.交换节点中的缓存和处理机等,都是网络的资源,在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这样的情况就叫做拥塞. 所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载.要注意用拥塞控制与流量控制的差别,拥塞控制是一个全局性的过程,涉及到全部的额主机.路由器,以及与减少网 拥塞控制的算法有:慢開始.拥塞避免.快重传.快恢复四种. 慢開始和拥塞避免 发送方维持一个拥塞窗体的状态变量,其大小取决于网络的拥

《网络协议》TCP 拥塞控制

TCP 拥塞控制主要有几种:慢启动.拥塞避免.快重传 以及 快恢复. 慢启动 为了防止网络拥塞,TCP 采用了一种慢启动算法,对发送数据量进行控制.为了调节发送端的数据发送量,引入了拥塞窗口,在慢启动时,将这个拥塞窗口设为 1 个报文段发送数据,之后每收到一次确认应答,拥塞窗口的值就加 1 个报文段.在发送数据包时,将拥塞窗口的大小与接收端主机通知的窗口大小进行比较,然后选择较小的值来控制数据量的发送.拥塞窗口是发送端使用的流量控制,而通告窗口则是接收端使用的流量控制. 慢启动算法步骤如下(cw

【网络】TCP协议

TCP协议:对于网络协议而言.TCP在传输层中是一个十分钟要的协议,那么什么是TCP协议呢? TCP协议概念: 传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议. 在因特网协议族(Internet protocol suite)中,TCP层是位于I

网络协议之TCP

前言 近年来,随着信息技术的不断发展,各行各业也掀起了信息化浪潮,为了留住用户和吸引用户,各个企业力求为用户提供更好的信息服务,这也导致WEB性能优化成为了一个热点.据分析,网站速度越快,用户的黏性.忠诚度.转化率等也越高.对网络通信有决定性影响的因素有延时和带宽,延时有传播延时.传输延时.处理延时和排队延时构成.对于日常网站浏览来说,延时要比带宽对性能影响更大,因为一个网站需要的资源往往是由很多小文件构成,需要多次请求才能完成,其处理延时.排队延时更大.不同的网络协议具有不同的信息传递方式,也

OSI七层模型,讲解tcp/ip五层涉及的网络协议,网络通信实现,结合协议来看网络通信流程

当我们通过自己电脑的浏览器访问京东的时候, 览器上输入了一个网址,但是我们都知道,互联网连接的电脑互相通信的是电信号,我们的电脑是怎么将我们输入的网址变成了电信号然后发送出去了呢,并且我们发送出去的消息是不是应该让京东的服务器能够知道,我们是在请求它的网站呢,也就是说京东是不是应该知道我发送的消息是什么意思呢.是不是发送的消息应该有一些固定的格式呢?让所有电脑都能识别的消息格式,他就像英语成为世界上所有人通信的统一标准一样,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的intern

TCP/IP网络协议

什么是协议?协议就是双方约定的规则.同理,在网络中,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议. 下面是我百度的定义: TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议)协议, TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式.TCP/IP是INTERNET的基础协议,也

加域报错:“TCP/IP没有安装网络协议”

检查电脑后发现问题: 1.电脑不能自动获取IP地址 2.手动设置IP地址后加域报错 估计TCP/IP协议损坏,重新安装即可解决:以下为重装TCP/IP协议方法: 1.打开注册表编辑器,删除以下两个键: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2 2.用记事本打开%winroot%\inf\nett

【网络协议】TCP中的四大定时器

前言 对于每个TCP连接,TCP一般要管理4个不同的定时器:重传定时器.坚持定时器.保活定时器.2MSL定时器. 重传定时器 非常明显重传定时器是用来计算TCP报文段的超时重传时间的(至于超时重传时间的确定,这里涉及到一大堆的算法,书上有说,我这里不细谈了).每发送一个报文段就会启动重传定时器,假设在定时器时间到后还没收到对该报文段的确认,就重传该报文段,并将重传定时器复位,又一次计算:假设在规定时间内收到了对该报文段的确认,则撤销该报文段的重传定时器. 坚持定时器 上篇文章中已经提到了,主要是