擁塞管理是指網絡在發生擁塞時,如何進行管理和控制。FIFO隊列不對報文進行分類,按報文到達接口的先后順序讓報文進入隊列,采用盡力而為的轉發模式,PQ隊列是針對關鍵業務應用設計的。
雖然流量分類幾乎可以根據報文的任何字段進行,但是流量分類標記則一般只對802.1Q 以太網幀的CoS域、IP報文的ToS域、MPLS報文的EXP域進行標記。流量的標記主要的目的就是讓其他處理此報文的應用系統或設備知道該報文的類別,并根據這種類別對報文進行一些事先約定了的處理。
例如,在網絡的邊界做如下分類和標記:
1)所有VoIP數據報文聚合為EF業務類,將報文的IP優先級標記為5,或者將DSCP值標記為EF;
2)所有VoIP控制報文聚合AF業務類,將報文的IP優先級標記為4,或者將DSCP值標記為AF31。
當報文在網絡邊界被標記分類之后,在網絡的中間節點,就可以根據標記,對不同類別的流量給予差別服務了。例如:對上述例子中的EF類業務保證時延和減少抖動,同時進行流量監管;對AF業務類在網絡擁塞時仍然保證一定的帶寬,等等。
擁塞管理技術原理
1 擁塞管理基本概念
在計算機數據通信中,通信信道是被多個計算機共享的,并且,廣域網的帶寬通常要比局域網的帶寬小,這樣,當一個局域網的計算機向另一個局域網的計算機發送數據時,由于廣域網的帶寬小于局域網的帶寬,數據將不可能按局域網發送的速度在廣域網上傳輸。此時,處在局域網和廣域網之間的路由器將不能發送一些報文,即網絡發生了擁塞。
如下圖所示,當公司分支1向公司總部以100M的速度發送數據時,將會使Router2的串口S0/1發生擁塞。
圖1 實際應用中的擁塞實例
擁塞管理是指網絡在發生擁塞時,如何進行管理和控制。處理的方法是使用隊列技術。將所有要從一個接口發出的報文進入多個隊列,按照各個隊列的優先級進行處理。不同的隊列算法用來解決不同的問題,并產生不同的效果。常用的隊列技術有FIFO、PQ、CQ、WFQ、CBWFQ等,下文逐一介紹這些常用隊列技術的基本原理。
2 FIFO隊列原理簡述
FIFO(First In First Out,先進先出)隊列示意圖如下所示:
圖2 FIFO隊列示意圖
FIFO隊列不對報文進行分類,當報文進入接口的速度大于接口能發送的速度時,FIFO按報文到達接口的先后順序讓報文進入隊列,同時,FIFO在隊列的出口讓報文按進隊的順序出隊,先進的報文將先出隊,后進的報文將后出隊。
FIFO隊列具有處理簡單,開銷小的優點。但FIFO不區分報文類型,采用盡力而為的轉發模式,使對時間敏感的實時應用(如VOIP)的延遲得不到保證,關鍵業務的帶寬也不能得到保證。
3 PQ原理簡述
PQ(Priority Queuing,優先隊列)示意圖如下所示:
圖3 PQ隊列示意圖
PQ隊列是針對關鍵業務應用設計的。關鍵業務有一個重要特點,需要在擁塞發生時要求優先獲得服務以減少響應的延遲。PQ可以根據網絡協議(如IP、IPX)、數據流入接口、報文長短、IP報文的ToS、五元組(協議ID、源IP地址、目的IP地址、源端口號、目的端口號)等條件進行分類,對于MPLS網絡,則根據MPLS報文EXP域值進行分類。最終將所有報文分成最多4類,分別屬于PQ的4個隊列中的一個,然后,按報文所屬類別將報文送入相應的隊列。
PQ的4個隊列分別為高優先隊列、中優先隊列、正常優先隊列和低優先隊列,它們的優先級依次降低。在報文出隊的時候,PQ首先讓高優先隊列中的報文出隊并發送,直到高優先隊列中的報文發送完,然后發送中優先隊列中的報文,同樣,直到發送完,然后是正常優先隊列和低優先隊列。這樣,分類時屬于較高優先級隊列的報文將會得到優先發送,而較低優先級的報文將會在發生擁塞時被較高優先級的報文搶占。這樣會使得實時業務(如VoIP)的報文能夠得到優先處理,非實時業務(如E-Mail)的報文在網絡處理完關鍵業務后的空閑間隙得到處理,既保證了實時業務的優先,又充分利用了網絡資源。
PQ的缺點是,當較高優先級隊列中總有報文存在時,則低優先級隊列中的報文將一直得不到服務,出現隊列“餓死”現象。
4 CQ原理簡述
CQ(Custom Queuing,定制隊列)示意圖如下所示:
圖4 CQ隊列示意圖
CQ的分類方法和PQ基本相同,不同的是它最終將所有報文分成最多至17類,每類報文對應CQ中的一個隊列,接口擁塞時,報文按匹配規則被送入對應的隊列;如果報文不匹配任何規則,則被送入缺省隊列(缺省隊列默認為1,可配置修改缺省隊列)。
CQ的17個隊列中,0號隊列是優先隊列,路由器總是先把0號隊列中的報文發送完,然后才處理1到16號隊列中的報文,所以0號隊列一般作為系統隊列,把實時性要求高的交互式協議報文放到0號隊列。1到16號隊列調度采用輪詢方式,按照用戶預先配置的額度依次從1到16號用戶隊列中取出一定數量的報文發送。如果輪詢到某隊列時該隊列恰好為空,則立即轉而輪詢下一個隊列。
CQ把報文分類,然后按類別將報文分配到CQ的一個隊列中去,而對每個隊列,又可以規定隊列中的報文所占接口帶寬的比例,這樣,就可以讓不同業務的報文獲得合理的帶寬,從而既保證關鍵業務能獲得較多的帶寬,又不至于使非關鍵業務得不到帶寬。但由于采用輪詢調度各個隊列,CQ無法保證任何數據流的延遲。
5 WFQ原理簡述
WFQ(Weighted Fair Queuing,加權公平隊列)示意圖如下所示:
圖5 WFQ隊列示意圖
WFQ對報文按流特征進行分類,對于IP網絡,相同源IP地址、目的IP地址、源端口號、目的端口號、協議號、ToS的報文屬于同一個流,而對于MPLS網絡,具有相同的標簽和EXP域值的報文屬于同一個流。每一個流被分配到一個隊列,該過程稱為散列,采用HASH算法來自動完成,這種方式會盡量將不同特征的流分入不同的隊列中。每個隊列類別可以看作是一類流,其報文進入WFQ中的同一個隊列。WFQ允許的隊列數目是有限的,用戶可以根據需要配置該值。
在出隊的時候,WFQ按流的優先級(precedence)來分配每個流應占有出口的帶寬。優先級的數值越小,所得的帶寬越少。優先級的數值越大,所得的帶寬越多。這樣就保證了相同優先級業務之間的公平,體現了不同優先級業務之間的權值。
WFQ優點在于配置簡單,有利于小包的轉發,每條流都可以獲得公平調度,同時照顧高優先級報文的利益。但由于流是自動分類,無法手工干預,故缺乏一定的靈活性,且受資源限制,當多個流進入同一個隊列時無法提供精確服務,無法保證每個流獲得的實際資源量。WFQ均衡各個流的延遲與抖動,同樣也不適合延遲敏感的業務應用。
6 CBQ原理簡述
CBQ(Class Based Queuing,基于類的隊列)示意圖如下所示:
圖6 CBQ隊列示意圖
CBQ首先根據IP優先級或者DSCP、輸入接口、IP報文的五元組等規則來對報文進行分類;對于MPLS網絡的LSR,主要是根據EXP域值進行分類。然后讓不同類別的報文進入不同的隊列。對于不匹配任何類別的報文,報文被送入系統定義的缺省類。
CBQ包括一個低時延隊列LLQ(Low Latency Queuing,低時延隊列),用來支撐EF(Expedited Forwarding,快速轉發)類業務,被絕對優先發送,保證時延。進入EF的報文在接口沒有發生擁塞的時候(此時所有隊列中都沒有報文),所有屬于EF的報文都可以被發送。在接口發生擁塞的時候(隊列中有報文時),進入EF的報文被限速,超出規定流量的報文將被丟棄。
另外有64個BQ隊列(Bandwidth Queuing,帶寬保證隊列),用來支撐AF(Assured Forwarding,確保轉發)類業務,可以保證每一個隊列的帶寬及可控的時延。系統調度報文出隊列的時候,按用戶為各類報文設定的帶寬將報文出隊發送。這種隊列技術應用了先進的隊列調度算法,可以實現各個類的隊列的公平調度。當接口中某些類別的隊列沒有報文時,BQ隊列的報文還可以公平地得到空閑的帶寬,和時分復用系統相比,大大提高了線路的利用率。同時,在接口擁塞的時候,仍然能保證各類報文得到用戶設定的最小帶寬。
最后還有一個WFQ隊列,對應BE(Best Effort,盡力傳送)業務,使用接口剩余帶寬進行發送。
CBQ可根據報文的輸入接口、滿足ACL情況、IP Precedence、DSCP、EXP、Label等規則對報文進行分類、進入相應隊列。對于進入EF和AF的報文,要進行測量;考慮到鏈路層控制報文的發送、鏈路層封裝開銷及物理層開銷(如ATM信元頭),建議EF與AF占用接口的總帶寬不要超過接口帶寬的75%。
CBQ可為不同的業務定義不同的調度策略(如帶寬、時延等),由于涉及到復雜的流分類,對于高速接口(GE以上)啟用CBQ特性系統資源存在一定的開銷。
7 RTP原理簡述
RTP優先隊列(Real Time Protocol Priority Queuing) 示意圖如下所示:
圖7 RTP隊列示意圖
RTP優先隊列是一種保證實時業務(包括語音與視頻業務)服務質量的簡單隊列技術。其原理就是將承載語音或視頻的RTP報文送入高優先級隊列,使其得到優先發送,保證時延和抖動降低為最低限度,從而保證了語音或視頻這種對時延敏感業務的服務質量。
RTP優先隊列將RTP報文送入一個具有較高優先級的隊列,RTP報文是端口號在一定范圍內為偶數的UDP報文,端口號的范圍可以配置,一般為16384~32767。RTP優先隊列可以同前面所述的任何一種隊列(包括FIFO、PQ、CQ、WFQ與CBQ)結合使用,它的優先級是最高的。由于CBQ中的EF完全可以解決實時業務,所以不推薦將RTP優先隊列與CBQ結合應用。
由于對進入RTP優先隊列的報文進行了限速,超出規定流量的報文將被丟棄,這樣在接口擁塞的情況下,可以保證屬于RTP優先隊列的報文不會占用超出規定的帶寬,保護了其他報文的應得帶寬,解決了PQ的高優先級隊列的流量可能“餓死”低優先級流量的問題。
擁塞避免原理
受限于設備的內存資源,按照傳統的處理方法,當隊列的長度達到規定的最大長度時,所有到來的報文都被丟棄。對于TCP報文,如果大量的報文被丟棄,將造成TCP超時,從而引發TCP的慢啟動和擁塞避免機制,使TCP減少報文的發送。當隊列同時丟棄多個TCP連接的報文時,將造成多個TCP連接同時進入慢啟動和擁塞避免,稱之為:TCP全局同步。這樣多個TCP連接發向隊列的報文將同時減少,使得發向隊列的報文的量不及線路發送的速度,減少了線路帶寬的利用。并且,發向隊列的報文的流量總是忽大忽小,使線路的上的流量總在極少和飽滿之間波動。
為了避免這種情況的發生,隊列可以采用加權隨機早期檢測WRED(Weighted Random Early Detection)的報文丟棄策略(WRED與RED的區別在于前者引入IP優先權,DSCP值,和MPLS EXP來區別丟棄策略)。采用WRED時,用戶可以設定隊列的閾值(threshold)。當隊列的長度小于低閾值時,不丟棄報文;當隊列的長度在低閾值和高閾值之間時,WRED開始隨機丟棄報文(隊列的長度越長,丟棄的概率越高);當隊列的長度大于高閾值時,丟棄所有的報文。
WRED和隊列機制的關系如下圖所示:
圖8 WRED處理方式示意圖
流量監管原理
流量監管(Commit Access Rate,簡稱CAR)的典型作用是限制進入某一網絡的某一連接的流量與突發。在報文滿足一定的條件時,如某個連接的報文流量過大,流量監管就可以對該報文采取不同的處理動作,例如丟棄報文,或重新設置報文的優先級等。通常的用法是使用CAR來限制某類報文的流量,例如限制HTTP報文不能占用超過50%的網絡帶寬。
CAR利用令牌桶(Token Bucket,簡稱TB)進行流量控制。下圖所示為利用CAR進行流量控制的基本處理過程:
圖9 CAR處理方式示意圖
首先,根據預先設置的匹配規則來對報文進行分類,如果是沒有規定流量特性的報文,就直接繼續發送,并不需要經過令牌桶的處理;如果是需要進行流量控制的報文,則會進入令牌桶中進行處理。如果令牌桶中有足夠的令牌可以用來發送報文,則允許報文通過,報文可以被繼續發送下去。如果令牌桶中的令牌不滿足報文的發送條件,則報文被丟棄。這樣,就可以對某類報文的流量進行控制。
在實際應用中,CAR不僅可以用來進行流量控制,還可以進行報文的標記(mark)或重新標記(re-mark)。具體來講就是CAR可以設置IP報文的優先級或修改IP報文的優先級,達到標記報文的目的。
流量整型原理
通用流量整形(Generic Traffic Shaping,簡稱GTS)可以對不規則或不符合預定流量特性的流量進行整形,以利于網絡上下游之間的帶寬匹配。
GTS與CAR一樣,均采用了令牌桶技術來控制流量。GTS與CAR的主要區別在于:利用CAR在接口的出、入方向進行報文的流量控制,對不符合流量特性的報文進行丟棄;而GTS只在接口的出方向對于不符合流量特性的報文進行緩沖,減少了報文的丟棄,同時滿足報文的流量特性,但增加了報文的延遲。
GTS的基本處理過程如下圖所示,其中用于緩存報文的隊列稱為GTS隊列。
圖10 GTS處理過程示意圖
物理接口總速率限制原理
利用物理接口總速率限制(Line Rate,簡稱LR)可以在一個物理接口上,限制接口發送報文(包括緊急報文)的總速率。
LR的處理過程仍然采用令牌桶進行流量控制。如果用戶在路由器的某個接口上配置了LR,規定了流量特性,則所有經由該接口發送的報文首先要經過LR的令牌桶進行處理。如果令牌桶中有足夠的令牌可以用來發送報文,則報文可以發送。如果令牌桶中的令牌不滿足報文的發送條件,則報文入QoS隊列進行擁塞管理。這樣,就可以對通過該物理接口的報文流量進行控制。
LR的基本處理過程如下圖所示:
圖11 LR處理過程示意圖
其他提高QoS的技術
鏈路效率機制
鏈路效率機制,用于改善鏈路的性能,間接提高網絡的QoS,如降低鏈路發包的時延(針對特定業務)、調整有效帶寬。鏈路效率機制有很多種,下面介紹兩種比較典型的鏈路效率機制及其基本原理。
1 鏈路分片與交叉(Link Fragment & Interleave,LFI)
對于低速鏈路,即使為語音等實時業務報文配置了高優先級隊列(如RTP優先隊列或LLQ),也不能夠保證其時延與抖動,原因在于接口在發送其他數據報文的瞬間,語音業務報文只能等待,而對于低速接口發送較大的數據報文要花費相當長的時間。采用LFI以后,數據報文(非RTP實時隊列和LLQ中的報文)在發送前被分片、逐一發送,而此時如果有語音報文到達則被優先發送,從而保證了語音等實時業務的時延與抖動。LFI主要用于低速鏈路。
鏈路效率機制的工作原理圖如下所示:
圖12 LFI處理過程示意圖
如上圖所示,應用LFI技術,在大報文出隊的時候,可以將其分為定制長度的小片報文,這就使RTP優先隊列或LLQ中的報文不必等到大片報文發完后再得到調度,它等候的時間只是其中小片報文的發送時間,這樣就很大程度的降低了低速鏈路因為發送大片報文造成的時延。
2 RTP報文頭壓縮(RTP Header Compression,CRTP)
CRTP用于RTP(Real-time Transport Protocol)協議,對IP頭、UDP頭和RTP頭進行壓縮,通常在低速鏈路上使用。可將40字節的IP/UDP/RTP頭壓縮到2~4個字節(不使用UDP校驗和可到2字節),提高鏈路帶寬的利用率。CRTP主要得益于同一會話的語音分組頭和語音分組頭之間的差別往往是不變的,因此只需傳遞增量。
RTP協議用于在IP網絡上承載語音、視頻等實時多媒體業務。RTP報文包括頭部分和數據部分,RTP的頭部分包括:12字節的RTP頭,加上20字節的IP頭和8字節的UDP頭,就是40字節的IP/UDP/RTP頭;RTP數據部分典型載荷是20字節到160字節。為了避免不必要的帶寬消耗,可以使用CRTP特性對報文頭進行壓縮。CRTP可以將IP/UDP/RTP頭從40字節壓縮到2~4字節,對于40字節的載荷,頭壓縮到4字節,壓縮比為(40+40)/(40+4),約為1.82,可見效果是相當可觀的,可以有效的減少鏈路帶寬的消耗,尤其是低速鏈路。
RTP報文頭壓縮的處理過程如下圖所示:
圖13 CRTP處理過程示意圖
鏈路層QoS技術
鏈路層QoS技術主要針對ATM(Asynchronous Transfer Mode,異步傳輸模式)、幀中繼等鏈路層協議支持QoS。ATM作為一種面向連接的技術,提供對QoS最強有力的支持,而且可以基于每個連接提供特定的QoS保證;幀中繼網絡確保連接的CIR(Committed Information Rate,承諾信息速率)最小,即在網絡擁塞時,傳輸速度不能小于這個值。
1 ATM QoS
ATM是異步傳輸模式(Asynchronous Transfer Mode)的簡稱,以信元為基本單位進行信息傳輸、復接和交換。ATM信元具有53字節的固定長度,其中5個字節構成信元頭部,主要用來標識虛連接,另外也完成了一些功能有限的流量控制,擁塞控制,差錯控制等功能,其余48個字節是有效載荷。ATM是面向連接的交換,其連接是邏輯連接,即虛電路。每條虛電路(Virtual Circuit,VC)用虛路徑標識符(Virtual Path Identifier,VPI)和虛通道標識符(Virtual Channel Identifier,VCI)來標識。一個VPI/VCI值對只具有本地意義,不具有全局有效性。它在ATM節點上被翻譯。當一個連接被釋放時,與此相關的VPI/VCI值對也被釋放,它被放回資源表,供其它連接使用。
ATM中每一條VC都有一定的QoS保障,這是由ATM的連接管理來實現的。當用戶與網絡或網絡與網絡建立一個連接的時候,雙方就確定了一份通信契約,契約中包括流量參數和QoS參數兩部分。此通信契約為雙方所共識,雙方必須遵守。流量參數包括峰值信元速率(PCR,Peak Cell Rate)、持續信元速率(SCR,Sustained Cell Rate)、最小信元速率(MCR,Minimum Cell Rate)以及最大突發量(MBS,Maximum Burst Size),它們描述業務本身的流量特性,又稱為源流量參數。QoS參數主要包括最大信元傳遞時延(MCTD,MeanCell Transfer Delay)、信元抖動容限(CDVT,CellDelayVariationTolerance)和信元丟失率(CLR,Cell Loss Ratio), MCTD是信元從一個端點到另一個端點所需要的時間, CDVT是信元間隔的上限, CLR是可以接受的因網絡擁塞而導致信元丟失比例。
ATM端系統負責確保傳輸的流量符合QoS合同。ATM端系統通過緩沖數據來對流量進行整形,并按約定的QoS參數傳輸通信。ATM交換機控制每個用戶的通信指標,并將其與QoS合同進行比較。對于超過了QoS合同的通信,ATM節點可以設置信元的CLP(Cell Loss Priority,信元丟棄優先級)位。在網絡擁塞時,CLP置位的信元被丟棄的可能性更大。
ATM網絡擁塞管理的基本思想在于:引入預防性控制措施,不再是出現擁塞之后再采取措施來消除擁塞,而是通過精心管理網絡資源來避免擁塞的出現。
2 FR QoS
FR(Frame Relay,幀中繼)是一種統計復用的協議,它能夠在單一物理傳輸線路上提供多條虛電路。每條虛電路用DLCI(Data Link Connection Identifier,數據鏈路連接標識)來標識。每條虛電路通過LMI(Local Management Interface,本地管理接口)協議檢測和維護虛電路的狀態。
幀中繼采用VC(Virtual Circuit)虛電路技術,即幀中繼傳送數據使用的傳輸鏈路是邏輯連接,而不是物理連接。虛電路是面向連接的,可以保證用戶幀按順序傳送至目的地。根據虛電路建立方式的不同,將幀中繼虛電路分為兩種類型:永久虛電路(PVC,Permanent Virtual Circuit)和交換虛電路(SVC,Switched Virtual Circuit)。PVC是手工設置產生的虛電路,而SVC是通過協議協商自動創建和刪除的虛電路。
幀中繼報頭中的3個位提供了幀中繼網絡中的擁塞控制機制,這3個位分別叫做向前顯式擁塞通知(FECN,Forward Explicit Congestion Notification)位、向后顯式擁塞通知(BECN,Backward Explicit Congestion Notification)位和丟棄合格(DE,Discard Eligible)位。可以通過幀中繼交換機將FECN位置1來告知諸如路由器等目標數據終端設備(DTE,Data Terminal Equipment),在幀從源傳送到目的地的方向發生了擁塞。幀中繼交換機將BECN位置1則告知目標路由器,在幀從源傳送到目的地的反方向上發生了擁塞。DE位由路由器或其他DTE設備設置,指出被標記的幀沒有傳輸的其他幀那么重要,它在幀中繼網絡中提供了一種基本的優先級機制,如果發生擁塞時,DE位置位的幀會被優先丟棄。
幀中繼流量整形(FRTS,Frame Relay Traffic Shaping)對從幀中繼VC輸出的通信進行整形,使之與配置速率一致,它將超出平均速率的分組放到緩沖區來使突發通信變得平滑。根據配置的排隊機制,當有足夠的可用資源時,這些緩沖的分組出隊并等候被傳輸。排隊算法是基于單個VC配置的,它只能針對接口的出站通信進行設置。FRTS可對每個VC的流量進行整形,將其峰值速率整形為承諾信息速率(CIR,Committed Information Rate)或其他定義的值,如超額信息速率(EIR,Excess Information Rate)。自適應模式的FRTS還能夠根據收到的網絡BECN擁塞指示符降低幀中繼VC的輸出量,將PVC的輸出流量整形為與網絡的可用帶寬一致。
評論
查看更多