对队列治理而言 , 吞吐量和排队延迟始终是一对矛盾的关系 。假如平均队长能够充分权衡吞吐量最大化和延迟最小化之间的矛盾 , 从而在总体性能上得到较为理想的结果 , 则该队长称为理想的平均队长 。阈值minth和maxth就是由理想的平均队长决定的 。一般来说 , maxth-minth应大于一个回路响应时间内平均队长的增加值 , 以避免由于路由器丢弃过多的包而导致全局同步 。根据目前Internet上数据流的特点 , 可以将maxth设为minth的两倍 。由于理想的平均队长依靠于不同的网络条件 , 因此 , 如何确定理想的平均队长仍是一个有待研究的问题 。
3.3 显式拥塞指示(Explicit Cogestion Notifica- tion ECN )
在RED机制中 , 当平均队长超过一定的阈值时便开始丢包了 , 也就是说RED是在队列未满的情况下丢包的 , 并不是由于队列溢出而被迫丢包的 。在这种情况下丢包 , 虽然使得RED有效地治理了平均队长 , 但也浪费了网络资源 , 并且对时延有一定要求地多媒体应用不是很理想 。因此除了使用丢包作为拥塞通知方式外 , AQM还可以采用其它方法 , ECN便是IETF建议使用地一种拥塞通知方式 。
ECN需要在IP包头设置一个两位(bit)的ECN域(如图2所示) , 一个是ECT(ECN-Capable Transport)位 , 由源端设置以显示源端节点的传输协议是支持ECN的;另一个是CE( Congestion Experienced )位 , 由路由器设置 , 以显示是否发生了拥塞 。IPv4中TOS字节的第6位被设置为ECT位 , 第7位被设置为CE位 。IPv4中TOS字节和IPv6中的流类型字节(traffic class octet)是相对应的 , 它们的前六位被设置为区分服务中的(Different- iated Services)中的区分服务标记域(DS field) 。后两位保留未用 , 因此可用来作为ECN域 。
除了在IP头中设置ECN域外 , ECN还需要传输协议的支持 。在TCP头中需要设置两个标志位:ECN-Echo和CWR(Congestion Window Red- UCed) 。ECN-Echo是接受端用来通知源端收到一个CE包;CWR是源端用来通知接受端拥塞窗口已减小 。
在TCP连接建立阶段 , 源端和目的端TCP交换有关它们是否愿意以及是否支持ECN的信息 。然后源端设置IP头中的ECT位以向网络显示其支持ECN , 因而 , 假如路由器需要的话 , 可以标记IP头中的CE位作为拥塞通知的方式 。下面具体阐述ECN的工作方式 。
在TCP连接建立阶段 , 若源端支持并愿使用ECN,则其可在SYN包的TCP头中设置ECN-Echo和CWR标志位 。假如源端支持并愿使用ECN , 则其可在SYN-ACK包中设置ECN-Echo标志 , 但不设置CWR标志 。这样当前的TCP便是支持使用ECN的 。
图2 ECN工作原理
对路由器来说 , 假如其队列位满 , 并且其要对源端发出拥塞通知 , 那么路由器应该首先检查IP包头的ECT位是否已经设置 , 如是则应该设置CE位而不是以丢包作为对源端的通知信息 。接着 , 当目的端接受到了CE包时 , 就会设置确认包TCP头的ECN-Echo标志 , 并且为了防止确认包的丢失 , 目的端必须在接下来一系列的确认包中设置ECN-Echo标志 。假如源端收到了ECN -Echo的确认包 , 那么也就知道了在发往目的端的路径中发生了拥塞 , 因而需要将拥塞窗口减半并且减小慢启动阈值 , 同时在接下来要发送的包中设置CWR标志 , 以通知目的端拥塞窗口已减小 , 假如目的端接受到了CWR包 , 就停止在接下来的确认包中设置ECN-Echo标志 。
假如路由器收到了CE包 , 则CE位保持不变 , 包的传输还和往常一样 。若发生了严重拥塞 , 队列满了 , 那么路由器别无选择就只好丢包了 。在现在的"延迟确认"(delayed-ACK)TCP应用中 , 目的端收到两个包时发送一个确认 , 那么只要接收到的包中有一个CE包 , 确认包中的ECN-Echo标志就要设置 。
推荐阅读
- 下 在CISCO路由器上配置NAT功能
- 4 Internet路由器主动式队列管理机制综述
- 3 Internet路由器主动式队列管理机制综述
- 关于路由器cpu利用率过高的解决
- 通过SSH实现Cisco路由器登录
- 无线路由器的设置步骤 新的无线路由器如何设置
- 解决路由器水晶头不亮的方法 路由器水晶头不亮
- 看宽带路由器的市场要点
- Cisco路由器上实现VoIP
- 过滤功能对路由器性能的影响
