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

TCP Congestion Control的更多相关文章

  1. Network | TCP congestion control

    拥塞控制算法:1. 加性增.乘性减:2. 慢启动:3. 对超时事件作出反应: 整体过程如下: 慢启动->到达阈值->加性增(窗口+1个MSS), 这个阶段叫拥塞避免(CA)->3个冗 ...

  2. TCP Flow Control and Data Transfer

    TCP Flow Control TCP Data Transfer Selective Repeat ARQ with Positive ACK Window slides a byte basis ...

  3. Google Congestion Control介绍

    随着网络带宽的日益增加和便携式设备,如智能手机或平板电脑处理能力的增强,基于互联网的实时通信已经成为热点. 虽然视频会议已商用了多年,特别是SKYPE这样的视频应用在互联网上已有10年时间,但针对实时 ...

  4. java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP

    无连接通信 UDP 客户端 package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; im ...

  5. Congestion Avoidance in TCP

    Congestion Avoidance in TCP Consequence of lack of congestion control When a popular resource is sha ...

  6. 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 ...

  7. TCP的那些事儿(下)

    TCP的那些事儿(下) 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇<TCP的那些事儿(上)> 上篇中,我们介绍了TCP的协议头.状态机.数据重传中的东西.但是TCP要解 ...

  8. [转载] tcp那些事2

    原文: http://coolshell.cn/articles/11609.html 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇<TCP的那些事儿(上)> 上篇中,我 ...

  9. IP, TCP, and HTTP--reference

    IP, TCP, and HTTP Issue #10 Syncing Data, March 2014 By Daniel Eggert When an app communicates with ...

随机推荐

  1. weblogic11g(10.3.6)部署war包时,解决jar包冲突的超简方案

    亲测有效:weblogic11g(10.3.6) + jdk7,打包使用jdk7或jdk8,注意weblogic用的jdk和打包时jdk的兼容. 分别配置web项目下pom.xml和weblogic. ...

  2. 无法解析 id,或者它不是字段

    解决方法:首先,看下R文件,有没有你上面的ID.没有的话,点项目-clean . 有的话,估计你是导了android里面的那个R包了,你看看你导的包有木有 “import android.R”有的话去 ...

  3. [Java反射基础三]方法反射的基本操作

    本文接上文“获取类的信息”,利用反射(invoke)来获取一个类中的方法来执行. 1.定义一个类,包含三个名称相同,参数不同的方法 class A{ public void print(){ Syst ...

  4. [翻译]Review——How to do Speech Recognition with Deep Learning

    原文地址:https://medium.com/@ageitgey/machine-learning-is-fun-part-6-how-to-do-speech-recognition-with-d ...

  5. org.apache.ibatis.binding.BindingException

    1.异常提示: org.apache.ibatis.binding.BindingException: Mapper method 'com.artup.dao.WorksDao.selectWork ...

  6. easy html+css tree 简单的HTML+css导航树

    code: show:

  7. JS常见的几种数组去重方法

    总结一下JS中用到的数组去重的方法  方法一: 该方法利用对象的属性值不能相同: function arrDelLikeElement (array) { const result = []; con ...

  8. Ta们,用云计算改变着更多普通人的生活,所以,我们1218

    维族音乐的传承者:为家园建设生态农业:为50万货运司机谋福利:电视游戏行业复兴的倡导者:......还有很多平凡普通的人,不同的主角.不同的情节,用自己的云上轨迹在点滴改变着我们的周遭世界.所以,我们 ...

  9. PHP中empty、isset和is_null的使用区别

    关于PHP中empty().isset() 和 is_null() 这三个函数的区别,之前记得专门总结过,上次又被问到,网上已经很多,就用几个例子来说明: 测试用例选取: <?php $a;$b ...

  10. 使用github参与到开源项目的维护

    参与到开源项目的维护工作一般分两种,一种是由项目建立者拉入到贡献者列表中,拥有对项目的读写权限,而普通用户对项目仅有读取权限,另一种是fork项目到自己仓库,然后把修改后的内容发送给项目管理者者请求合 ...