本文档介绍了如何在 Cisco 路由器上的服务质量 (QoS) 配置中设置差分服务代码点 (DSCP) 值,并总结了 DSCP 和 IP 优先级之间的关系。
您应熟悉IP报头和Cisco IOS® CLI中的字段
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
差分服务 (DiffServ) 是一种新的模式,在这种模式中,由中间系统基于服务类型 (ToS) 字段依照相对优先级处理流量。DiffServ 标准在 RFC 2474 和 RFC 791 中有所定义,它取代了 RFC 791 中介绍的用于定义数据包优先级的原规范。
DiffServ 通过重新分配优先级标记 IP 数据包的位,增加了可定义的优先级别数量。
DiffServ 体系结构定义了 DiffServ (DS) 字段,它取代 IPv4 中的 ToS 字段作出有关数据包分类和流量调节功能(如计量、标记、整形和策略)的每跳行为 (PHB) 决策。
RFC 未规定 PHB 的实施方法;这是供应商的职责。Cisco 实施了排队技术,可将其 PHB 建立在数据包 IP 报头中的 IP 优先级或 DSCP 值的基础上。根据 DSCP 或 IP 优先级,可将流量置于特定的服务类别。以相同方法处理同一服务类别的数据包。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
DiffServ 字段的 6 个最高有效位称为 DSCP。DiffServ 字段体系结构中未定义 DiffServ 字段的最后 2 个当前未使用 (CU) 位。这些位现在用作显式拥塞通告 (ECN) 位。网络边缘的路由器将数据包进行分类,并使用 DiffServ 网络中的 IP 优先级或 DSCP 值对其进行标记。网络核心中支持 DiffServ 的其他网络设备使用 IP 报头中的 DSCP 值为数据包选择 PHB 行为,并提供相应的 QoS 处理。
本部分的图表展示了 RFC 791 中定义的 ToS 字节和 DiffServ 字段之间的比较结果。
ToS 字节
P2 | P1 | P0 | T2 | T1 | T0 | CU1 | CU0 |
IP优先级 — 3位(P2到P0)
延迟、吞吐量和可靠性 — 三位(T2到T0)
CU(当前未使用) — 2位(CU1-CU0)
DiffServ 字段
DS5 | DS4 | DS3 | DS2 | DS1 | DS0 | ECN | ECN |
---|
DSCP - 6位(DS5-DS0)
ECN - 2位
使用值标记数据包的标准化 DiffServ 字段,这样数据包就可以在每个网络节点处接收特定的转发处理或 PHB。
默认DSCP为000 000。类选择器DSCP是向后兼容IP优先级的值。在 IP 优先级和 DSCP 之间转换时,匹配 3 个最高有效位。换言之:
IP Prec 5 (101) maps to IP DSCP 101 000
ToS 字节
1 | 0 | 1 | T2 | T1 | T0 | CU2 | CU0 |
DiffServ 字段
1 | 0 | 1 | 0 | 0 | 0 | ECN | ECN |
---|
DiffServ标准使用相同的优先级位(最重要的位 — DS5、DS4和DS3)进行优先级设置,但进一步澄清了定义,通过在DSCP中使用后三位提供更精细的粒度。DiffServ 对优先级(仍由 DSCP 的 3 个最高有效位定义)进行重命名,并将其重新组织到下列类别中(本文档较为详细地说明了这些级别):
优先级 | 描述 |
---|---|
7 | 保持不变(链路层和路由协议保持活动) |
6 | 保持不变(用于 IP 路由协议) |
5 | 快速转发 (EF) |
4 | 4 类 |
3 | 3 类 |
2 | 2 类 |
1 | 1 类 |
0 | 尽力 |
使用此系统,设备将首先根据类别划分流量的优先级。然后,设备将考虑丢弃概率,对同类流量进行差别化处理并为其指定优先级。
DiffServ 标准不指定“低”、“中”和“高”丢弃概率这些精确定义。并非所有设备都能识别 DiffServ(DS2 和 DS1)设置;即使识别出这些设置,它们也未必会在每个网络节点触发相同的 PHB 转发操作。每个节点根据自身配置方式实施各自的响应。
RFC 2597 定义了确保转发 (AF) PHB,将其描述为提供商 DS 域为从客户 DS 域接收的 IP 数据包提供不同级别的转发保证时所采取的一种方式。 确保转发 PHB 保证提供可达到某个 AF 类别且具有一定大小的带宽,并在可能的情况下实现额外的带宽。有 AF1x 到 AF4x 这四个 AF 类别。每个类别中有三个丢弃概率。根据给定网络的策略,可基于所需的吞吐量、延迟、抖动、损失或根据访问网络服务的优先级为 PHB 选择数据包。
1 类到 4 类称为 AF 类别。下表说明了用于指定 AF 类别及其概率的 DSCP 编码。DS5、DS4 和 DS3 位定义了类别;DS2 和 DS1 位指定了丢弃概率;DS0 位始终为零。
丢弃 | 1 类 | 2 类 | 3 类 | 4 类 |
---|---|---|---|---|
低 | 001010 AF11 DSCP 10 | 010010 AF21 DSCP 18 | 011010 AF31 DSCP 26 | 100010 AF41 DSCP 34 |
中 | 001100 AF12 DSCP 12 | 010100 AF 22 DSCP 20 | 011100 AF32 DSCP 28 | 100100 AF42 DSCP 36 |
高 | 001110 AF13 DSCP 14 | 010110 AF23 DSCP 22 | 011110 AF33 DSCP 30 | 100110 AF43 DSCP 38 |
RFC 2598 定义加速转发(EF)PHB:“EF PHB 可用于通过 DS (DiffServ) 域构建低损耗、低延时和低抖动的确保带宽端到端服务。此类服务对终端显示为点对点连接或“虚拟租用线路”。 此服务也被描述为高级服务。” 建议将代码点 101110 用于 EF PHB,对应的 DSCP 值为 46。
此外,需要配置特定于供应商的机制以实施这些 PHB。有关 EF PHB 的详细信息,请参阅 RFC 2598。
使用 DSCP 字段的方式有三种:
分类器 - 根据数据包报头的部分内容选择数据包,并根据 DSCP 值定义的服务特征应用 PHB。
标记器 - 根据流量配置文件设置 DSCP 字段。
计量 - 使用整形器或丢弃器功能根据流量配置文件检查符合性。
如果有流量以加权公平排队 (WFQ)、加权随机早期检测 (WRED) 或加权轮询法 (WRR) 排队,Cisco IOS 软件将考虑 ToS 字段的优先级位。 配置了策略路由、优先级排队 (PQ)、自定义排队 (CQ) 或基于类的加权公平排队 (CBWFQ) 时,将不考虑优先级位。
数据包分类涉及使用流量描述符在特定组内对数据包进行分类,使数据包可接受网络中的 QoS 处理。使用数据包分类可对网络流量进行分区,划分到多个优先级或一个服务类别 (CoS) 中。
可在模块化 QoS CLI 中使用访问列表 (ACL) 或 match 命令匹配 DSCP 值。有关如何使用ACL的详细信息,请参阅Cisco 7200/7500的服务质量。在match命令中选择DSCP值是在Cisco IOS软件版本12.1(5)T中引入的。
Router1(config)# access-list 101 permit ip any any ? dscp Match packets with given dscp value fragments Check non-initial fragments log Log matches against this entry log-input Log matches against this entry, including input interface precedence Match packets with given precedence value time-range Specify a time-range tos Match packets with given TOS value
使用 class map 命令指定 ip dscp 值时,可采用以下方法:
Router(config)# class-map match-all VOIP 1751-uut1(config-cmap)# match ip dscp ? <0-63> Differentiated services codepoint value af11 Match packets with AF11 dscp (001010) af12 Match packets with AF12 dscp (001100) af13 Match packets with AF13 dscp (001110) af21 Match packets with AF21 dscp (010010) af22 Match packets with AF22 dscp (010100) af23 Match packets with AF23 dscp (010110) af31 Match packets with AF31 dscp (011010) af32 Match packets with AF32 dscp (011100) af33 Match packets with AF33 dscp (011110) af41 Match packets with AF41 dscp (100010) af42 Match packets with AF42 dscp (100100) af43 Match packets with AF43 dscp (100110) cs1 Match packets with CS1(precedence 1) dscp (001000) cs2 Match packets with CS2(precedence 2) dscp (010000) cs3 Match packets with CS3(precedence 3) dscp (011000) cs4 Match packets with CS4(precedence 4) dscp (100000) cs5 Match packets with CS5(precedence 5) dscp (101000) cs6 Match packets with CS6(precedence 6) dscp (110000) cs7 Match packets with CS7(precedence 7) dscp (111000) default Match packets with default dscp (000000) ef Match packets with EF dscp (101110) Router1(config-cmap)# match ip dscp af31
可在网络边缘将 DSCP 设置为所需要的值,从而方便核心设备对数据包进行分类(如数据包分类部分所述)并提供相应的服务级别。基于类的数据包标记可用于设置 DSCP 值,如此处所示:
policy-map pack-multimedia-5M !--- Creates a policy map named pack-multimedia-5M. class management !--- Specifies the policy to be created for the !--- traffic classified by class management. bandwidth 50 set ip dscp 8 !--- Sets the DSCP value of the packets matching !--- class management to 8. class C1 priority 1248 set ip dscp 40 class voice-signalling bandwidth 120 set ip dscp 24
承诺接入速率和基于类的策略都是一种流量调控机制,用于对数据流进行调控,使其符合协定的服务参数。这些机制和 DSCP 可用于对符合和不符合条件的流量提供不同级别的服务,这可通过适当修改 DSCP 值实现,如本部分内容所述。
有关详细信息,请参阅配置流量控制和比较基于类的策略和承诺接入速率。
interface Serial1/0.1 point-to-point bandwidth 5000 ip address 192.168.126.134 255.255.255.252 rate-limit output access-group 150 8000 1500 2000 conform-action set-dscp-transmit 10 exceed-action set-dscp-transmit 20 !--- For traffic matching access list 150, sets the DSCP value of conforming traffic !--– to 10 and that of non-conforming traffic to 20. rate-limit output access-group 152 8000 1500 2000 conform-action set-dscp-transmit 15 exceed-action set-dscp-transmit 25 rate-limit output access-group 154 8000 1500 2000 conform-action set-dscp-transmit 18 exceed-action set-dscp-transmit 28 frame-relay interface-dlci 17 class shaper-multimedia-5M
接口开始拥塞时,加权随机早期检测 (WRED) 会有选择性地丢弃优先级较低的数据流。WRED 可为不同的 CoS 提供差分性能特征。这种差分服务可建立在 DSCP 基础上,如此处所示:
class C2 bandwidth 1750 random-detect dscp-based !--- Enable dscp-based WRED as drop policy. random-detect exponential-weighting-constant 7 !--- Specifies the exponential weight factor for the !--- average queue size calculation for the queue. random-detect dscp 16 48 145 10 !--- Specifies the minimum and maximum queue thresholds !--- for each DSCP value. random-detect dscp 32 145 435 10
有关详细信息,请参阅拥塞避免概述中与 DiffServ 兼容的 WRED 部分。
有关下列 Bug 的详细信息,可使用 Bug 工具包(仅限注册用户)获取:
CSCdt63295(仅注册客户) — 如果在Cisco IOS软件版本12.2.2T中,在拨号对等体上(设置为0)未使用新的DSCP标记命令设置ToS字节,则不会标记数据包,并且数据包将保留ToS设置为0。
CSCdt74738(仅注册客户) — 在Cisco 7200路由器和低端平台上支持set ip dscp 命令以用于组播数据包,应从Cisco IOS软件版本12.2(3.6)及更高版本开始提供。