3. 流量分类与标记

QoS能否生效,第一步不在队列,而在“识别”。如果接入层没有把语音、视频、ERP、备份、访客上网这些流量区分开,后续所有队列、限速、拥塞管理都会作用在错误的流量上。Catalyst接入交换机的分类与标记,本质上是在数据包进入网络的第一跳,把“这是什么业务”翻译成“网络内部统一的优先级标签”。

一、先理解三种标记字段与它们的位置

在Catalyst接入层,最常打交道的标记字段有三个:二层CoS、三层IP Precedence、三层DSCP。它们不是互相替代,而是位于不同封装层次、服务不同转发环节。

  • CoS(Class of Service):位于802.1Q标签内的3 bit字段,取值0~7,共8个等级。它只在Trunk链路上存在,交换机内部转发、以及交换机到交换机的二层链路主要看CoS。
  • IP Precedence(IP优先级):位于IPv4 ToS字节的高3 bit,取值0~7,是DSCP的前身。老设备或旧配置中仍可能看到,新部署应统一用DSCP。
  • DSCP(Differentiated Services Code Point):位于IPv4 ToS字节的高6 bit,取值0~63,是当前企业QoS的事实标准。它比IP Precedence多3 bit,能表达更细的等级,同时兼容IP Precedence(DSCP高3位等于IP Precedence)。

关键关系是:一个带802.1Q标签的IP包,可以同时拥有CoS和DSCP。二层设备看CoS,三层设备看DSCP。接入层要做的是让两者在边界处保持一致,避免“二层高、三层低”或反之造成优先级断裂。

二、识别手段:ACL、NBAR与端口信任

识别流量有三类常用手段,选择取决于“能否看到特征”和“是否值得信任终端”。

ACL分类是最基础的方式,基于源/目的IP、协议、端口号匹配。例如把到语音网关UDP 5060/2000的流量识别为语音信令,把TCP 443到ERP服务器的流量识别为关键业务。ACL的优点是确定、可预测、开销低;缺点是端口变化、加密流量、动态端口就无能为力。

NBAR(Network-Based Application Recognition)能深入识别应用层特征,包括HTTP URL、Host头、甚至部分加密流量的元数据。它适合识别“端口不固定”的应用,例如Web会议、SaaS办公、视频流。NBAR比ACL更智能,但需要设备支持、消耗一定CPU,且对全新加密协议仍可能识别失败。

端口信任是接入层最省事的做法:如果IP电话已经按规范打好了DSCP,交换机就信任它,不再重标记。但PC、访客终端不可信任,必须由交换机强制重标记,否则任何人都能把自己的流量标成EF。

三、在Catalyst接入层完成标记的典型逻辑

接入层分类标记的推荐顺序是:先信任已知可信设备,再对不可信流量按ACL/NBAR匹配,最后给未匹配流量一个默认低优先级。下面是一段Catalyst 9000系列上的示例配置,用于说明结构,参数为教学示例,实际部署需按现场地址和业务调整。

! 定义分类ACL
ip access-list extended VOICE-SIG
 permit udp any any range 5060 5061
ip access-list extended VOICE-RTP
 permit udp any any range 16384 32767
ip access-list extended BIZ-ERP
 permit tcp any host 10.20.30.40 eq 443

! 定义类映射
class-map match-any CM-VOICE
 match access-group name VOICE-SIG
 match access-group name VOICE-RTP
class-map match-any CM-ERP
 match access-group name BIZ-ERP
class-map match-any CM-BULK
 match protocol ftp
 match protocol smb

! 定义策略映射并打标
policy-map PM-ACCESS-MARK
 class CM-VOICE
  set dscp ef
 class CM-ERP
  set dscp af31
 class CM-BULK
  set dscp af11
 class class-default
  set dscp default

! 应用到接入端口
interface GigabitEthernet1/0/10
 switchport mode access
 service-policy input PM-ACCESS-MARK

这段配置的核心不是命令本身,而是“匹配—打标—默认兜底”的闭环。语音信令和RTP被标为EF,ERP被标为AF31,批量传输被压到AF11,其余流量落到Default。这样后续在汇聚、核心、WAN出口,所有设备都能基于同一套DSCP做队列和限速。

四、企业DSCP命名规范设计

DSCP有64个值,但企业不需要用满。真正重要的是“命名规范”让所有人对同一个数字有同一个含义。推荐按业务类别划分,而不是按部门划分,因为部门会变,业务类别相对稳定。

业务类别DSCP名称DSCP值CoS典型流量
语音承载EF465VoIP RTP
语音信令CS3243SIP、H.323
交互视频AF41344视频会议
关键业务AF31263ERP、数据库
事务型业务AF21182OA、邮件
批量传输AF11101备份、文件同步
尽力而为Default00互联网浏览
背景/低优CS181软件更新、日志

命名规范一旦确定,就要写成文档并贯穿全网:接入层打标、汇聚层信任、核心层排队、WAN出口整形,全部引用同一张表。任何新增业务,先问“它属于哪一类”,再决定DSCP,而不是临时拍一个数字。

五、标记边界与一致性检查

接入层标记最容易出问题的地方是“边界不一致”。例如IP电话在语音VLAN里打了EF,但上行Trunk没有信任CoS,交换机把CoS重置为0,到了汇聚层EF就丢了。因此需要在Trunk口显式配置信任:

interface GigabitEthernet1/0/1
 switchport mode trunk
 mls qos trust cos

另一个常见问题是“终端乱标”。如果接入端口配置了mls qos trust dscp,而连接的是普通PC,用户可以把所有流量标成EF,直接破坏QoS。正确做法是:电话端口信任DSCP,PC端口不信任并强制重标记,访客端口统一压到Default或CS1。

验证时,可以在接入交换机上查看分类计数,确认匹配命中;在汇聚或核心抓包,确认DSCP在跨设备后仍然保持;在WAN出口查看队列统计,确认高优先级队列有出队、低优先级队列被整形。只有这三层都一致,分类标记才算真正落地。

Catalyst接入层分类与标记:识别 → 打标 → 一致性传递 接入终端 IP电话 已打EF / CS3 办公PC 不可信任 访客终端 不可信任 服务器 ERP / 备份 视频会议 交互视频 接入交换机分类引擎 信任判断 电话口 trust dscp PC/访客口 强制重标记 ACL 匹配 IP / 协议 / 端口 VOICE-SIG / BIZ-ERP NBAR 匹配 应用层特征识别 Web会议 / SaaS / 流媒体 策略映射打标 set dscp ef / af31 / af11 class-default → default 企业DSCP命名规范 业务类别 DSCP CoS 语音承载 EF(46) 5 语音信令 CS3(24) 3 交互视频 AF41(34) 4 关键业务 AF31(26) 3 事务型业务 AF21(18) 2 批量传输 AF11(10) 1 尽力而为 Default(0) 0 背景/低优 CS1(8) 1 统一映射 一致性传递:接入打标 → Trunk信任CoS/DSCP → 汇聚/核心按DSCP排队 → WAN出口整形与验证

把这张图记在脑子里:左边是“谁在说话”,中间是“怎么识别和打标”,右边是“打成什么标准”,底部是“标签必须一路传下去”。接入层做对了,后面的QoS才有意义;接入层做错了,后面越努力越浪费。