网络带宽的发展永远跟不上需求,因此当网络出现堵塞时如何保证网络的正常工作呢?QOS(服务质量)是一个解决方法,QOS 的基本思想就是把数据分类,放在不同的队列中。根据不同类数据的要求保证它的优先传输或者为它保证一定的带宽。QOS 是在网络发生堵塞才起作用的措施,因此 QOS 并不能代替带宽的升级。
本次介绍简单的QoS配置
QoS简介:
QOS 有三种模型:尽最大努力服务、综合服务、区分服务。尽最大努力服务实际上就是没有服务,先到的数据先转发。综合服务的典型就是预留资源,在通信之前所有的路由器先协商好,为该数据流预先保留带宽出来。区分服务是比较现实的模型,该服务包含了一系列分类工具和排队机制, 为某些数据流提供比其他数据流优先级更高的服务。 下面我们介绍典型的区分服务。
优先级队列:
优先级队列(PQ,Priority Queue)中,有高、中、普通、低优先级四个队列。数据包
根据事先的定义放在不同的队列中,路由器按照高、中、普通、低顺序服务,只有高优先级
的队列为空后才为中优先级的队列服务, 依次类推。 这样能保证高优先级数据包一定是优先服务,然而如果高优先级队列长期不空,则低优先级的队列永远不会被服务。我们可以为每个队列设置一个长度,队列满后,数据包将被丢弃。
自定义队列:
自定义队列(CQ,Custom Queue)和 PQ 不一样,在 CQ 中有 16 个队列。数据包根据事
先的定义放在不同的队列中,路由器将为第一个队列服务一定包数量或者字节数的数据包后,就转为为第二个队列服务。我们可以定义不同队列中的深度,这样可以保证某个队列被
服务的数据包数量较多,但不至于使得某个队列永远不会被服务。CQ 中的队列 0 比较特殊,只有队列 0 为空了,才能为其他队列服务。
加权公平队列:
加权公平队列(WFQ,Weight Fair Queue)是低速链路(2.048M 以下)上的默认设置。
WFQ 将数据包区分为不同的流, 例如在 IP 中利用 IP 地址和端口号可以区分不同的 TCP 流或者 UDP 流。WFQ 为不同的流根据权重分配不同的带宽,权因子是 IP 数据包中的优先级字段。例如有 3 个流,两个流的优先级为 0,第三个为 5,总权为(1+1+6)=8,则前两个流每个得到带宽的 1/8,第三个流得到 6/8。
基于类的加权公平队列
基于类的加权公平队列(CBWFQ,Class Based Weight Fair Queue)允许用户自定义类别,并对这些类别的带宽进行控制。这在实际中很有用,例如我们可以控制我们的网络访问
Internet 时的 web 流量的带宽。可以根据数据包的协议类型、ACL、IP 优先级或者输入接口等条件事先定义好流量的类型, 为不同类别的流量配置最大带宽、 占用接口带宽的百分比等。CBWFQ 可以和 NBAR、WRED 等一起使用。
低延迟队列
低延迟队列(LLQ,Low Latency Queue)的配置和 CBWFQ 很类似。有的数据包,例如
VOIP 的数据包,对数据的延迟非常敏感。LLQ 允许用户自定义数据类别,并优先让这些类别的数据传输,在这些数据没有传输完之前不会传输其他类别的数据。
加权随机早期检测
加权随机早期检测(WRED,Weight Random Early Detect)是 RED 的 Cisco 实现。当多个 TCP 连接在传输数据时,全部连接都按照最大能力传输数据,很快造成队列满,队列满后的全部数据被丢失;这时所有的发送者立即同时以最小能力传输数据,带宽开始空闲。接着全部发送者开始慢慢加大速度,于是又同时达到最大速率,又出现堵塞,如此反复。这样网络时空时堵,带宽的利用率不高。RED 则随机地丢弃 TCP 的数据包,保证链路的整体利用率。WRED 是对 RED 的改进,数据包根据 IP 优先级分成不同队列,每个队列有最小阀值、最大阀值,当平均长度小于最小阀值时,数据包不会被丢弃;随着平均队列的长度增加,丢弃的概率也增加;当平均长度大于最大阀值时,数据包按照设定的比例丢弃数据包。
CAR
承诺访问速率(CAR,Commited Access Rate)是一种流量策略的分类和标记的方法,它基于 IP 优先级、DSCP 值、MAC 地址或者访问控制列表来限制 IP 流量的速率。标记则可以改变 IP 优先级或者 DSCP。
CAR 使用令牌桶的机制, 检查令牌桶中是否有足够的令牌。 如果一个接口有可用的令牌,令牌可以从令牌桶中挪走,数据包被转发,当这个时间间隔过去后,令牌会重新添加到令牌桶中。如果接口没有可用的令牌,那么 CAR 可以定义对数据包采取的行为。CAR 使用 3 种速率定义来定义流量的速率:
Normal rate(正常的速率):令牌被添加到令牌桶中的平均速率,就是数据包的平均传输速率。
Normal burst(正常的突发):正常的突发时在时间间隔内允许正常流量速率的流量。
Excess burst(过量突发):超过正常突发的流量。当配置过量突发时,会借令牌并且
将它添加到令牌桶中来允许某种程度的流量突发。 当被借的令牌已经使用后在这个接口上收到的任何超出的流量会被扔掉。 流量突发只会发生在短时间内, 直到令牌桶中没有
令牌存在才停止传输。
通常建议正常的流量速率配置为等于在一段时间内的平均流量速率。 正常的突发速率应当等于正常速率的 1.5 倍。过量速率是正常突发速率的 2 倍。
基于网络的应用识别
基于网络的应用识别(NBAR,Network Based Application Recognition)实际上一个分类引擎,它查看数据包,对数据包包含的信息进行分析。NBAR 使得路由器不仅要做转发数据的工作,还要对数据包进行检查,这样会大大增加负载。NBAR 可以检查应用层的内容,例如可以检查 URL 是否有“.java”字样。NBAR 可以和许多 QOS 配合使用。