3. 报文分类与标记机制

QoS要生效,第一步永远是“认出报文”。如果设备无法区分语音、视频、办公邮件和P2P下载,后续的队列调度、拥塞避免、限速整形都无从谈起。报文分类与标记机制解决的就是“识别”和“标识”两个问题:分类(Classification)负责判断一个报文属于哪个业务类别,标记(Marking)负责把判断结果写入报文头部的某个字段,让后续所有节点都能直接读取,而不必重复做复杂匹配。

一、二层与三层标记字段

以太网帧和IP报文头部都预留了可用于QoS的字段,理解它们的位宽和取值范围是配置的前提。

802.1p(CoS)位于VLAN Tag的TCI字段中,占3 bit,取值0~7,共8个优先级。它只在带Tag的以太网帧中存在,属于二层标记。典型映射为:7网络控制、6语音信令、5语音媒体、4视频、3呼叫信令、0尽力而为。由于只有3 bit,粒度较粗,通常用于接入层到汇聚层的快速区分。

ToS与IP优先级位于IPv4头部的ToS字节(8 bit)。早期RFC 791把高3 bit定义为IP Precedence(IP优先级),取值0~7,与802.1p语义接近;低4 bit为ToS位(D、T、R、C),用于指示时延、吞吐、可靠性和开销需求,实际部署中很少使用。IP优先级是三层标记的早期方案,现在基本被DSCP取代。

DSCP是RFC 2474对ToS字节的重新定义,占高6 bit,取值0~63。它把ToS字节拆成DSCP(6 bit)+ 2 bit未用(CU)。DSCP的命名采用“类别选择码+丢弃优先级”结构,例如EF( Expedited Forwarding,值46)用于语音,AF41(值34)用于视频,AF31(值26)用于关键数据,CS6(值48)用于路由协议,BE/CS0(值0)为默认尽力而为。DSCP比IP优先级多出3 bit,可表达更细的等级和丢弃概率,是企业QoS最常用的标记字段。

EXP字段位于MPLS标签栈的标签项中,占3 bit,取值0~7,作用与802.1p类似,用于在MPLS域内传递优先级。当报文进入MPLS网络时,边缘设备通常把IP DSCP或802.1p映射到EXP;离开MPLS域时再映射回DSCP或CoS。EXP是MPLS VPN场景中保证端到端QoS连续性的关键字段。

报文QoS标记字段与识别路径 以太网帧(带VLAN Tag) DA/SA TPID TCI PCP(3b)+DEI+VID 802.1p / CoS:3 bit,0~7 IPv4 头部 ToS 字节 DSCP (6 bit) 0~63 CU (2 bit) 保留 IP优先级=高3bit;DSCP=高6bit MPLS 标签项 Label EXP S + TTL EXP:3 bit,0~7 映射 映射 报文识别方法:从简单匹配到复杂流分类 ACL 匹配 源/目的IP、端口、协议号 匹配结果:permit / deny 粒度粗,适合基础过滤 流分类(Traffic Classifier) if-match 语句组合 ACL、VLAN、DSCP、802.1p 与流行为绑定后生效 复杂流分类(MQC) traffic classifier + behavior + policy + 应用方向 支持标记、限速、重定向

二、基于ACL的报文识别

ACL是最基础的识别工具,它按规则逐条匹配报文的五元组或部分字段,命中后执行permit或deny。在QoS场景中,ACL通常不直接用于丢弃,而是作为流分类的if-match条件。例如,要识别语音媒体流,可以定义一条高级ACL匹配UDP目的端口范围:

acl advanced 3001
 rule 10 permit udp destination-port range 16384 32767
 rule 20 permit udp destination-port eq 5060
quit

这里rule 10匹配RTP媒体端口,rule 20匹配SIP信令端口5060。ACL本身只做“是否命中”的判断,不改变报文。它的优点是配置直观、兼容性好;缺点是只能基于静态字段,无法识别动态端口协商后的会话,也难以表达“同一用户的不同业务”这类复杂语义。

三、流分类与复杂流分类

Comware的模块化QoS(MQC)把识别与动作解耦,形成“流分类—流行为—QoS策略”三段式结构。流分类(traffic classifier)定义“匹配什么”,流行为(traffic behavior)定义“匹配后做什么”,QoS策略(qos policy)把两者关联并指定应用方向。

一个典型的语音保障策略可以这样组织:先定义分类器匹配DSCP EF或UDP端口范围,再定义行为做标记和队列保障,最后在接口入方向应用策略。

traffic classifier VOICE operator or
 if-match dscp ef
 if-match acl 3001
quit

traffic behavior VOICE
 remark dscp ef
 queue af bandwidth 2048
quit

qos policy QOS-IN
 classifier VOICE behavior VOICE
quit

interface GigabitEthernet1/0/1
 qos apply policy QOS-IN inbound
quit

上述示例中,classifier使用operator or,表示命中任一条件即归入VOICE类;behavior把报文DSCP重写为EF,并为其分配AF队列和2 Mbps带宽保障。接口入方向应用后,进入该接口的语音报文会被识别、标记并进入相应队列。实际部署时,带宽值应根据链路容量和语音并发路数估算,例如G.711每路约80 kbps,50路并发约需4 Mbps,示例中的2048 kbps仅作演示。

分类器中的if-match条件可以是ACL、DSCP、802.1p、VLAN ID、源MAC、目的MAC、协议号等。多个条件之间用operator and/or控制逻辑关系,and表示全部满足,or表示任一满足。默认operator为and,配置时需明确写出,避免误判。

四、标记的信任与重标记

标记机制的关键问题是“信任谁”。接入层设备通常面临两种选择:信任终端送来的标记,或一律重标记。如果信任PC送来的DSCP,恶意用户可能把普通流量标成EF,抢占语音队列。因此工程上常见做法是:在接入端口启用信任DSCP或信任802.1p,但配合ACL限制可信任的源;或者不信任终端,统一由接入设备根据业务类型重标记。

重标记发生在流行为中,常用命令包括remark dscp、remark ip-precedence、remark dot1p、remark mpls-exp。标记后的报文在后续节点只需读取字段即可分类,无需重复复杂匹配,这正是标记机制提升转发效率的核心价值。

字段所在位置位宽取值范围典型用途
802.1p / CoSVLAN Tag TCI3 bit0~7二层优先级,接入汇聚
IP优先级IPv4 ToS高3位3 bit0~7早期三层标记
DSCPIPv4 ToS高6位6 bit0~63企业QoS主标记
EXPMPLS标签项3 bit0~7MPLS域内优先级

五、识别与标记的配合关系

分类和标记不是孤立的两个动作,而是一条链:报文进入设备,先由流分类按ACL、DSCP、端口等条件识别,命中后由流行为执行标记或队列动作,标记结果写入报文头部,后续节点直接读取。若后续节点信任该标记,则不再重复分类;若不信任,则重新分类并重标记。端到端QoS能否一致,取决于整条路径上各节点的信任策略和标记映射是否协调。

DSCP与802.1p之间、DSCP与EXP之间需要配置映射关系。如果边缘设备把DSCP 46映射为EXP 5,而核心设备按EXP 7处理语音,就会出现优先级不一致。部署前应统一规划映射表,并在关键节点用display qos policy interface和display qos map-table检查实际生效的映射。

掌握本节内容后,读者应能回答三个问题:报文头部的哪个字段承载优先级、设备用什么条件识别业务流、识别后如何标记并让后续节点信任。这三步打通,后续的队列调度、拥塞管理和流量整形才有可靠的输入。