吳掬鷗
摘要:文章簡要分析了常見IP網絡QoS(Quality of Service)隊列調度技術的基本操作,基本隊列調度算法(包括FIFO,PQ,RR,WRR)的特點,在介紹了幾種常見隊列調度策略的同時,對各類別隊列技術所針對網絡環(huán)境的具體應用進行了分析,列舉配置案例,為QoS具體實施提供參考。
關鍵詞:隊列(queue);調度算法;隊列調度策略
中圖分類號:TP393文獻標識碼:A
文章編號:1674-1145(2009)23-0153-02
QoS(Quality of Service)即服務質量,是用于衡量使用一個服務的滿意程度。隨著Internet規(guī)模的不斷增長,IP網上出現了大量的實時業(yè)務。由于實時業(yè)務對網絡的傳輸延時、延時抖動等特性較為敏感,因此這些實時業(yè)務通常需要一套行之有效的QoS控制機制來提高工作效率以保證網絡的高效運行,當網絡過載或擁塞時,QoS控制能確保關鍵業(yè)務量不延遲或丟棄。
QoS所涉及的工作內容包括:分類,標注,隊列策略,擁塞規(guī)避,流量整形等很多方面,到目前為止,QoS已經擁有了一套較為完整的運作機制,這套機制的運作所涉及的內容十分復雜,本文僅針對這套機制中較為難理解和應用的隊列調度策略進行了相應分析,以供參考。
一、接口隊列的組成
網絡擁塞會發(fā)生在任何地方,速率不匹配、鏈路匯聚、數據合流都會導致擁塞。隊列(queuing)技術可以用來管理擁塞,從而提供帶寬和延遲保證。
隊列特指在網絡環(huán)境下的線性操作,這種操作決定了數據包在通過網絡設備接口時的一系列過程。通常在網絡設備上,每個接口都有硬件隊列系統(tǒng)和軟件隊列系統(tǒng)兩個組成。當接口硬件擁塞,則需要使用軟件排隊來進行管理。當硬件隊列機制中有空間,那么數據包將不經過軟件隊列機制。設備根據接口配置的帶寬來決定硬件排隊的長度。減少硬件排隊長度有兩個好處:減少了數據包排隊的最大時間、加快了QoS的軟件應用。
二、基本隊列調度算法
隊列在對數據包的處理可以基于數據包優(yōu)先級來進行,也可以基于分類來進行?;镜倪^程是先創(chuàng)建隊列,再將數據包根據分類分配到不同的隊列,并且安排數據包的傳輸。常見的幾種隊列算法包括:FIFO(先進先出)、PQ(優(yōu)先級排隊)、RR(循環(huán)調度)、WRR(加權循環(huán)調度)四種。
(一)FIFO
先進先出、最簡單的一種排隊機制,只有一個隊,提供了基本的儲存轉發(fā)能力,是排隊算法的默認算法、適用于大型鏈路和低延遲的網絡環(huán)境中。
(二)Priority Queuing
優(yōu)先級隊列使用多個隊,允許按優(yōu)先級進行次序分類。常常在進行下一個隊列之前將第一個隊列清空。先轉發(fā)高優(yōu)先級的數據,給予了高優(yōu)先級絕對的優(yōu)惠。處于活動狀態(tài)的源往往被分配到一個高優(yōu)先級隊列中。這種算法有可能會導致低優(yōu)先級的數據遲遲不能被轉發(fā),但可以使用流量模型來限制高源優(yōu)先級數據流的速率。
(三)Round Robin
循環(huán)調度使用多個隊,不按照優(yōu)先級進行次序分類,從每個隊列中發(fā)送數據包,如:從隊列1發(fā)一個包,再從隊列2發(fā)一個包,再從隊列3發(fā)一個包,如此循環(huán)進行。
如果數據包的尺寸相同,那么所有的隊列會平均的共享帶寬,如果某個隊列的數據包較大,那么這個隊列會享受到更大的帶寬。
(四)Weighed Round Robin
加權循環(huán)調度允許優(yōu)先順序化,并為每一個隊列分配一個權重,然后按權重比例從隊列中發(fā)送數據包,例如:有4個隊列,權重分別是40、20、25、15,那么在發(fā)生擁塞的時候,隊列1可以使用40%的帶寬,以此類推。
三、常見隊列調度策略和案例
隊列的調度策略可以看成是將各隊列算法的系統(tǒng)化,除了FIFO可以看成是無策略外,其他被各大廠商所支持的調度策略,主要包括:
Preference Queue(優(yōu)先級隊列PQ),Customized Queue(用戶定制隊列CQ),Weighted Fair Queue(加權公平隊列WFQ), Class-Based-WFQ(基于類的加權公平隊列CBWFQ),Low Latency Queue(低延遲隊列LLQ)等。
這里以配置和應用較為復雜的CQ,CBWFQ和LLQ為例討論。
(一)CQ用戶定制隊列
CQ是一種根據協議,端口號,以及其他標準分配隊列空間從而保證業(yè)務帶寬的隊列方法。定制隊列采用輪詢的方式處理隊列。CQ使用了17個子隊列(其中0子隊列是PQ隊列,優(yōu)先級很高,留給系統(tǒng)使用),CQ使用RR(Round-Robin)循環(huán)調度機制。
CQ的優(yōu)點在于對于每種流量都保證一定的帶寬,防止流量被“餓死”,在大多數平臺上都支持。CQ的缺點主要包括:每個子隊列都會繼承FIFO隊列的缺點,需要在每一跳上手工的設置分類,不準確的帶寬分配,執(zhí)行調度時會引入抖動,因此不適合對延遲敏感的應用。
(二)CBWFQ基于類的加權公平隊列
CBWFQ(通常使用ACL)定義數據流類別,并將注入寬帶和隊列限制等參數應用于這些類別。CBWFQ擴展了WFQ的功能標準來提供自定義通信類型支持。其工作流程圖如圖1:
CBWFQ采用了混合的算法,根據IP優(yōu)先級或者DSCP、輸入接口、IP報文的五元組等規(guī)則來對報文進行分類;對于MPLS網絡的LSR,主要是根據EXP域值進行分類。然后讓不同類別的報文進入不同的隊列。對于不匹配任何類別的報文,報文被送入系統(tǒng)定義的缺省類。
CBWFQ集中了CQ和WFQ的優(yōu)點,可以支持64個流量類,每個流量類均有自己的隊列,隊列使用WRR算法進行輪詢。CBWFQ是數據應用中的很高效的算法,但不能為實時應用提供嚴格的優(yōu)先級保障。為了避免造成后臺進程永遠得不到帶寬,CBWFQ占用的帶寬不要大于鏈路總帶寬的75%。
(三)LLQ低延時隊列
LLQ也是一種混合算法,集成了CQ、PQ、WFQ的優(yōu)點。嚴格地說,應該稱為PQ+CBWFQ。LLQ在CBWFQ的基礎上增加了嚴格的優(yōu)先級保證。常用于語音網絡?;谕瑯拥目紤],LLQ占用的帶寬不要大于鏈路總帶寬的33%。LLQ的體系結構如圖2:
只要LLQ中有報文,系統(tǒng)就會發(fā)送LLQ中的報文,所以LLQ中的報文被發(fā)送的延遲最多是接口發(fā)送一個最大長度報文的時間,無論是時延還是時延抖動,LLQ都可以將之降低為最低限度。這為對時延敏感的應用如VOIP業(yè)務提供了良好的服務質量保證。
四、應用配置案例
下面使用一個比較典型的案例來說明(配置案例均采用Cisco公司的系列產品的命令行):
需求:路徑帶寬為512Mbps,四種應用流量,需要保證如下幾點:
流量1,某一具體應用流量,永遠優(yōu)先傳輸,最小帶寬保證為133Mbps;
流量2,某一具體應用流量,次優(yōu)先傳輸,最小帶寬保證為200Mbps;
流量3,此為業(yè)務流量,保證在1和2后的其余帶寬下傳輸即可;
流量4,某一具體應用流量,保證在123流量外的帶寬下傳輸即可。
具體配置如下:
第一步,定義ACL匹配應用流量:
ip access-list extended tra1_acl permit tcp 10.1.1.0 0.0.0.255 10.1.2.0 0.0.0.255 eq 804
ip access-list extended tra2_acl permit tcp 10.1.3.0 0.0.0.255 10.1.4.0 0.0.0.255 eq 861
ip access-list extended tra4_acl permit ip 10.1.5.0 0.0.0.255 10.1.6.0 0.0.0.255
第二步,定義class-map匹配相關ACL:
class-map match-all tra1_cmap
match access-group name tra1_acl
class-map match-all tra2_cmap
match access-group name tra2_acl
class-map match-all tra4_cmap
match access-group name tra4_acl
第三步,定義policy-map:
policy-map tra_pmap
class tra1_cmap
set precedence 5
plicy cir 133000000 bc 145000000 be 150000000 conform-action transmit exceed-action set-prec-transmit 3 violate-action set-prec-transmit 2
bandwitch 133000
class tra2_cmap
set precedence 4
policy cir 200000000 bc 30000000 be 33000000 conform-action transmit exceed-action set-prec-transmit 3 violate-action set-prec-transmit 2
class tra4_cmap
set precedence 1
class class-default
set precedence 2
第四步,綁定policy-map于相應的接口:
int pos1/0/0
service-policy output tra_pmap
至此,配置完畢。
五、結語
隊列調度是QoS控制的核心技術之一。隊列調度在基本算法的基礎上提出了各種有針對性的結構,能有效地解決了對各種特定流量或突發(fā)性數據流的處理。合理地運用隊列調度策略可以幫助實現更好的網絡Qos服務。
參考文獻
[1](美)杜蘭著,寧科,等譯.IP網絡的Cisco QoS管理.機械工業(yè)出版社,2002.
[2]林闖,單志廣,任豐原.計算機網絡的服務質量(QOS).清華大學出版社,2004.
[3](美)斯齊格蒂著,田敏,宋輝譯.端到端QoS網絡設計.人民郵電出版社,2007.
[4]Amir S.Ranjbar.CCNP ONT Official Exam Certification Guide.May,2007.
[5](美)弗拉納根著,尹敏,張衛(wèi)譯.Cisco Catalyst QoS—園區(qū)網中的服務質量.人民郵電出版社,2004.