注意:学习QOS一定要理解,Marking仅仅是对报文进行了分类,而Action才决定了如何进行调度后转发报文。对于serial口,因为默认采取了WFQ方式的队列调度机制,所以VOIP流量会优先发送(Action:默认VOIP流量进入队列1)。 Show inter serial 0/0,如下:
上图,默认CDT=64,HQO=1000,Queue数量为256,Reserved Conversation数量为0.
接口模式下,fair-queue即启用WFQ的指令。
上图最后将Reservable conversation queues设置为5,查看WFQ配置如下图:
上图中,Discard threshold为CDT值,Dynamic queues就是队列数量,Link queues为WFQ对于systerm报文额外增加了8个队列,Reserved queues是专门为RSVP (如果配置了RSVP)flows预留的队列数目。
注意一点:上面的配置中,并没有看到配置HQO的指令,这是因为配置HQO是一条公用指令,如下图所示:
31
前面学习过,RSVP的信令(控制消息)传输本身无法得到保证,但是在WFQ中,Reserved queues是专门为RSVP (如果配置了RSVP)flows预留的队列数目,可以利用来保证RSVP的信令传输。如下:
在S0/1口上启用RSVP之后,WFQ会自动为RSVP预留一定数量的队列数(下图可见预留37个队列,不同的版本,默认值可能不一样),如下:
配置命令:
route(config-if):fair-queue cdt dynamic-queues reservable-queues
reservable-queues:保留队列个数:针对RSVP流,可以保留一定的队列,缺省是0,范围0~1000。
dynamic-queues:动态队列个数,缺省是256,流确实很多,可以调大,最大4096。 cdt: 每个队列自己的长度,假如一个数据排到了第一个队列中(cdt=64),如果该队列中的报文数量己达到64,则新的报文会被丢弃。
每个队列中排队的报文数量是有限的,WFQ对所有队列一起进行宏观调控。
所有队列中可以排队的报文数量上限: router(config-if)#hold-queue max-limit out 缺省1000 。
WFQ优点:
32
1.配置简单(不用手工分类)
2.保证所有的流都有一定的带宽 3.丢弃野蛮流量
4.大多数平台上都支持
5.支持所有IOS版本(11.0以上) WFQ缺点 :
1.每个子队列都继承了FIFO的缺点
2.多个不同的流可能会被分入同一个队列(流的数量超过了配置的队列数) 3.不支持手工分类
4.不能提供固定带宽保证
5.因为使用了复杂的分类和调度机制,对系统资源有一定的限制 。
上图:
第二个缺点(WFQ可能会出现多个数据流进入同一个queue的情况) 第三个缺点(WFQ不支持手工分类)
第四个缺点(WFQ只能针对优先级高的数据流,让它先出队列,而不能保证其带宽。)
加权公平队列WFQ(Weighted Fair Queueing)——WFQ 提供了动态的、公平的排队方式,它基于优先级/权重来区别流量,并根据会话的情况来决定每种会话可以占用带宽的大小,这样就保证了所有通信都能根据分配给它的权重而受到公平地对待。WFQ 对流量进行分类的依据有:源地址、目的地址、源端口、目的端口号及协议的类型等。
WFQ (Weighted fair queuing): 加权公平队列,保证相同优先级业务间公平,不同优先级业务间加权。
最大队列数目可配置(16-4096)。
采用HASH算法尽量将不同的数据流分入不同的队列,自动完成。 权值依赖于IP报文头中携带的IP优先级。
WFQ将分组按照不同的业务流、不同的IP优先级,自动按照HASH算法,划分成不同的队列,在保证高优先级业务的同时,按照配置权重,将带宽公平地分给低优先级别的业务。Quidway路由器在每个接口上最大支持4096个队列,在此范围之内,网络管理员可以配置队列的数目和相应权值。
33
WFQ的优点是对所有应用都能比较公平地提供服务质量,对于要求较高的业务可以通过设置权重保障优先级,能智能划分队列和调度,配置相对简单,对网络治理员要求相对较低;WFQ的缺点是由于相对公平,对于QOS要求极高的应用,不能像PQ那样绝对保证,WFQ策略计算复杂,比较消耗路由器处理能力。WFQ适用于应用较复杂,并且应用相对公平的网络,如Internet网。
WFQ的思想:
① 为每个流创建一个专用的队列,避免队列的饥饿,延迟,抖动等. ② 在所有流间公平、正确地分配带宽
③ WFQ使用 IP优先级作为分配带宽的权重
在CISCO路由器上,接口小于E1的链路会默认启用WFQ. 注:在WFQ中,weight的计算方式为4096/(IP优先级+1) ,因此在show queue中看到的weight值越大,表示权重越低。
几种拥塞管理策略的选取:
(1)FIFO 在用户数据通信上实现了数据包的无优先权策略,它无需确定通信的优先权或种类。但是在使用FIFO 策略时,一些运行异常的数据可能会耗费大部分可用带宽、占满队列,导致突发数据源的延时,重要的通信也许会被丢弃。 (2)PQ 可以保证某些较高优先级类型通信的传送。也就是说,优先级顺序将被严格执行,但这样就可能以牺牲其他类型数据包的发送为代价。一些较低优先级的队列中的数据包将处于不利地位。例如:优先权较低队列中的数据包在最坏的情况下(可用带宽总数有限、紧急通信的传输频率很高)可能根本没有机会被发送。
(3)CQ 采用为每一种指定类型的流量保留一定比例可用带宽的方法,保证了低速接口在网络拥塞的情况下也能获得网络服务。通过决定队列所配置的数据包总数来决定这个队列的大小,以此来控制对带宽的访问。 (4)WFQ 使用公平排队算法动态地把通信分成消息。消息是一个会话的一部分。使用WFQ 可使小容量、交互式通信可以同大容量通信(如文件传输)一样,得到公平的带宽分配。
LLQ是思科专门为VOIP流量指定的,可以这样理解:LLQ就是WFQ,其中把VOIP流量放入PQ队列优先传送。LLQ=WFQ+PQ,LLQ中默认为语音流量优先处理。
34
上图:LLQ就是为语音流(VoIP)服务,语音流采用UDP传送。 下图是VOIP的报文结构:
上图,RTP是为了解决UDP的无序性。
如果使用UDP,则RTP报文和RTCP报文分别使用两个相邻的UDP端口,RTP报文使用低端口(奇数是数据层面的),RTCP报文使用高端口(偶数是控制层面的)。 所以,抓取语音包时,可以匹配IP precedence(5),也可以匹配UDP端口号(16384-32767之间的奇数)。
上图,High priority分配给语音,下面的方框中为WFQ。 注意:上图中出接口上不能配置FIFO(接口默认为FIFO),因为LLQ是基于WFQ的,即出接口必须配置WFQ。
WFQ将分组按照不同的业务流、不同的IP优先级,自动按照HASH算法,划分成不同的队列,在保证高优先级业务的同时,按照配置权重,将带宽公平地分给低优先级别的业务。
35