简介
本文档介绍如何在模块化服务质量命令行界面策略映射中应用 bandwidth 和 priority 命令。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
背景信息
bandwidth和priority命令均定义了可以在模块化服务质量命令行接口(MQC)策略映射中应用的操作,您可以通过 service-policy 命令将此策略映射应用于接口、子接口或虚电路(VC)。具体说来,这些命令为匹配流量类标准的数据包提供了带宽保证。然而,这两种命令在带宽保证的实现上存在很大的功能差异。本技术说明介绍了这些差异,并解释了如何将一种流量类的未使用带宽分配给匹配其他流量类的数据流。
区别汇总
下表列出了 bandwidth 和 priority 命令之间的功能差异:
功能 |
bandwidth命令 |
priority命令 |
最小带宽保证 |
Yes |
Yes |
最大带宽保证 |
无 |
Yes |
内置监察器 |
无 |
Yes |
提供低延迟 |
无 |
Yes |
此外, bandwidth 和priority命令的设计旨在满足不同的服务质量(QoS)策略目标。下表列出了这些不同的目标:
应用 |
bandwidth命令 |
priority命令 |
WAN 链路的带宽管理 |
Yes |
有点作用 |
管理延迟和延迟变化(抖动) |
无 |
Yes |
提高应用响应速度 |
无 |
Yes |
即使使用快速接口,多数网络仍然需要强大的 QoS 管理模型,以便有效处理由于速度不匹配或流量模式不同而不可避免地导致的拥塞点和瓶颈。现实网络中的资源和资源瓶颈有限,需要QoS策略来确保资源的正确分配。
配置带宽命令
Cisco IOS ®配置指南将 bandwidth 命令描述为“要分配给类的带宽量(以kbps为单位)。...要指定或修改为属于策略映射的类分配的带宽。"
让我们来了解一下这些定义有什么意义。
bandwidth 命令可以在出现拥塞时提供最低带宽保证。有三种形式的命令语法,如下表所示:
命令语法 |
描述 |
bandwidth {kbps}
|
以比特率的形式指定带宽分配。 |
bandwidth percent {value}
|
以主链路速率的百分比指定带宽分配。 |
bandwidth remaining percent {value}
|
以未分配给其他流量类的带宽百分比的形式指定带宽分配。 |
注意:bandwidth命令定义了一种行为,即最小带宽保证。并非所有Cisco路由器平台都使用 weighted-fair queueing (WFQ)作为实现此行为的主要算法。有关详细信息,请参阅为什么使用CBWFQ?
配置Priority命令
Cisco IOS配置指南将priority命令描述为“一个优先级队列,该队列具有指定数量的CBWFQ流量可用带宽……以根据流量策略中的可用带宽量为流量类赋予优先级”。 下一个示例将解释这些定义的含义。
可以使用以下命令集创建优先级队列:
Router(config)#policy-map policy-name
Router(config-pmap)#class class-name
Router(config-pmap-c)#priority kpbs [bytes]
在出现拥塞时,将保证流量类得到与指定速率相等的带宽。(请记住,仅当接口发生拥塞时才需要带宽保证。) 换句话说, priority 命令提供了最小带宽保证。
此外,通过 priority 命令还实现了最大带宽保证。从内部实现来说,优先级队列使用一种令牌桶,这种令牌桶可以测量流入负载,并保证数据流符合已配置的速率。只有符合令牌桶的数据流可以保证获得低延迟。仅当链路未出现拥塞时,才会发送所有超额流量;如果链路出现拥塞,则会丢弃这些超额流量。有关详细信息,请参阅什么是令牌桶?
内置监察器的作用是确保其他队列能够得到队列调度程序的服务。在使用 priority-group 和 priority-list 命令的早期Cisco优先级排队功能中,调度程序总是首先服务于最高优先级的队列。在极端情况下,较低优先级队列很少获得服务,并极度缺乏有效带宽。
priority 命令(以及其与 bandwidth 命令的主要区别)的真正优点是它如何提供严格的出列优先级,从而提供一个延迟范围。以下是《Cisco IOS配置指南》对此优势的描述:“严格优先级队列(PQ)允许将语音等延迟敏感型数据出列并在其他队列中的数据包出列之前发送。” 看看这意味着什么。
每个路由器接口都维护着以下两组队列:
队列 |
位置 |
排队方法 |
应用服务策略 |
调整命令 |
硬件队列或传输环路 |
端口适配器或网络模块 |
仅 FIFO |
无 |
tx-ring-limit |
第 3 层队列 |
第 3 层处理器系统或接口缓冲区 |
基于数据流的 WFQ、CBWFQ、LLQ |
Yes |
根据排队方法的不同而不同。对带宽类使用 queue-limit 命令。 |
从上表中我们可以看到,服务策略仅适用于第3层队列中的数据包。
严格出列是指排队调度程序,它先为优先级队列提供服务,然后将其数据包转发到传输环路。传输环路是其进入物理媒介之前的最后一站。
在下一个图中,传输环路已配置为容纳四个数据包。如果其中三个数据包已经在环路中,则我们最多可以排队到第四个位置,然后等待其他三个位置清空。因此,低延迟队列 (LLQ) 机制只是将数据包出列,排到传输环上驱动程序级先进先出 (FIFO) 队列的末尾。
使用 tx-ring-limit 命令可将传输环路的大小调整为非默认值。Cisco建议您在传输语音流量时调整传输环路。
对基于交互式事务的延迟敏感型应用来说,流量优先级是非常重要的。为了最大限度降低延迟和抖动,网络设备必须能够在语音数据包到达时立即服务它们,或者换句话说,以严格优先级方式。只有严格的优先级才能很好地处理语音。除非语音数据包立即出列,否则每一跳都会导致更多延迟。
国际电信联盟 (ITU) 建议使用最大 150 毫秒的单向端到端延迟。如果未在路由器接口立即出列,则一次路由器跳跃可能会在这种延迟预算中占据绝大部分。有关详细信息,请参阅语音质量支持。
注意:对于这两个命令,kbps值必须考虑第2层开销。换句话说,如果对某个流量类给出了保证,则这种保证必须考虑第 2 层吞吐量。
哪些等级的数据流可以使用额外的带宽?
尽管我们将 bandwidth 和 priority 命令提供的带宽保证描述为“预留”和“要留出的带宽”,但这两种命令都没有实现真正的保留。换句话说,如果流量类未使用其配置的带宽,则所有未使用的带宽将在其他类之间共享。
如果是优先级类,排队系统将强行对此规则实施一种重要例外。如前所述,优先级类的提供的负载由流量监察器测量。 在出现拥塞时,优先级类不能使用任何额外的带宽。
下表描述了带宽类和优先级类何时可以使用额外的带宽:
命令 |
拥塞 |
非拥塞 |
bandwidth命令 |
允许超出分配的速率。 |
允许超出分配的速率。 |
priority命令 |
Cisco IOS 将测量数据包,并通过令牌桶应用流量测量系统。匹配的数据包被限制为配置的bps速率,任何超出的数据包将被丢弃。 |
流量类可以超出其配置的带宽。 |
注意:Cisco 7200路由器和其他非路由/交换处理器(RSP)平台上的帧中继是LLQ的这些指南的例外情况。这些平台上的帧中继 LLQ 的最初实现不允许优先级类在非拥塞期间时超出已配置的速率。Cisco IOS 软件版本 12.2 取消了此例外,并确保仅在出现拥塞时才会丢弃不符合规定的数据包。此外,小于FRF.12分段大小的数据包不再通过分段进程发送,从而降低了CPU使用率。
从前面的讨论中,必须了解的是,由于优先级类在拥塞情况下会受到管制,因此不会从带宽类中分配任何剩余带宽。因此,剩余带宽将由所有带宽类和默认类共享。
未使用的带宽分配
本部分说明排队系统如何分配所有剩余带宽。以下是基于类的加权公平排队功能概述如何描述分配机制:“如果有超额带宽可用,超额带宽将按照已配置的带宽比例在流量类之间分配。如果未分配完所有带宽,则剩余带宽将根据已配置给各个流量类的带宽按比例分配到各个流量类中。” 请看两个示例。
在第一个示例中,policy-map foo保证bar类将获得30%的带宽,baz类将获得60%的带宽。
policy-map foo
class bar
bandwidth percent 30
class baz
bandwidth percent 60
如果您将此策略应用于 1 MBPS 链路,则意味着保证给 bar 类分配 300 kbps,保证给 baz 类分配 600 kbps。重要的是,还有 100 kbps 留给默认类。如果默认类不需要它,则未使用的 100 kbps 将可供 bar 类和 baz 类使用。如果两个流量类都需要带宽,则它们将根据已配置的速率按比例共享此带宽。在此配置中,比率是30:60或1:2。
下一个示例配置包含三个策略映射:bar、baz 和 poli。在 bar 策略映射和 baz 策略映射中,带宽按百分比形式指定。但是,在 poli 策略映射中,带宽按 kbps 的形式指定。
请记住,在创建策略映射之前,必须已创建类映射。
policy-map bar
class voice
priority percent 10
class data
bandwidth percent 30
class video
bandwidth percent 20
policy-map baz
class voice
priority percent 10
class data
bandwidth remaining percent 30
class video
bandwidth remaining percent 20
policy-map poli
class voice
class data
bandwidth 30
class video
bandwidth 20
注意:Cisco IOS版本12.2(T)中引入了bandwidth remaining percent命令。
使用Police命令设置最大值
如果在未出现拥塞时带宽或优先级类不能超出其分配的带宽,您可以结合使用 priority 命令和 police 命令。此配置将施加一个始终作用于流量类的最大速率。在此配置中配置 police 语句的选择取决于策略目标。
了解可用带宽值
本部分说明排队系统如何得到显示在 show interface或 show queueing 命令输出中的可用带宽值。
我们创建以下名为 leslie 的策略映射:
7200-16#show policy-map leslie
Policy Map leslie
Class voice
Weighted Fair Queueing
Strict Priority
Bandwidth 1000 (kbps) Burst 25000 (Bytes)
Class data
Weighted Fair Queueing
Bandwidth 2000 (kbps) Max Threshold 64 (packets)
然后,创建一个 ATM 永久虚电路 (PVC),将其分配到非实时可变比特率 ATM 服务类别,并配置 6 Mbps 的持续信元速率。然后我们使用 service-policy output leslie 命令对此PVC应用策略映射。
7200-16(config)#interface atm 4/0.10 point
7200-16(config-subif)#pvc 0/101
7200-16(config-if-atm-vc)#vbr-nrt 6000 6000
7200-16(config-if-atm-vc)#service-policy output leslie
show queueing interface atm 命令显示了“Available Bandwidth 1500 kilobits/sec”。
7200-16#show queue interface atm 4/0.10
Interface ATM4/0.10 VC 0/101
queue strategy: weighted fair
Output queue: 0/512/64/0 (size/max total/threshold/drops)
Conversations 0/0/128 (active/max active/max total)
Reserved Conversations 1/1 (allocated/max allocated)
Available Bandwidth 1500 kilobits/sec
让我们来看一下此值是如何得到的:
-
6 Mbps 是持续信元速率 (SCR)。默认情况下,此值的75%是可保留的:
0.75 * 6000000 = 4500000
-
3000 kbps 是语音和数据类已使用的速率:
4500000 - 3000000 = 1500000 bps
-
可用带宽是 1500000 bps。
默认 75% 的最大可预留带宽值旨在为开销流量(例如路由协议更新和第二层 Keepalive)留下充足的带宽。它还包含匹配和已定义流量类或class-default类的数据包的第2层开销。您可以使用 max-reserved-bandwidth 命令增加ATM PVC的最大可预留带宽值。有关受支持的Cisco IOS版本和更多背景信息,请参阅了解ATM PVC的max-reserved-bandwidth命令。
在帧中继PVC上, bandwidth 和 priority 命令将以下列一种方式计算可用带宽总量:
-
如果未配置最低可接受的承诺信息速率 (minCIR),则将 CIR 除以 2。
-
如果配置了 minCIR,则在计算中使用此 minCIR。可将以前速率的全部带宽分配给带宽和优先级类。
因此,帧中继PVC不支持 max-reserved-bandwidth 命令,尽管您必须确保配置的带宽量足够容纳第2层开销。有关详细信息,请参阅在帧中继PVC上配置CBWFQ。
相关信息