计算机网络笔记No.14
拥塞控制原理
- 拥塞(Congestion)
非正式定义:太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理
表现:分组丢失(路由器缓存溢出);分组延迟过大(在路由器缓存中排队)
拥塞的成因和代价:场景1
两个senders;两个receivers; 一个路由器,无限缓存,没有重传
吞吐量、延迟与发送接收的关系:
拥塞的成因和代价:场景2
两个senders;两个receivers;一个路由器, 有限缓存;Sender重传分组
情况a: Sender能够通过某种机制获知路由器buffer信息,有空闲才发 (goodput)
情况b: 丢失后才重发:λin>λout
情况c:分组丢失和定时器超时后都重发,λin 变得更大
- 拥塞的代价:
- 对给定的”goodput”,要做更多的工作 (重传)
- 造成资源的浪费
拥塞的成因和代价:场景3
四个发送方;多跳;超时/重传
- 拥塞的另一个代价: 当分组被drop时,任何用于该分组的“上游”传输能力全都被浪费掉
拥塞控制的方法
-
端到端拥塞控制:(TCP采取这种方法)
- 网络层不需要显式的提供支持
- 端系统通过观察loss,delay等网络行为判断是否发生拥塞
-
网络辅助的拥塞控制:
- 路由器向发送方显式地反馈网络拥塞信息
- 简单的拥塞指示(1bit):SNA, DECbit, TCP/IP ECN, ATM)
- 指示发送方应该采取何种速率
案例:ATM ABR拥塞控制
TCP拥塞控制
TCP拥塞控制的基本原理:
-
Sender限制发送速率(LastByteSent - LastByteAcked<= CongWin)
CongWin:动态调整以改变发送速率;反映所感知到的网络拥塞 -
感知网络拥塞
- Loss事件 = timeout 或3个重复ACK
- 发生loss事件后,发送方降低速率
-
合理地调整发送速率:加性增—乘性减:AIMD;慢启动:SS
-
加性增—乘性减: AIMD
原理:逐渐增加发送速率,谨慎探测可用带宽,直到发生loss
加性增Additive Increase::每个RTT将CongWin增大一个MSS——拥塞避免
乘性减Multiplicative Decrease: 发生loss后将CongWin减半
-
TCP慢启动: SS
原理:当连接开始时,指数性增长
TCP连接建立时,令CongWin=1;可用带宽可能远远高于初始速率——希望快速增长指数性增长:
- 每个RTT将CongWin翻倍
- 初始速率很慢,但是快速攀升
Threshold变量
何时应该指数性增长切换为线性增长 —— 当CongWin达到Loss事件前值的1/2时
Loss事件发生时, Threshold 被设为Loss事件前CongWin 值的1/2
-
Loss事件的处理:
- 3个重复ACKs:CongWin切到一半,然后线性增长
- Timeout事件:CongWin直接设为1个MSS,然后指数增长,达到threshold后, 再线性增长
3个重复ACKs表示网络还能够传输一些 segments;timeout事件表明拥塞更为严重
例题
一个TCP连接总是以1 KB的最大段长发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16 KB时发生了超时,如果接下来的4个RTT(往返时间)时间内的TCP段的传输都是成功的,那么当第4个RTT时间内发送的所有TCP段都得到肯定应答时,拥塞窗口大小是多少?
解:
threshold=16/2=8 KB, CongWin=1 KB;
1个RTT后, CongWin=2 KB ,2 个RTT后, CongWin=4 KB ,3个RTT后, CongWin=8 KB
Slowstart is over;
4个RTT后, CongWin=9 KB
TCP性能分析
- 给定拥塞窗口大小和RTT,忽略掉Slow start吗,TCP的平均吞吐率是多少?
- 假定发生超时时CongWin的大小为W,吞吐率是W/RTT
- 超时后,CongWin=W/2,吞吐率是W/2RTT
- 平均吞吐率为:0.75W/RTT
举例:每个Segment有1500个byte, RTT是100ms,希望获得10Gbps的吞吐率,那么:
throughput = W * MSS * 8/RTT,
则W=throughput * RTT / (MSS * 8)
throughput=10Gbps,
则W=83333
-
吞吐率与丢包率(loss rate, L)的关系
CongWin从W/2增加至W时出现第一个丢包,那么一共发送的分组数为- W/2+(W/2+1)+(W/2+2)+….+W = 3W2/8+3W/4
W很大时,3W2/8>>3W/4,因此L ≈ 8/(3W2)
- W/2+(W/2+1)+(W/2+2)+….+W = 3W2/8+3W/4
L = 2 * 10-10,丢包率太低对网络要求太高:高速网络下需要设计新的TCP
-
TCP的公平性
如果K个TCP Session共享相同的瓶颈带宽R,那么每个Session的平均速率为R/K
TCP具有公平性:
但是:
————————————————————————————————————————————————————————
由于水平有限及时间仓促或疏忽大意以及其他的一些原因,文中难免会存在一些错误,如若有发现不正确的地方,还请大佬们评论或私信告之于我,以便及时纠错