QoS&Diffserv

嚴格的說,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之間通常要做映射機制。

對於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 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 個隊列中的報文。
可以通過設置輪轉算法的權重值來配置各個輸出隊列在輸出報文的時候所佔用的傳輸帶寬。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章