QoS小结:12:04 2014/3/23
QOS 的基本思想就是把数据分类,放在不同的队列中,根据不同类数据的要求保证它的优先传输或者为它保证一定的带宽,推荐模块化的QOS 配置MQC:Module QOS Config。
QOS 有三种模型:best-effort IntServ DiffServ
尽最大努力服务实际上就是没有服务,先到的数据先转发。
集成服务模型的典型就是预留资源,在通信之前所有的路由器先协商好,为该数据流预先保留带宽出来。
区分服务模型是比较现实的模型,该服务包含了一系列分类工具和排队机制,为某些数据流提供比其他数据流优先级更高的服务。
区分服务模型的四大类操作:
1.分类Classification /标记 Marking
2.队列queue:(研究是否支持队列分类、队列大小、入队机制、调度机制)
3.管制 Policing /整形 Shaping
4.拥塞避免机制 RED WRED
FIFO/FCFS:First In First Out 是2.048M 以上链路的默认设置。
PQ:Priority Queue优先级队列支持队列划分,分为High20 Medium40 Normal60 Low80 4个子队列,只有高优先级的队列为空后才为中优先级的队列服务,如果高优先级队列长期不空,则低优先级的队列永远不会被服务,造成starve局部饿死。
priority-list 1 protocol ip high tcp telnet 创建优先级队列,把 telnet 流量放在高优先级队列
priority-list 1 queue-limit 20 30 40 50 定义优先级队列高、中、普通、低队列中的长度
priority-group 1 把定义好的优先级队列应用接口上
show queueing priority 查看优先级队列情况
debug priority 调试优先级队列
CQ:Custom Queue自定义队列有 16 个子队列,也就是0PQ+CQ1-16,基于round robin轮询机制。
queue-list 1 protocol ip 1 tcp telnet 创建自定义队列,标号为 1,把 telnet 流量放在队列1中
queue-list 1 queue 1 limit 40 定义队列 1的深度为 40
custom-queue-list 1 把定义好的自定义队列应用接口上 25.1.4 加权公平队列
WFQ:Weight Fair Queue 加权公平队列是2.048M 以下链路的默认设置,WFQ 将数据包区分为不同的流,也称为FBWFQ,划分256个子队列,根据CDT(congestive discard threshold)和HQO(hold-queue out)值确定是否可以入队,权重的概念也就是说WFQ能够依据不同的QoS标记处理不同流量。调度机制是基于最小的FT(finish time)出队。
fair-queue 512 1024 10 在接口上启用 WFQ,512是CDT,1024 是最大的会话数,10是RSVP 预留队列
CBWFQ:Class Based Weight Fair Queue 基于类的加权公平队列允许用户自定义类别,并对这些类别的带宽进行控制,这在实际中很有用。例如我们可以控制我们的网络访问Internet 时的 web 流量的带宽。可以根据数据包的协议类型、ACL、IP优先级或者输入接口等条件事先定义好流量的类型,为不同类别的流量配置最大带宽、占用接口带宽的百分比等。
class-map match-all VOIP/VIDEO/Business/Control 定义class-map
match protocol rtp(audio&video)ftp eigrp 匹配相关协议
policy-map CEWFQ 定义class-map
class VOIP==class class-default 对未分配的带宽进行优化处理
bandwidth percent 10 配置流量的带宽为10%
service-policy output WFQ 把策略应用在接口的output方向
show class-map 显示 class-map 信息
show policy-map 显示 policy-map 信息
show policy-map interface s0/0/0 显示接口 s0/0/0 上的policy-map 配置
LLQ:Low Latency Queue低延迟队列,多个PQ+CBWFQ
LLQ 允许用户自定义数据类别,并优先让这些类别的数据传输,在这些数据没有传输完之前不会传输其他类别的数据。能够加强WFQ处理语音流量的能力,减少抖动;
ip rtp priority queue 新版被隐藏的命令,启用LLQ
priority 15 配置 LLQ,带宽为 15k
TCP synchronization同步&TCP starvation
当多个 TCP 连接在传输数据时,全部连接都按照最大能力传输数据,很快造成队列满,队列满后的全部数据被丢失;这时所有的发送者立即同时以最小能力传输数据,带宽开始空闲。接着全部发送者开始慢慢加大速度,于是又同时达到最大速率,又出现堵塞,如此反复,这样网络时空时堵,带宽的利用率不高。
RED:Random Early Detect随机早期检测TCP同步产生时随机地丢弃TCP的数据包,保证链路的整体利用率,解决TCP synchronization同步&TCP starvation问题。
WRED:Weight Random Early Detect加权随机早期检测
数据包根据 IP 优先级分成不同队列,每个队列有最小阀值、最大阀值,当平均长度小于最小阀值时,数据包不会被丢弃;随着平均队列的长度增加,丢弃的概率也增加;当平均长度大于最大阀值时,数据包按照设定的比例丢弃数据包。
random-detect 在接口上启用 WRED
random-detect precedence 0 18 42 12
//配置 WRED,IP优先级为0的队列,最低阀值18,最大阀值42,按照 1/12 的最大比例丢弃数据包
random-detect dscp-based ef 39 45 20 按照 1/20 的最大比例丢弃数据包
show queueing random-detect 显示 WRED 的配置情况
而针对UDP,采用基于流的FBWRED机制,流量入队前整合为流,并提供早期检测。
random-detect flow ···
CAR:Commited Access Rate承诺访问速率
是一种流量策略的分类和标记的方法,它基于IP优先级、DSCP值、MAC地址或者访问控制列表来限制IP流量的速率,标记则可以改变 IP 优先级或者DSCP。
CAR 使用令牌桶的机制,检查令牌桶中是否有足够的令牌。如果一个接口有可用的令牌,令牌可以从令牌桶中挪走,数据包被转发,当这个时间间隔过去后,令牌会重新添加到令牌桶中。如果接口没有可用的令牌,那么 CAR 可以定义对数据包采取的行为。
CAR 使用 3 种速率定义来定义流量的速率:
Normal rate(正常的速率):令牌被添加到令牌桶中的平均速率,就是数据包的平均传输速率。
Normal burst(正常的突发):正常的突发时在时间间隔内允许正常流量速率的流量。
Excess burst(过量突发):超过正常突发的流量。当配置过量突发时,会借令牌并且将它添加到令牌桶中来允许某种程度的流量突发。当被借的令牌已经使用后在这个接口上收到的任何超出的流量会被扔掉。流量突发只会发生在短时间内,直到令牌桶中没有令牌存在才停止传输。
NBAR:Network Based Application Recognition 基于网络的应用识别
可以理解为一个分类引擎,它查看数据包,对数据包包含的信息进行分析。NBAR 使得路由器不仅要做转发数据的工作,还要对数据包进行检查,这样会大大增加负载,NBAR 可以检查应用层的内容,参考4-7层的流量特征库PDLM:packet description language module。
接口下#ip nba protocol-discovery