计算机网络——传输层-TCP拥塞控制

计算机网络系列博文——目录

TCP拥塞控制

  • TCP使用端到端拥塞控制,因为IP层不向端系统提供显式的网络拥塞反馈。
  • TCP令每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率。

问题在于:

  1. TCP发送方如何限制它向连接发送流量的速率?
  2. TCP发送方如何感知它和目的地间的网络拥塞?
  3. 当TCP发送方感知到网络拥塞时,采用何种算法来改变发送速率?

TCP发送方如何限制它向连接发送流量的速率

拥塞窗口(congestion window)

  • 发送方TCP的拥塞控制机制维护的一个状态变量。
  • 它对TCP发送方能向网络中发送流量的速率进行了限制。
  • 发送方中已发送且未被确认的数据量不会超过拥塞窗口(事实上,不会超过拥塞窗口和接受窗口的最小值)

TCP发送方如何感知它和目的地间的网络拥塞情况

  • 丢包事件 超时事件或收到接收方的三个冗余ACK(一个初始ACK和其后的三个冗余ACK)
  • 三个冗余ACK 是轻度拥塞的表征
  • 超时事件 是重度拥塞的表征
  • 发送方将丢包事件作为网络拥塞的指示
  • 发送方将对已发送分组的确认ACK作为网络畅通的指示
  • 潜在地,发送方还能通过RTT的变化来感知网络拥塞情况。

TCP发送方如何确定合适的发送速率

  • 丢包事件指示拥塞,此时TCP发送方应降低发送速率
  • 确认报文指示网络畅通,拥塞窗口应当增大。确认到达的速率大,拥塞窗口的增量也应大。
  • 带宽探测。TCP在认为网络畅通时,逐步增加速率,在认为网络拥塞时,回退速率,并在稍后继续增加速率以探测拥塞开始速率是否发生了变化

TCP拥塞控制算法

  • TCP拥塞控制算法包括强制的慢启动拥塞避免机制,以及推荐的快速恢复机制。

慢启动

  • 指数增

  • TCP连接开始时,拥塞窗口的初值通常置为一个MSS,即最大报文段(有效载荷)长度。

  • 故初始发送速率约为MSS/RTT,其值往往远小于可用带宽,TCP希望快速找到可用带宽数量。

  • 在慢启动状态,拥塞控制窗口从一个MSS开始且每当传输的报文段被确认就增加一个MSS。

  • 在慢启动阶段的一个周期(RTT),发送i个报文(拥塞控制窗口为i*MSS),并收到i个确认,从而将拥塞控制窗口增加到2i*MSS。故慢启动阶段发送速率以指数增长。

何时结束慢启动阶段?

  1. 拥塞控制窗口达到或超过慢启动阈值。
    这意味着继续指数增加发送速率很可能会导致拥塞。结束慢启动并进入拥塞避免模式。
  2. 检测到3个冗余ACK。
    这意味着网络的轻度拥塞。
    执行快速重传并进入快速恢复状态。
  3. 发生超时事件。
    这意味着网络的重度拥塞。
    重置拥塞控制窗口,并将慢启动阈值置为原拥塞控制窗口的一半。重新开始慢启动阶段。

云服务快速响应——前端服务器&TCP分岔

  • 内容提供商希望快速响应用户请求,而慢启动机制下服务器可能需要较长时间处理用户的小请求报文。
  • 典型地,从客户端系统发起TCP到数据中心服务器的响应全部到达,需要4*RTT(建立TCP1个RTT,交付响应3个RTT),当客户端系统距离服务器较远时,时延较大。

解决方案

  • 内容提供商部署CDN服务网络,部署邻近用户的前端服务器。
  • 客户连接前端服务器时TCP慢启动,拥塞窗口小但是由于该服务器邻近用户,RTT小故速度快,耗时4*RTT_{FE}
  • 不同客户的请求到达前端服务器后由TCP分岔技术,通过一条大窗口TCP连接向数据中心传递数据,耗时RTT_{BE}
  • 总响应时间变为 4*RTT_{FE}+RTT_{BE}+处理时间,其中RTT_{FE}可忽略,故总时间约为一个RTT。

拥塞避免

  • 加性增

  • TCP进入拥塞避免状态意味着此时的拥塞窗口大约是上次发生拥塞时窗口值的一半,故不可像在慢启动阶段那样激进地在每个RTT将拥塞窗口翻番,而应采取保守策略,即在每个RTT只将拥塞窗口增加一个MSS。

  • 具体方法通常是,对每个新的报文段确认,将拥塞窗口增加(MSS/原拥塞窗口值)byte。从而在一个往返周期内,拥塞窗口可增加一个MSS。

  • 故在拥塞避免阶段,拥塞窗口线性增长。

何时结束拥塞避免状态?

  1. 三个冗余的ACK。
    这意味着网络的轻度拥塞。
    将拥塞窗口值置为当前值的一半,将慢启动阈值置为原拥塞窗口值的一半。进入快速恢复阶段。
  2. 出现超时事件。
    这意味着网络的重度拥塞。
    拥塞窗口重置为一个MSS,慢启动阈值置为当前拥塞窗口值的一半,进入慢启动状态。

快速恢复

  • 对于引起TCP进入快速恢复状态的缺失报文段,对收到的每个冗余ACK,拥塞窗口递增一个MSS。

  • 当对缺失报文段的一个ACK到达时,TCP减小拥塞窗口并进入拥塞避免状态。

  • 若出现超时事件,拥塞窗口重置为一个MSS,慢启动阈值置为当前拥塞窗口值的一半,进入慢启动状态。

  • 早期TCP版本 Tahoe 在超时或3个冗余ACK后都进入慢启动阶段

  • 较新的TCP版本 Reno 综合了快速恢复机制

拥塞控制回顾

  • 忽略慢启动阶段,TCP是加性增,乘性减的,拥塞窗口-时间图呈锯齿状。

  • TCP 有多种拥塞控制算法, linux允许管理员配置拥塞控制的版本。

  • Vegas算法
    通过RTT,在分组发生丢失之前,检测网络拥塞状况。
    当检测到分组将要丢失时,线性地降低发生速率

TCP吞吐量(速率)

  • 假定TCP链接长期存活,且RTT,拥塞控制窗口峰值W(发生丢包时的值)恒定。
  • 从而,速率在W/2RTT和W/RTT间震荡。有平均吞吐量为0.75W/RTT

高带宽路径下的TCP

链接平均吞吐量 = \frac{1.22*MSS}{RTT\sqrt{L}}

公平性

  • 理想地,TCP趋于在竞争的多条TCP连接间提供对一段瓶颈链路带宽的平等分享。这是TCP拥塞控制机制的属性。

  • 实践中,TCP连接通常能获得非常不平等的链路带宽份额。
    当多条连接共享一个瓶颈链路时,具有较小RTT的连接能够在链路空闲时更快地抢到可用带宽,获得更高吞吐量。

  • UDP UDP没有拥塞控制机制,不会扼制流量,从TCP视角看这是不公平的

  • 并行TCP 同一应用通过使用多条并行连接,可用占用较大比例的带宽份额。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355

推荐阅读更多精彩内容