DSCP全称Differentiated Services Code Point(差分服务代码点),是 TCP/IP 协议栈中用于实现流量差异化服务的核心标记字段,隶属于 IETF 定义的 DiffServ(差分服务)架构。它的核心作用是为数据包赋予服务等级标识,让网络设备(交换机、路由器)能够快速识别流量优先级,并执行对应的转发策略(如队列调度、拥塞控制、无损保障等)。在数据中心无损网络 + PFC场景中,DSCP 标记是实现 “关键流量无损传输、非关键流量尽力转发” 的前提。
一、 DSCP 的技术定位与包头位置
DSCP 字段嵌入在 IP 包头中,具体位置如下:
- IPv4 包头:占用原
TOS(Type of Service,服务类型)字段的前 6 位,剩余 2 位为ECN(显式拥塞通知)字段,合称为Differentiated Services字段(长度1字节)。- IPv6 包头:占用
Traffic Class(流量类别)字段的前 6 位,剩余 2 位同样为 ECN 字段。
这种设计的优势在于:DSCP 标记随 IP 数据包全程传输,网络中间设备无需解析传输层(TCP/UDP)或应用层协议,仅通过 IP 包头即可识别流量优先级,处理效率极高。
二、 DSCP 的编码结构与分类
DSCP 共 6 位,可定义64 种不同的服务等级(取值范围000000~111111,对应十进制0~63)。为了简化部署,IETF 将这些编码划分为三类核心PHB(Per-Hop Behavior,每跳行为),即网络设备对标记流量的标准化处理策略。
| PHB 类型 | 全称 | DSCP 编码特征 | 核心转发策略 | 典型应用场景 |
|---|---|---|---|---|
| EF | Expedited Forwarding(加速转发) | 固定编码101110(十进制46) | 低时延、低抖动、低丢包,带宽预留,优先调度 | 实时性业务(如 RoCEv2 无损流量、语音、视频) |
| AF | Assured Forwarding(确保转发) | 分 4 类(AF1~AF4),每类 3 种丢弃优先级,共 12 个编码 | 保证最小带宽,拥塞时按丢弃优先级丢弃低优先级数据包 | 重要非实时业务(如数据库同步、文件传输) |
| BE | Best Effort(尽力而为) | 编码000000(十进制0) | 无优先级,拥塞时优先丢弃 | 普通业务(如网页浏览、邮件) |
关键补充:AF 类的编码规则
AF 类的 6 位编码分为2 位类别标识 + 3 位丢弃优先级 + 1 位保留位,例如:
- AF11:类别 1,丢弃优先级 1 → 编码
001010(十进制10)- AF43:类别 4,丢弃优先级 3 → 编码
100110(十进制38)类别数值越大,服务等级越高;丢弃优先级数值越大,拥塞时越容易被丢弃。
三、交换机对报文 DSCP 值的处理流程
交换机对报文 DSCP 值的处理流程的核心是交换机如何确定报文的 DSCP 信息,以便后续对数据流进行分类(比如匹配队列、调度策略等)。
1. 第一步:policy-map 模块的处理
报文进入交换机后,首先经过policy-map模块,这里的逻辑是主动标记 DSCP:
- 模块内通过
class-map匹配事先定义的ACL(访问控制列表,用于识别特定流量,比如训练业务的 RoCEv2 报文);- 如果报文匹配到 ACL,就通过
set ip dscp命令主动设置该报文的 DSCP 值,之后直接输出这个 DSCP 信息;- 如果报文未匹配 ACL,则进入 “端口信任模式” 环节。
2. 第二步:端口信任模式的处理
若 policy-map 未匹配到流量,交换机通过 “端口信任模式”从报文或端口配置中获取 DSCP,包含 3 种信任方式:
- trust cos:cos 是二层报文的优先级字段(比如以太网帧的 802.1p 字段)。要么取端口缺省的 cos 值,要么取报文自带的 cos 字段值,再通过
cos-dscp映射表(交换机预配置的 cos 与 DSCP 对应关系),转换成 DSCP 值。- trust ip-prec:ip-prec 是 IPv4 包头中 TOS 字段的前 3 位(旧的优先级标识)。从报文的 ip-prec 字段取值,再通过
ip-prec-dscp映射表,转换成 DSCP 值。- trust dscp:直接读取报文本身携带的 DSCP 字段值,无需映射,直接使用该值。
3. 第三步:信任模式关闭的情况
如果端口的 “信任模式” 被关闭,交换机将直接默认该报文的 DSCP 值为 0(对应 BE 类 “尽力而为” 服务)。
无论通过哪种方式(policy-map 设置、端口信任模式获取、信任模式关闭默认)得到 DSCP 值,最终数据流都会按照交换机内部的 DSCP 规则进行分类,用于后续的队列调度、PFC 控制等流量处理操作。流程的核心是:交换机通过 “主动标记(policy-map)+ 被动信任(端口模式)” 的方式,灵活确定报文的 DSCP,实现流量的差异化处理。
四、 DSCP 在数据中心无损网络中的典型应用
在采用DSCP+PFC + 单一无损队列架构中,DSCP 标记的核心价值是精准区分需要无损保障的训练负载流量,具体部署流程如下:
流量标记
- 在算力节点的网卡(或接入交换机入口),对训练业务的 RoCEv2 数据包标记为DSCP 46(EF 类)—— EF 类的 “低时延、低丢包” 特性与训练负载的需求完全匹配。
- 非关键流量(如管理流量、日志传输)保持默认的 DSCP 0(BE 类),不占用无损队列资源。
队列映射
- 网络交换机配置DSCP 到队列的映射规则:将 DSCP 46 的流量映射到单一无损队列,其他 DSCP 标记的流量映射到普通尽力而为队列。
- 这种 “单一无损队列” 设计,避免了多无损队列之间的资源竞争,简化了 PFC 暂停帧的触发逻辑。
PFC 联动
- 交换机对无损队列启用 PFC 功能:当队列长度达到拥塞阈值时,向上游设备发送 PFC 暂停帧,暂停对应优先级(即 DSCP 46)的流量发送,防止队列溢出丢包。
- 非无损队列的 BE 类流量不触发 PFC,拥塞时直接丢弃,避免影响关键训练流量。
五、 DSCP 部署的关键注意事项
端到端标记一致性:必须确保流量入口设备(如服务器网卡)完成 DSCP 标记,中间网络设备(核心交换机、路由器)仅识别标记并执行策略,禁止篡改 DSCP 值—— 否则会导致下游设备无法正确识别流量优先级。
与拥塞控制算法协同:例如在 DCQCN 等 RoCEv2 拥塞控制算法中,DSCP 标记是流量分类的基础:DCQCN 仅对标记为 EF 类的无损流量进行拥塞窗口调整,确保训练负载的传输稳定性。
避免过度分类:采用 “单一无损队列”,无需定义过多 DSCP 等级 —— 过多分类会增加网络配置复杂度,反而可能引入流量调度冲突。