Qos Tos Cos Dscp

来源:互联网 发布:淘宝4.6分 编辑:程序博客网 时间:2024/05/16 15:48

QoS/ToS/CoS/DSCP 介绍  

 

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

 

下面是RFC1349中的原话:

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

 

一、RFC1349中的TOS、IPprecedence

RFC1349中定义的ToS格式如下:

 

Type of Service(TOS)XXXXXXX076543210

 

 可表示如下:

         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 = NormalThroughput21 = High Reliability; 0 = NormalReliability11 = Minimise monetary cost (RFC1349)0Must be 0

 

整理成表格为:

 

PROPERTY

CLIENTVIEWSETTING

BIT MASK/BINARYVALUE

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、IPprecedence

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 = HighThroughput)
Bit 5: Reliability (0 = Normal Reliability, 1 = HighReliability)
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 FiledExplanations (Lowest-Highest):

  1. Routine:(R) "…is used for allmessages that justify transmission by electrical means unless themessage delivery is of sufficient urgency to require higherprecedence."
  2. Priority: (P) "…is used for allmessages that require expeditious action by the addressee(s) and/orfurnish essential information for the conduct of ongoingoperations."
  3. Immediate (O) "…is reserved formessages relating to situations that gravely affect the security ofNational/Allied forces or populace."
  4. Flash(Z) "…is reserved forinitial enemy contact messages or operational combat messages ofextreme urgency."
  5. FlashOverride (X) "… is reserved formessages relating to the outbreak of hostilities and/or detonationof nuclear devices."
  6. CRITIC/ECP "…stands for"Critical and Emergency Call Processing" and should only be usedfor authorized emergency communications, for example in the UnitedStates Government Emergency Telecommunications Service (GETS), theUnited Kingdom Government Telephone Preference Scheme (GTPS) andsimilar government emergency preparedness or reactionaryimplementations elsewhere."

 

三、RFC1122中的TOS、IPprecedence 

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

The "Type-of-Service" byte in the IP header is divided into twosections: the Precedence field (high-order 3 bits), and a fieldthat is customarily called "Type-of-Service" or "TOS" (low-order 5bits). 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报头中数据类(TrafficClass)那1字节,新的名字称为DS字段(Differentiated ServicesField)。该字段的作用没有变,仍然被QoS工具用来标记数据。不同的是IPv4使用3比特,而DSCP使用6比特,最低2比特不用。

RFC2474 定义最高3比特为级别/类别选择代码(Class SelectorCodepoints,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.

 

 

DSCPNameDS FieldValueIP 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(DifferentialServices Code Point),扩展了Tos的后三个bit,因此,范围从0-63。
在实施QoS策略时,Cos与ToSDSCP之间通常要做映射机制。

TOS:

                                                            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报头中数据类(TrafficClass)那1字节,新的名字称为DS字段(Differentiated ServicesField)。该字段的作用没有变,仍然被QoS工具用来标记数据。不同的是IPv4使用3比特,而DSCP使用6比特,最低2比特不用。
RFC2474 定义最高3比特为级别/类别选择代码(Class SelectorCodepoints,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  
Lowdrop        AF11    AF21   AF31     AF41
                     001010  010010  011010   100010
Medium drop   AF12    AF22   AF32     AF42
                     001100  010100  011100   100100
Highdrop       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个优先级,可以应用于流分类,数值越大表示优先级越高。
                        
+-----+-----+-----+-----+-----+-----+-----+-----+
 PRECEDENCE   t3 |t2   t1| t0 |m
-----+-----+-----+-----+-----+-----+-----+-----+

         111 -Network Control
          110 -Internetwork Control
          101 -CRITIC/ECP
          100 - FlashOverride
          011 -Flash
          010 -Immediate
          001 -Priority
          000 –Routine

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

DSCP:differentiated services codepoin
CU:   currentlyunused 
但是由于DSCP和IP PRECEDENCE是共存的于是存在了一些兼容性的问题,DSCP的可读性比较差,比如DSCP43我们并不知道对应着IPPRECEDENCE的什么取值,于是就把DSCP进行了进一步的分类。DSCP总共分成了4类。
            ClassSelector(CS)         aaa000
             ExpeditedForwarding(EF)    101110
             AssuredForwarding(AF)      aaabb0
             Default(BE)             000000

1,默认的DSCP为000 000
2,CS的DSCP后三位为0,也就是说CS仍然沿用了IP PRECEDENCE只不过CS定义的DSCP=IPPRECEDENCE*8,比如CS6=6*8=48,CS7=7*8=56
3,EF含义为加速转发,也可以看作为IPPRECEDENCE为5,是一个比较高的优先级,取值为101110(46),但是RFC并没有定义为什么EF的取值为46。
4,AF分为两部分,a部分和b部分,a部分为3 bit仍然可以和IP PRECEDENCE对应,b部分为2bit表示丢弃性,可以表示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做一个排列可以发现一个有趣的现象,如下表。这个表也就是我们在现实当中应用最多的队列。根据IPPRECEDENCE的优先级,CS7最高依次排列BE最低。一般情况下这些队列的用途看这个表的Usage字段
对应的服务 IPv4优先级/EXP/802.1P   DSCP(二进制) DSCP[dec][Hex] TOS(十六进制)     应用  丢包率
BE                             0                 Internet  
AF1       Green1      001 010    10[0x0a]    40[0x28]     LeasedLine   
AF1       Green1      001 100    12[0x0c]    48[0x30]     LeasedLine   M
AF1       Green1      001 110    14[0x0e]    56[0x38]     LeasedLine   H
AF2       Green2              010010     18[0x12]    72[0x48]      IPTVVOD   L
AF2       Green2              010100     20[0x14]    80[0x50]        IPTVVOD   M
AF2       Green2              010110     22[0x16]    88[0x58]      IPTVVOD   H
AF3       Green3              011010     26[0x1a]    104[0x68]      IPTVBroadcast  L
AF3       Green3              011100     28[0x1c]    112[0x70]     IPTVBroadcast  M
AF3       Green3              011110     30[0x1e]    120[0x78]      IPTVBroadcast  H
AF4       Green4              100010     34[0x22]    136[0x88]      NGN/3GSingaling  L
AF4       Green4              100100     36[0x24]    144[0x90]     NGN/3GSingaling M 
AF4       Green4              100110     38[0x26]    152[0x98]      NGN/3GSingaling H
EF                       101110     46[0x2E]    184[0xB8]     NGN/3Gvoice 
CS6(INC)                   110000     48[0x30]    192[0xC0]    Protocol 
CS7(NC)                   111000     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来做的,保证所有队列都可以得到带宽来传输。