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 ...
随机推荐
- Ubuntu 16.04 开启BBR加速
BBR(Bottleneck Bandwidth and RTT)是Google推出的一个提高网络利用率的算法,可以对网络进行加速,用来干什么大家心里都有B数 Ubuntu开启BBR的前提是内核版本必 ...
- 嵌套Golang对象的初始化
比如有这样一个对象: type ProductConfig struct { Site map[string]string } 对应的初始化可以如下写: var pc ProductCon ...
- poj 3260 最少硬币(01+多重+完全背包)
http://www.cnblogs.com/ACMan/archive/2012/08/14/2637437.html #include <iostream> #include < ...
- JBPM学习第6篇:通过Git导入项目
1.登记到工作台 切换到目录: $SERVER_HOME/bin/ for Unix environment: ./standalone.shfor Windows environment: ./st ...
- PL/SQL 快速连接数据库
打开PL/SQL 登录窗口,在数据库地址写入 服务器名:端口号/sid 即可, 例如: 192.168.100.100:1521/test
- css-布局定位
position: ** 属性值 - absolute: *** 将对象从文档流中拖出 *** 可以是top.bottom等属性进行定位 - relative: *** 不会将对象从文档流中拖出 * ...
- php扩展库
php调用C/C++动态链接库 字数997 阅读28 评论0 喜欢0 本人最近在找实习,移动开发方向.有意者可直接与本人联系.谢谢! 一.简介 一般而言,php速度已经比较快,但是,对于一些较高级开发 ...
- <Android 应用 之路> MPAndroidChart~LineChart
简介 MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库,支持Android和IOS两种,这里我们暂时 ...
- chengfa
public class ddddd{ public static void main(String[] args) { ; ; i <= m; i++) { ; j <= i; j++) ...
- Linux ->> UBuntu 14.04 LTE下设置静态IP地址
UBuntu 14.04 LTE设置IP地址和一些服务器版本的Linux还不太一样.以Centos 7.0为例,网卡IP地址的配置文件应该是/etc/sysconfig/network-scripts ...