慢开始和拥塞避免
发布时间:2014/9/7 21:45:31 访问次数:1175
发送方维持一个叫做拥塞窗口cwnd (congestion window)的状态变量。拥塞窗口(佝大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。 G4PH40UD-E以后我们就知道,如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。
发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。
发送方又是如何知道网络发生了拥塞呢?我们知道,当网络发生拥塞时,路由器就要丢弃分组。因此只要发送方没有按时收到应当到达的确认报文,就可以猜想网络可能出现了拥塞。现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率是很小的(远小于1%)。
下面将讨论拥塞窗口cwnd的大小是怎样变化的。我们从“慢开始算法”讲起。
慢开始算法的思路是这样的。当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在井不清楚网络的负荷情况。经验证明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。通常在刚刚开始发送报文段时,先把拥塞窗口cwnd设置为一个最大报文段MSS的数值u一。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送方的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。
下面用例子说明慢开始算法的原理。为方便起见,我们用报文段的个数作为窗口大小的单位(请注意,实际上TCP是用字节作为窗口的单位),这样可以使用较小的数字来说明拥塞控制的原理。
在一开始发送方先设置cwnd=1,发送第一个报文段Mi,接收方收到后确认Mi。发送方收到对M.的确认后,把cwnd从1增大到2,于是发送方接着发送M2和M3两个报文段。接收方收到后发回对M2和M,的确认。发送方每收到一个对新报文段的确认(重传的不算在内)就使发送方的拥塞窗口加1,因此发送方在收到两个确认后,cwnd就从2增大到4,并可发送M4~M7共4个报文段(见图5-24)。因此使用慢开始算法后,每经过一个传输轮次(transmission round),拥寒窗口cwnd就加倍。
发送方维持一个叫做拥塞窗口cwnd (congestion window)的状态变量。拥塞窗口(佝大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。 G4PH40UD-E以后我们就知道,如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。
发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。
发送方又是如何知道网络发生了拥塞呢?我们知道,当网络发生拥塞时,路由器就要丢弃分组。因此只要发送方没有按时收到应当到达的确认报文,就可以猜想网络可能出现了拥塞。现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率是很小的(远小于1%)。
下面将讨论拥塞窗口cwnd的大小是怎样变化的。我们从“慢开始算法”讲起。
慢开始算法的思路是这样的。当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在井不清楚网络的负荷情况。经验证明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。通常在刚刚开始发送报文段时,先把拥塞窗口cwnd设置为一个最大报文段MSS的数值u一。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送方的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。
下面用例子说明慢开始算法的原理。为方便起见,我们用报文段的个数作为窗口大小的单位(请注意,实际上TCP是用字节作为窗口的单位),这样可以使用较小的数字来说明拥塞控制的原理。
在一开始发送方先设置cwnd=1,发送第一个报文段Mi,接收方收到后确认Mi。发送方收到对M.的确认后,把cwnd从1增大到2,于是发送方接着发送M2和M3两个报文段。接收方收到后发回对M2和M,的确认。发送方每收到一个对新报文段的确认(重传的不算在内)就使发送方的拥塞窗口加1,因此发送方在收到两个确认后,cwnd就从2增大到4,并可发送M4~M7共4个报文段(见图5-24)。因此使用慢开始算法后,每经过一个传输轮次(transmission round),拥寒窗口cwnd就加倍。
上一篇:几种拥塞控制方法