计网基础-传输层之流量控制和拥塞控制
UDP无流量控制和拥塞控制,因此,我们主要讨论的是TCP的拥塞控制和流量控制,并要注意两者的区别。
拥塞Congestion
太多发送主机发送了太多数据或者速度过快,以至于网络无法处理
表现:
- 分组丢失(路由器缓存溢出)
- 分组延迟过大,甚至导致路由器不可用(在路由器缓存排队)
Q:rdt(可靠数据传输)已经解决了分组丢失的问题,为什么要学习拥塞控制?
A:这是两个不同的问题,rdt解决的是端到端,针对个体利益的角度,使用确认、重传机制;拥塞控制是社会机制,从群体利益角度,使得每一个主机做出一定的牺牲,采用某种机制来控制整个网络的负载。
Q:流量控制和拥塞控制有什么不同?
A:流量控制是发送方不要发送的太快,导致接收方处理不了;而拥塞控制是不要让整个网络处理不了
拥塞的成因和代价
1. 两个senders,两个receivers,一个路由器(无限缓存),没用重传
导致:
C为带宽bandwidth,in和out是速率
- (右图)拥塞时分组延迟delay太大
- (左图)达到最大throughput吞吐量,<C/2时,线性增长,直至达到maxC
2. 一跳/一个路由器(有限的缓存),sender可以重传分组
导致:
备注:
- 情况b,不能提前获知路由器的缓存信息,只能通过确定丢失才重传
- 情况b相对于a,意味着有效的吞吐量降低了,由于拥塞,由于丢失,需要重传,(网络资源是有限的)造成了网络资源的浪费
- 情况c,不仅确定分组丢失之后才重传,而且会等待一定时间后重传,这时候将有更多的重传,所以吞吐量更低了
3. 四个sender,多跳/四个路由器(有限缓存),超时/重传
导致:
红线和绿线竞争,都要使用R2,由于拥塞,吞吐量也变低了,会造成不断的丢失
Q:假如红线已经在前一个路由器正常转发,但是到达R2后由于竞争拥塞,则会产生什么代价?
A:相对于一跳,多跳拥塞会产生另一个代价——任何用于该分组的”上游“传输能力全被浪费
前半段:in速率和out速率线性增加
后半段:当in速率增大到一定程度的时候,out速率基本等于0——>大家都在往里面发数据,但是,几乎没用数据被正确的接收,意味着网络瘫痪了/网络所有的资源都被浪费掉了
进行拥塞的控制,解决拥塞产生的代价
在传输层或者网络层进行控制/管制数据、网络的负载(成因)
方法(2种)
- 端到端的拥塞控制(在传输层,TCP就是使用这种方法)
网络层或者网络层的设备,比如路由器路由器并不需要显式的支持,而是端系统通过管制/控制自己的发送速率,通过观察loss、delay等网络行为判断是否发生拥塞
- 网络辅助的拥塞控制(在网络层,典型的ATM就是使用这种方式)
路由器向发送方显式的反馈网络拥塞信息
简单的拥塞指示(1bit):SNA、DECbit、TCP/IP ECN、ATM
指示发送方应该使用何种速率