• [计算机网络] TCP的拥塞控制


    引言

      计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。
      拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。

    TCP拥塞控制算法

      该算法包括三个主要部分:(1)加性增、乘性减 (2)慢启动 (3)对超时事件做出反应

    1.加性增、乘性减

    加性增: 如没有检测到丢包事件,每个RTT时间拥塞窗口值增加一个MSS (最大报文段长度)。
    乘性减: 丢包事件后,拥塞窗口值减半。

      CongWin值重复地经历一种升降循环,即重复的线性增长,然后又突然降至当前值懂得一半(当丢包事件发生时),这种循环,使得长寿命TCP连接的CongWin变化呈锯齿形状,如下图所示:

    2.慢启动

      在连接开始时, 拥塞窗口值 = 1 MSS(例如: MSS= 500 bytes & RTT = 200 msec,则初始化速率 = 20 kbps)。但可获得带宽可能 >> MSS/RTT,为了尽快达到期待的速率,我们可以在连接开始的时候,以指数级的速率增加,直到第一个丢失事件发生。

      上图所示,当连接开始的时候,速率呈指数式上升,直到第1次报文丢失事件发生为止:(1)每经过一个RTT,倍增拥塞窗口值;(2)每收到ACK,增加拥塞窗口。
      总结: 初始速率很低,但以指数级的速率增加

    3.对超时事件作出反应

      在上述对拥塞窗口的描述中,我们只是说在连接开始的时候,以指数级的速率增加,直到第一个丢失事件发生。但实际中TCP对因超时而检测到的丢包事件作出的反应与对因收到3个冗余ACK而检测到的丢包事件做出的反应是不同的。

      ·收到3个冗余ACK后:CongWin减半、窗口再线性增加。
      ·检测超时事件后:CongWin值设置为1MSS、窗口再指数增长、到达一个阈值(Threshold,初始化时被设置为一个很大的值,以使它没有初始效应。每发生一个丢包事件,Threshold就会被设置为当前CongWin值的一半)后,再线性增长。

      原因:3个冗余ACK指示网络还具有某些传送报文段的能力;3个冗余ACK以前的超时,则更为 “严重”。

    小结:

    ·当CongWin < Threshold时,发送者处于慢启动阶段, CongWin指数增长。

    ·当CongWin > Threshold时,发送者处于拥塞避免阶段, CongWin线性增长。

    ·当出现3个冗余确认时, 阈值Threshold设置为CongWin/2,且CongWin设置为Threshold。

    ·当超时发生时,阈值Threshold设置为CongWin/2,并且CongWin设置为1 MSS.

  • 相关阅读:
    hdu 4015找规律
    hdu4473
    hdu 4016搜索
    hdu4465精度控制
    hdu 2965组合数学题
    hdu 4022map和list等数据结构的应用
    hdu4464超级大水题
    在ASP.NET中实现Url Rewriting
    DotText源码阅读(1)调试
    DotText源码阅读(2)数据库表结构
  • 原文地址:https://www.cnblogs.com/lca1826/p/6640179.html
Copyright © 2020-2023  润新知