带宽控制要解决的主要问题是:
- 突发流量,通过队列管理解决,实际上就一个办法”丢包”。怎么丢包是一项复杂的技术
- 优先级,队列调度算法实现,也就是要优先保证有价值的流量。是一门权衡的艺术
- 流量整形:整形会试图平滑流量,并阻止单个的流量垄断带宽。流量整形可以用队列或者tcp窗口方式,据说Tcp整形在很多方面比队列好,比如为每一对话(session)进行分配带宽,以及具备主动队列的一些优点。
1,路由器/交换机基本QoS模型
本部分主要内容摘于《IP与ATM网络中的QoS和业务量管理》。
关于流量分析与控制领域,排队论,随机过程是用的最多的数学模型,书中介绍的非常不错了。这些模型在比较类似的交通管理领域取得了很大成功,但用于流量控制还是有很多问题未能解决,实用性比较有限,目前主要用于仿真。在实际产品中,受应用环境复杂性的限制,还是更多依赖经验、艺术或者运气来进行手动调整。
下图是路由器和交换机QoS功能模块的示意图。在输入端,需传输的信息首先经过分类器,以确定进入业务流所要求的QoS和业务控制模板,排队和业务调度模块则据此进行工作;紧接着,可选的监管模块保证IP流的分组满足一致性要求特性。交换矩阵江信息传送给目的输出断口时,可能会执行排队和调度处理。在输出端,分类器判断是否调用备选的业务再成形操作,该分类器同时也控制输出端的分组排队和业务调度。
2,队列管理算法分类
队列管理算法可以分为两大类:
被动式队列管理(Passive Queue Management,PQM):对每个队列设置一个最大值(以包为单位),然后接受包进入队列直到队长达到最大值,接下来到达的包就要被拒绝进入队列直到队长下降。这种技术也就是所谓的"去尾"(drop-tail)算法。虽然这个方法在当前Internet上得到了广泛的使用,但其存在几个重大缺陷: 死锁(lock-out)问题、满队列(full queues)问题、全局同步(global synchronization)问题. 由于这几种方法都是在队列满了被迫丢包,因此称为被动式队列管理。(另外两种在队列满时进行队列管理的机制是"随机丢弃"(random drop)和"从前丢弃"(drop front)机制,能避免死锁问题)。
主动式队列管理(Active Queue Management,AQM):AQM是一族基于FIFO调度策略的队列管理机制,使得路由器能够控制在什么时候丢多少包,以支持端到端的拥塞控制。和传统的“队尾丢弃”(DropTail)相比,AQM在网络设备的缓冲溢出之前就丢弃或标记报文。AQM有以下优势: 减少了路由器中丢弃的包的数量、对交互式服务提供了更低的延迟、避免了"死锁"现象。AQM的一个代表是RED(Random Early Detection)。研究表明RED比DropTail具有更好的性能。但是RED的性能对算法的参数设置十分敏感,至今还没有在互联网中得到广泛的使用。另外,在AQM方面又提出了一些新的算法,如PI、REM(Random Exponential Marking)、AVQ(Adaptive Virtual Queue)等。但是这些算法在实用性方面还存在一些问题,需要进一步的研究。
根据算法的实现位置,可以将拥塞控制算法分为两大类:链路算法(Link Algorithm)和源算法(Source Algorithm)。链路算法在网络设备(如路由器和交换机)中使用,作用是检测网络拥塞的发生,产生拥塞的反馈信息;源算法在主机和网络边缘设备中使用,作用是根据反馈信息调整发送速率。拥塞控制算法设计中的一个关键问题是如何生成反馈信息和如何对反馈信息进行响应。
在拥塞控制的源算法方面,大量的工作集中在对TCP协议的研究上。近年来TCP中采用了很多新的算法,包括慢启动(Slow Start)、拥塞避免、快速重传(Fast Retransmit)、快速恢复(Fast Recovery)、选择性应答(SACK)等,大大提高了网络传输的性能。链路算法的研究目前集中在“主动队列管理”(AQM: Active Queue Management)算法方面。
3,TCP整形技术
TCP整形技术通过对TCP窗口大小和TCP确认封包时延的精确控制,达到了对TCP突发特性的调控。Packteer用这套方法据说控制非常精确。这个技术对网络中每对对话的信息源进行流量监听、跟踪、计算和干预,对信息源向网络所发送信息量的多少、发送时间和频率进行控制,从根本上解决网络的阻塞问题。
经过TCP整形技术处理后的信流变得很平滑,不再严重突发以影响其他信流,传输效率大大提高,使广域网资源得到充份利用。由于TCP整形技术不采用队列技术,大大地减少了信息包的丢失,降低了信流重发率。利用TCP整形技术,网络中所有机器的发送量都受到统一控制,从路由器流过的流量如果被控制到与广域网瓶颈带宽相一致,路由器上再不会有大量的队列,这就减轻了路由器的负担使信息包通过路由器的所需时间大大减少。
4,实例1:windows中的Qos
在Windows XP系统中引入QoS技术的目标是建立用于网络通讯的保证传输系统。程序可以通过 QoS 应用程序编程接口 (API) 来利用 QoS。所有程序可以共享百分之百的网络带宽,特别要求带宽优先权的程序除外。其他程序也可以使用这种“保留”的带宽,正在发送数据的请求程序除外。默认情况下,程序保留的带宽累计可达终端计算机每个接口的基本链接速度的百分之二十。如果保留带宽的程序发送的数据量没有完全用完带宽,保留带宽的未用部分可用于同一主机上的其他数据流。
细节可参考KB316666号,关于Windows Qos参数,以及《Windows 中的 QoS 支持》。
5,实例2:交换机的QoS机制
华为和思科的很多交换机、路由器都提供了Qos功能。功能手册中介绍了相关特性情况。
例如《Quidway 8500交换机上的QOS技术与实现机制》。
阅读(2383) | 评论(0) | 转发(0) |