TCP拥塞控制(挖坑)

TCP拥塞控制概述

https://www.bilibili.com/video/BV1BL4y1J7vh?p=37

拥塞非正式定义:太多太快的分组(包含着TCP段以及UDP数据报等)需要网络传输,超过网络(具体来可能是部分节点、链路)的处理能力

原因:网络中的某个(某些)路由器队列溢出,开始丢弃分组

拥塞的表现,从源端的角度来看

  • 分组(包含着TCP段等)丢失,源端超时了

  • 在源端,收到某TCP段的多个冗余ACK

  • 延迟增加

  • 拥塞情况加速变坏

不加控制网络无法使用

拥塞控制目标:在网络不拥塞的情况下,尽可能地快速发送(吞吐量)

  • 矛盾目标:不拥塞+吞吐大·

  • 不拥塞不是主要目的,是前提;主要目的是大吞吐

  • 系统角度目标:公平

关系和位置:Host与网络的关系,非端到端关系(如流量控制)

几个关键问题:

  • 拥塞检测:段超时,冗余ACK,ECN,延迟大......

  • 拥塞时或非拥塞:如何控速·丢失的段什么时机重传

控速方法:控制cwnd(在未确认情况下向接收方发送字节数),速率= cwnd /RTT

  • 拥塞:增加发送速率

  • 拥塞时:减少发送速率

为达到目标,具体控制思路:升速和减速最终维持到一个合理的速度

在一个相对短的时间,两个主机之间的可达吞吐量基本是个常量

  • 网络的状况发生变化,如某些其他主机对传完了退出竞争,让出带宽,我和对方主机对之间可以传得快些;主机对之间的可用带宽变化成另外常量;

  • 或有一些主机对加入到传输,和我抢带宽,我和对方主机之间的传输只能传得慢些

IP网没有提供拥塞反馈,各主机不知道什么是合理的速度,动态试凑合理的cwnd

  • 总体控速:发生拥塞时减少,其他时间跃跃欲试增加发送速率;

  • 需要不断按照负反馈控制其cwnd窗口适应网络条件的变化;

  • 各主机对按照该速率进行分布式控制,控制发送速率,间接地协调使用相关联资源,达到各主机对合理使用网络资源的目的

拥塞控制算法演化

经典拥塞控制:Tahoe和Reno

改进:New Reno 、SACK

改进:CUBIC

网络辅助信息拥塞控制:ECN

基于延迟的拥塞控制: Vages

总结

posted @ 2022-03-01 10:27  飞飞很要强  阅读(133)  评论(0编辑  收藏  举报