简介
在思科以应用为中心的基础设施(ACI)中,我们提供了多种选项来对流量进行分类,以在交换矩阵内以特定方式提供服务。这些规则通常称为服务质量(QoS)。 QoS主要通过在以太网(第2层)或IP(互联网协议,第3层)报头(分别称为服务类别(COS)和差分服务代码点(DSCP))上设置某些值来实现。
ACI还允许用户对传入或传出交换矩阵的数据流量执行、忽略或修改这些QOS标记。我们将详细了解这些。
在本文档的范围内,我们将限制在ACI交换矩阵中的单个Pod设置。
设置和拓扑
测试和捕获是在3.2.x版本的第2代硬件上完成的。
在本文档中,我们将使用以下设置(指示图)。
我们有一个包含两个终端组(EPG)的交换矩阵:EPG-1和EPG-2。每个EPG都链接到其自己的网桥域(BD)。
EPG-1的BD有子网10.0.1.254/24
EPG-2的BD有子网10.0.2.254/24
枝叶1和枝叶2上存在两个EPG的端点。
为方便起见,我们将简要介绍我们将详细介绍的不同QOS配置:
场景 1
在此场景中,我们将保持交换矩阵不受任何QOS策略的影响。这是在处理预标记了不同COS或/和DSCP值的流量时检查交换矩阵的默认行为。
场景 2
在此场景中,我们将启用“Dot1p保留”选项:
然后,我们将重复场景1中的一些流量流,并比较/对比交换矩阵对流量的处理
场景 3
在此场景中,我们将使用EPG策略中可用的“QoS类”选项,并将其设置为不同的可用级别。然后,我们重复这些流量并比较交换矩阵对此流量的处理。
场景 4
这是在启用“Dot1p保留”选项的情况下对场景3的重复。
方案 5
在此场景中,我们将定义4个自定义QoS策略,然后在EPG策略上调用它们。
此类策略的示例:
这些自定义QoS策略将有助于了解对数据流量的COS/DSCP进行重新标记的不同方式。
情形 1:ACI上未启用QoS策略
此场景用于观察预标记了某些COS或DSCP值的流量的默认行为。
只有两种关注行为 —
1)是否保留了COS?
2)是否保留DSCP?
默认情况下,COS不会在任何情况下保留。当VLAN报头在入口枝叶上删除且出口处未标记cos值时,该值将丢失(使用cos 0)
示例 1
此处我们将流量从E1D1发送到E1D11。E1D1的流量标有Cos = 4。
流量从枝叶1发出,由E1D11接收,但已丢失其成本标记。
默认情况下保留DSCP
示例 2
此处我们将流量从E1D1发送到E1D2。E1D1的流量标有Cos = 2和DSCP = 12
流量使用0 Cos和相同DSCP(12)退出枝叶2。 外部报头具有DSCP(16),将在以下各节中介绍。
方案 2:Dot1p保留已启用
“Dot1P”是“IEEE 801.1p”的简称 — 服务质量优先级方案;这是IEEE 802.1Q“Dot1Q”(支持VLAN的网络标准)的一部分
Dot1Q报头:
TPID:标记协议标识符 — 设置为值0x8100,将帧标识为Dot1Q标记帧
TCI :标记控制信息包含以下子字段:
PCP:优先级代码点,一个3位字段,表示Dot1P服务类别并映射到帧优先级
DEI:丢弃资格指示器,一个1位字段,可与PCP结合使用,用于指示在拥塞期间有资格丢弃的帧。
VID:VLAN ID,12位字段,指定帧所属的VLAN。
默认情况下(带或不带“Dot1p preserve”),传入数据包(进入交换矩阵)上的COS值将编码到外部报头(iVXLAN报头)DSCP。DSCP的6位映射如下(4.0之前):
有效3位= cos值
低3位=流量上使用的类(默认为3级)
下面是一个表,其中包含一些DSCP值示例:
启用“Dot1p保留”后,会对外部报头DSCP值进行解码,以找出数据流量的原始COS值。然后,此内容会写入枝叶出口上VLAN报头的Dot1P部分。
示例 3
此处我们将流量从E1D1发送到E2D2。E1D1的流量标有Cos = 1和DSCP = 8。启用dot1p preserve后,当在目标E2D2上检查时,这两个值都将保留。
情形 3:在EPG上设置的QoS级别
EPG流量可以标记某些QOS级别。默认标记为3级。4.0之前只有三个用户可配置级别 — 1级到3级。4.0之后有6个级别。
级别在另一个报头(iVXLAN报头)COS上表示,如下所示:
4.0之前版本:
1 级 |
科斯2 |
2 级 |
Cos 1 |
第 3 级 |
Cos 0 |
4.0后:
下面未提及的COS + DEI组合保留供内部使用。
1 级 |
科斯2 |
DEI 0 |
2 级 |
Cos 1 |
DEI 0 |
第 3 级 |
Cos 0 |
DEI 0 |
4 级 |
科斯2 |
第一 |
5 级 |
Cos 3 |
第一 |
6 级 |
Cos 5 |
第一 |
请注意,即使使用DEI位,第4类、第5类和第6类也不会在拥塞期间自动丢弃资格。该字段之所以用,是因为它是增加类(与PCP相邻)的一种便捷方式
示例 4
此处我们将流量从E1D1发送到E2D2。流量在源处标记为CoS = 1,DSCP = 8,EPG-1使用QOS类“Level 1”。
— 第1级在外部报头上反映为CoS 2。
— 由于原始CoS为1,级别为1,外部报头DSCP为001010 = 10
— 警告=如果在EPG上使用级别时未启用保留CoS,则丢弃数据帧的原始CoS,并将与级别对应的CoS放置到出口帧(已在3.2.x中测试)
场景 4:具有Dot1P保留的QoS类
在此场景中,我们还将启用Dot1P保留,同时在EPG-1上使用QoS类分配。
示例 5
这将与EXAMPLE 4相同,并启用Dot1P保留选项。启用Dot1P保留后,我们在出口帧CoS上看不到任何意外值。
场景 5:自定义QoS类
在此场景中,我们将定义自定义QoS类,并将其应用于源EPG(即EPG-1)。如果同时使用QoS类和自定义QoS,则优先使用自定义QoS。
此外,在自定义QoS策略中,如果同时使用“Dot1P分类器”和“DSCP to Priority Map”,则DSCP映射优先。
自定义类的定义如下:
- CoS值4应匹配。如果是,流量将分类为CoS为3且DSCP CS3(24)的第2级
示例 6
此处我们将将流量从E1D1发送到E1D2。流量在E1D1上标有CoS 4和DSCP 0。EPG-1使用上述自定义QoS策略。
— 类(2级)在外部报头中表示为CoS 1
— 重写的CoS(3)与类一起以DSCP = 011001 = 25编码
此处我们再次观察相同的警告 — 如果未启用Dot1P保留,我们将看到与“2级”对应的CoS值反映在出口数据帧上。即,在E1D2上,我们将看到帧包含CoS 1和DSCP 24。
使用Dot1P Preserve(Dot1P保留)可获得实际期望的CoS(3):