3.6 拥塞控制原理
3.6.1 拥塞原因和代价
1.情况1:两个发送方和一台具有无穷大缓存的路由器
两台主机A和B有一条连接,理想情况下,假如A和B都有无穷大的缓存,来自主机A和主机B的分组通过一台路由器,在一段容量为R的共享式输出链路上传输,路由器带有缓存,当速率超过输出链路的容量时,路由器会缓存。假设路由器的缓存也是无限大的。
不管发送速率多大,吞吐量不会超过R / 2,排队时延会随着发送速率的增大而急剧的增大。这就造成了拥塞。
2.情况2:两个发送方和一台具有有限缓存的路由器
假如发送速率超过输出链路的容量,那么就会被缓存,因为路由器的缓存是有限的,所以此时如果还有数据发送过来那么就会造成丢包,丢包就会造成时延。
一种理想的情况,发送方先检测路由器是否缓存满了,没满就发送数据,这种和情况1是一样的,吞吐量不会超过R / 2;
另一种更实际的情况,发送方得知丢包了,然后选择重传数据,这种情况最大吞吐量是R / 3,
最后一种情况就是,发送方发送的超时分组和后来重传的分组同时被接收方收到,这样就会丢弃一个,这种情况的吞吐量是R / 4
3.6.2拥塞控制的方法
1.端到端的控制:
因为IP层是不会反馈是否拥塞的信息,只能通过端到端来控制,TCP通过超时或三次冗余ACK(前面有讲解)来判断丢包也就是拥塞,此时TCP就会适当减小发送窗口的长度。
2.网络辅助的拥塞控制:
在网络辅助中,网络层的路由器向发送方提供显式的反馈信息,也就是下一节的ATM ABR拥塞控制。
3.6.3网络辅助的拥塞控制例子:ATM ABR拥塞控制
数据中夹杂着所谓的资源管理信元(RM),当一个RM信元到达目的地时,会被用来在主机和发送方之间传递拥塞信息。
EFCI比特:每个数据信元都包含1个比特的显示转发拥塞指示比特,拥塞网络交换机把数据信元的EFCI比特置1来向目的主机传递拥塞信息,如果近来收到的大多数数据信元的EFCI比特被置1,目的方会把RM信元的拥塞指示比特CI信元置1,然后传递给发送方,发送方就知道网络有点拥塞。
CI和NI比特:RM信元中有一个拥塞指示比特(CI)和无增长比特(NI),交换机可以在轻微拥塞的时候将经过的RM信元中NI比特置为1(无增长的时候,说明已经有点拥塞了),在严重拥挤的时候将CI比特置1,当目的主机收到RM信元的时候,会发送给发送方,并保持CI与NI的比值不变。
ER的设置:每一个RM信元还包含一个两字节的显式速率字段(ER)。它被设置成设置成路径上所有交换机的最小可支持速率。