TCP Congestion Control

  • Congestion occurs when total arrival rate from all packet flows exceeds R over a sustained(维持) period of time
  • Buffers(缓冲) at multiplexer will fill and packets will be lost

Phases of Congestion Behavior

  1. Light traffic

    • Arrival Rate << R
    • Low delay
    • Can accommodate(容纳) more
  2. Knee (congestion onset)
    • Arrival rate approaches R
    • Delay increases rapidly
    • Throughput(吞吐量) begins to saturate(饱和)
  3. Congestion collapse
    • Arrival rate > R
    • Large delays, packet loss
    • Useful application throughput drops

Congestion Window

  • Desired operating point: just before knee
  • TCP sender maintains a congestion window (cwnd) to control congestion at intermediate(中间的) routers
  • Effective window is minimum of congestion window and advertised window(广播窗口)
  • Problem: senders does not know what its “fair” share of available bandwidth should be
  • Solution:
    • adapt dynamically to available BW
    • Senders probe(探查) the network by increasing cwnd
    • When congestion detected, senders reduce rate
    • Ideally, sending rate stabilizes(稳定) near optimal(最优) point

Congestion Window (Cont.)

  • How does the TCP congestion algorithm change congestion window dynamically according to the most up-to-date state of the network?
  • At light traffic: each segment is ACKed quickly
    • Increase cwnd aggresively
  • At knee: segment ACKs arrive, but more slowly
    • Slow down increase in cwnd
  • At congestion: segments encounter large delays, timeout, segments are dropped in router buffers
    • Reduce transmission rate, then probe again

TCP Congestion Control (1): Slow Start

  • Slow start: increase congestion window size by one segment upon receiving an ACK from receiver

    • initialized at 2 segments; usually 1 segment
    • used at start of data transfer
    • congestion window increases exponentially(指数)

TCP Congestion Control (2): Congestion Avoidance

  • Algorithm progressively(逐步) sets a congestion threshold(门槛)

    • When cwnd > threshold, slow down rate at which cwnd is increased
  • Increase congestion window size by one segment per round-trip-time (RTT)
    • Each time an** ACK arrives, cwnd is increased by 1/cwnd**
    • In one RTT, all ccwnd segments are sent, so total increase in cwnd is cwnd x 1/cwnd = 1
    • cwnd grows linearly with time

TCP Congestion Control (3): Congestion

  • Congestion is detected upon timeout or receipt of duplicate ACKs
  • Assume current cwnd corresponds to available bandwidth
  • Adjust congestion threshold = ½ x current cwnd
  • Reset cwnd to 1
  • Go back to slow-start
  • Over several cycles expect to converge(收敛) to congestion threshold equal to about ½ the available bandwidth

Fast Retransmit & Fast Recovery

  • Congestion causes many segments to be dropped
  • Burt if only a single segment is dropped, then subsequent(随后的) segments trigger duplicate ACKs before timeout
  • Can avoid large decrease in cwnd as follows:
    • When three duplicate ACKs arrive before timeout expires(期满), retransmit lost segment immediately
    • Reset congestion threshold to ½ cwnd
    • Reset cwnd to congestion threshold + 3 to account for the three segments that triggered duplicate ACKs
    • Remain in congestion avoidance phase
    • In absence of timeouts, cwnd will oscillate(振动) around optimal value

TCP Congestion Control: Fast Retransmit & Fast Recovery

转载于:https://www.cnblogs.com/vancasola/p/7703931.html

TCP Congestion Control相关推荐

  1. TCP’s Congestion Control Implementation in Linux Kernel 文献阅读笔记

    TCP's Congestion Control Implementation in Linux Kernel 文献阅读笔记 作者:Somaya Arianfar Aalto University S ...

  2. 一周一论文(翻译)——[SIGMOD 2015] TIMELY RTT-based Congestion Control for the Datacenter

    本文主要解决的问题是在,基于优先级的拥塞控制PFC是一种粗粒度的机制,它主要是通过检测优先级队列的长度是否超过阈值,然后再发送PFC拥塞信号帧来进行流量控制.这种做法会带来不公平性以及行头阻塞等问题. ...

  3. 数据报拥塞控制协议:DCCP(Datagram Congestion Control Protocol)

    目录 Datagram Congestion Control Protocol ethereal/wireshark support GStreamer support TODO & test ...

  4. A Google Congestion Control Algorithm for Real-Time Communication

    原文地址 https://datatracker.ietf.org/doc/html/draft-ietf-rmcat-gcc Abstract 摘要 This document describes ...

  5. Elasticity Detection:A Building Block for Internet Congestion Control读后感

    这周我读的论文是Elasticity Detection:A Building Block for Internet Congestion Control.这篇论文提出了一个新的度量"弹性& ...

  6. WebRTC的拥塞控制技术(Congestion Control

    http://www.jianshu.com/p/9061b6d0a901 1. 概述 对于共享网络资源的各类应用来说,拥塞控制技术的使用有利于提高带宽利用率,同时也使得终端用户在使用网络时能够获得更 ...

  7. Dynamic TCP Initial Windows and Congestion Control Schemes through Reinforcement Learning笔记

    原论文链接 文章目录 Abstract 1. Introduction 2. Background 3. Core Idea and System Overview 4. RL for IW conf ...

  8. linux+tcp有限状态机,LinuxTCP拥塞控制-Congestion Control In LinuxTCP-拥塞状态机(二)...

    left_out 这些公式用来决定网络中outstanding的数据包.packets_out是正常传输的数据包数目,sacked_out是被SACK数据块确定的包数目,lost_out是对于丢失包数 ...

  9. 一周一论文(翻译)——[SIGMOD 2015] Congestion Control for Large-Scale RDMA

    本文主要解决的问题是在RoCEv2体系中,基于优先级的拥塞控制PFC是一种粗粒度的机制. 它在端口(或端口加优先级)级别上运行,并且不区分流.PAUSE机制是基于每个端口(和优先级)的,而不是基于每个 ...

最新文章

  1. R 语言开发环境搭建
  2. 《中国管理安全服务(MSS)市场研究报告2010》读后感
  3. 解决:pycharm中动画函数animation.FuncAnimation不起作用
  4. SpringMVC解决前台传入的数组或集合类型数据
  5. 架构专家梁勇:哈啰在分布式消息治理和微服务治理中的实践
  6. q learning简单理解_如何用简单例子讲解 Q learning 的具体过程?
  7. 零基础学习IOS开发(二)- 使用cocos2d-x3.0 执行Hello world
  8. CCF201609-5 祭坛【线段树】(100分解题链接)
  9. 拓端tecdat|Python中的Apriori关联算法-市场购物篮分析
  10. Mysql的SQL语句汇总
  11. 红米k50 至尊版 解锁bl 获取root教程步骤
  12. 数据库左连接和右连接有什么区别!
  13. 主机ping虚拟机ip请求超时解决办法
  14. html项目符号正方形,css如何添加列表项目符号
  15. Network Switching Software Platform Guide学习笔记
  16. CSS系列之浮动详解
  17. 头豹研究院发布《2022年中国数据库产品策略解析报告》
  18. Android 包大小优化总结
  19. Echarts世界地图显示中文的国家名字
  20. 二叉树的遍历(前序、中序、后序、层次)

热门文章

  1. mysql 查询分组平均数_9、mysql分组查询-----group by 和 having
  2. openpyxl删除添加excel列_Python | 如何使用Python操作Excel(二)
  3. 佳能2900打印机与win10不兼容_佳能2900打印机和惠普1020哪种好 佳能2900打印机和惠普1020对比【详解】...
  4. python具有伪代码的本质吗_Python的优点之一是具有伪代码的本质。( )_学小易找答案...
  5. C语言实现面向接口编程
  6. java的构造函数详解,Java构造函数与普通函数用法详解
  7. 删除一个程序Linux,一天一个Linux基础命令删除文件或目录命令rm
  8. 查看mysql用户权限_mysql 如何查看该数据库用户具有哪些权限?
  9. 4g的服务器mysql配置文件,服务器物理内存16G mysql数据库my.cnf配置及参数说明
  10. php实现文本替换,php文本替换 函数 strtr()、str_repalce()