服务类型(Type of Service)字段是比较复杂的一个字段,该字段经过多次标准变更。
IPv4报文
一、最初标准(RFC 791)
RFC 791定义TOS字段总共占用8bit,分为IP Precedence优先级(3bit)、TOS标记(4bit)、MBZ预留(1bit)。
1、前3bit为优先级,数值越高优先级越高,默认000。(和后期标准存在兼容性问题,目前已弃用)
111 -- 网络控制(Network Control)
110 -- 网间控制(Internetwork Control)
101 -- 关键(Critic),推荐语音数据使用
100 -- 疾速(FlashOverride),推荐视频会议和视频流使用
011 -- 闪速(Flash),推荐语音控制数据使用
010 -- 快速(Immediate),推荐数据业务使用
001 -- 优先(Priority),推荐数据业务使用
000 -- 普通(Routine),缺省标记值
2、中间4bit为TOS标志位,最多只能有1个标志位为1,有以下组合方式:
1000 -- 最小延迟(minimize delay简称md)
0100 -- 最大吞吐量(maximize throughput简称mt)
0010 -- 最高可靠性(maximize reliability简称mr)
0001 -- 最小费用(minimize monetary cost简称mmc)
0000 -- 一般服务(normal service)
3、最后1bit为预留位(强制默认0)。
Linux是如何处理TOS?
Linux内核会默认为网络接口创建一个pfifo_fast,这个pfifo_fast内部维护band0、band1、band2三个队列,band0优先级最高、band2优先级最低。Linux内核会根据TOS标志位将IP报文分配到不同的优先级队列中。
TOS标志位与优先队列的映射关系
常见应用如何使用TOS字段?
常见应用的TOS字段设置
二、演进标准(RFC 2474)
RFC 2474 中重新定义了IP 报文头部的ToS域,称之为DS(Differentiated Services,差分服务)域,其中DSCP 优先级占用前6 位,后2位是保留位。
DSCP分为一下四类:
1、类选择器(简称CS):CS1-7取值依次为8,16,24,32,40,48,56, 兼容IP Precedence
2、加速转发(简称EF):EF取值46,承载语音的流量
3、确保转发(简称AF):只定义了AF1-4,分别用于专线业务、VOD流量、IPTV直播、语音信令;
4、默认(简称BE):承载最不重要的业务是Internet业务
IP Precedence与DSCP值的兼容关系
换算关系:IP Precedence乘以8就是DSCP值
IP Precedence与DSCP映射关系