介绍
首先,让我写一下,我花了整个夏天的大部分时间都在试图找出一种正确的方法来完成这项工作。更重要的是,我不得不聘请 CCIE 全职工作一周左右来提供帮助,在此过程中,我们让 Cisco TAC 试图找出我们 6500 系列交换机上的错误。
你为什么要这样做?
今天,IP 网络上的富媒体应用程序呈虚拟爆炸式增长。这种托管和非托管内容和媒体类型的爆炸式增长要求网络架构师重新审视他们的服务质量 (QoS) 设计。
第一步看似显而易见且多余,但实际上它至关重要:明确定义 QoS 策略要实现的业务目标。这些可能包括以下任何/所有:
- 保证语音质量符合企业标准。
- 确保视频的高质量体验 (QoE)。
- 通过增加交互式应用程序的网络响应时间来提高用户生产力。
- 管理“带宽占用”的应用程序。
- 识别和降低消费者应用程序的优先级。
- 提高网络可用性。
- 加强网络基础设施。
考虑到这些目标,网络架构师可以清楚地确定哪些应用程序与其业务相关。相反,这种经验也将表明哪些应用程序与实现业务目标无关。这样的应用程序可以是面向消费者和/或面向娱乐的应用程序。最后一切都取决于你。
解决方案
我想让它尽可能简单和免费配置。考虑到这一点,再加上 QoS 应始终在硬件中处理的事实,我聘请的 CCIE 建议我使用 Cisco 中的 Auto-QoS 功能。
因此,可以由最终用户或服务器自己进行标记,而不是在访问级别标记流量。然后,自动 QoS 为整个网络的流量传输提供正确的类别。这使我能够通过 Active Directory 组策略决定哪些应用程序或服务应该优先或取消优先级。
首先,我想让它变得简单。这意味着优先考虑 VoIP 和视频应用程序,当您使用 Cisco IP 设备/TelePresence/相机等时,我们已经在 Auto-QoS 中预定义了这些应用程序。
拓扑概述
我们使用以下访问/核心设备。
- 核心:Cisco 897 系列、Cisco 3650 系列、Cisco 3850 系列和 Cisco 6500 系列
- 访问:Cisco 3560CX Compact 系列和 Cisco 2960X 系列
我们的拓扑主要基于星型拓扑,请观察以下拓扑图(我们在 WAN MPLS 中使用 BGP):

接入层QoS
使用 Auto-QoS 时,配置非常简单和直接。重新标记流量并将其发送到 MPLS ISP 有点复杂,但我将在下面展示示例。
所有接入交换机都设置了 Auto-QoS,其中接入和中继/上行链路的所有端口都受 DSCP 信任。观察下面的 QoS 表,其中 DSCP、CoS、ToS 等的所有值都设置在一个表中。这很好地概述了选定的类以及我试图在我的设计中实现的结构:

Auto-QoS 使用 AF(保证转发)值进行 DSCP 标记。
在接入交换机上启用 Auto-QoS
全局配置
mls qos (Activates QoS)
mls qos map cos-dscp 0 8 16 24 32 46 48 56 (Maps CoS to DSCP values, because CoS is a layer 2 marking, which cannot be routed)
auto qos srnd4 (Autogenerates all configuration in accordance to Cisco best practice SRND4 standard)
端口配置
auto qos trust dscp (Activates QoS and trusts DSCP on a port)
priority-queue out (Sends all traffic to the priority queues)
就是这样,交换机和端口现在将运行 Auto-QoS。
2960X 系列自动 QoS 配置指南:https ://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960x/software/15-0_2_EX/qos/configuration_guide/b_qos_152ex_2960-x_cg/ b_qos_152ex_2960-x_cg_chapter_011.html
在核心层启用 Auto-QoS
核心交换机处理 QoS 的方式有很大不同。Cisco 6500 系列不支持 Auto-QoS SRND4,因此我们需要手动配置 QoS 并将其映射到正确的类以保留 Auto-QoS 设计。Cisco 3650 和 3850 系列支持 Auto-QoS SRND4,因此配置非常简单:
在 3650 和 3850 系列上启用自动 QoS
全局配置
auto qos srnd4 (Activates and autogenerates the QoS configuration)
端口配置
auto qos trust dscp (Activates and autogenerates the QoS configuration)
将 Core 连接到 MPLS ISP 时,我们希望将流量标记为 5 个类(因为这是我们的 ISP 支持的)。这样,流量将优先通过 MPLS 到达拓扑中的所有位置(参见附图以供参考)。您的 ISP 可能有所不同,因此应进行备注以使其适合您的设计。以下示例说明如何将所有流量标记为 5 个类。
您需要复制自动生成的 Auto-QoS "AutoQos-4.0-Output-Policy" 策略映射,然后创建一个新的。您必须使用与 Auto-QoS 生成的相同的类映射。如果您尝试创建自己的它们将被忽略,因此使用相同的类映射,并且标记是由这些类制成的:
policy-map WAN-OUTPUT-QoS (The name can be whatever you like)
class AutoQos-4.0-Output-Priority-Queue
set dscp ef
priority level 1 percent 10
class AutoQos-4.0-Output-Control-Mgmt-Queue
bandwidth remaining percent 10
queue-buffers ratio 10
set dscp af21
class AutoQos-4.0-Output-Multimedia-Conf-Queue
bandwidth remaining percent 10
queue-buffers ratio 10
set dscp af41
class AutoQos-4.0-Output-Trans-Data-Queue
bandwidth remaining percent 10
queue-buffers ratio 10
set dscp af21
class AutoQos-4.0-Output-Bulk-Data-Queue
bandwidth remaining percent 2
queue-buffers ratio 10
set dscp default
class AutoQos-4.0-Output-Scavenger-Queue
bandwidth remaining percent 1
queue-buffers ratio 10
set dscp cs1
class AutoQos-4.0-Output-Multimedia-Strm-Queue
bandwidth remaining percent 10
queue-buffers ratio 10
set dscp af41
class class-default
bandwidth remaining percent 25
这 5 个类别将在此之后按以下方式优先处理并发送到 MPLS:
- DSCP AF 值:EF (VoIP)
- DSCP AF 值:af41(所有视频媒体)
- DSCP AF 值:af21(交易数据等)
- DSCP AF 值:默认(例如 AF=0 & DSCP=0 批量数据)
- DSCP AF 值:cs1 (Scavenger class For Bittorrent etc.)
带宽百分比用作剩余。这意味着所有班级都可以使用 100% 的带宽,如果不使用带宽,则可以从其他班级借用。这就像带宽共享,这意味着如果链路拥塞,任何优先级最高的类都可以发送流量。
可以根据需要修改策略映射类和百分比以满足您的个人需求。
在连接到 ISP 的端口上行链路上,需要配置以下内容:
interface XXX
auto qos trust dscp
service-policy input AutoQos-4.0-Trust-Dscp-Input-Policy
service-policy output WAN-OUTPUT-QoS
3650 和 3850 系列就是这样。
在 6500 系列上启用 QoS
6500 系列不支持 Auto-QoS SRND4。这是非常基础的,它只了解 VoIP 的第 2 层 CoS 值。这意味着您需要从头开始配置所有 QoS,以适应接入层的 Auto-QoS 基础设施。QoS 需要根据机箱上安装的模块进行配置。您还需要为入口和出口(输入/输出)创建策略映射。
Supervisor 仅了解模块和机箱中的 ASIC 之间的 CoS。
要为 CoS 激活 Auto-QoS,您需要使用以下全局命令:
auto qos default
这将创建 CoS 到 DSCP 的表映射,但这些值并不都符合 Auto-QoS SRND4 标准(CoS 7 映射到 54,应该是 56)。因此,您需要删除 table-map 并将其替换为以下内容:
no table-map cos-discard-class-map
table-map cos-discard-class-map
map from 0 to 0
map from 1 to 8
map from 2 to 16
map from 3 to 24
map from 4 to 32
map from 5 to 46
map from 6 to 48
map from 7 to 56
要创建 QoS 和策略映射,我们需要找出模块使用的排队模型。在下面的示例中,入口和出口队列是相同的,但在某些模块上,Rx 和 Tx 队列不同,因此您需要根据排队模型的方式创建策略映射。要找出接口使用的排队模型,您需要发出以下命令。以下示例基于模块:C6800-16P10G
show queueing interface xxx | sec Transmit queues
Transmit queues [type = 1p7q4t]
show queueing interface xxx | sec Receive queues
Receive queues [type = 1p7q4t]
正如所写的,这个模块上的队列是相同的,因此我们可以对输入和输出使用相同的策略。
1p7q4t 基本上意味着:1 个优先级队列,7 个普通队列,其中所有 7 个普通队列都有 4 个阈值。您可以通过搜索模块名称和排队来获取更多信息。此模块 C6800-16P10G 在此链接中有说明:https ://www.cisco.com/c/en/us/products/collateral/switches/catalyst-6800-series-switches/datasheet-c78-733662.html
参见表 1,队列。
首先,我们需要创建类映射,它将用于所有策略映射。这将匹配与 Auto-QoS SRND4 中的类相匹配的各个类的 DSCP 值。请注意,类映射创建为使用 match-all 语句的 lan-queueing,其功能类似于编程中的 AND/OR。匹配所有=AND & 匹配任意=OR。
检查以下配置指南;Cisco Campus QoS 设计简化,其中在演示文稿底部按不同模块提供了配置示例:http :
//honim.typepad.com/files/campus-qos-design-simplified-brkcrs-2501.pdf
225页,链接很慢。
创建类映射(全局配置):
class-map type lan-queuing match-all REALTIME-1P7Q4T
match dscp cs4 cs5 ef
class-map type lan-queuing match-all CONTROL-1P7Q4T
match dscp cs2 cs3 cs6 cs7
class-map type lan-queuing match-all MM_CONF-1P7Q4T
match dscp af41 af42 af43
class-map type lan-queuing match-all MM_STREAM-1P7Q4T
match dscp af31 af32 af33
class-map type lan-queuing match-all TRANS_DATA-1P7Q4T
match dscp af21 af22 af23
class-map type lan-queuing match-all BULK_DATA-1P7Q4T
match dscp af11 af12 af13
class-map type lan-queuing match-all SCAVENGER-1P7Q4T
match dscp cs1
您可以根据需要更改名称或进行编辑,以满足您的需要。
创建类映射后,我将创建策略映射。它定义了 DSCP 值的优先级,并在匹配一个 DSCP 值后设置不同队列中的带宽。
policy-map type lan-queuing 1P7Q4T
class REALTIME-1P7Q4T
priority
class CONTROL-1P7Q4T
bandwidth remaining percent 10
class MM_CONF-1P7Q4T
bandwidth remaining percent 20
random-detect dscp-based
random-detect dscp af41 percent 80 100
random-detect dscp af42 percent 70 100
random-detect dscp af42 percent 60 100
class MM_STREAM-1P7Q4T
bandwidth remaining percent 15
random-detect dscp-based
random-detect dscp af31 percent 80 100
random-detect dscp af32 percent 70 100
random-detect dscp af33 percent 60 100
class TRANS_DATA-1P7Q4T
bandwidth remaining percent 15
random-detect dscp-based
random-detect dscp af21 percent 80 100
random-detect dscp af22 percent 70 100
random-detect dscp af23 percent 60 100
class BULK_DATA-1P7Q4T
bandwidth remaining percent 9
random-detect dscp-based
random-detect dscp af11 percent 80 100
random-detect dscp af12 percent 70 100
random-detect dscp af13 percent 60 100
class SCAVENGER-1P7Q4T
bandwidth remaining percent 1
class class-default
random-detect dscp-based
random-detect dscp default percent 80 100
创建策略映射后,您需要将其应用于接口:
interface xxx
service-policy type lan-queuing input 1P7Q4T
service-policy type lan-queuing output 1P7Q4T
要验证您的配置并查看正在执行的排队,您可以使用以下命令(您可能需要关闭/不关闭接口才能使其生效):
show queueing interface xxx
要在 6500 系列上标记流量,您需要创建新的类映射和新的策略映射。类映射不是作为 lan-queue 创建的,并且 match 语句是 match-any=OR 而不是 match-all,因为我们想要一个接一个地检查多个值。因此,如果第一个值与数据包不匹配,则将检查下一个值,依此类推。
我想指出,这是我们必须让 Cisco TAC 参与的地方,因为出现了以下错误:https :
//bst.cloudapps.cisco.com/bugsearch/bug/CSCuz52151
我们不得不将类映射从匹配 AF 值改为原始 DSCP 值(丢弃类)。我们还必须将交换机升级到版本 152-1.SY5 (MD)。在我们遵循这些指示之后,我们就没有遇到任何问题了。
配置如下:
class-map match-any WAN-HIGH
match discard-class 32
match discard-class 40
match discard-class 46
class-map match-any WAN-GOLD
match discard-class 26
match discard-class 28
match discard-class 30
match discard-class 34
match discard-class 36
match discard-class 38
class-map match-any WAN-SILVER
match discard-class 16
match discard-class 18
match discard-class 20
match discard-class 22
match discard-class 24
match discard-class 48
match discard-class 56
class-map match-any WAN-BEST_EFFORT
match discard-class 0
match discard-class 10
match discard-class 12
match discard-class 14
class-map match-any WAN-SCAVENGER
match discard-class 8
在此之后,我们创建策略映射:
policy-map WAN-OUTPUT-QoS
class WAN-HIGH
set dscp ef
class WAN-GOLD
set dscp af41
class WAN-SILVER
set dscp af21
class WAN-BEST_EFFORT
set dscp default
class WAN-SCAVENGER
set dscp cs1
然后我们需要将它应用到一个接口上:
interface xxx
service-policy output WAN-OUTPUT-QoS
service-policy type lan-queuing input 1P7Q4T
而已。我希望这些信息对您有所帮助。我理解人们说 QoS 很复杂。它可以通过多种方式完成,上面的示例只是如何完成的一个片段。我知道思科正在努力将 Auto-QoS SRND4 标准推广到越来越多的设备,以帮助为服务质量奠定良好的基础。