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)

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

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

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

  2. 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简介

附图一

TCP 拥塞控制的更多相关文章

  1. TCP拥塞控制

    TCP必须使用端到端拥塞控制而不是使网络辅助的拥塞控制,因为IP层不向端系统提供显式的网络拥塞反馈.TCP采用的方法是让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率. 几个相关 ...

  2. [置顶] NS2中TCP拥塞控制仿真过程中盲点解析

    最近利用NS2做TCP拥塞控制协议的仿真,发现很多变量的方法含义都是解释的不清楚,给核心模块修改带来很多麻烦,所以决定用最准确的语言解释成员变量.方法,术语等的含义.限于个人水平,若有错误请留言指正! ...

  3. s6-8 TCP 拥塞控制

    TCP 拥塞控制  虽然网络层也试图管理拥塞,但是,大多数繁重的任务是由TCP来完成的,因为针对拥塞的真正解决方案是减慢数据率  分组守恒:当有一个老的分组离开之后才允许新的分组注入网络  TC ...

  4. TCP/IP 笔记 - TCP拥塞控制

    拥塞控制是TCP通信的每一方需要执行的一系列行为,这些行为有特定算法规定,用于防止网络因为大规模的通信负载而瘫痪.其基本方法是当有理由认为网络即将进入拥塞状态(或已由于拥塞而出现路由丢包情况)时减缓T ...

  5. TCP拥塞控制机制

     研究TCP的拥塞机制,不仅仅是想了解TCP如何的精巧,更多的是领悟其设计思想,即在一般情况下,我们该怎样处理问题.   一.拥塞的发生与其不可避免    拥塞发生的主要原因:在于网络能够提供的资源不 ...

  6. 3.7 TCP拥塞控制

    3.7 TCP拥塞控制 在3.5.5流量控制中有,接收方通过维护一个rwnd来控制流量,本节中考虑三个问题: 第一,  一个TCP发送方如何限制它向其他连接发送流量的速率. 第二,  一个TCP发送方 ...

  7. TCP拥塞控制及连接管理

    在阅读此篇之前,博主强烈建议先看看TCP可靠传输及流量控制. 一.TCP拥塞控制 在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion ...

  8. 牛客网Java刷题知识点之拥塞发生的主要原因、TCP拥塞控制、TCP流量控制、TCP拥塞控制的四大过程(慢启动、拥塞避免、快速重传、快速恢复)

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  9. 计算机网络概述 传输层 TCP拥塞控制

    TCP拥塞控制 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就 ...

  10. 现代互联网的TCP拥塞控制(CC)算法评谈

    动机 写这篇文章本质上的动机是因为前天发了一个朋友圈,见最后的写在最后,但实际上,我早就想总结总结TCP拥塞控制算法点点滴滴了,上周总结了一张图,这周接着那些,写点文字. 前些天,Linux中国微信公 ...

随机推荐

  1. 批处理cmd开启,关闭防火墙

    管理员启动dos窗口 开启防火墙: netsh advfirewall set allprofiles state on 关闭防火墙: netsh advfirewall set allprofile ...

  2. netty--buffer分配策略

    AdaptiveRecvByteBufAllocator 动态分配buffer大小的类. 如果前一次读取完全填满了分配的缓冲区,它将逐渐增加预期的可读字节数.(增加的方式:初始化类的时候,会预先设置好 ...

  3. SQL Server2008本地数据库调用SP发送邮件

    一.首先要对本地数据库做配置 1.通过使用数据库邮件配置向导和sp_configure存储过程配置启用数据库邮件: 注:服务器名称填写发送服务器的路径或者IP,电子邮件地址为寄件者地址 配置好数据库邮 ...

  4. Linux下如何挂载文件,并设置开机自动挂载

    首先保证服务端安装了 查看是否安装命令: nfsstat yum install nfs-utils 安装nfs-utils 192.168.50.85(服务端)192.168.50.83(客户端) ...

  5. 【转载】C#通过IndexOf方法判断某个字符串是否包含在另一个字符串中

    C#开发过程中针对字符串String类型的操作是常见操作,有时候需要判断某个字符串是否包含在另一个字符串,此时可以使用IndexOf方法以及Contain方法来实现此功能,Contain方法返回Tru ...

  6. nginx关闭日志功能access_log关闭

    网上一堆错误示例,我就不吐槽了,未经验证的各种关闭配置.emmm.... 错误示例: error_log off ; access_log on; 以上这些会产生名字为 off/on 的日志文件... ...

  7. you might not need jquery

    What's the oldest version of IE you need to support? IE10 /**json**/ var request = new XMLHttpReques ...

  8. 使用node建立本地服务器访问静态文件

    最终目录结构 demo │ node_modules └───public │ │ index.html │ │ index.css │ └───index.js └───server.js 一.使用 ...

  9. SAP Marketing Cloud功能简述(二) : Target Group

    这个系列的第一篇文章 SAP Marketing Cloud功能简述(一) : Contacts和Profiles,我向大家介绍了SAP Marketing Cloud里的Contacts和Profi ...

  10. MYSQL安装与卸载(一)

    系统:win10(其他版本系统不在本次内容) MYSQL下载地址:https://dev.mysql.com/downloads/mysql/ MySQL安装主流分为两种:msi,zip Zip:压缩 ...