QoS/ToS/CoS/DSCP 介绍

来源:互联网 发布:学大数据能干金融吗 编辑:程序博客网 时间:2024/05/16 15:58

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     |

|                                                     |                                                                   |                 |

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

MBZmust be zero

 对应的优先级如下:

BitsMeaning7-5IP Precedence:111Network Control110Internetwork Control101Critic/ECP100Flash Override011Flash010Immediate001Priority000Routine41 = Low Delay; 0 = Normal Delay31 = High Throughput; 0 = Normal Throughput21 = High Reliability; 0 = Normal Reliability11 = 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.

01234567PRECEDENCEDTR00

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):

  1. 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."
  2. 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."
  3. Immediate (O) "…is reserved for messages relating to situations that gravely affect the security of National/Allied forces or populace."
  4. Flash (Z) "…is reserved for initial enemy contact messages or operational combat messages of extreme urgency."
  5. Flash Override (X) "… is reserved for messages relating to the outbreak of hostilities and/or detonation of nuclear devices."
  6. 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档。

 

QoS/ToS/CoS/DSCP 介绍 - Sacrifice - BabyUnion

 IP Precedence与DSCP的转换表如下:

 precedence Conversion table.

DSCP NameDS Field ValueIP Precedence
BinaryDecimal
CS0000 00000CS1001 00081AF11001 010101AF12001 100121AF13001 110141CS2010 000162AF21010 010182AF22010 100202AF23010 110222CS3011 000243AF31011 010263AF32011 100283AF33
d>011 110303CS4100 000324AF41100 010344AF42100 100364AF43100 110384CS5101 000405EF101 110465CS6110 000486CS7111 000567

 

 

 

 

==========================================================================================

严格的说,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与ToSDSCP之间通常要做映射机制。

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来做的,保证所有队列都可以得到带宽来传输。
0 0