您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>通信技術(shù)>數(shù)據(jù)通信>

什么是數(shù)據(jù)通信的擁塞控制

2010年03月18日 14:58 wenjunhu.com 作者:佚名 用戶評論(0

什么是數(shù)據(jù)通信的擁塞控制

擁塞現(xiàn)象是指到達(dá)通信子網(wǎng)中某一部分的分組數(shù)量過多,使得該部分網(wǎng)絡(luò)來不及處理,以致引起這部分乃至整個網(wǎng)絡(luò)性能下降的現(xiàn)象,嚴(yán)重時甚至?xí)?dǎo)致網(wǎng)絡(luò)通信業(yè)務(wù)陷入停頓,即出現(xiàn)死鎖現(xiàn)象。這種現(xiàn)象跟公路網(wǎng)中經(jīng)常所見的交通擁擠一樣,當(dāng)節(jié)假日公路網(wǎng)中車輛大量增加時,各種走向的車流相互干擾,使每輛車到達(dá)目的地的時間都相對增加(即延遲增加),甚至有時在某段公路上車輛因堵塞而無法開動(即發(fā)生局部死鎖)。

網(wǎng)絡(luò)的吞吐量與通信子網(wǎng)負(fù)荷(即通信子網(wǎng)中正在傳輸?shù)姆纸M數(shù))有著密切的關(guān)系。當(dāng)通信子網(wǎng)負(fù)荷比較小時,網(wǎng)絡(luò)的吞吐量(分組數(shù)/秒)隨網(wǎng)絡(luò)負(fù)荷(每個節(jié)點(diǎn)中分組的平均數(shù))的增加而線性增加。當(dāng)網(wǎng)絡(luò)負(fù)荷增加到某一值后,若網(wǎng)絡(luò)吞吐量反而下降,則表征網(wǎng)絡(luò)中出現(xiàn)了擁塞現(xiàn)象。在一個出現(xiàn)擁塞現(xiàn)象的網(wǎng)絡(luò)中,到達(dá)某個節(jié)點(diǎn)的分組將會遇到無緩沖區(qū)可用的情況,從而使這些分組不得不由前一節(jié)點(diǎn)重傳,或者需要由源節(jié)點(diǎn)或源端系統(tǒng)重傳。當(dāng)擁塞比較嚴(yán)重時,通信子網(wǎng)中相當(dāng)多的傳輸能力和節(jié)點(diǎn)緩沖器都用于這種無謂的重傳,從而使通信子網(wǎng)的有效吞吐量下降。由此引起惡性循環(huán),使通信子網(wǎng)的局部甚至全部處于死鎖狀態(tài),最終導(dǎo)致網(wǎng)絡(luò)有效吞吐量接近為零。

1.擁塞控制方法

(1)緩沖區(qū)預(yù)分配法。該法用于虛電路分組交換網(wǎng)中。在建立虛電路時,讓呼叫請求分組途經(jīng)的節(jié)點(diǎn)為虛電路預(yù)先分配一個或多個數(shù)據(jù)緩沖區(qū)。若某個節(jié)點(diǎn)緩沖器已被占滿,則呼叫請求分組另擇路由,或者返回一個"忙"信號給呼叫者。這樣,通過途經(jīng)的各節(jié)點(diǎn)為每條虛電路開設(shè)的永久性緩沖區(qū)(直到虛電路拆除),就總能有空間來接納并轉(zhuǎn)送經(jīng)過的分組。此時的分組交換跟電路交換很相似。當(dāng)節(jié)點(diǎn)收到一個分組并將它轉(zhuǎn)發(fā)出去之后,該節(jié)點(diǎn)向發(fā)送節(jié)點(diǎn)返回一個確認(rèn)信息。該確認(rèn)一方面表示接收節(jié)點(diǎn)已正確收到分組,另一方面告訴發(fā)送節(jié)點(diǎn),該節(jié)點(diǎn)已空出緩沖區(qū)以備接收下一個分組。上面是"停一等"協(xié)議下的情況,若節(jié)點(diǎn)之間的協(xié)議允許多個未處理的分組存在,則為了完全消除擁塞的可能性,每個節(jié)點(diǎn)要為每條虛電路保留等價于窗口大小數(shù)量的緩沖區(qū)。這種方法不管有沒有通信量,都有可觀的資源(線路容量或存儲空間)被某個連接占有,因此網(wǎng)絡(luò)資源的有效利用率不高。這種控制方法主要用于要求高帶寬和低延遲的場合,例如傳送數(shù)字化語音信息的虛電路。

(2)分組丟棄法。該法不必預(yù)先保留緩沖區(qū),當(dāng)緩沖區(qū)占滿時,將到來的分組丟棄。若通信子網(wǎng)提供的是數(shù)據(jù)報服務(wù),則用分組丟棄法來防止擁塞發(fā)生不會引起大的影響。但若通信子網(wǎng)提供的是虛電路服務(wù),則必須在某處保存被丟棄分組的備份,以便擁塞解決后能重新傳送。有兩種解決被丟棄分組重發(fā)的方法,一種是讓發(fā)送被丟棄分組的節(jié)點(diǎn)超時,并重新發(fā)送分組直至分組被收到;另一種是讓發(fā)送被丟棄分組的節(jié)點(diǎn)在嘗試一定次數(shù)后放棄發(fā)送,并迫使數(shù)據(jù)源節(jié)點(diǎn)超時而重新開始發(fā)送。但是不加分辨地隨意丟棄分組也不妥,因?yàn)橐粋€包含確認(rèn)信息的分組可以釋放節(jié)點(diǎn)的緩沖區(qū),若因節(jié)點(diǎn)元空余緩沖區(qū)來接收含確認(rèn)信息的分組,這便使節(jié)點(diǎn)緩沖區(qū)失去了一次釋放的機(jī)會。解決這個問題的方法可以為每條輸入鏈路永久地保留一塊緩沖區(qū),以用于接納并檢測所有進(jìn)入的分組,對于捎帶確認(rèn)信息的分組,在利用了所捎帶的確認(rèn)釋放緩沖區(qū)后,再將該分組丟棄或?qū)⒃撋訋Ш孟⒌姆纸M保存在剛空出的緩沖區(qū)中。

(3)定額控制法。這種方法在通信子網(wǎng)中設(shè)置適當(dāng)數(shù)量的稱做"許可證"的特殊信息,一部分許可證在通信子網(wǎng)開始工作前預(yù)先以某種策略分配給各個源節(jié)點(diǎn),另一部分則在子網(wǎng)開始工作后在網(wǎng)中四處環(huán)游。當(dāng)源節(jié)點(diǎn)要發(fā)送來自源端系統(tǒng)的分組時,它必須首先擁有許可證,并且每發(fā)送一個分組注銷一張?jiān)S可證。目的節(jié)點(diǎn)方則每收到一個分組并將其遞交給目的端系統(tǒng)后,便生成一張?jiān)S可證。這樣便可確保子網(wǎng)中分組數(shù)不會超過許可證的數(shù)量,從而防止了擁塞的發(fā)生。 2.死鎖及其防止擁塞的極端后果是死鎖。

死鎖是網(wǎng)絡(luò)中最容易發(fā)生的故障之一,即使在網(wǎng)絡(luò)負(fù)荷不很重時也會發(fā)生。死鎖發(fā)生時,一組節(jié)點(diǎn)由于沒有空閑緩沖區(qū)而元法接收和轉(zhuǎn)發(fā)分組,節(jié)點(diǎn)之間相互等待,既不能接收分組也不能轉(zhuǎn)發(fā)分組,并一直保持這一僵局,嚴(yán)重時甚至導(dǎo)致整個網(wǎng)絡(luò)的癱瘓。此時,只能靠人工干預(yù)來重新啟動網(wǎng)絡(luò),解除死鎖。但重新啟動后并未消除引起死鎖的隱患,所以可能再次發(fā)生死鎖。死鎖是由于控制技術(shù)方面的某些缺陷所引起的,起因通常難以捉摸、難以發(fā)現(xiàn),即使發(fā)現(xiàn),也常常不能立即修復(fù)。因此,在各層協(xié)議中都必須考慮如何避免死鎖的問題。

(1)存儲轉(zhuǎn)發(fā)死鎖及其防止。最常見的死鎖是發(fā)生在兩個節(jié)點(diǎn)之間的直接存儲轉(zhuǎn)發(fā)死鎖。例如,A節(jié)點(diǎn)的所有緩沖區(qū)裝滿了等待輸出到B節(jié)點(diǎn)的分組,而B節(jié)點(diǎn)的所有緩沖區(qū)也全部裝滿了等待輸出到A節(jié)點(diǎn)的分組;此時,A節(jié)點(diǎn)不能從B節(jié)點(diǎn)接收分組,B節(jié)點(diǎn)也不能從A節(jié)點(diǎn)接收分組,從而造成兩節(jié)點(diǎn)間的死鎖。這種情況也可能發(fā)生在一組節(jié)點(diǎn)之間,例如,A節(jié)點(diǎn)企圖向B節(jié)點(diǎn)發(fā)送分組、B節(jié)點(diǎn)企圖向C節(jié)點(diǎn)發(fā)送分組、而C節(jié)點(diǎn)又企圖向A節(jié)點(diǎn)發(fā)送分組,但此時每個節(jié)點(diǎn)都無空閑緩沖區(qū)用于接收分組,這種情形稱做間接存儲轉(zhuǎn)發(fā)死鎖。當(dāng)一個節(jié)點(diǎn)處于死鎖狀態(tài)時,所有與之相連的鏈路將被完全擁塞。

一種防止存儲轉(zhuǎn)發(fā)死鎖的方法是,每個節(jié)點(diǎn)設(shè)置M+1個緩沖區(qū),并以0到M編號。M為通信子網(wǎng)的直徑,即從任一源節(jié)點(diǎn)到任一目的節(jié)點(diǎn)間的最大鏈路段數(shù)。每個源節(jié)點(diǎn)僅當(dāng)其0號緩沖區(qū)空時才能接收源端系統(tǒng)來的分組,而此分組僅能轉(zhuǎn)發(fā)給1號緩沖區(qū)空閑的相鄰節(jié)點(diǎn),再由該節(jié)點(diǎn)將分組轉(zhuǎn)發(fā)給它的2號緩沖區(qū)空閑的相鄰節(jié)點(diǎn)……最后,該分組或者順利到達(dá)目的節(jié)點(diǎn)并被遞交給目的端系統(tǒng),或者到了某個節(jié)點(diǎn)編號為M的緩沖區(qū)中再也轉(zhuǎn)發(fā)不下去,此時一定發(fā)生了循環(huán),應(yīng)該將該分組丟棄。由于每個分組都是按照編號遞增規(guī)則分配緩沖區(qū),所以節(jié)點(diǎn)之間不會相互等待空閑緩沖區(qū)而發(fā)生死鎖現(xiàn)象。這種方法的不足之處在于,當(dāng)某節(jié)點(diǎn)雖然有空閑緩沖區(qū),但正巧沒有所需要的特定編號的緩沖區(qū)時,分組仍要等待,從而造成了緩沖區(qū)和鏈路的浪費(fèi)。

另一種防止存儲轉(zhuǎn)發(fā)死鎖的方法是,使每個分組上都攜帶一個全局性的惟一的"時間戳",每個節(jié)點(diǎn)要為每條輸入鏈路保留一個特殊的接收緩沖區(qū),而其它緩沖區(qū)均可用于存放中轉(zhuǎn)分組。在每條輸出鏈路的隊(duì)列上分組按時間戳順序排隊(duì)。例如,節(jié)點(diǎn)A要將分組送到節(jié)點(diǎn)B,若B節(jié)點(diǎn)沒有空閑緩沖區(qū),但正巧有要送到A節(jié)點(diǎn)的分組,此時A、B節(jié)點(diǎn)可通過特殊的接收緩沖區(qū)交換分組;若B節(jié)點(diǎn)既沒有空閑緩沖區(qū),也沒有要送往A節(jié)點(diǎn)的分組,B節(jié)點(diǎn)只好強(qiáng)行將一個出路方向大致與A節(jié)點(diǎn)方向相同的分組與A節(jié)點(diǎn)互相交換分組,但此時A節(jié)點(diǎn)中的分組必須比B節(jié)點(diǎn)中的分組具有更早的時間戳,這樣才能保證子網(wǎng)中某個最早的分組不受阻擋地轉(zhuǎn)發(fā)到目的地。由此可見,每個分組最終總會成為最早的分組,并總能被一步一步地發(fā)送到目的節(jié)點(diǎn),從而避免了死鎖現(xiàn)象的發(fā)生。

(2)重裝死鎖及其防止。死鎖中比較嚴(yán)重的情況是重裝死鎖。假設(shè)發(fā)給一個端系統(tǒng)的報文很長,被源節(jié)點(diǎn)拆成若干個分組發(fā)送,目的節(jié)點(diǎn)要將所有具有相同編號的分組重新裝配成報文遞交給目的端系統(tǒng),若目的節(jié)點(diǎn)用于重裝報文的緩沖區(qū)空間有限,而且它無法知道正在接收的報文究竟被拆成多少個分組,此時,就可能發(fā)生嚴(yán)重的問題:為了接收更多的分組,該目的節(jié)點(diǎn)用完了它的緩沖空間,但它又不能將尚未拼裝完整的報文遞送給目的端系統(tǒng),而鄰節(jié)點(diǎn)仍在不斷地向它傳送分組,但它卻無法接收。這樣,經(jīng)過多次嘗試后,鄰節(jié)點(diǎn)就會繞道從其它途徑再向該目的節(jié)點(diǎn)傳送分組,但該目的節(jié)點(diǎn)已被死鎖,其周邊區(qū)域也由此發(fā)生了擁塞。下面幾種方法可用以避免重裝死鎖的發(fā)生:

①允許目的節(jié)點(diǎn)將不完整的報文遞交給目的端系統(tǒng);

②一個不能完整重裝的報文能被檢測出來,并要求發(fā)送該報文的源端系統(tǒng)重新傳送;

③為每個節(jié)點(diǎn)配備一個后備緩沖空間,用以暫存不完整的報文。

①、②兩種方法不能很滿意地解決重裝死鎖,因?yàn)樗鼈兪苟讼到y(tǒng)中的協(xié)議復(fù)雜化了。一般的設(shè)計(jì)中,網(wǎng)絡(luò)層應(yīng)該對端系統(tǒng)透明,也即端系統(tǒng)不該考慮諸如報文拆、裝之類的事。③方法雖然不涉及端系統(tǒng),但使每個節(jié)點(diǎn)增加了開銷。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

( 發(fā)表人:admin )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?