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
总结
标签:控制,主机,网络,TCP,挖坑,拥塞,速率 来源: https://www.cnblogs.com/LiPengFeiii/p/15949016.html