對於CoS和DSCP,只是分類的標準,可以自己設置信任哪個。 而且CoS和DSCP之間有映射,只是標識了包的優先順序的不同,根據包的優先順序選擇不同的出佇列,不同出佇列所占的頻寬資源,擁塞時丟棄比例不同。 從而實現服務品質的目標。
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 HTTP://www.aliyun.com/zixun/aggregation/9541.html">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. 如果報文本身包含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. 按照非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 個佇列中的報文。