嚴格的說,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或DSCP之間通常要做映射機制。
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來做的,保證所有隊列都可以得到頻寬來傳輸。