TCP全局同步问题发生的原因
随着网络的普及,信息交流与信息共享成为人们日常生活中必不可少的一部分。而网络中信息(数据包)的不断增长,必然引起网络拥塞。于是,拥塞避免显得尤为重要,现在Internet上使用得比较广泛的拥塞避免机制是丢尾(DropTail):当队列的长度达到规定的最大长度时,所有到来的报文都被丢弃。这种丢弃策略会引发tcp 全局同步(global synchronization)现象——由于Internet上数据(Traffic)的突发本质,到达路由器的数据包也往往是突发的。如果队列是满的或者几乎是满的,就会导致在短时间内连续大量地丢封包。而TCP流具有自适应特性(Adaptiveness),来源端发现数据包丢失就急剧地减小发送窗口(congestion window,cwnd),数据包到达速率就会迅速下降,于是网络拥塞得以解除。但来源端得知网络不再拥塞后又开始增加发送速度,最终又造成网络拥塞,而且这种现象常常会周而复始地进行下去,从而在一段时间内网络处于网络利用率(Network Utilization)很低的用状态,降低了整体吞吐量(throughput),这就是所谓地"TCP全局同步"现象。
丢尾会造成TCP流量之间分配带宽不均衡,一些"贪婪"的流量会占用大部分的带宽,而普通的TCP流量分配不了带宽而"饿死"。特别是网络中既有TCP又有UDP流量的时候,TCP流量因为窗口机制(丢尾造成滑动窗口cwnd减小)而释放带宽,UDP流量没有窗口机制,于是UDP流量会迅速占用TCP释放的带宽,最终造成UDP流量占用了所有带宽而TCP流量因没有带宽分配而"饿死"。
转载于:https://www.cnblogs.com/redsmith/p/5461519.html