您的位置:首页 > 其它

QoS/ToS/CoS/DSCP 介绍

2014-08-03 09:31 549 查看




QoS/ToS/CoS/DSCP 介绍

由于最近要用到tos,ip precedence和dscp,找了一些资料,现在明白了tos,ip precedence和dscp这三者的关系。网上流传的版本众多,其实都是正确的,只是分别被不同的标准定义,因而让人莫名其妙。IP Precedence 和 ToS都位于IP头中,共占一个字节,8bits, 关于这几个字节的作用被不同的标准定义过,分别是RFC791,RFC1122,RFC1349; RFC1349废除了之前两个RFC的定义,现在大多设备都使用RFC1349中的定义,所以对于tos,有如下版本,分别说明如下;



下面是RFC1349中的原话:

In the past there has been some confusion about the size of the TOS field. RFC-791 defined it as a three bit field, including bits 3-5 in the figure above. It included bit 6 in the MBZ field. RFC-1122 added bits 6 and 7 to the TOS field, eliminating the
MBZ field. This memo redefines the TOS field to be the four bits shown in the figure above.



一、RFC1349中的TOS、IP precedence

RFC1349中定义的ToS格式如下:

Type of Service (TOS)XXXXXXX0
76543210
可表示如下:


0 1
2 3 4
5 6
7
+------------+-----------+------------+------------+------------+-----------+-----------+------------+
| PRECEDENCE |
| |
|
优先权
| TOS
| MBZ |
| |
| |
+------------+-----------+------------+------------+------------+-----------+-----------+------------+
(MBZ:must be zero)

对应的优先级如下:

BitsMeaning
7-5IP Precedence:
111Network Control
110Internetwork Control
101Critic/ECP
100Flash Override
011Flash
010Immediate
001Priority
000Routine
41 = Low Delay; 0 = Normal Delay
31 = High Throughput; 0 = Normal Throughput
21 = High Reliability; 0 = Normal Reliability
11 = Minimise monetary cost (RFC 1349)
0Must be 0
整理成表格为:

PROPERTY
CLIENTVIEW SETTING
BIT MASK/BINARY VALUE
Precedence
ROUTINE(DEFAULT)
000
PRIORITY
001
IMMEDIATE
010
FLASH
011
FLASH OVERRIDE
100
Delay
Normal
Low
0
1
Throughput
Normal
High
0
1
Reliability
Normal
High
0
1
Cost
Normal
Low
0
1
Congestion
N/A
0
二、RFC791中的TOS、IP precedence

The IP Type of Service Byte:

Bits 0-2: Precedence.

Bit 3: Delay (0 = Normal Delay, 1 = Low Delay)

Bit 4: Throughput (0 = Normal Throughput, 1 = High Throughput)

Bit 5: Reliability (0 = Normal Reliability, 1 = High Reliability)

Bits 6-7: Reserved for Future Use.

01234567
PRECEDENCEDTR00
The three bit Precedence field is further defined as follows:

111 - Network Control

110 - Internetwork Control

101 - CRITIC/ECP

100 - Flash Override

011 - Flash

010 - Immediate

001 - Priority

000 - Routine

A. DOD DD173 Precedence/Priority Filed Explanations (Lowest-Highest):

Routine: (R) "…is used for all messages that justify transmission by electrical means unless the message delivery is of sufficient urgency to require higher precedence."

Priority: (P) "…is used for all messages that require expeditious action by the addressee(s) and/or furnish essential information for the conduct of ongoing operations."

Immediate (O) "…is reserved for messages relating to situations that gravely affect the security of National/Allied forces or populace."

Flash (Z) "…is reserved for initial enemy contact messages or operational combat messages of extreme urgency."

Flash Override (X) "… is reserved for messages relating to the outbreak of hostilities and/or detonation of nuclear devices."

CRITIC/ECP "…stands for "Critical and Emergency Call Processing" and should only be used for authorized emergency communications, for example in the United States Government Emergency Telecommunications Service (GETS), the United Kingdom
Government Telephone Preference Scheme (GTPS) and similar government emergency preparedness or reactionary implementations elsewhere."



三、RFC1122中的TOS、IP precedence

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

The "Type-of-Service" byte in the IP header is divided into two sections: the Precedence field (high-order 3 bits), and a field that is customarily called "Type-of-Service" or "TOS" (low-order 5 bits). In this document, all references to "TOS" or the "TOS
field" refer to the low-order 5 bits only.



四、由RFC2474定义的DSCP

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

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

DSCP使用6比特,可以定义64个优先级(0-63)。AF 保证转发(Assured Forwarding, AF)由RFC2597对CS1~CS4进行进一步定义。它使用第3和第4比特做丢弃优先级标志。01-低丢弃优先级;10-中丢弃优先级;11-高丢弃优先级。这样,在同一类数据中,又根据被丢弃的可能性划分出3档。





IP Precedence与DSCP的转换表如下:

precedence Conversion table.

DSCP Name DS Field Value IP Precedence
Binary Decimal
CS0 000 000
00
CS1 001 000
81
AF11 001 010
101
AF12 001 100
121
AF13 001 110
141
CS2 010 000
162
AF21 010 010
182
AF22 010 100
202
AF23 010 110
222
CS3 011 000
243
AF31 011 010
263
AF32 011 100
283
AF33

d>
011 110
303
CS4 100 000
324
AF41 100 010
344
AF42 100 100
364
AF43 100 110
384
CS5 101 000
405
EF 101 110
465
CS6 110 000
486
CS7 111 000 567
==========================================================================================

严格的说,Cos与Tos只是QoS的一种标记机制。

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[b]DSCP[/b]之间通常要做映射机制。

TOS:

0 1 2 3 4 5 6 7

+-----+-----+-----+-----+-----+-----+-----+-----+

| | | |

| PRECEDENCE | TOS | MBZ |

| | | |

+-----+-----+-----+-----+-----+-----+-----+-----+

服务类型(TOS)字段包括一个3bit的优先权子字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。RFC1340 [ReynoldsandPostel1992]描述了所有的标准应用如何设置这些服务类型。RFC1349[Almquist1992]对该RFC进行了修正,更为详细地描述了TOS的特性。

DSCP

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

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

AF

保证转发(Assured Forwarding, AF)由RFC2597对CS1~CS4进行进一步定义。它使用第3和第4比特做丢弃优先级标志。01-低丢弃优先级;10-中丢弃优先级;11-高丢弃优先级。这样,在同一类数据中,又根据被丢弃的可能性划分出3档。下表列出了AF服务等级及其对应的DSCP值:

CS1 CS2 CS3 CS4

Low drop AF11 AF21 AF31 AF41

001010 010010 011010 100010

Medium drop AF12 AF22 AF32 AF42

001100 010100 011100 100100

High drop AF13 AF23 AF33 AF43

001110 010110 011110 100110

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

EF

无阻碍转发(Expedited Forwarding, EF)由RFC2598定义,DSCP值为46 (101110)。EF服务适用于低丢包率,低延迟,低抖动及保证带宽的业务,如VOIP。

其他

DSCP= 000000 尽力转发服务等级 (EF);

CS = 6 网间控制(Internetwork Control),DSCP= 48 (110000)

CS = 7 网内控制 (Intranetwork Control),DSCP= 56 (111000)

在配置命令中,既可以使用十进制数值,也可以使用二进制数值,还可以使用名称。例如,28, 011100, AF32 三个写法意义相同。



RFC 791中 OS位的IP Precedence划分成了8个优先级,可以应用于流分类,数值越大表示优先级越高。

0 1 2 3 4 5 6 7

+-----+-----+-----+-----+-----+-----+-----+-----+

| PRECEDENCE | t3 | t2 | t1 | t0 |m

-----+-----+-----+-----+-----+-----+-----+-----+

111 - Network Control

110 - Internetwork Control

101 - CRITIC/ECP

100 - Flash Override

011 - Flash

010 - Immediate

001 - Priority

000 – Routine

但是在网络中实际部署的时候这8个优先级是远远不够的,于是在RFC 2474中又对TOS进行了重新的定义。把前六位定义成DSCP,后两位保留。

0 1 2 3 4 5 6 7

+---+---+---+---+---+---+---+---+

| DSCP | CU |

+---+---+---+---+---+---+---+---+

DSCP: differentiated services codepoin

CU: currently unused

但是由于DSCP和IP PRECEDENCE是共存的于是存在了一些兼容性的问题,DSCP的可读性比较差,比如DSCP 43我们并不知道对应着IP PRECEDENCE的什么取值,于是就把DSCP进行了进一步的分类。DSCP总共分成了4类。

Class Selector(CS) aaa 000

Expedited Forwarding(EF) 101 110

Assured Forwarding(AF) aaa bb0

Default(BE) 000 000

1,默认的DSCP为000 000

2,CS的DSCP后三位为0,也就是说CS仍然沿用了IP PRECEDENCE只不过CS定义的DSCP=IP PRECEDENCE*8,比如CS6=6*8=48,CS7=7*8=56

3,EF含义为加速转发,也可以看作为IP PRECEDENCE为5,是一个比较高的优先级,取值为101110(46),但是RFC并没有定义为什么EF的取值为46。

4,AF分为两部分,a部分和b部分,a部分为3 bit仍然可以和IP PRECEDENCE对应,b部分为2 bit表示丢弃性,可以表示3个丢弃优先级,可以应用于RED或者WRED。目前a部分由于有三个bit最大取值为8,但是目前只用到了1~4。为了迅速的和10进制转换,可以用如下方法,先把10进制数值除8得到的整数就是AF值,余数换算成二进制看前两位就是丢弃优先级,比如34/8=4余数为2,2换算成二进制为010,那么换算以后可以知道34代表AF4丢弃优先级为middle的数据报。

如果把CS EF AF和BE做一个排列可以发现一个有趣的现象,如下表。这个表也就是我们在现实当中应用最多的队列。根据IP PRECEDENCE的优先级,CS7最高依次排列BE最低。一般情况下这些队列的用途看这个表的Usage字段

对应的服务 IPv4优先级/EXP/802.1P DSCP(二进制) DSCP[dec][Hex] TOS(十六进制) 应用 丢包率

BE 0 0 0      0 Internet

AF1 Green 1 001 010 10[0x0a] 40[0x28] Leased Line L

AF1 Green 1 001 100 12[0x0c] 48[0x30] Leased Line M

AF1 Green 1 001 110 14[0x0e] 56[0x38] Leased Line H

AF2 Green 2 010 010 18[0x12] 72[0x48] IPTV VOD L

AF2 Green 2 010 100 20[0x14] 80[0x50] IPTV VOD M

AF2 Green 2 010 110 22[0x16] 88[0x58] IPTV VOD H

AF3 Green 3 011 010 26[0x1a] 104[0x68] IPTV Broadcast L

AF3 Green 3 011 100 28[0x1c] 112[0x70] IPTV Broadcast M

AF3 Green 3 011 110 30[0x1e] 120[0x78] IPTV Broadcast H

AF4 Green 4 100 010 34[0x22] 136[0x88] NGN/3G Singaling L

AF4 Green 4 100 100 36[0x24] 144[0x90] NGN/3G Singaling M

AF4 Green 4 100 110 38[0x26] 152[0x98] NGN/3G Singaling H

EF 5 101 110 46[0x2E] 184[0xB8] NGN/3G voice

CS6(INC) 6 110 000 48[0x30] 192[0xC0] Protocol

CS7(NC) 7 111 000 56[0x38] 224[0xE0] Protocol

1,CS6和CS7默认用于协议报文,比如说OSPF报文,BGP报文等应该优先保障,因为如果这些报文无法接收的话会引起协议中断。而且是大多数厂商硬件队列里最高优先级的报文。

2,EF用于承载语音的流量,因为语音要求低延迟,低抖动,低丢包率,是仅次于协议报文的最重要的报文。

3,AF4用来承载语音的信令流量,这里大家可能会有疑问为什么这里语音要优先于信令呢?其实是这样的,这里的信令是电话的呼叫控制,你是可以忍受在接通的时候等待几秒钟的,但是绝对不能允许在通话的时候的中断。所以语音要优先于信令。

4,AF3可以用来承载IPTV的直播流量,直播的时时性很强需要连续性和大吞吐量的保证。

5,AF4可以用来承载VOD的流量,相对于直播VOD要求时时性不是很强,允许有延迟或者缓冲。

6,AF5可以承载不是很重要的专线业务,因为专线业务相对于IPTV和VOICE来讲,IPTV和VOICE是运营商最关键的业务,需要最优先来保证。当然面向银行之类需要钻石级保证的业务来讲,可以安排为AF4甚至为EF。

7,最不重要的业务是INTERNET业务,可以放在BE模型来传输。

而在硬件队列里是如何保证协议报文(CS6和CS7中的数据)优先传输呢?在***路由器的时候一般都是把CS6和CS7中的数据做PQ也就是绝对优先处理,无论下面是否有数据也是要优先来传递这两个队列中的数据。而其他EF到AF1的队列中是用WFQ来做的,保证所有队列都可以得到带宽来传输。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: