一、引述
網(wǎng)絡(luò)擁塞(Congestion)是指在通信子網(wǎng)內(nèi)局部(單個節(jié)點或數(shù)個節(jié)點)或全局性地發(fā)生數(shù)據(jù)流通不暢或阻塞的現(xiàn)象,嚴(yán)重時可能造成死鎖(Dead-locked)。可能造成擁塞的原因很多,例如,用戶注入通信子網(wǎng)的數(shù)據(jù)過多、過快;在某一節(jié)點上多條輸入線路瞬時指向同一條線路的輸出數(shù)據(jù)過多、過快,超出了節(jié)點處理能力或線路輸出能力;輸出隊列過長耗盡緩存空間等等。擁塞現(xiàn)象很容易發(fā)生連鎖反應(yīng),例如,單節(jié)點發(fā)生擁塞時,如果數(shù)據(jù)較集中地指向同一目標(biāo),擁塞可能沿傳輸路徑逆向擴(kuò)散。另外,如果試圖緩解擁塞的措施不當(dāng)也可能使擁塞情況更加惡化,例如,當(dāng)發(fā)生擁塞的節(jié)點為了減少對該節(jié)點的壓力,將新到達(dá)的報文丟棄時,又可能由于“確認(rèn)超時”(Timeout )而引起大量的數(shù)據(jù)重傳。
盡管好的流量控制和路徑選擇技術(shù),有利于減小擁塞的發(fā)生或在一定程度上減緩擁塞,但流控、選徑技術(shù)并不能替代擁塞控制,必須在網(wǎng)內(nèi)設(shè)計相應(yīng)的專門的擁塞控制策略,盡量避免擁塞的發(fā)生和在發(fā)生擁塞時能夠緩解和解除擁塞。
擁塞控制(Congestion Control)技術(shù)可以分為開環(huán)控制與閉環(huán)控制兩大類。開環(huán)控制的基本思想是通過適當(dāng)?shù)牟呗员M量避免擁塞發(fā)生,其策略包括:限制輸入流量、適時丟棄報文或分組以及為某些網(wǎng)絡(luò)節(jié)點制訂擁塞控制決策措施等。閉環(huán)控制實質(zhì)上是反饋控制,它以擁塞狀況檢測數(shù)據(jù)為基礎(chǔ),通知或告誡相關(guān)節(jié)點采取措施阻止擁塞發(fā)生或緩解擁塞狀況。閉環(huán)擁塞控制過程通常由3個步驟構(gòu)成,詳見下表1所述。
表 1:閉環(huán)擁塞控制過程的步驟
二、擁塞預(yù)防策略
在網(wǎng)絡(luò)層擁塞預(yù)防策略包括多個方面,下表2-0給出了不同種常用的策略。將在下面分別專門討論其中的3種策略:限制入網(wǎng)數(shù)據(jù)流的策略、基于服務(wù)質(zhì)量的策略和資源預(yù)留策略。
表 2-0:網(wǎng)絡(luò)層擁塞預(yù)防的常用策略總述
1、限制入網(wǎng)數(shù)據(jù)流的策略(Traffic Shaping)
大量的突發(fā)性數(shù)據(jù)注入網(wǎng)內(nèi)往往是造成網(wǎng)絡(luò)擁塞的重要原因。一種限制過量突發(fā)數(shù)據(jù)入網(wǎng)方法稱為平滑數(shù)據(jù)流的策略,其具體做法是:根據(jù)服務(wù)質(zhì)量合同,采用限制各邏輯鏈路上的入網(wǎng)速率(承諾速率、承諾的突發(fā)速率和承諾的額外突發(fā)速率)。限制入網(wǎng)數(shù)據(jù)流的策略屬于開環(huán)擁塞控制手段,也可以歸入預(yù)防性策略之中。下面討論的兩種算法也屬于限制入網(wǎng)數(shù)據(jù)流的策略。
1)漏桶算法:“漏桶算法(Leaky Bucket Algorithm)”借用廚房中使用漏桶以漏孔限制水流的思路來限制入網(wǎng)數(shù)據(jù)。當(dāng)漏桶盛滿水時,水從漏桶上面溢出;“漏桶算法”限定單位時間內(nèi)允許單臺計算機(jī)網(wǎng)絡(luò)注入網(wǎng)絡(luò)的數(shù)據(jù)量(相當(dāng)于“漏孔”大小),當(dāng)待入網(wǎng)數(shù)據(jù)過多時,則將多余部分丟棄(類似于水從漏桶上方溢出)。平滑數(shù)據(jù)流中的具體實現(xiàn)方式至少有如下表2-1-1的兩種。
表 2-1-1:平滑數(shù)據(jù)流中的具體實現(xiàn)方式
2)變孔徑漏桶算法:采用上面介紹的“漏桶算法”過于死板,嚴(yán)格限制單個主機(jī)單位時間內(nèi)允許注入網(wǎng)絡(luò)的數(shù)據(jù),如果某時段無數(shù)據(jù)或待發(fā)數(shù)據(jù)少于限量值(固定孔徑)在下一時段不能利用過去未用的額度。由于任一主機(jī)期望注入網(wǎng)絡(luò)的數(shù)據(jù)率在時間上的分布規(guī)律不同,在某些時刻,無數(shù)據(jù)發(fā)送或需發(fā)的數(shù)據(jù)較少,而在另外一些時刻又可能產(chǎn)生較大量的突發(fā)性數(shù)據(jù)。如果允許將未用盡的發(fā)送額度保留一個最大的限額,待有突發(fā)性數(shù)據(jù)時使用(有些像偶然地適當(dāng)放大“漏孔”),則既能夠適應(yīng)突發(fā)性數(shù)據(jù)的傳輸,又能夠保證整個網(wǎng)絡(luò)的入網(wǎng)數(shù)據(jù)仍然大體保持平衡(各主機(jī)突發(fā)數(shù)據(jù)產(chǎn)生的時刻不同)。這種算法稱為“變孔徑漏桶法”(Token Bucket Algorithm),規(guī)定一個正常孔徑,平時發(fā)送量受該孔徑限制,當(dāng)前面的計時周期內(nèi)未超過正常孔徑允許的發(fā)送數(shù)據(jù)時,節(jié)余的發(fā)送量可用于本周期發(fā)送,此時的發(fā)送限額,大于正常孔徑。這種可變的發(fā)送孔徑就是本次的發(fā)送限額,也即“Token”。
2、基于服務(wù)質(zhì)量的策略
限制入網(wǎng)速率的方法不僅限于主機(jī),這一方法可以推廣到網(wǎng)絡(luò)設(shè)備(如路由器),通過網(wǎng)絡(luò)設(shè)備的配合實現(xiàn)在一對端系統(tǒng)主機(jī)間進(jìn)行數(shù)據(jù)流的平滑控制。IETF的RFC 1363建議了一種在平滑控制中用于描述數(shù)據(jù)流的注入模式和期望的服務(wù)質(zhì)量的方法。這種方法的基本思路是:在(無連接服務(wù)的)數(shù)據(jù)報文序列發(fā)送前或在(有連接服務(wù))建立連接前,發(fā)送方通過數(shù)據(jù)流的描述詢問通信子網(wǎng)是否可接受;如果可以接受,則繼續(xù)向前進(jìn)行這一過程。被詢問方的應(yīng)答可能是:接受、拒絕或者提出自身可接受的數(shù)據(jù)流描述。這一過程將一直進(jìn)行到收方、發(fā)方與通信子網(wǎng)三方取得一致意見為止。大家可能已經(jīng)意識到,上述策略盡管沒有提到建立連接,但實質(zhì)上是在一對主機(jī)與中間經(jīng)過的服務(wù)器間建立一條能夠滿足請求方所要求的服務(wù)質(zhì)量的連接。這也再次說明,有連接服務(wù)在保證服務(wù)質(zhì)量方面優(yōu)于無連接服務(wù)。表2-2舉例說明了數(shù)據(jù)流描述的可能內(nèi)容,其中,表中第1列的參數(shù)用于描述輸入數(shù)據(jù)流的特征;第2列描述發(fā)送方期望通信子網(wǎng)提供的服務(wù)質(zhì)量的相關(guān)參數(shù)。
表 2-2:數(shù)據(jù)流描述的可能內(nèi)容舉例
面向連接的OSI網(wǎng)絡(luò)服務(wù)從保證服務(wù)質(zhì)量的角度,定義了服務(wù)質(zhì)量協(xié)商過程,即在連接建立之初,端系統(tǒng)的網(wǎng)絡(luò)服務(wù)用戶與網(wǎng)絡(luò)服務(wù)提供者(通信子網(wǎng))之間共同商定某連接在其存在過程中提供的網(wǎng)絡(luò)服務(wù)質(zhì)量。應(yīng)當(dāng)指出,盡管基于服務(wù)質(zhì)量的策略客觀上起到了一定平滑數(shù)據(jù)流的作用,但無論再好的預(yù)防策略都很難保證不會發(fā)生擁塞,因此,網(wǎng)絡(luò)中還必須具備在發(fā)生擁塞后緩解或消除擁塞的措施。
3、資源預(yù)留策略
資源預(yù)留策略的出發(fā)點實質(zhì)上是保證服務(wù)質(zhì)量,盡管在客觀上起到一定減少發(fā)生擁塞的可能性的作用。最有代表性的資源預(yù)留協(xié)議是Internet中的RSVP(Resource Reservation Protocol)(RFC 2205)。RSVP試圖在無連接的IP協(xié)議之上,在發(fā)送方和接收方之間,為特定的單向數(shù)據(jù)流提供傳輸服務(wù)質(zhì)量保證。由于IP協(xié)議中各報文傳輸?shù)穆窂娇勺儯?wù)質(zhì)量的保證必須由一對收、發(fā)方之間的所有中間節(jié)點(路由器)來保證,因此,對此特定的數(shù)據(jù)流實質(zhì)上需要在收發(fā)方和途經(jīng)的各路由器之間建立一條“連接”。一旦通過RSVP協(xié)商后,各路由器就必須為保證該信息流的傳輸預(yù)留相應(yīng)的資源。資源的預(yù)留,在一定程度上起到減緩擁塞的作用。
有關(guān)RSVP的具體內(nèi)容請參見RFC 2205。為了能根據(jù)擁塞情況采取解救措施,首先需要能感知擁塞即將或已經(jīng)發(fā)生,然后將擁塞信息傳遞給能夠緩解擁塞的節(jié)點,以便采取相應(yīng)的措施。這種擁塞控制方式屬于閉環(huán)控制,下面我們將討論閉環(huán)擁塞控制技術(shù)。
三、閉環(huán)擁塞控制技術(shù)
1、概述
閉環(huán)擁塞控制技術(shù)的出發(fā)點是當(dāng)發(fā)生擁塞時,限制入網(wǎng)數(shù)據(jù)流以緩解網(wǎng)絡(luò)的壓力。對于面向連接的網(wǎng)絡(luò)服務(wù),除可以限制主機(jī)注入網(wǎng)內(nèi)的分組數(shù)外(例如:直接減緩發(fā)送或減小窗口大小),還可采用限制新連接的建立或限制新連接通過擁塞區(qū)的方式進(jìn)一步限制新數(shù)據(jù)流的引入。閉環(huán)擁塞控制手段啟用的前提是發(fā)生了擁塞,因此,要應(yīng)用這類技術(shù)必須首先發(fā)現(xiàn)擁塞。為此,各網(wǎng)絡(luò)節(jié)點必須對相關(guān)的線路利用率進(jìn)行周期性的監(jiān)測,通過線路利用率的歷史和近況求得線路利用率。計算公式如下式所示,式中的符號的含義及參數(shù)的取值詳見下表3-1。
u(新)=α u(舊)+(1-α)f
表 3-1:符號的含義及參數(shù)的取值范圍
每個網(wǎng)絡(luò)節(jié)點可以將u等于某值(例如0.9)時定義為輸出線路擁塞的閾值,一旦某輸出線路的利用率達(dá)到該值,該線路即進(jìn)入“警告”狀態(tài)。當(dāng)新的分組或報文到達(dá)該節(jié)點時,如果其相應(yīng)的輸出線路處于“警告”狀態(tài),則該節(jié)點將向該分組的源主機(jī)發(fā)送一“限流”分組(Choke Packet)或報文。當(dāng)源主機(jī)收到此限流分組或報文后,將按規(guī)定將其發(fā)向特定目的地的分組或報文減小一定比例,從而起到緩解該節(jié)點及相關(guān)節(jié)點的擁塞狀況的作用。
2、相關(guān)方法
上述方式的應(yīng)用依賴于主機(jī)收到警告分組后自覺減少發(fā)送的數(shù)據(jù),但如果主機(jī)不遵守這一約定,擁塞仍得不到緩解。為此,有人提出了另一種方法稱為“公平排隊”(Fair Queuing)法。其基本思想是在網(wǎng)絡(luò)節(jié)點中的輸出線路上,為每一源主機(jī)設(shè)置一隊列,網(wǎng)絡(luò)節(jié)點對該線路的輸出隊列公平對待,輪流輸出一分組,因此,發(fā)送分組較多的源主機(jī)并不能獲得更多的發(fā)送機(jī)會(可以制約收到限流分組而不減少發(fā)送數(shù)據(jù)的主機(jī))。
公平排隊法以分組為基礎(chǔ)計算隊列長度,對于像ATM這樣定長信元的分組的確較公平,但對多數(shù)協(xié)議,由于分組長度是變化的,因此并不一定能實現(xiàn)對各信息源數(shù)據(jù)傳輸?shù)墓叫浴S腥私ㄗh的一種替代辦法是:對各隊列中的隊首分組進(jìn)行字節(jié)計數(shù),按從短到長的發(fā)送順序排列在輸出線路上。
以上兩種方法都強(qiáng)調(diào)對各信息源的公平性,但是,如果不同的信息流需要不同的服務(wù)質(zhì)量,特別是不同的數(shù)據(jù)傳輸速率,則這種“公平性”就不太合理(不同的用戶可能租用不同速率的傳輸服務(wù),繳納不同等級的費用)。因此,有人提出了加權(quán)公平排隊算法,對不同的信息源給予不同的權(quán)值,方法之一是以同一信息源主機(jī)建立的虛電路(連接)數(shù)為基礎(chǔ)賦予權(quán)值。
上述幾種方法都是基于“端到端”限流的方法,對于遠(yuǎn)距離傳輸,限流分組到達(dá)源端主機(jī)時間較長,緩解擁塞的效果可能不夠明顯。為此,可以采取逐級限流的方法,即限流分組直接反向發(fā)給上一節(jié)點或沿反向路徑中的所有節(jié)點,上一節(jié)點或反向路徑上的所有節(jié)點都立即減流,迅速緩解對擁塞節(jié)點的壓力。
擁塞控制的最后一招,也是最有效的手段是丟棄分組。如果上述手段仍無法緩解或消除擁塞,網(wǎng)絡(luò)節(jié)點可以將部分分組丟棄,這種方法被稱為“泄流法”(Load Shedding)。由于網(wǎng)中的分組丟棄后造成的影響因應(yīng)用不同而不同,如文件傳輸數(shù)據(jù)流的丟棄需要造成重傳,而圖像、話音部分?jǐn)?shù)據(jù)丟失可能影響不大等等,因此,應(yīng)當(dāng)采用選擇性地丟棄策略。在某些網(wǎng)絡(luò)中,如ATM網(wǎng),對數(shù)據(jù)丟棄定義了優(yōu)先權(quán),這樣網(wǎng)絡(luò)較容易實現(xiàn)合理地丟棄分組策略。
欲進(jìn)一步了解為我國IP網(wǎng)絡(luò)服務(wù)質(zhì)量要求的請進(jìn)入。