CBQ是Qos中的一种队列配置方式,全称Class-Based Queuing,应该说这个名词对应一部分配置方式,而并非对应四种队列。
而LLQ/EF/AF/BE也并非是队列
1. LLQ(Low Latency Queuing)低延迟队列,展开这个说一下:
- 在QoS中有一个WFQ的队列(Weighted Fair Queuing)全称叫加权公平队列,通常是依照IP五元组来对流量进行分流,然后基于算法计算那个包的的虚拟完成时间小就优先发送哪个包,按照这个机制,权重较高的流会优先发送。
- CBWFQ(Class-Based Weighted Fair Queuing) 在WFQ的基础上可以对一部分流进行手动分类,然后根据这个分类手动设置带宽权重,可以保证设置的流量能够获得比较大的带宽分配,但本质上仍旧没办法保证重要的流量永久优先。
- PQ(Priority Queuing)优先级队列,这个比较简单粗暴,根据设定,永远优先发送高优先级的流量,一直有优先级高的流量就一直发送,通常适用于控制流量或者语音流量,缺点是其他低优先级的流量有可能得不到发送机会,被“饿死”。
- LLQ可以看成PQ+WFQ的组合体,可以定义一个比较nb的优先级队列保证必要流量,其他的根据WFQ的权重进行加权转发。
- CBLLQ可以看成是PQ+CBWFQ的组合体,可以根据手动分类将流量分配到优先级队列,又可以根据其他的特征,进行带宽的比例分配。
2. EF/AF通常是指在QoS中使用dcsp对流量分类的标记
EF(Expedited Forwarding)是在RFC3246中定义的服务质量类别,对应dscp的code为dscp (101110)代表语音流量,按照定义会被优先的发送
AF(Assured Forwarding)是在RFC 2597中的服务质量类别,可以有AF1~AF4四类,可以给不同分类的流量设置相应的优先级
BE(Best Effort)这个算是一个默认的Qos类别,默认情况下流量传输的模型就是尽力而为的方式。
3. 然后看下个问题,流量分类与队列关联:
- 流量分类相对比较好理解,使用ACL等方式抓取需要的流量,使用route-map(route-map只能打ip Precedence设置,且只针对入栈流量)/class-map给流量分类,然后使用policy-map给流量打上标记
例如:
ip access-list extended EIGRP
permit eigrp any any
ip access-list extended FTP
permit tcp any any range ftp-data ftp
permit tcp any range ftp-data ftp any
ip access-list extended HTTP
permit tcp any any eq www
permit tcp any eq www any
ip access-list extended TELNET
permit tcp any any eq telnet
permit tcp any eq telnet any
ip access-list extended VOICE
permit udp any any range 16384 32767
permit udp any range 16384 32767 any
!
!
class-map match-all TELNET
match access-group name TELNET
class-map match-all HTTP
match access-group name HTTP
class-map match-all FTP
match access-group name FTP
class-map match-all EIGRP
match access-group name EIGRP
class-map match-all VOICE
match access-group name VOICE
!
policy-map CBMarking
class FTP
set ip precedence 1
class HTTP
set ip dscp cs2
class TELNET
set ip dscp af31
class VOICE
set ip dscp ef
class EIGRP
set ip dscp cs6
!
队列关联:以CBLLQ为例
policy-map CBLLQ-Policy
class VOICE
priority 2000
class EIGRP
priority 1000
class HTTP
bandwidth 20000
class FTP
bandwidth 30000
class class-default
fair-queue
然后将策略应用到接口上面
int G0/0/1//在流量入接口打标记
service-policy input Marking-Policy
int g0/0/2 //出接口设置qos策略
service-policy output CBLLQ-Policy
您好,感谢解答,我上面提问表达有误,不好意思,我换一个问法,我现在有一个需求,我有语音流量、视频流量、某些需要报障的业务数据流量以及其他流量,我想让语音流量最先转发,只有语音流量转发了其它流量才能转发,视频流量第二转发,有一个保证带宽,某些需要报障的业务数据第三转发,也设置一个保证带宽,其它流量公平转发,这个该怎么配置呢?
通过设置dscp头部优先级,就能改变数据的转发优先级吗?路由器会根据DSCP来决定哪些数据优先转发?DSCP不是只是用来做数据分类的一个标识吗。
倒着来回答,dscp确实是用在做流量分类的一个标识,路由器默认情况下也不会看dscp的的内容,网络设备的默认队列方式是FIFO,即便是有高优先级的流量,也需要遵守FIFO的原则。在这种情况下需要保证某些流量优先,就需要依赖Qos,让路由器可以对一部分流量做策略,而策略中用来识别流量的一个条件因素就有dscp。
再看你的需求:
语音流量应该默认就携带标记的应该可以直接使用标记抓取这些流量,视频默认没有标记,但视频应该是指的视频会议应用吧,可以通过源IP地址或者视频会议其他特征来抓取。其他保障带宽的可以使用acl或者prefix-list抓一下
大致配置如下:
class-map match-any voice
match ip precedence 5
match ip dscp ef
class-map match-all video
match access-group name VIDEO
class-map match-all data
match access-group name xxx
!
policy-map LLQ
class voice
priority 2000 // 设置语音为强制优先队列,保障带宽2M
class video
priority 4000 // 视频保障4M,也可以使用bandwith 4000改成带宽分配预留,但不是强制优先
class data
bandwidth percent 20 // 保障数据流量为接口带宽的20%
class class-default
fair-queue
!
int g0/0/1 //出接口调用策略
serivce-policy output LLQ
1. 是的,默认情况下接口的对了是FIFO,有标记也不会有任何效果。
2.不会根据dscp优先级转发,配置了qos会根据你的策略设置进行调度,如果你设置了语音优先,那么只有语音的流量会优先转发,其他的没有策略就会匹配class-default 。比如voice流量使用priority 保证带宽;其他的如果没有额外的设置,会进入默认的加权公平队列中,根据队列的调度情况进行转发。
3.优先转发是通过priority来实现的,它的作用是将其设置为PQ,强制优先
ok,综合上面的回答,路由器不会根据DSCP头部来实现差分转发,尽管你使用了qos,但起作用的也不是DSCP,而是具体的队列来起作用的,dscp的作用只是用来抓流量,和通过五元组来抓流量是一样的,只不过有些流量他默认就会打上相应的dscp标识,我们不用通过五元组来抓他,通过dscp来抓会更方便而已。
关于CBQ我还有一个疑问,我可以通过priority来让他强制优先,那我要对这些流量做一个优先的排序该怎么做呢,比如优先转发A流量,再转发B流量,再转发C流量。
在思科路由器中,CBQ(Class-Based Queuing)调度策略允许基于报文的分类将流量分配到不同的队列。具体步骤如下:
1.配置访问控制列表(ACL):首先需要定义一个或多个访问控制列表来识别不同类型的流量。例如,可以为视频业务、关键业务等创建不同的ACL。
access-list 3181 permit ip 192.168.1.0 0.0.0.255 any
access-list 3182 permit ip 192.168.2.0 0.0.0.255 any
2.应用ACL到接口:将这些ACL应用到相应的接口上,以便对进入和离开接口的数据包进行分类。
interface GigabitEthernet0/0/1
ip access-group 3181 in
ip access-group 3182 out
3.配置流队列模板:为不同的业务设置调度参数和整形参数。例如,可以为不同的业务设置不同的带宽限制和优先级。
流量整形:
流量监管:
拥塞管理:
4.配置CBQ策略:基于DSCP优先级或其他复杂规则,将流量分配到不同的队列。常见的队列类型包括BE( best effort)、AF(抬起头)、EF(确保服务)和LLQ(低延迟队列)。
traffic-policy policy-name class-based排队
class class-name match-ACL access-group in
queue queue-name algorithm WFQ
exit
5.绑定CBQ策略到接口:最后,将CBQ策略应用到接口上,以确保流量按照预设的规则进行调度。
interface GigabitEthernet0/0/1
traffic-policy policy-name class-based排队
通过上述步骤,可以实现基于类的队列调度,将不同类型的流量分配到相应的队列中,从而优化网络性能和资源利用率。