3. 流量分类与标记实战

在上一节中我们已经明确:QoS治理的第一步不是排队,而是“把流量认出来”。如果分类和标记做错了,后面的调度、整形、拥塞控制都会建立在错误的前提上。本节聚焦Spectrum以太网交换机上的报文分类与标记方法,重点讲清ACL、DSCP、PCP、MPLS EXP四类分类依据的适用位置、字段含义,以及它们在Spectrum上的配置任务如何落地。

一、先理解分类与标记的分工

分类(Classification)是“判断一个报文属于哪个业务流”,标记(Marking)是“把判断结果写入报文的某个字段”,让后续节点无需重复深度解析即可直接信任该字段。Spectrum支持基于ACL的灵活分类,也支持对DSCP、PCP、MPLS EXP等字段的信任与重写。实际部署中,通常遵循“边缘分类标记、核心信任标记”的原则:接入侧交换机负责识别并写入DSCP或PCP,汇聚和核心侧交换机则信任这些标记,直接按标记查表转发。

需要特别注意的是,不同字段的作用域不同:DSCP位于IP头部,端到端可见;PCP位于VLAN Tag,仅在同一二层广播域内有效;MPLS EXP位于MPLS标签中,只在MPLS域内传递。因此,选择哪种标记方式,取决于流量经过的网络层次和需要保持QoS语义的范围。

Spectrum 报文分类与标记:字段作用域与处理链 入口报文 IP + VLAN + MPLS 未标记 / 已标记 ACL 分类引擎 匹配 L2/L3/L4 字段 源/目的IP、端口、协议 VLAN、CoS、DSCP 标记 / 重写动作 set dscp / set cos set mpls-exp trust dscp / trust cos 出口队列映射 DSCP/PCP/EXP → TC / Queue DSCP(IP 层) 6 bit,端到端可见 EF / AF / CS / BE 跨三层域保持语义 适用:L3 骨干、跨子网 PCP(VLAN 层) 3 bit,0~7 仅同一 L2 广播域有效 常与 CoS 混用 适用:接入 VLAN、园区 MPLS EXP(标签层) 3 bit,0~7 随标签栈传递 出 MPLS 域需映射回 DSCP 适用:MPLS 承载网 信任链与重写关系 接入:ACL 分类 标记 DSCP/PCP 核心:trust 标记 按标记入队调度

二、ACL分类:Spectrum上最灵活的分类手段

Spectrum的ACL不是传统意义上只做 permit/deny 的过滤表,而是可以绑定到接口或VLAN上,对匹配的报文执行 set 动作。一个典型的ACL规则包含匹配条件和动作两部分。匹配条件可以组合二层到四层字段,动作则可以是 set dscp、set cos、set mpls-exp、copy 或 police 等。

下面是一个教学示例,假设我们要把来自 10.10.20.0/24 网段、访问 TCP 443 端口的流量标记为 AF31(DSCP 26),把 VoIP 信令(SIP,UDP 5060)标记为 CS3(DSCP 24)。在Spectrum的CLI中,配置思路如下:

# 创建ACL并定义分类规则
switch(config)# acl ipv4 QOS_CLASSIFY
switch(config-acl-ipv4)# 10 permit tcp 10.10.20.0/24 any eq 443 set dscp af31
switch(config-acl-ipv4)# 20 permit udp any any eq 5060 set dscp cs3
switch(config-acl-ipv4)# 30 permit ip any any

# 将ACL绑定到接口入方向
switch(config)# interface ethernet 1/1
switch(config-if)# acl ipv4 QOS_CLASSIFY in

这里的关键点是:ACL的匹配顺序是从上到下,一旦命中就执行动作并停止继续匹配,因此规则顺序直接影响分类结果。第30条 permit ip any any 是兜底规则,保证未匹配流量不被丢弃,同时保持默认标记。实际部署中,建议把最精确的规则放在前面,宽泛规则放在后面。

三、DSCP信任与重写

如果接入交换机已经完成了DSCP标记,汇聚和核心Spectrum交换机就不需要重复分类,只需配置 trust dscp,让设备直接读取IP头中的DSCP值并映射到内部流量类别(TC)。Spectrum支持将DSCP值映射到8个TC队列,映射关系可以通过 qos map dscp-to-tc 命令自定义。

# 信任DSCP并自定义映射
switch(config)# qos map dscp-to-tc MY_MAP
switch(config-dscp-tc)# 46 to 7
switch(config-dscp-tc)# 26 to 4
switch(config-dscp-tc)# 24 to 3
switch(config-dscp-tc)# 0 to 0

switch(config)# interface ethernet 1/2
switch(config-if)# qos trust dscp
switch(config-if)# qos map dscp-to-tc MY_MAP

需要强调的是,trust dscp 意味着设备完全信任入口报文的DSCP值。如果边缘设备没有正确标记,或者存在恶意用户伪造DSCP,核心设备就会把低优先级流量错误地送入高优先级队列。因此,trust 通常只配置在可信的上游接口上,面向用户侧的接口应先通过ACL重写DSCP,再信任。

四、PCP与MPLS EXP的处理要点

PCP位于VLAN Tag的3个bit中,取值0~7。Spectrum在二层转发时可以直接信任PCP,也可以根据ACL匹配结果重写PCP。对于纯二层园区网络,PCP是最轻量的标记方式;但一旦报文经过三层路由,VLAN Tag通常会被剥离,PCP语义随之丢失,此时必须依赖DSCP。

MPLS EXP的处理略有不同。在MPLS域入口,Spectrum可以根据IP DSCP映射生成EXP值;在MPLS域内部,设备信任EXP并据此调度;在MPLS域出口,EXP需要重新映射回DSCP,供后续IP域使用。这个“DSCP→EXP→DSCP”的映射链是MPLS QoS部署中最容易出错的环节,建议在规划阶段就固定映射表,并在两端设备上保持一致。

分类标记的黄金法则:越靠近流量源,分类越精确;越靠近核心,越应该信任标记。边缘做复杂ACL,核心做简单信任,是Spectrum QoS部署中最稳妥的分工方式。

五、配置任务检查清单

在Spectrum上完成分类与标记配置后,建议按以下清单逐项核对,避免出现“配了但没生效”的情况:

  • ACL规则是否按精确到宽泛的顺序排列,兜底规则是否存在;
  • ACL是否已正确绑定到接口的入方向(in),而非出方向;
  • trust dscp 是否只配置在可信接口上,用户侧接口是否已做重写;
  • DSCP-to-TC映射表是否覆盖了所有实际使用的DSCP值;
  • MPLS场景下,DSCP与EXP的双向映射是否在两端一致;
  • PCP标记是否只在二层域内使用,跨三层时是否已切换为DSCP。

完成上述配置后,可以通过 show qos map、show acl 以及接口计数器观察匹配情况。例如,在接口上发送已知DSCP的测试流,查看对应TC队列的计数是否增长,即可验证分类和映射是否按预期工作。如果计数不增长,优先检查ACL绑定方向、规则顺序和trust配置是否冲突。

分类与标记是QoS治理的入口环节,它决定了后续所有队列调度和拥塞控制的作用对象。把ACL、DSCP、PCP、MPLS EXP四类手段用对位置、用对顺序,才能让Spectrum的QoS能力真正服务于业务优先级,而不是停留在配置表面。