CQ可以自定义16个队列,为每个队列定义一定字节数的数据包,这些被定义好的数据包采用轮循的方式被转发.当接口启用了CQ之后,队列0为系统队列,系统队列为优先级最高的队列,当系统队列中的数据包全部被转发完毕之后,接下来才会轮到自定义队列(队列1到16).自定义队列中的数据包也按照队列号顺序被转发,当队列为空或超出本次队列允许发送的数据包时,接下来会轮到下一个队列. Determining Byte Count Values for Queues
1 o! K# _6 ?7 D4 |3 ~" j3 c% P 为了能够为每个队列分配一定的带宽,必须为每个队列定义一定字节数的数据包.自定义队列中的数据包也按照队列号顺序被转发,当队列为空或超出本次队列允许发送的数据包时,接下来会轮到下一个队列.但是假如定义的字节数为100字节,而某个数据包的大小为1024字节,那么该队列每次将转发的数据包的大小即为1024字节,而不是100字节.
# r+ p% v5 ~( R 假如有3个队列,每个队列中的数据包大小分别为500字节,300字节和200字节,如果想让这3个队列平均的占用带宽,为这3个队列定义的字节数分别为200字节,200字节和200字节,但是实际上生效的带宽占用比为5/3/2.因此如果把队列中数据包的字节数定义的过小的话,将导致带宽分配的不尽如人意.但是如
. o9 B3 ?, g4 e" n4 T6 B% Y 果把队列中数据包的字节数定义的过大,那么将导致下一个队列中的数据包被转发的等待时间过长.Restrictions
, h! d/ {: \; q% `* E CQ的一些限制:
6 r7 Q" ]# B# N+ Q# P; A7 Y; b 1.由于CQ是静态配置的,因此它不能适应网络结构的改变.8 V1 D4 U1 @( }$ J
2.由于数据包要经过处理器卡的分类,因此CQ对数据包转发的速度要比FIFO慢.# I/ H% T! v$ z8 q3 m
Configuring CQ
& b% B# e; ]8 j8 l% |2 }0 P8 G 配置CQ的步骤如下:
( d7 R2 M$ z+ j 1.定义CQ列表:) s* W& Y) i' Z7 n/ u' G* y
Aiko(config-if)#custom-queue-list {list}
; A7 j) q. R9 g% u$ N1 g 2.定义队列中数据包的字节数或最大个数,默认为20个.可选:
, S+ @4 N/ Z; d! z, B1 n- h Aiko(config)#queue-list {list} queue {queue-number} {limit number|byte-count bytes}3.把数据包分配进特定的CQ中,可以基于协议或基于进站接口:! g0 E5 k6 ]* M0 k3 g0 n, i
Aiko(config)#queue-list {list} {protocol protocol|interface interface} {queue-number}4.定义默认的CQ队列,未分类的流量默认被分配进该队列:# L" G5 e3 f# x- V$ x9 d8 a. m: P
Aiko(config)#queue-list {list} default {queue-number}
* O" r- p8 ~8 b P Monitoring CQ Lists' f4 j2 x! Q+ H' X* ]! w
一些辅助性的命令:
& s5 n& C' Q. r# Q4 u/ H6 B8 v 1.显示接口队列信息:
# a4 g1 O% E0 m' b1 \0 _ Aiko#show queue [interface]
" l! W6 I& J; Q0 |0 m 2.显示CQ列表信息:! Z# s1 y F' M |. m( b; x9 P
Aiko#show queueing custom |