本文档回顾了可以使用通用路由封装 (GRE),在隧道接口上进行配置的服务质量 (QoS) 特性。 配置了 IP 安全 (IPsec) 的隧道不在本文档的讨论范围之内。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
在您学习GRE隧道的QoS以前,您首先需要了解隧道信息包的格式。
隧道接口是运行 Cisco IOS® 软件的路由器上的虚拟接口或逻辑接口。它在 IP 互联网络远程点上的两个 Cisco 路由器之间创建虚拟点对点链接。
GRE 是由 IOS 支持的封装协议,在 RFC 1702 中进行定义。 隧道协议将数据包封装在传输协议内部。
隧道接口支持下列每一种协议的报头:
乘客协议或封装的协议,例如 IP、AppleTalk、DECnet 或者 IPX。
载波协议 (本例中为 GRE)。
传输协议 (本例中仅为 IP)。
隧道数据包的格式如下图所示:
有关配置 GRE 隧道的详细信息,请参阅配置逻辑接口。
隧道接口支持的许多 QoS 特性和物理接口一样。这些部分描述支持的 QoS 功能。
Cisco IOS 软件版本 12.0(7)T 引入了对在隧道接口上直接应用 Generic Traffic Shaping (GTS) 的支持。以下配置示例将隧道接口整形为具有 500 Kbps 的整体输出速率。有关详细信息,请参阅配置通用流量整形。
interface Tunnel0 ip address 130.1.2.1 255.255.255.0 traffic-shape rate 500000 125000 125000 1000 tunnel source 10.1.1.1 tunnel destination 10.2.2.2
Cisco IOS 软件版本 12.1(2)T 添加了对使用模块化 QoS 命令行界面 (MQC) 进行基于类的整形的支持。 以下示例配置显示如何把相同的整形策略应用到带有MQC命令的隧道接口。有关详细信息,请参阅配置基于类的整形。
policy-map tunnel class class-default shape average 500000 125000 125000 interface Tunnel0 ip address 130.1.2.1 255.255.255.0 service-policy output tunnel tunnel source 130.1.35.1 tunnel destination 130.1.35.2
当接口变得拥塞并且信息包开始排队时,您可以把排队方法应用到等待传输的信息包中。Cisco IOS逻辑接口本身不支持拥塞状态,并且不支持运用排队方法的服务策略的直接应用程序。相反,您需要按照以下步骤应用分级策略:
创建一个"子"或更低级策略,来配置排列机制,例如带有优先命令的低延迟排队和带宽命令的基于类别的加权公平队列(CBWFQ)。有关详细信息,请参阅拥塞管理。
policy-map child class voice priority 512
创建应用基于类的整形的“父”策略或顶层策略。因为子等级的准入控制根据父等级的整形速率完成的,所以将子策略作为父策略的命令。
policy-map tunnel class class-default shape average 2000000 service-policy child
对隧道接口应用父策略。
interface tunnel0 service-policy tunnel
当隧道接口配有应用排队而不是整形的服务策略时,路由器将打印此日志消息。
router(config)# interface tunnel1 router(config-if)# service-policy output child Class Based Weighted Fair Queueing not supported on this interface
隧道接口也支持基于类的策略,但是不支持 Committed Access Rate (CAR)。
注意: 7500上的隧道接口不支持服务策略。
Cisco IOS软件版本11.3T引入了GRE隧道标记和DSCP或IP优先级值,它配置路由器将ToS字节的IP优先级位值复制到封装内部数据包的隧道或GRE IP报头。以前,这些位设为零。隧道终点之间的中间路由器可以使用IP优先级值,来对QoS功能的信息包分类,例如策略路由、WFQ和加权随机早期检测(WRED)。
当信息包由隧道或加密头封装时,QoS功能无法检查原始信息包报头,并正确分类信息包。同一隧道传输的信息包具有相同的隧道报头,因此如果物理接口被堵塞,信息包则视为相等。通过引入虚拟专用网络(VPN)的服务质量,信息包现在可以在隧道和加密发生之前进行分类。
在本例中,tunnel0 是隧道名称。qos pre-classify 命令在 tunnel0 上启用 QoS for VPNs 功能:
Router(config)# interface tunnel0 Router(config-if)# qos pre-classify
注意: qos pre-classify命令可用于根据IP优先级或DSCP以外的值对流量进行分类。例如,您可能希望根据IP流或第3层信息(如可使用此命令的源和目标IP地址)对数据包进行分类。只有在对IP、协议或端口上的流量进行分类时,才需要qos pre-classify命令。如果分类基于DSCP代码,则不需要QoS预分类。
配置服务策略时,您可能首先需要识别穿越隧道的数据流。Cisco IOS 支持在隧道等逻辑接口上进行 NetFlow 和 IP Cisco Express Forwarding (CEF) 记帐。有关详细信息,请参阅 NetFlow 服务解决方案指南。
您可以将服务策略应用到隧道接口或基础物理接口。策略应用场合取决于 QoS 目标,还取决于您需要用于分类的报头。
当您想要根据预隧道报头分类信息包时,请将策略应用到隧道接口,而无需启用qos-preclassify。
当您想要根据后隧道报头分类信息包时,请将策略应用到物理接口,并启用qos-preclassify。另外,当您想要整形或控制所有属于隧道的数据流时,把策略应用到物理接口,该物理接口可支持几条隧道。
当您要根据预隧道报头分类数据包时,请将该策略应用到物理接口,并启用隧道接口上的 qos-preclassify。
多点接口不支持基于类的整形中的 CBWFQ。当拒绝策略时,Cisco Bug ID CSCds87191 将路由器配置为打印错误消息。
在少数的情况下,应用带有shape命令的服务策略会导致高CPU利用和校准错误。CPU负载由记录校验错误引起,反之则由CEF不正确设置输出接口和邻接重写信息引起。此问题仅影响使用基于粒子的CEF交换的非RSP平台(低端)和平台,并通过Cisco Bug ID CSCdu45504 和CSCuk30302 解决。您还可以考虑以下解决方法:
用 tunnel mode ipip 替换 GRE 封装。
用 police 命令替换 shape 命令。
配置在支持隧道的物理接口上的整形。