zoukankan      html  css  js  c++  java
  • 3.6 拥塞控制原理

    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)。它被设置成设置成路径上所有交换机的最小可支持速率。

  • 相关阅读:
    10款免费开源图表插件推荐
    jQuery中$.get()、$.post()和$.ajax()
    layer弹出层的iframe页面回调
    【转载】MSXML应用总结 概念篇
    【转载】MSXML应用总结 开发篇(上)
    【转载】MSXML应用总结 开发篇(下)
    【转载】MFC怎么封装CreateWindow
    【转载】MFC的Main函数跑哪去了
    【转载】C++创建对象的两种方法
    【转载】malloc内存分配与free内存释放的原理
  • 原文地址:https://www.cnblogs.com/wuwangchuxin0924/p/8711154.html
Copyright © 2011-2022 走看看