1 Internet路由器主动式队列管理机制综述
众所周知 , 由于Internet采用的是统计复用(statistical multiplexing)技术 , 因此必须提供拥塞控制机制 。TCP端到端的拥塞控制机制是确保Internet鲁棒性(robustness)的重要因素 。在发生拥塞时 , TCP源端会降低发送数据的速度 , 从而使得大量的TCP连接能够共享一条拥塞的链路 。TCP拥塞控制机制已被证实在防止拥塞崩溃(congestion collapse)方面取得了巨大的成功 。但这种机制的有效性依靠于两个基本的假设:
所有(或者几乎所有)的流都采用了拥塞控制机制
这些流采用的机制是同质的(homogene- ous)或者大体上相同即在相似的环境下按可比条件(丢包率、RTT、MTU)不会占用比TCP流更多的带宽 , 也即是TCP友好的(TCP-friendly)流 。
但随着近十年来计算机网络的爆炸式增长 , 非凡是多媒体业务的广泛应用 , Internet已经不可能再仅仅依靠端节点提供的拥塞控制机制 。这是由于下述原因 , 导致以上假设不成立:
(1) 一些应用没有采用拥塞控制机制因而不能对拥塞作出反应 。许多多媒体应用和组播应用都属于此类 。
(2) 有些应用使用了拥塞控制算法 , 但并不是TCP友好的 , 比如接受端驱动分层组播(Receiver-driven Layered Multicast RLM)采用的就是这种算法 。
(3) 一些用户由于有意或无意的原因 , 使用了 non-TCP的拥塞控制算法 。比如修改TCP , 使得窗口的初始值很大并且保持不变 , 即所谓的"快速TCP" 。
另外 , 我们知道 , Internet上的流量是由无数条异质的数据流混合而成的 。从有无有效拥塞控制机制的角度可以将这些异质的流分为以下三类:
TCP-friendly流
非适应(unresponsive)流:这种流是由于上述原因(1)造成的 。
适应(responsive)流但非TCP- friendly流:这种流是由于上述原因(2)和(3)引起的 。
很明显 , 这些不受TCP拥塞控制的应用会进一步增加Internet范围内拥塞崩溃的可能 , 并且TCP拥塞控制还存在着自相似、效率、公平性等方面的问题 。因此尽管TCP拥塞控制机制是必须的而且非常强大 , 但仍然需要采用基于路由器的拥塞控制机制对端节点的拥塞控制机制进行补充 。
拥塞避免机制的首要任务是检测早期的拥塞 。这是因为 , 路由器能够有效地监控队列的长度 , 因此其也能有效地检测早期的拥塞(incipient congestion) 。拥塞避免机制的另一个任务是选择哪个流发出拥塞通知 。因为路由器能够全面地审阅各个流对产生拥塞的影响 , 因此其也能够有效地决定将拥塞信息通知哪个源端 , 使其降低数据发送速度 。
2 从传统的被动式队列治理到主动式队列治理
由于路由器是基于包交换的设备 , 每个端口采用带宽统计复用 , 所以路由器必须在端口上维护一个或多个队列 , 否则路由器无法处理多个数据包同时向同一端口转发以及端口QOS等问题 。对队列进行治理直接影响路由器性能、拥塞治理能力以及QOS能力 。路由器有两类和控制队列的算法:队列治理算法和队列调度算法 。前者主要是在必要时通过丢包来治理队列长度 。后者决定下一个要发送哪个包 , 主要用来治理各流之间带宽的分配 。
由于Internet数据本质上是突发的 , 因此答应传输突发的数据包非常必要 , 而路由器中队列的重要作用就是吸收(absorb)突发的数据包 。较大的队列能够吸收更多的突发数据 , 提高吞吐量 , 但TCP机制往往会保持较高的队列占用 , 从而增加了数据包的排队延迟 。因此需路由器对队列进行治理 , 维持较小的队列长度 。因为维持较小的队列长度除了降低排队延迟 , 提高吞吐量外 , 还能保持较大的队列空间来吸收突发数据包 。拥塞控制机制就是要维持网络处于低延迟高吞吐量的状态 。
推荐阅读
- 下 在CISCO路由器上配置NAT功能
- 4 Internet路由器主动式队列管理机制综述
- 3 Internet路由器主动式队列管理机制综述
- 关于路由器cpu利用率过高的解决
- 通过SSH实现Cisco路由器登录
- 无线路由器的设置步骤 新的无线路由器如何设置
- 解决路由器水晶头不亮的方法 路由器水晶头不亮
- 看宽带路由器的市场要点
- Cisco路由器上实现VoIP
- 过滤功能对路由器性能的影响