IPv4 的 TOS 字段详解
目录
- TOS 字段在 IPv4 头部中的位置与大小
- 原始定义(RFC 791)
- DSCP 的定义(RFC 2474)——现代用法
- ECN 的使用(RFC 3168)
- 总结表
- 实际应用
- 查看与设置 TOS/DSCP 的方法
- 参考文档
一、TOS 字段在 IPv4 头部中的位置与大小
IPv4 报文头中,Type of Service(TOS)字段长度为8 位(1 字节),位于 IPv4 头部的第 2 个字节。
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+二、原始定义(RFC 791)
在 RFC 791 中,TOS 字段被划分为两部分:
0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | PRECEDENCE | D | T | R | 0 | 0 | +---+---+---+---+---+---+---+---+2.1 前 3 位:Precedence(优先级)
表示数据包的优先级,取值范围 0~7,数值越大优先级越高。
| 取值 | 名称 | 说明 |
|---|---|---|
| 000 | Routine | 普通 |
| 001 | Priority | 优先 |
| 010 | Immediate | 立即 |
| 011 | Flash | 闪速 |
| 100 | Flash Override | 闪速覆盖 |
| 101 | Critical | 关键 |
| 110 | Internetwork Control | 网间控制 |
| 111 | Network Control | 网络控制 |
2.2 后 5 位:D、T、R 及保留位
- D (Delay):低延迟(1 = 要求低延迟)
- T (Throughput):高吞吐量(1 = 要求高吞吐)
- R (Reliability):高可靠性(1 = 要求高可靠)
- 最后两位:保留,必须设置为 0
这种定义允许发送方对不同业务表达不同的服务质量要求(如实时语音设 D=1,大文件传输设 T=1)。由于历史上很多路由器忽略此字段,实际应用效果有限。
三、DSCP 的定义(RFC 2474)——现代用法
RFC 2474 将这 8 位重新定义为DS(Differentiated Services,差分服务)字段,用于实现QoS(Quality of Service)。
0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | DSCP | CU | +---+---+---+---+---+---+---+---+3.1 DSCP(前 6 位)
用于标识数据包所属的转发行为或Per-Hop Behavior (PHB)。
| 类型 | 说明 |
|---|---|
| CS0~CS7 | Class Selector PHBs,兼容老的 IP Precedence(前 3 位与 Precedence 对应,后 3 位为 0) |
| EF(Expedited Forwarding) | 推荐用于低丢失、低延迟、低抖动业务(如 VoIP),DSCP 值 46 |
| AFxy(Assured Forwarding) | 提供不同等级的服务保证,x 为等级,y 为丢弃优先级 |
3.2 CU(后 2 位,Currently Unused)
当前未使用,保留供将来使用;在支持 ECN 的网络中,这 2 位被用作ECN(见下节)。
四、ECN 的使用(RFC 3168)
在支持ECN(Explicit Congestion Notification,显式拥塞通知)的网络中,TOS 字段的最后 2 位用作 ECN:
0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | DSCP | ECN | +---+---+---+---+---+---+---+---+ECN 取值(最后 2 位)
| 值 | 含义 |
|---|---|
| 00 | 不支持 ECN |
| 01 / 10 | 支持 ECN 的终端可标记该包(ECN-Capable) |
| 11 | 发生拥塞(CE),路由器可将此位设为 11,接收端通知发送端减速 |
五、总结表
| 项目 | 内容说明 |
|---|---|
| 字段名称 | Type of Service(TOS)/ DS Field |
| 字段长度 | 8 bits |
| 初始用途(RFC 791) | 指定延迟、吞吐量、可靠性等处理偏好,含优先级(Precedence + D/T/R) |
| 现代用途(RFC 2474) | 用作 DSCP,实现差分服务 QoS |
| 后向兼容性 | DSCP 前 3 位对应 IP Precedence(CS0~CS7) |
| 与 ECN 的关系 | 最低 2 位可用于显式拥塞通知(RFC 3168) |
六、实际应用
虽然 TOS/DSCP 提供了丰富的 QoS 机制,但实际网络中支持程度不一:
- 企业网或运营商网络:常根据 DSCP 值对不同业务流做差异化调度(队列、丢弃策略等)。
- 公共互联网:多数路由器默认不处理TOS 字段,端到端 QoS 难以保证。
- 要实现有效 QoS,往往还需结合MPLS、IntServ、SDN等技术。
七、查看与设置 TOS/DSCP 的方法
- Linux:可使用iptables、tc等工具设置或匹配 DSCP 值。
- ping:可用
-Q设置 ToS,例如:ping -Q 184 <目标IP>(184 对应某 DSCP/Precedence 组合)。 - Wireshark:抓包时可解析并显示 IPv4 头中的 ToS/DSCP 字段。
八、参考文档
- RFC 791– Internet Protocol
- RFC 2474– Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers
- RFC 3168– The Addition of Explicit Congestion Notification (ECN) to IP