摘要:
TCP NewRenoNewReno是在Reno的基础上,改进了Fast Recovery,主要思想是保证处于network中的packet的总量是饱和的。在Reno算法中,一个超时会导致相应的那个packet的重传,然而,一个超时发生时,本可以重传多个潜在的丢包,但Reno算法没有这样实现,这就导致性能不高。Reno在遇到多包丢失时,存在两个问题:一个是,大量的包没有足够的重复ACK触发重传,只能等待超时才能得以重传。第二个是,即使采取措施(在Partial Acknowledgement一节中已有所讨论)避免了超时,也会存在Multiple Fast Retransmits和严重的wind 阅读全文
摘要:
1. Multiple Packet LossesFast Retransmit/Fast Recovery机制可以很好地处理单个packet丢失的问题,但当大量packet同时丢包时(一个RTT内),FR机制可能无济于事。下面举例说明。下面两张图是一次多包丢失的情景。其中上图中的三条线分别描述的是SND.UNA,SND.NXT,SND.UNA+SND.WND三个变量随着时间变化的情况,下图中的线描述的是拥塞窗口cwnd随着时间变化的情况。由于丢包具有随机性,我们假设下面的情景开始之前,小于65号的包都已经被sender发送出去,但51, 53, 55号在网络中被丢弃。在0.83s之前,sen 阅读全文
摘要:
TCP RenoTCPReno引入了ssthresh(Slow Start threshold)变量,作为TCP的Slow Start和Congestion Avoidance两个阶段的分界线。当cwnd = ssthresh时,TCP进入Congestion Avoidance阶段。ssthresh实际上影响着TCP的性能,但其初始值在RFC中没有明确定义,可以为任意大的值,在实现时一般初始化为rwnd。TCP Reno拥塞控制算法继承了“数据包守恒准则”,保证处于网络中的packet的总量是守恒的。它通过4个算法保证这一点:1. Slow Start在TCP连接建立之后,由于不知道实际可用 阅读全文
摘要:
拥塞控制不同于流量控制,拥塞控制是在拥塞发生时,发送方根据一定的反馈,主动调节自己的发送速率,以防止拥塞恶化的行为。1. 网络拥塞路由器是网络中的关键组件,其内部有一定量的缓冲区,用于缓存来不及转发(forward,或称transmit)出去的packet。如果将网络看成一个整体,那么一个网络的链路容量(link capacity)就取决于网络中的路由器的缓冲区大小。链路容量越大,整个网络可容纳的outstanding(即在网络中propagate)的packet就越多。当网络中的packet较少时,每个packet进入路由器,会较快被转发出去,几乎没有延迟。而当网络中的packet过多时,路 阅读全文