内容
前言
前提条件
需求
使用的组件
惯例
区别汇总
配置 bandwidth 命令
配置 priority 命令
哪些流量类可以使用额外的带宽?
未使用带宽是如何分配的?
使用 police 命令设置最大值
了解可用带宽值
带宽和优先级both命令定义了可以在模块化服务质量命令行接口的操作(MQC)策略映射内应用,您应用对接口、子接口或者虚拟电路通过service
policy命令。
具体说来,这些命令为匹配流量类标准的数据包提供了带宽保证。
然而,这两种命令在带宽保证的实现上存在很大的功能差异。
本技术说明介绍了这些差异,并解释了如何将一种流量类的未使用带宽分配给匹配其他流量类的数据流。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备创建的。
本文档中使用的所有设备最初均采用原始(默认)配置。
如果您在一个工作网络中操作,在使用之前请确认您已经理解所有指令的潜在影响。
有关文档规则的详细信息,请参阅
Cisco 技术提示规则。
下表列出了 bandwidth 和 priority
命令之间的功能差异:
功能 |
bandwidth 命令 |
priority 命令 |
最小带宽保证 |
是 |
是 |
最大带宽保证 |
否 |
是 |
内置监察器 |
否 |
是 |
提供低延迟 |
否 |
是 |
另外,带宽和优先级命令设计符合不同的服务质量(QoS)策略目标。
下表列出了这些不同的目标:
应用程序 |
bandwidth 命令 |
priority 命令 |
WAN 链路的带宽管理 |
是 |
某种程度 |
管理延迟和延迟变化(抖动) |
否 |
是 |
提高应用响应速度 |
否 |
是 |
即使使用快速接口,多数网络仍然需要强大的 QoS
管理模型,以便有效处理由于速度不匹配或流量模式不同而不可避免地导致的拥塞点和瓶颈。
实际网络的资源有限,并且存在一些资源瓶颈,因此需要 QoS
策略以保证正确的资源分配。
Cisco IOS配置® 指南描述bandwidth命令作为“相当数量带宽,在Kbps,是已分配对类。用于指定或修改分配给某个策略映射所属的流量类的带宽。”
让我们来了解一下这些定义有什么意义。
bandwidth 命令可以在出现拥塞时提供最低带宽保证。
有三种形式的命令语法,如下表所示:
命令语法 |
说明 |
|
以比特率的形式指定带宽分配。 |
bandwidth percent {value}
|
以底层链路速率百分比的形式指定带宽分配。 |
bandwidth remaining percent {value}
|
以未分配给其他流量类的带宽百分比的形式指定带宽分配。 |
注意: bandwidth
命令定义了一种行为,即最小带宽保证。
不是所有的Cisco路由器平台使用加权公平排队(WFQ)作为底层算法实现此行为。
有关详细信息,请参阅为什么使用
CBWFQ。
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 |
是 |
根据排队方法的不同而不同。 对带宽类使用
queue-limit 命令。 |
从上表中,我们可以看出服务策略仅应用于第 3 层队列的数据包。
严格出列是指排队调度程序首先服务于优先级队列并将其数据包转发到传输环路。
传输环路是其进入物理媒介之前的最后一站。
在下图中,传输环路配置为容纳四个数据包。
如果其中三个数据包已经在环路中,则我们最多可以排队到第四个位置,然后等待其他三个位置清空。
因此,低延迟队列(LLQ)机制离队数据包对驱动器级先入先出(FIFO)队列的尾端在传输环路的。
使用 tx-ring-limit
命令可将传输环路的大小调整为非默认值。 当传输语音流量时,Cisco
建议调整传输环路。 请参阅低延迟排队功能模块。
对基于交互式事务的延迟敏感型应用来说,流量优先级是非常重要的。
为了最大限度降低延迟和抖动,网络设备必须能够在语音数据包到达时立即服务它们,或者换句话说,以严格优先级方式。
如果没有严格优先级,则无法很好地处理语音流量。
除非将语音数据包立即出列,否则每次跳跃都将引入更多延迟。
国际电信联盟(ITU)推荐最大150毫秒单向端到端延迟。
如果未在路由器接口立即出列,则一次路由器跳跃可能会在这种延迟预算中占据绝大部分。
有关详细信息,请参阅语音质量技术提示。
注意: 对于这两种命令,kbps 值都应考虑第 2
层开销。 换句话说,如果对某个流量类给出了保证,则这种保证必须考虑第 2
层吞吐量。 有关详细信息,请参阅
IP 到 ATM COS 排队计算哪些字节 和为什么使用
LLQ。
尽管我们将 bandwidth 和 priority
命令提供的带宽保证描述为“预留”和“要留出的带宽”,但这两种命令都没有实现真正的保留。
换句话说,这意味着如果一个流量类未使用配置给它的带宽,则任何未使用的带宽将与其他流量类共享。
如果是优先级类,排队系统将强行对此规则实施一种重要例外。
如上所述,优先级类的流入负载由数据流监察器测量。
在出现拥塞时,优先级类不能使用任何额外的带宽。
下表描述了带宽类和优先级类何时可以使用额外的带宽:
命令 |
拥塞 |
非拥塞 |
bandwidth 命令 |
允许超出分配的速率。 |
允许超出分配的速率。 |
priority 命令 |
Cisco IOS
将测量数据包,并通过令牌桶应用流量测量系统。
匹配的数据包将被调整为已配置的 bps
速率,所有超出的数据包将被丢弃。 |
流量类可以超出其配置的带宽。 |
注意: 对这些指南的一例外LLQ的是在Cisco
7200路由器和其他非路由或者交换处理器(RSP)平台的帧中继。
这些平台上的帧中继 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 命令。
有关 bandwidth 命令的详细说明,请参阅低延迟队列与优先级百分比支持。
如果在未出现拥塞时带宽或优先级类不应超出其分配的带宽,您可以结合使用
police 命令和 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),已分配它对VBR非实时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 queueing interface atm 4/0.10
Interface ATM4/0.10 VC 0/101
Queueing 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% 是可保留的:
-
3000 kbps 是语音和数据类已使用的速率:
4500000 - 3000000 = 1500000 bps
-
可用带宽是 1500000 bps。
默认 75% 的最大可预留带宽值旨在为开销流量(例如路由协议更新和第二层
Keepalive)留下充足的带宽。
它也包含匹配已定义流量类或默认类的第二层数据包开销。 您可以使用
max-reserved-bandwidth 命令增加 ATM
PVC 的最大可预留带宽值。 有关受支持的 IOS
版本和更多背景信息,请参阅了解
ATM PVC 的 max-reserved-bandwidth
命令。
在帧中继 PVC 上,bandwidth 和
priority 命令将以下列一种方式计算可用带宽总量:
因此,帧中继 PVC 不支持
max-reserved-bandwidth
命令,尽管您应确保配置足够容纳第二层开销的带宽量。 有关详细信息,请参阅在帧中继
PVC 上配置 CBWFQ。