目录

简介

先决条件

要求

使用的组件

规则

外部数据包优先处理标记

内部数据包优先级划分标记

数据包优先处理标记与排队

了解使用非RSP平台的特殊队列

确定IS-IS数据包的优先级

配置路由数据包的排队策略

QoS 与本地产生的数据包

在Catalyst 6000上确定数据包的优先级

相关信息

简介

本文档说明当使用模块化服务质量命令行界面(MQC)命令为出站路由器接口配置服务策略时，路由协议消息（如hello和数据库描述符）以及其他重要控制流量如何排队。

具体而言，本文档将回顾Cisco IOS®路由器用于确定控制数据包优先级的这两种机制：

字段

位置

考虑优先级

IP优先级位

IP报头中的服务类型(TOS)字节

通过网络提供优先级

pak_priority

路由器内部由接口驱动程序分配的数据包标签

通过路由器提供优先级（每跳）

设计了两个机制来确保出局接口被堵塞时，关键控制数据包没有丢失，也没有被路由器和排队系统最后丢下。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于Cisco IOS软件版本12.2。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息，请参阅 Cisco 技术提示规则。

外部数据包优先处理标记

请求注解(RFC)791 定义IP数据包报头中的TOS字节。虽然RFC 2474 和RFC 2475 将此字节重定义为差分服务代码点(DSCP)值，但Cisco IOS路由器仍使用TOS字节的原始IP优先位，如RFC 791所述。请注意RFC如何定义TOS字节：

“服务类型提供所需服务质量抽象参数的指示。这些参数用于指导在通过特定网络传输数据报时选择实际服务参数。多个网络提供服务优先级，这会以某种方式将高优先级流量视为比其他流量更重要（通常在高负载时只接受高于特定优先级的流量）。”

如图所示，IP优先级字段占用TOS字节的三个最高位。只有三个IP优先级位反映了数据包的优先级或重要性，而不是TOS字节的完整值。

下表列出了优先位的值：

编号

比特值

名称

0

000

例程

1

001

优先级

2

010

立即

3

011

Flash

4

100

闪烁覆盖

5

101

批评/ECP

6

110

网间控制

7

111

网络控制

Cisco IOS为控制平面上的路由协议数据包分配IP优先级6。如RFC 791所述，“网际网络控制标识仅供网关控制发起方使用。” 具体而言，Cisco IOS会标记以下基于IP的控制数据包：开放最短路径优先(OSPF)、路由信息协议(RIP)、增强型内部网关路由协议(EIGRP)hello和keepalive。进出路由器的Telnet数据包也收到IP优先级值6。当输出接口将数据包传输到网络时，分配的值仍随数据包一起保留。

内部数据包优先级划分标记

虽然IP优先级值指定了数据报在通过网络传输时的处理，但pak优先级机制指定了数据包在路由器内部传输时的处理。

除路由器CPU的核心外，每个接口还使用网络控制器或本地CPU，该CPU运行称为驱动程序的特殊软件。驱动程序代码提供特定于接口的说明。

当接口驱动程序接收到数据包时，该接口驱动程序将该数据包从小的先进先出(FIFO)缓冲器复制到输入/输出(I/O)存储器中的数据缓冲器。然后，它会将小数据包报头附加到缓冲区。数据包报头（在Cisco IOS术语中称为数据包结构）包含有关缓冲区中数据块的关键信息。根据数据包的内容，数据包报头可以指向内存中的地址，其中以太网封装报头、互联网协议(IP)报头和传输控制协议(TCP)报头开始。

Cisco IOS软件使用数据包报头中的字段来控制接口队列中数据包的处理。数据包报头包括pak_priority标志，该标志指示标记的数据包对排队系统的相对重要性。

在路由器核心CPU上运行的RIP和OSPF路由进程会标记其源于IP优先级6和pak优先级的所有流量。相反，边界网关协议(BGP)指示TCP使用IP优先级6标记其流量，但不设置pak_priority。

Cisco IOS还必须确保几类非IP控制数据包的丢包率较低。这些数据包类型包括：

- 中间系统到中间系统(IS-IS)路由协议消息

- 增强型内部网关路由协议(EIGRP)消息

- 点对点协议(PPP)和高级数据链路控制(HDLC)保持连接在串行接口和SONET分组(POS)接口上

- ATM接口上的操作、管理和维护(OAM)信元和地址解析协议(ARP)消息

由于此类流量不是IP，因此Cisco IOS无法匹配IP优先级值以提供优先级。相反，它仅使用数据包缓冲区报头中的内部pak_priority值。

注意：Cisco Catalyst 6000/Cisco 7600系列最初仅支持FlexWAN上的pak_priority机制。随后实施了对IP和非IP控制数据包优先级的增强。

数据包优先处理标记与排队

Cisco 7500路由/交换处理器(RSP)和低端路由器（如Cisco 7200和3600系列）等路由器使用与Cisco 7500通用接口处理器(VIP)不同的路由和控制流量机制。 下表总结了两种方法，并假设使用MQC配置的服务策略应用于出站接口。

Platform

pak_priority消息的队列

Cisco 7500系列（具有分布式QoS和VIP）

- 默认情况下，将pak_priority流量置于class-default类队列中或特定配置（单独）的队列中。

- 当排队到class-default时，数据包会进入队列的尾端。pak_priority标志用于避免丢弃高优先级数据包。

基于RSP的QoS和其他平台，包括Cisco 7200、3600、2600系列

- 将pak_priority流量放在除class-default之外的单独队列集中。(请参阅了解带非RSP平台的特殊队列部分。)

- 使用特殊权重值（当前为1024）标记此类邮件。

换句话说，在Cisco 7500系列上，如果输出服务策略连接到接口，则数据包会根据该策略中的类进行分类，而pakpriority数据包会放置在所选类队列的末尾。如果pak_priority数据包与任何用户定义的类都不匹配，则它将被置于class-default队列的尾部。

注意：使用优先级队列和自定义队列等传统排队方法或使用默认接口FIFO队列，非RSP路由器将pak_priority消息输入到队列头，以确保最小延迟和最小丢弃概率。

了解使用非RSP平台的特殊队列

如数据包优先级标记和队列表中所述，Cisco 7200、3600和2600系列等思科路由器平台将pakpriority消息放入单独的队列集，而不是类默认队列集。

接口上有三组队列：

- 2^n一组基于流的队列，这些队列将报头值视为源IP地址和目的IP地址。实际队列数取决于接口或虚电路的带宽。请参阅《Cisco IOS命令参考》中对fair-queue命令的说明。

- 用于用户创建的类的队列。

- 根据链路类型的哈希值访问的队列。例如，公平排队系统根据源地址和目的地址及端口、TOS位和IP协议号的哈希值将IP微流分类为队列。帧中继本地管理接口(LMI)消息根据幻数的哈希值排队，该哈希值表示该消息为LMI。带有pak_priority标志的消息将进入这些单独的链路类型队列。

下表列出了带宽大于512 Kbps的接口的各种队列及其会话ID（如show policy-map interface或show queue命令的输出所示）。

会话/队列编号

通信类型

1 - 256

基于流的一般流量队列。与用户创建的类不匹配的流量与类默认值和一个基于流的队列匹配。

257 - 263

为思科发现协议和标有内部高优先级标志的数据包保留。

264

为优先级类（用 priority 命令配置的类）保留的队列。 在 show policy-map interface 输出中查找类的“Strict Priority”值。优先级队列使用的会话ID等于动态队列数加8。

265 及以上版本

用于用户创建的类的队列。

注：此表中的值取决于实施，并且可能会更改。

确定IS-IS数据包的优先级

中间系统到中间系统(IS-IS)路由控制数据包是有关排队和数据包优先级的特殊情况。

IS-IS是国际标准化组织(ISO)的无连接网络协议(CLNP)的路由协议。 CLNP的开发人员将TCP/IP视为开放系统互联(OSI)套件最终将取代的临时协议套件。为支持此预测过渡，集成IS-IS（或双IS-IS）作为IS-IS的扩展而创建，以提供能够路由无连接模式网络服务(CLNS)和IP的单一路由协议。该协议设计为在纯CLNS环境、纯IP环境或双CLNS/IP环境中运行。

即使IS-IS仅用于路由TCP/IP，IS-IS仍是ISO CLNP协议。IS-IS与其对等体通信的数据包是CLNS协议数据单元(PDU)，这反过来意味着，即使在仅IP环境中，排队系统和Cisco IOS也不能使用IP优先级来排定CLNS控制消息的优先级。相反，IS-IS数据包通过路由器内部的pak_priority机制接收优先级。

配置路由数据包的排队策略

本节将考虑设计排队策略的三种常用方法，特别是在Cisco 7500系列和VIP的严重拥塞条件下，将控制数据包丢弃的可能性降至最低。（请回想一下，默认情况下，非RSP平台将控制数据包放在单独的队列中。）

战略

适用场合

如何配置的说明

匹配到单独的队列。

最保守的策略。确保几乎不丢弃。

使用模块化QoS CLI配置单独的类，并使用bandwidth命令在拥塞期间为匹配流量分配最小带宽分配。使用bandwidth命令配置的类使用基于带宽而非IP优先级的调度“权重”。请参阅了解ATM上基于类的加权公平队列。

与具有公平队列的class-default匹配。

足以支持大多数配置。某些控制数据包在出现拥塞时会被丢弃。

使用Cisco IOS自动分配给数据包的IP优先级6来影响数据包的权重，从而影响其带宽份额。请参阅了解ATM上的加权公平队列。

与具有FIFO队列的class-default匹配。

不建议用于拥塞链路。某些控制数据包在出现拥塞时会被丢弃。

此方法不考虑IP优先级。使用基于VIP的QoS时，pak_priority消息将排入FIFO队列的尾端。

这是如何为RIP控制数据包创建单独队列的示例。

class-map match-all rp

match access-group 104

!

access-list 104 permit udp any eq rip any eq rip

!--- Create a class-map that matches an ACL permitting RIP.

!

policy-map bandwidth

class voip

priority 64

class bus

bandwidth 184

class RP

bandwidth 8

!--- Create a policy-map (named "bandwidth") and specify !--- class RP.

!

interface Serial1/0:0.1 point-to-point

bandwidth 256

ip unnumbered Loopback0

ip accounting precedence input

no cdp enable

frame-relay class sample

frame-relay interface-dlci 100 IETF

!--- Apply the map-class named "sample" to the PVC.

!

map-class frame-relay sample

frame-relay cir 256000

frame-relay bc 2560

frame-relay mincir 256000

no frame-relay adaptive-shaping

service-policy output bandwidth

frame-relay fragment 160

!--- Create a frame relay map-class and apply the service !--- policy inside the map-class.

选择以下方法之一时，请考虑以下因素：

- 用于Hello和数据库刷新的特定路由协议以及配置的计时器值

- 需要交换的数据库的大小以及是否只定期刷新更新/更改或完整表

- 接口或虚电路上预期的拥塞量

换句话说，考虑拥塞时实际排队高优先级数据包的可能性。

QoS 与本地产生的数据包

路由器生成的流量代表出站QoS服务策略的特殊情况。某些本地生成的流量必须被视为任何其他用户流量，并且QoS系统必须将配置的QoS机制应用于此流量。此类流量的一个示例是性能探测，其设计用于测量给定类的数据包所产生的行为。其他本地生成的流量（尤其是第2层Keepalive和路由协议消息）对路由器的基本功能至关重要，不能受某些QoS功能的限制。例如，当平均队列深度达到高水位时，加权随机早期检测(WRED)不能丢弃第2层保活

此外，必须谨慎处理发往路由器的数据包。例如，请记住，应用基于类的策略的服务策略不得应用于发往路由器的数据包，以避免丢弃重要的控制消息。

注意：  根据设计，RP生成的数据包不会计入模块化QoS CLI计数器，即使这些数据包已正确分类/排队。这些数据包未在show policy-map interface命令输出中列出。

下表列出了当前发往路由器和来自路由器的数据包与关键QoS功能交互的方式。

QoS功能

描述

基于类的标记

- 最初仅在思科快速转发(CEF)交换数据包上工作。

- 在Cisco IOS软件版本12.2(5)(CSCdt74738)中引入了对进程交换和快速交换方法的支持。

管制

- 入站 — 可应用速率限制。如果使用承诺访问速率(CAR)（而非基于类的策略），则入站接口必须配置CEF。在Cisco 7500系列路由器上，流量管制只能监控CEF交换路径。

- 出站 — 使用CAR或基于类的管制进行速率限制。

在Catalyst 6000上确定数据包的优先级

当您在Supervisor和Catalyst 6000中的多层交换功能卡(MSFC)上运行Cisco IOS时，RP会以IP优先级6标记路由控制数据包。此重新标记的值可与输出调度一起将路由控制数据包映射到高队列、高阈值的加权轮询(WRR)系统。只要使用mls qos命令全局启用QoS，MSFC源的路由控制数据包的这种映射就会自动发生。如果启用QoS，系统会设置所有队列参数，如WRED丢弃阈值、WRR带宽和队列限制。在全局禁用QoS的情况下，所有数据包都映射到WRR的低队列（输出调度的低阈值）。

如Catalyst 6000配置指南的配置QoS一章所述，QoS支持在以太网入口端口使用第2层服务类(CoS)值进行分类、标记、调度和拥塞避免。以太网入口端口的分类、标记、调度和拥塞避免不使用或设置第3层IP优先级或DSCP值。此外，对于任何交换引擎，QoS都支持以太网出口端口调度和拥塞避免（使用第2层CoS值）。因此，关键IP和非IP数据包必须映射到CoS值，即使这些值仅在内部用作数据总线报头的一部分。关键IP数据包的IP优先级值为6，映射到等效的CoS值6。关键非IP数据包（包括来自MSFC的IS-IS数据包）标有pak_priority标志，然后此类标记的数据包映射到CoS值6。此映射在当前Cisco IOS版本中自动发生。

入口监察器和出口监察器都不会标记由MSFC发往通过物理以太网接口传输的数据包。

Catalyst 6000上的QoS配置不在本文档的范围内。有关详细信息，请参阅配置QoS和Catalyst LAN和ATM交换机支持页。

相关信息

- QoS 支持页

- 技术支持和文档 - Cisco Systems