3. 流量分类与标记

QoS要保障业务,第一步不是排队,而是“认出谁是谁”。如果设备无法区分语音、视频、ERP和普通下载流量,后续的队列调度、拥塞避免和限速都无从下手。流量分类(Classification)解决“识别”问题,流量标记(Marking)解决“把识别结果写进报文”的问题。分类是看,标记是写;看准了再写,后续每一跳才能按同一套优先级快速处理。

在企业网中,分类与标记通常分两层完成:边缘接入层做精细识别与首次标记,核心汇聚层信任已有标记并直接按标记调度。边缘设备离终端最近,能看到源IP、端口、应用特征,具备精细分类条件;核心设备流量大,不宜逐包深度识别,应信任边缘写入的DSCP/CoS。这就是“边缘复杂、核心简单”的QoS设计原则。

四种识别与标记手段的定位

ACL分类基于五元组(源/目的IP、协议、源/目的端口)匹配,配置直观、性能高,适合识别服务器网段、固定端口业务。例如用扩展ACL匹配“10.10.20.0/24访问10.10.30.10的TCP 1521端口”,即可识别Oracle数据库流量。但ACL无法识别动态端口和加密流量,对P2P、随机端口应用无能为力。

NBAR分类(Network-Based Application Recognition)通过深度包检测识别应用层特征,能识别HTTP、HTTPS、DNS、VoIP信令、甚至具体应用。NBAR2支持超过1000种应用签名,还可通过自定义协议属性匹配URL、Host等字段。它适合识别动态端口和加密流量,但消耗CPU资源,应部署在边缘且只对需要精细识别的流量启用。

DSCP标记位于IP报文头的ToS字段(现称DS字段),占6比特,取值0~63,是三层标记,可跨路由跳端到端保留。常用取值:EF(46)用于语音承载,AF41(34)用于交互视频,AF31(26)用于关键业务,AF21(18)用于事务数据,CS1(8)用于批量下载,默认BE(0)。DSCP是端到端QoS的核心标记。

CoS标记位于二层802.1Q标签的PCP字段,占3比特,取值0~7,仅在同一VLAN/二层域内有效。CoS适合接入交换机到汇聚交换机之间使用,跨三层后需映射为DSCP。典型映射:CoS 5→DSCP EF,CoS 4→AF41,CoS 3→AF31,CoS 0→BE。

流量分类与标记:从识别到写入的完整链路 业务流量源 语音终端 RTP / SIP 视频会议 H.323 / HTTPS ERP / 数据库 TCP 1521 Web / 邮件 HTTP / SMTP P2P / 下载 动态端口 边缘分类引擎 ACL 五元组匹配 源/目的IP · 协议 · 端口 适合固定端口业务 NBAR 深度识别 应用签名 · URL · Host 适合动态/加密流量 分类策略决策 匹配顺序 · 优先级 未匹配→默认BE 标记写入 DSCP(三层) CoS(二层) 标记结果与逐跳转发 EF (46) 语音承载 · 低延迟队列 AF41 (34) 交互视频 · 保证带宽 AF31 (26) 关键业务 · 优先转发 AF21 (18) 事务数据 · 常规队列 CS1 (8) 批量下载 · 低优先级 BE (0) 默认流量 · 尽力而为 核心层信任DSCP,直接按标记调度,不再深度识别 分类顺序:ACL精确匹配 → NBAR应用识别 → 未匹配默认BE;标记后核心层信任DSCP/CoS,实现端到端优先级一致

分类与标记的配置实现

以Cisco IOS为例,边缘路由器上完成“语音EF、视频AF41、ERP AF31、Web AF21、P2P CS1、其余BE”的分类标记。核心思路是用class-map定义匹配条件,用policy-map绑定标记动作,再应用到接口。

! 1. 定义ACL识别ERP数据库流量
ip access-list extended ACL_ERP
 permit tcp 10.10.20.0 0.0.0.255 10.10.30.10 0.0.0.0 eq 1521

! 2. 定义class-map匹配各类流量
class-map match-any CM_VOICE
 match protocol rtp audio
class-map match-any CM_VIDEO
 match protocol h323
class-map match-any CM_ERP
 match access-group name ACL_ERP
class-map match-any CM_WEB
 match protocol http
 match protocol secure-http
class-map match-any CM_P2P
 match protocol bittorrent

! 3. 定义policy-map执行标记
policy-map PM_EDGE_MARK
 class CM_VOICE
  set dscp ef
 class CM_VIDEO
  set dscp af41
 class CM_ERP
  set dscp af31
 class CM_WEB
  set dscp af21
 class CM_P2P
  set dscp cs1
 class class-default
  set dscp default

! 4. 应用到入接口
interface GigabitEthernet0/0
 service-policy input PM_EDGE_MARK

配置完成后,用show policy-map interface GigabitEthernet0/0 input查看各class的匹配包数和标记结果。若CM_VOICE匹配数为0,说明NBAR未识别到RTP,需检查ip nbar protocol-discovery是否启用;若CM_ERP匹配数异常高,需检查ACL是否过宽。核心层设备则配置mls qos trust dscp或qos trust dscp,直接信任边缘标记。

标记信任边界的确定

标记信任边界(Trust Boundary)是分类标记设计的关键决策点。信任边界应设在“可控设备接入的第一台交换机或路由器”上。例如IP电话直接接入交换机,交换机可信任电话的CoS/DSCP;但PC接入的端口不应信任,因为用户可自行修改DSCP值,应将其重置为BE或按ACL重新标记。典型做法:电话端口mls qos trust cos,PC端口mls qos trust dscp改为no mls qos trust并配合策略重置。

分类标记的黄金法则:边缘精细识别并标记,核心信任标记并调度。边缘设备启用NBAR和ACL做深度分类,核心设备只做DSCP信任和队列调度,避免核心设备CPU过载。

常见问题与判断依据

实际部署中,分类标记最常见的三个问题是:标记被覆盖、NBAR识别不准、CoS到DSCP映射缺失。标记被覆盖通常发生在核心设备未配置trust,设备将DSCP重置为0;判断方法是分别在边缘出接口和核心入接口抓包对比DSCP值。NBAR识别不准多因应用使用非标准端口或加密,需更新NBAR签名库或改用ACL+端口匹配。CoS到DSCP映射缺失发生在二层交换机上联口未配置mls qos map cos-dscp,导致CoS 5进入三层后变为DSCP 0,语音质量下降。

验证分类标记是否生效,可按以下顺序检查:第一步,在边缘入接口用show policy-map interface确认各class匹配计数增长;第二步,在边缘出接口抓包确认DSCP字段已写入预期值;第三步,在核心入接口抓包确认DSCP未被重置;第四步,在核心出接口用show queueing interface确认各队列有对应流量入队。四步都通过,说明分类标记链路完整。

业务类型 识别手段 DSCP标记 CoS映射 队列策略
语音承载NBAR: RTPEF (46)CoS 5PQ/LLQ 优先
交互视频NBAR: H.323AF41 (34)CoS 4CBWFQ 保证带宽
ERP数据库ACL: TCP 1521AF31 (26)CoS 3CBWFQ 保证带宽
Web/邮件NBAR: HTTP/SMTPAF21 (18)CoS 2CBWFQ 常规
P2P下载NBAR: BitTorrentCS1 (8)CoS 1限速/低优先级
默认流量class-defaultBE (0)CoS 0尽力而为

这张表可直接作为企业QoS分类标记的基线模板。实际项目中,应根据业务重要性和带宽预算调整DSCP取值和队列带宽比例,但“语音EF、视频AF41、关键业务AF31、普通数据AF21、下载CS1、默认BE”这一映射关系是业界通用基线,建议保持一致以便跨设备、跨厂商互通。

注意:DSCP是6比特,取值0~63,但并非所有值都有标准定义。自定义DSCP时避免使用与标准冲突的值,且需确保全网设备对同一DSCP的队列处理策略一致,否则会出现“标记相同、待遇不同”的问题。