保證服務品質,是當前網路技術界提得最多的話題之一。包交換壓倒電路交換,ip網路壓倒傳統電信網路,是網路技術發展的必然趨勢。但是,電信網路是連線導向的,它的優勢是傳輸語音/視頻等即時業務;ip網路本身是不需連線的,需要加入新的技術,才能接過傳統電信網路的擔子。cos就是這樣的技術。
cos(class of service)的基本思想是,對網路上的業務區分不同的優先順序,在網路的每一個環節,都讓對即時性要求高的資料包優先通過。實施cos技術,需要從網路硬體和網管軟體兩方面入手。伺服器端應該支援原則式管理,通過策略管理為不同部門的不同應用、在不同的時間規定不同優先順序。策略儲存在伺服器ldap資料庫或目錄中,用戶端支援程式(例如,3com的dynamicaccess)感知到某個應用程式啟動時,該程式向服務要求該應用程式的優先順序。在網路的各個節點上,都會給它設定成相應的優先順序,區域網路上是802.1p,wan上是iptos。交換器的硬體設計必須支援多隊列,優先順序不同的業務分別排隊。例如,高優先順序的資料包可以直接通過,普通優先順序的資料包緩衝起來,空閑時再傳送。在廣域網路上,cos要映射到qos(quality of service)或ip tos(type of service)。
與cos不同,qos的基本思想是,為即時業務保留一定的頻寬,從而把資料的丟包率、延時、輸送量、擁塞等控制在使用者可接受的水平。qos技術有兩個基本措施:(1)必須對資料來源實施進入控制(connect admission control)和流量調整(traffic shaping);(2)在資料流進入網路之前,必須估算出該資料流對整個網路的影響。
cos的實質是,通過增加頻寬來提高業務品質。cos的優點是:(1)網路簡單;(2)費用低;(3)相容較早的裝置。但也有幾個缺點:(1)它仍然屬於儘力傳送;(2)沒有服務區分;(3)需要頻繁增加頻寬;(4)偶爾也會出現擁塞。從cos的這些特點不難看出,cos主要適用於企業網或園區網。
qos則是通過改善管理來提高業務品質。它的優點是:(1)服務品質更有保證;(2)基本於標準;(3)減少了過量供應頻寬的費用;(4)適用於城域網以至廣域網路。它的缺點是:(1)管理複雜;(2)在整個網路都需要策略Crowdsourced Security Testing(policy-aware)的交換器和伺服器;(3)現有裝置很可能不支援qos。
從目前的情況來看,雖然各廠商都大談qos,但要真正在較大的範圍內實現qos,短期內還只能是一種理想。一是因為這牽涉到多廠商的裝置,二是網路總的頻寬太少。所以,3com亞太地區區企業市場總監francois tournesac說,“internet/廣域網路沒有什麼qos”。
3com是cos的倡導者。眾所周知,3com的優勢在於企業網。為了實施eric提出的統一網路,3com正致力於在企業網上提供即時業務,例如,它首次提出了區域網路電話解決方案(lan telephony)。提供即時業務,企業網上的頻寬是不成問題的,只需要簡單地將業務分級就可以了,所花費的代價也不高,這就3com提出cos的技術背景所在。同時,業務分級帶來了網路管理的複雜性,3com的策略驅動連網(policy powered networking,ppn)可以解決這個問題。所有裝置都要依照策略目錄的定義進行設定,如使用者端某種應用設定較高的優先順序,邊緣端要進行相應的802.1p設定。中心端如果是乙太網路,則進行802.1p設定;如果是atm,則進行qos設定。在廣域網路,要wan進行頻寬設定或其他設定。當某一種應用需要較高的優先順序時,這種應用通過網路不同地方所用的技術可能是不一樣的。但是只要有了策略,就可以根據這些策略在不同的地方進行不同設定,預先定義不同的服務等級。一旦策略形成,網路裝置就會同策略目錄結合起來,自動執行策略。
當然,cos只是策略管理的功能之一,策略服務的內容還包括頻寬預留、安全控制、網路監測、網路控制管理、sla、服務等級反饋、網路設定、網路運作情況等多個方面。
QoS的實現以IETF 的DiffServ 體係為基礎。DiffServ體系規定每一個傳輸報文將在網路中被分類到不同的類別,分類資訊被包含在了IP 報文頭中,DiffServ 體系使用了IP 報文頭中的TOS(Type Of Service)中的前6個位元來攜帶報文的分類資訊。當然分類資訊也可以被攜帶在鏈路層報文頭上。一般地,附帶在報文中的分類資訊有:
1 幀頭的Tag Control Information 中的前3 個位元,它包含了8 個類別的優先順序資訊,通常稱這三個位元為為User Priority bits。
2 報文頭中的TOS 欄位前3 個位元,稱作IP precedence value;或者攜帶在IP 報文頭中的TOS 欄位前6 個位元,稱作Differentiated Services Code Point (DSCP) value。在遵循DiffServ 體系的網路中,各交換器和路由器對包含同樣分類資訊的報文採取同樣的傳輸服務策略,對包含不同分類資訊的報文採取不同的傳輸服務策略。報文的分類資訊可以被網路上的主機、交換器、路由器或者其它網路裝置賦予。可以基於不同的應用策略或者基於報文內容的不同為報文賦予類別資訊。識別報文的內容以便為報文賦予類別資訊的做法往往需要消耗網路裝置的大量處理資源,為了減少骨幹網路的處理開銷,一般這種賦予類別資訊的方式都使用在網路邊界。
交換器或路由器根據報文所攜帶的類別資訊,可以為各種交通流提供不同的傳輸優先順序,或者為某種交通流預留頻寬,或者適當的丟棄一些重要性較低的報文、或者採取其他一些操作等等。這些獨立裝置的這種行為在DiffServ 體系中被稱作每跳行為(per-hop behavior)。如果網路上的所有裝置提供了一致的每跳行為,那麼對於DiffServ體系來說,這個網路就可以構成end-to-end QoS solution。
下面幾個段落將詳細介紹本交換器所提供的以DiffServ 體係為基礎的QoS模型。
QoS入口端動作包括Classifying、Policing 和Marking。
Classifying:確保將網路交通流劃分成以DSCP值來標識的各個資料流。隨後交換器將根據DSCP值來對各個資料流實施不同的QoS策略。有關分類的更詳細介紹,請參閱Classifying章節。
Policing:用於約束某個流的所佔用的傳輸頻寬,根據配置的Policer來決定流中的哪些部分超出了所限制的傳輸頻寬,並將結果傳遞給下一階段的Marking動作。有關Policing的更詳細介紹,請參閱Policing章節。
Marking:決定怎樣處理資料流中在Policing動作中超限的部分。可能的處理動作有丟棄超限部分和用另外的DSCP值標記超限部分。有關Marking的更詳細介紹,請參閱Marking章節。
QoS出口端動作包括Queueing和Scheduling: Queueing:根據資料流的每一個報文所附帶的DSCP值來確定將報文送往連接埠的哪個輸出隊列,有關Queueing的更詳細介紹,請參閱Queueing章節。 Scheduling:確定以什麼樣的方式處理被送到連接埠各個輸出隊列中的報文有關Scheduling的更詳細介紹,請參閱Scheduling 章節。下面的段落將詳細介紹QoS模型的各個階段的動作。
Classifying
Classifying 即為分類,其過程是根據信任策略或者根據分析每個報文的內容來確定將這些報文歸類到以DSCP 值來表示的各個資料流中,因此分類動作的核心任務是確定輸入報文的DSCP 值。分類發生在連接埠接收輸入報文階段,當某個連接埠關聯了一個表示QoS 策略的policy-map 後,分類就在該連接埠上生效,它起作用於所有從該連接埠輸入的報文。
對於一般非IP 報文,交換器將根據以下準則來歸類報文:
1.1 如果報文本身不包含QoS 資訊,即報文的第二層報文頭中不包含User Priority bits,那麼可以根據報文輸入連接埠的預設CoS值來獲得報文的QoS資訊。連接埠的預設CoS值和報文的UserPriority bits 一樣,取值範圍為0~7。取得報文的CoS 值之後,再根據交換器上配置的CoS-to-DSCP map 來將CoS 轉化為DSCP 值。
2.2 如果報文本身包含QoS 資訊,報文的第二層報文頭中包含User Priority bits,那麼可以直接從報文中獲得CoS 值,然後再根據交換器上配置的CoS-to-DSCP map 來將CoS 轉化為DSCP值。注意以上兩種歸類準則只有當連接埠的QoS 信任模式開啟的時候才起作用。開啟連接埠的QoS 的信任模式意味著不通過分析報文的內容,而直接從報文中或報文的輸入連接埠上獲得報文QoS資訊,從而得到DSCP 值。
2 3. 如果連接埠關聯的policy-map 中使用了基於mac access-list extended 的ACLs 歸類,那麼在該連接埠上,將通過提取報文的源MAC 位址、目的MAC 位址以及Ethertype 域來匹配關聯的ACLs,以確定報文的DSCP 值。要注意的是,如果連接埠關聯了某個policy-map,但又沒有為其設定相應的DSCP 值,則交換器將按照預設行為為符合這種歸類的報文分配優先順序:即根據報文第二層報文頭中包含的優先順序資訊或連接埠的預設優先順序。
注意上面三種歸類準則可能會同時作用於一個連接埠上。在這種情況下,上面三種歸類準則按3、2、1 的優先順序起作用。即,先根據ACLs 歸類,在歸類失敗的情況下,才有可能選擇歸類準則2、1,在這個時候,如果連接埠的QoS 信任模式開啟,則根據準則2 和1 直接從報文中或者從連接埠上獲得QoS 資訊;如果連接埠的QoS 信任模式關閉,那麼那些歸類失敗的報文將被賦予DSCP 的預設值0。
對於IP 報文,可以將根據以下準則來歸類報文:
1.1直接從IP 報文的TOS 欄位中提取出DSCP 值。IETF規定IP 報文的TOS 欄位的前6 個位元作為DSCP 值,它的取值範圍為0~63,和交換器內部使用的DSCP 值一一對應。
2.2 按照非IP 報文處理,按照上面介紹的非IP 報文歸類準則1、2來確定報文的DSCP 值。注意以上幾種歸類準則只有當連接埠的QoS 信任模式開啟的時候才起作用。開啟連接埠的QoS 的信任模式意味著不通過分析IP 報文的內容,而直接從IP 報文的TOS 欄位中或報文的輸入連接埠上獲得QoS 資訊,從而得到DSCP 值。
2 3. 如果連接埠關聯的policy-map 中使用了基於ip access-list (extended)的ACLs 歸類,那麼該在該連接埠上,將通過提取報文的源IP 位址、目的IP 位址、Protocol欄位、以及第四層TCP/UDP 連接埠欄位來匹配相關聯的ACLs,以確定報文的DSCP 值。要注意的是,如果連接埠關聯了某個policy-map,但又沒有為其設定相應的DSCP 值,則交換器將按照預設行為為符合這種歸類的報文分配優先順序:即根據報文第二層報文頭中包含的優先順序資訊或連接埠的預設優先順序。和非IP 報文歸類準則一樣,以上幾種歸類準則可以同時作用於一個連接埠上。在這種情況下,上面的歸類準則按照3、2、1的優先順序起作用。即先根據ACLs 歸類,在歸類失敗的情況下,才有可能選擇歸類準則2、1;在這個時候,如果連接埠選擇QoS 信任模式Trust IP-precedence,那麼準則1 起作用;如果連接埠選擇QoS 信任模式Trust CoS,那麼準則2 起作用。有關上面提到的CoS-to-DSCP map、IP-precedence-to-DSCP map映射表的詳細描述情常見隨後描述。
Policing
Policing 動作發生在資料流分類完成後,它用於約束被分類的資料流所佔用的傳輸頻寬。Policing動作檢查被歸類的資料流中的每一個報文,如果該報文超出了作用於該資料流的Policer 所允許的限制頻寬,那麼該報文將會被做會被作特殊處理,它或者要被丟棄,或者要被賦予另外的DSCP 值。在QoS 處理流程中,Policing 動作是可選的。如果沒有Policing 動作,那麼被分類的資料流中的報文的DSCP 值將會不作任何修改,報文也不會在送往Marking 動作之前被丟棄。
Marking
經過Classifying 和Policing 動作處理之後,為了確保被分類報文報文對應DSCP 值的能夠傳遞給網路上的下一跳裝置,需要通過Marking 動作將為報文寫入QoS 資訊,可以使用Trust 方式直接保留報文中QoS 資訊,例如,選擇Trust Cos 從而保留802.1Q 報文頭的Tag Control Information 中的CoS 資訊;預設情況下,Marking 總是用報文對應的DSCP 值轉化成QoS 資訊,然後寫入到報文CoS欄位(對於非IP 報文)、DSCP欄位或者IP-precedence 欄位(對於IP 報文)中。
Queueing
Queueing 動作負責將資料流中報文送往連接埠的哪個輸出隊列中,送往連接埠的不同輸出隊列的報文將獲得不同等級和性質的傳輸服務策略。每一個連接埠上都擁有8 個輸出隊列,通過交換器上配置的DSCP-to-CoS Map 和Cos-to-Queue Map 兩張映射表來將報文的DSCP 值轉化成輸出隊列號,以便確定報文應該被送往的輸出隊列。
Scheduling
Scheduling 動作時QoS 流程的最後一個環節。當報文被送到連接埠的不同輸出隊列上之後,交換器將採用WRR 或者SP 輪轉演算法發送8 個隊列中的報文。可以通過設定輪轉演算法的權重值來配置各個輸出隊列在輸出報文的時候所佔用的傳輸頻寬。
CoS 服務類別
不要將CoS與QOS(服務品質)混淆,CoS是優先順序隊列形式,已在大量通訊和連網協議中使用。它是一種基於應用類型(話音、視頻、檔案傳輸、交易處理)、使用者類型(CEO,秘書)或其他設定對資料分組區分類別並區分優先順序次序的方法。
CoS是一種排隊規則,而QOS包括用以管理頻寬和網路資源的更廣範圍的技術。CoS通過檢查資料分組參數或CoS標記對資料分組區分等級,並基於預定義的標準將資料分組放在不同優先順序的隊列中。QOS涉及到保證一定的網路效能層級以滿足業務合約或支援即時通訊。對於QoS'要使用一些方法在發送資料分組前在網路上預留頻寬。
注意
打個比方,CoS如同將要遞送的包裹分級為平郵投遞、第二日投遞或第三日投遞。QOS是投遞公司為確保您的包裹按時遞交要做的事情(如包裹跟蹤、航空運輸、挨家挨戶收取和投遞郵件)。
雖然CoS技術可以賦予一些通訊高於其他通訊的優先順序,但是如果沒有QOS,將沒有辦法防止即使是高優先順序的通訊被延遲或遺失資料分組。事實上,真正的QOS僅對於ATM才是可以實現的,由於ATM具有固定的信元所以它能提供可以預測的服務。對於ATM通訊公司和服務提供者精確知道在其網路容量內可以發送多少個53位元組的信元。這種可預測性允許通訊公司以保證的服務等級簽署服務等級協定。
另外,CoS技術能夠減少等待時間,確保重要的通訊在合理的時間內完成。CoS在商業網路上是很實用的。對一個網路進行過量供應(提供多於平均需要的頻寬)然後將通訊區分優先次序以達到可接受的服務等級,這一點是有可能做到的。通過將通訊區分優先次序,網路裝置可以在進行最高優先順序通訊前先放下最不重要的通訊。
後面列出了CoS技術並在本書其他地方做了描述。為了便於比較,請參考it QOS(服務品質)”和“綜合業務(IntServ)"以瞭解對於QOS技術的討論。
·802.1p 一個IEEE標準,它使用乙太網路幀頭中的3個位元將通訊分為多達8個的優先順序。它 基本上賦予交換器和其他第2層連網裝置以對通 信區分優先次序的功能。這在“網路通訊優先順序”和"QoS(服務品質)”中進行了討論。
·Diff-Serv 一個用以對IP通訊區分優先次序的規範。對於使用能將IP網路上通訊區分優先順序的方法設定IP頭中的TOS(服務類型)欄位,它指定了方法。Diff-Serv是重要的,這是因為它可以跨互連網絡和[[網際網路//使用。請參閱“區分服務(DiffServ)”和“網路通訊優先順序”。
·ATM服務類別 ATM有自己的通訊分類方法,如分類為CBR(恒定位元速率)、VBR(可變位元速率)、UBR(不指定位元速率)、ABR(可用位元速率)和GFR(保證畫面播放速率)。有關更多詳細資料,請參閱"ATM(非同步傳輸模式)”。
Acuitive的總裁在一篇論文對於CoS提供了一種有趣的觀點(請參閱本主題結尾處的連結)。他宣稱:雖然CoS可以減少等待時間,然而隨著鏈路速度的增加,CoS重要性將降低。例如,200ms以下的延遲幾乎難以覺察。快速乙太網路鏈路的等待時間約為2.4ms。他解釋說,對於即使注意到等待時間僅有輕微增加的使用者,資料分組需要“經過幾乎100個快速乙太網路交換器,在每個交換器上都延後20個大小為最大的乙太網路幀才到達”。他估計CoS最重要的用途在於WAN,而不是乙太網路LAN。
IP Qos DSCP和TOS分類
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來做的,保證所有隊列都可以得到頻寬來傳輸。