ToS、CoS和DSCP介绍

0x01 ToS(Type of Service)

IP Precedence 和 ToS(Type of Service)都位于IP头中,共占一个字节,8bits。

关于这几个字节的作用被不同的标准定义过,分别是RFC791,RFC1122,RFC1349。RFC1349废除了之前两个RFC的定义,现在大多设备都使用RFC1349中的定义,所以对于tos,有如下版本,分别说明如下;

下面是RFC1349中的原话:

在过去,对ToS领域的规模存在一些混淆。RFC791将其定义为三位字段,包括上图中的位3-5。它包括MBZ字段中的第6位。 RFC1122在ToS字段中添加了第6位和第7位,消除了MBZ字段。 本备忘录将ToS字段重新定义为上图中显示的四位。

1.1 RFC1349中的ToS

RFC1349中定义的ToS格式如下:

Bits Meaning
7-5 IP Precedence:
4 1 = Low Delay; 0 = Normal Delay
3 1 = High Throughput; 0 = Normal Throughput
2 1 = High Reliability; 0 = Normal Reliability
1 1 = Minimise monetary cost (RFC 1349)
0 Must be 0

其中,IP Precedence:

client view value
111 Network Control
110 Internetwork Control
101 Critic/ECP
100 Flash Override
011 Flash
010 Immediate
001 Priority
000 Routine

1.2 RFC791中的IP Precedence和ToS

RFC791中定义的ToS格式如下:

Bits Meaning
0-2 IP Precedence
3 Delay (0 = Normal Delay, 1 = Low Delay)
4 Throughput (0 = Normal Throughput, 1 = High Throughput)
5 Reliability (0 = Normal Reliability, 1 = High Reliability)
6-7 Reserved for Future Use.

其中,IP Precedence值同RFC1349。

1.3 RFC1122中的IP Precedence和ToS

“IP PRECEDENCE 为前3bits(0-2),ToS为后5bits(3-7),无保留位MBZ。”

IP报头中的“服务类型”字节分为两部分:优先级字段(前3位),以及通常称为“服务类型”或“TOS”的字段(后5位)。

0x02 DSCP

DSCP差分服务代码点(Differentiated Services Code Point),IETF于1998年12月发布了Diff-Serv(Differentiated Service)的QoS分类标准。它在每个数据包IP头部的服务类别ToS标识字节中,利用已使用的6比特和未使用的2比特,通过编码值来区分优先级。

2.1 RFC2474中的DSCP

DSCP使用6比特,最后2位备用,它重新命名了IPv4报头中ToS使用的那1字节和IPv6报头中数据类(Traffic Class)那1字节,新的名字称为DS字段(Differentiated Services Field)。该字段的作用没有变,仍然被QoS工具用来标记数据。不同的是IPv4使用3比特,而DSCP使用6比特。

RFC2474定义最高3比特为级别/类别选择代码(Class Selector Codepoints,CS),其意义和IPv4报头中IP优先级的定义是相同的,CS0-CS7的级别相等于IP优先级是我0-7。但它并没有定义第3到第5比特的具体含义以及使用规则。DSCP使用6比特,可以定义64个优先级(0-63)。

2.2 转发分类

PC、路由器都有标记、识别DSCP值并做相应处理的能力。在实施DiffServ的网络中,每一个转发设备都会根据报文的DSCP字段执行相应的转发行为。

主要包括以下三类转发行为:

2.2.1 EF(Expedited Forwarding,无阻碍转发)

EF(Expedited Forwarding,无阻碍转发)由RFC2598定义,DSCP值为46(101110)。EF服务适用于低丢包率,低延迟,低抖动及保证带宽的业务,这类业务一般运行一个相对稳定的速率,需要在转发设备中进行快速转发,如VOIP。

2.2.2 AF(Assured Forwarding,保证转发

AF(Assured Forwarding,保证转发)由RFC2597对CS1~CS4进行进一步定义。采用此转发行为的业务在没有超过最大允许带宽时能够确保转发,一旦超出最大允许带宽,则将转发行为分为4类,每类又可划分为3个不同的丢弃优先级,其中每一个确保转发类都被分配了不同的带宽资源。

它使用第3和第4比特做丢弃优先级标志。01-低丢弃优先级;10-中丢弃优先级;11-高丢弃优先级。这样,在同一类数据中,又根据被丢弃的可能性划分出3档。

AF的定义为数据分类提供了方便,比如,运营商可以向用户提供4中服务协约(SLA):白金,金,银,铜,并为每一种服务的数据分配一定的带宽。当然,不同服务的收费标准也是不同的。

0x03 CoS(IEEE802.1p优先级)

它是位于二层带标签的以太网帧的CoS字段,和VLAN ID在一起使用,在字节中的位置如下:

P2 P1 P0 CU V11 V10 V9 V8 V7 V6 V5 V4 V3 v2 V2 V1

其中:

IEEE802.1p优先级(P2-P0):3bit 未用(CU):1bit VLAN ID(V11-V0):12bit

IEEE802.1p优先级值有8个(0-7),0优先级最低,7优先级最高。

报文分为三种情况:

  • 带优先级和VLAN ID的标签报文,其优先级值是自身带的值;
  • 只带优先级的标签报文,此时VLAN ID为0,其优先级值是自身带的值;
  • 未带标签的报文,一般默认的优先级值为0,也可以进行更改指定新的优先级。

0x04 总结

QoS范围太大,涉及到入口数据流的标记和分类及速率限制,网络骨干的拥塞避免和拥塞管理,网络出口的队列调度机制等等。严格的说,Cos与Tos只是QoS的一种标记机制。

Cos是二层ISL或者802.1Q数据帧的优先级标记,3个bit,范围0-7。

Tos是三层数据包的服务类型标记,也是3个bit,范围0-7,同样可当作优先级标记。另外5个实际指示Delay,Throughput,Reliability等特性的bit位一般没有使用。

现在为了更好的控制数据流分类,使用DSCP(Differential Services Code Point),扩展了Tos的后三个bit,因此,范围从0-63。

在实施QoS策略时,Cos与ToS或DSCP之间通常要做映射机制。

参考
  • 802.1P和IP Precedence及DSCP优先级的分类和对应
  • QoS/ToS/CoS/DSCP介绍

转载请注明出处

你可能感兴趣的:(网络)