TCP Congestion Control
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

- Light traffic
- Arrival Rate << R
- Low delay
- Can accommodate(容纳) more
- Knee (congestion onset)
- Arrival rate approaches R
- Delay increases rapidly
- Throughput(吞吐量) begins to saturate(饱和)
- 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

TCP Congestion Control的更多相关文章
- Network | TCP congestion control
拥塞控制算法:1. 加性增.乘性减:2. 慢启动:3. 对超时事件作出反应: 整体过程如下: 慢启动->到达阈值->加性增(窗口+1个MSS), 这个阶段叫拥塞避免(CA)->3个冗 ...
- TCP Flow Control and Data Transfer
TCP Flow Control TCP Data Transfer Selective Repeat ARQ with Positive ACK Window slides a byte basis ...
- Google Congestion Control介绍
随着网络带宽的日益增加和便携式设备,如智能手机或平板电脑处理能力的增强,基于互联网的实时通信已经成为热点. 虽然视频会议已商用了多年,特别是SKYPE这样的视频应用在互联网上已有10年时间,但针对实时 ...
- java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP
无连接通信 UDP 客户端 package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; im ...
- Congestion Avoidance in TCP
Congestion Avoidance in TCP Consequence of lack of congestion control When a popular resource is sha ...
- Internet History,Technology,and Security -Transport Control Protocol(TCP)(Week6)
Week6 Technology: Transport Control Protocol(TCP) Welcome to Week 6 of IHTS. We are in our second we ...
- TCP的那些事儿(下)
TCP的那些事儿(下) 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇<TCP的那些事儿(上)> 上篇中,我们介绍了TCP的协议头.状态机.数据重传中的东西.但是TCP要解 ...
- [转载] tcp那些事2
原文: http://coolshell.cn/articles/11609.html 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇<TCP的那些事儿(上)> 上篇中,我 ...
- IP, TCP, and HTTP--reference
IP, TCP, and HTTP Issue #10 Syncing Data, March 2014 By Daniel Eggert When an app communicates with ...
随机推荐
- java 2018面试题-多线程汇总(含解答)
学习,内容越多.越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的.这篇文章主要是对多线程的问题进行总结的,因此罗列了自己整理的多线程的问题,都是自己觉得比较经典和一些大企业面试会问 ...
- 9、springboot之处理静态资源
在springboot项目中的resource根目录下建立三个文件夹static.public.resources 里面都放同样名字的图片 但是图片内容不一样 启动springboot之后输入 htt ...
- 在C#中执行带有GO的批量sql语句
引用 思海网络 在用C#中调用ADO执行批量SQL语句的时候,会出现无法识别GO语句的错误.这个时候,我们以GO语句为分割点,把整个批量语句分割成N块独立的SQL语句代码块(不包含GO语句),然后再 ...
- java设计模式之工厂模式学习
上周安排的写两篇设计模式的文章,结果一篇也没写,今天都给写了.回顾+反思.In this world he who stops ,won't get anything he wants! 工厂方法模式 ...
- python文件操作各种模式和常用方法总结r r+ rb r+b
1.读,r r+ rb r+b read() 全部读取 read(n) 读取一部分 r模式下:n 个字符. rb模式下:n个 字节. readline() 按行读取. readlines() 返回个列 ...
- Hibernate 注解 (Annotations 三)多对一双向注解
注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来 ...
- Css3新增背景属性
1.background-origin 背景的起始位置 background-origin: border-box || padding-box || content-box; 案例初始化: 代码: ...
- css设置一行显示,超出部分显示...
碰到一些介绍时候需要一行显示,然后超出部分用...替代 white-space: nowrap;不换行显示text-overflow: ellipsis;以...显示overflow: hidden; ...
- FCKeditor 添加行距、字体功能 (转载)
一.首先为FCKeditor添加外部插件在fckeditor/editor/plugins文件夹下建立新文件夹lineHeight,并在其中创建fckplugin.js文件,在其文件中办輸入代码:FC ...
- 关于圆角border-radius
一.border-radius 可以同时设置1-4个值 a)1个值 控制4个圆角 b)2个值 第1个控制左上角和右下角 第2个值控制左下角和右上角 c)3个值 第1个控制 第2个值控制左 ...