Qos的基本思想就是把数据分类,放在不同的队列中。

 

Qos3种模型:尽最大努力服务,综合服务和区分服务。最大努力服务就是先到的数据先转发。综合服务的典型就是预留资源,在通信之前所有的路由器先协商好,为该数据流预先保留带宽出来。区分服务是比较现实的模型,该服务包含了一系列分类***和排队机制,为某些数据流提供比其他数据流优先级更高的服务。

 

区分服务:

1 优先级队列:PQ,有高,中,普通,低优先级4个队列。路由器会按照高中普通低顺序服务,只有高优先级的队列为空后才为中优先级队列服务,一次类推。缺点是可能高优先级一直不为空,低优先级队列永远不会被服务。每个队列有一个长度,队列满后,数据包会被丢弃。

 

2 自定义队列

CQ,在CQ中有16个队列。数据包根据事先的定义放在不同的队列中,路由器为第一个队列服务一定包数量或者字节数的数据包后,为第二个队列服务。可以定义不同队列的深度,这样可以保证某个队列被服务的数据包数量较多,优点就是不会是某个队列不会被服务。CQ队列0比较特殊,只有队列0为空了,才能为其他队列服务。

 

3 加权公平队列

WFQ,是低速链路上的默认设置。WFQ将数据包区分为不同的流,如,在IP中利用IP地址和端口号可以区分不同的TCP流或UDP流。WFQ为不同的流根据权重分配不同的带宽,权因子是IP数据包中的优先级字段。如3个流,流1优先级为0,流2优先级为0,流35,总权为1+1+1=8,前两个带宽为1/8,第三个为6/8

 

4 基于类的加权公平队列

CBWFQ,允许用户自定义类别,并对这些类别的带宽进行控制。实际很有用,可以根据数据包的协议类型,ACLIP优先级或者接口等条件事先定义好流量的类型,为不同类别的流量配置最大带宽和占用接口带宽的百分比等。

 

5 低延迟队列

LLQ,他的配置和CBWFQ类似。有些数据包如VOIP,对数据的延迟非常敏感,LLQ允许用户自定义数据类别,并优先让这些类别的数据传输,这些数据没传完前不会传输其他类别的数据。

 

6 加权随机早期检测

WRED:是RED的思科实现。保证链路的整天利用率。当带宽满时,RED随机的丢弃TCP数据包,保证链路的整天利用率,WRED,数据包根据IP优先级分成不同队列,每个队列有最小阀值和最大阀值,当队列长度小于最小阀值时,数据包不会丢弃;随着队列的增加,丢弃的概率呈线性增加,当队列长度等于最大阀值时,数据包按照设定的比率丢弃;当大于阀值,尾部的数据包全部丢弃。

 

7 CAR

承诺访问速率:是一种流量策略的分类和标记的方法,基于IP优先级,DSCP值,MAC地址或者访问控制列表来限制IP流量的速率。标记可以改变IP优先级或者DSCP

CAR使用令牌桶的机制。如果一个接口有可以的令牌,令牌可以从令牌桶中挪走,数据包转发,时间间隔后,令牌重新添加到桶中。如果接口没有令牌了,那么会有对数据包行为的措施。CAR定义3中速率来定义流量的速率。

Normal Rate:正常的速率

Normal Burst:正常的突发

Excess Burst:过量突发

建议正常的突发是正常的1.5倍,过量速率是正常突发速率的2倍。

 

8 基于网络的应用识别

NBAR:实际上是一个分类引擎,它查看数据包,对数据包包含的信息进行分析。他使路由器不仅要做转发数据的工作,还要对数据包进行检查,会大大增加负载。

 

配置PQ

1 配置IP地址和路由协议

2 配置PQ

 priority-list 1 protocol ip high tcp telnet

//创建一个优先级队列,标号1,把telnet流量放在高优先级队列中

 priority-list 1 protocol ip high list 101

//ACL101 定义的流量放在高优先级队列中

 

 priority-list 1 protocol ip medium gt 1000

//把数据包大于1000字节的流量放在中优先级队列中

 

 priority-list 1 interface g0/0 normal

//g0/0接口收到的流量放在普通优先级队列中

 

 priority-list 1 default low

//把其他流量放在低优先级队列中

 

access-list 101 ...

priority-list 1 queue-limit 20 30 40 50

//这个定义高,中..队列的长度,如果队列超过长度,数据包被丢弃。

 

int s0/0

priority-group 1

//把定义好的优先级队列应用在s0/0接口上

 

show int s0/0

//可以看到接口上的队列策略,标号为0之类的

 

show queueing priority

//查看队列的配置

 

debug priority

//测试队列是否生效,用ping联合使用

 

配置CQ

1 配置IP地址和路由协议

2 配置CQ

 queue-list 1 protocol ip 1 tcp telnet

//创建一个自定义队列,标号为1,把telnet流量放在队列1

  queue-list 1 protocol ip 2 list 101

//ACL 101 定义的流量防止队列2

  queue-list 1 protocol ip 3 gt 1000

//把数据包大于1000字节的流量放在队列3

 queue-list 1 default 4

//其他流量放在队列6

 

 queue-list 1 queue 2 limit 35

 queue-list 1 queue 3 limit 30

//定义队列深度大小,也就是说为队列2服务35个数据包后,转向队列2

 

 int s0/0

 custom-queue-list 1

//把定义好的队列应用在接口上

 

show queueing priority

//查看队列配置情况

 

debug custom-queue

 

WFQ

配置基本网络然后配置WFQ

int s0/0

fair-queue 512 1024 10

//512是丢弃值,当队列达到512数据包时,数据将被丢弃;1024是最大的会话数;10RSVP可预留队列

 

CBWFQ

1 配置基本网络

2 定义class-map

  class-map match-any CLASS-MAP1

//定义了一个class-map,名为CLASS-MAP1match-all:指明下面条件都需要满足;match-any:匹配一个条件就可以。

  match protocol http

  match protocol ftp

//匹配协议类型包括EGPICMPEIGRPDNSHTTPTelnet

  class-map match-all CLASS-MAP2

   match protol telnet

//还可以匹配访问列表,match access-group 号;匹配CoSmatch cos cos-value;匹配IP包中的CoS值;匹配IP优先级:match ip precedence precedence-value ;匹配DSCP值:match ip dscp dscp-value 匹配入接口:match input-interface type number

 

3 定义Policy-map

  policy-map MY-POLICY

 //定义Policy-map

4 配置带宽

  class CLASS-MAP1

  bandwidth 60

  class CLASS-MAP2

  bandwidth 10

 //配置CLASS-MAP1流量带宽60kbps,CLASS-MAP2流量带宽10kbps。总带宽为128kbpsBandwidth后面可以跟百分比

5 应用

  int s0/0

  service-policy output MY-POLICY

//把定义的策略应用在接口output方向上,CBWFQ只能在output方向。限制了telnet,http,ftp流量的带宽

 

show class-map

show policy-map