|
(3) 定額控制法。這種方法在通信子網(wǎng)中設(shè)置適當(dāng)數(shù)量的稱做"許可證"的特殊信息,一部分許可證在通信子網(wǎng)開始工作前預(yù)先以某種策略分配給各個(gè)源節(jié)點(diǎn),另一部分則在子網(wǎng)開始工作后在網(wǎng)中四處環(huán)游。當(dāng)源節(jié)點(diǎn)要發(fā)送來(lái)自源端系統(tǒng)的分組時(shí),它必須首先擁有許可證,并且每發(fā)送一個(gè)分組注銷一張?jiān)S可證。目的節(jié)點(diǎn)方則每收到一個(gè)分組并將其遞交給目的端系統(tǒng)后,便生成一張?jiān)S可證。這樣便可確保子網(wǎng)中分組數(shù)不會(huì)超過(guò)許可證的數(shù)量,從而防止了擁塞的發(fā)生。
死鎖及其防止
擁塞的極端后果是死鎖。
死鎖是網(wǎng)絡(luò)中最容易發(fā)生的故障之一,即使在網(wǎng)絡(luò)負(fù)荷不很重時(shí)也會(huì)發(fā)生。死鎖發(fā)生時(shí),一組節(jié)點(diǎn)由于沒(méi)有空閑緩沖區(qū)而元法接收和轉(zhuǎn)發(fā)分組,節(jié)點(diǎn)之間相互等待,既不能接收分組也不能轉(zhuǎn)發(fā)分組,并一直保持這一僵局,嚴(yán)重時(shí)甚至導(dǎo)致整個(gè)網(wǎng)絡(luò)的癱瘓。此時(shí),只能靠人工干預(yù)來(lái)重新啟動(dòng)網(wǎng)絡(luò),解除死鎖。但重新啟動(dòng)后并未消除引起死鎖的隱患,所以可能再次發(fā)生死鎖。死鎖是由于控制技術(shù)方面的某些缺陷所引起的,起因通常難以捉摸、難以發(fā)現(xiàn),即使發(fā)現(xiàn),也常常不能立即修復(fù)。因此,在各層協(xié)議中都必須考慮如何避免死鎖的問(wèn)題。
(1) 存儲(chǔ)轉(zhuǎn)發(fā)死鎖及其防止。最常見的死鎖是發(fā)生在兩個(gè)節(jié)點(diǎn)之間的直接存儲(chǔ)轉(zhuǎn)發(fā)死鎖。例如,A節(jié)點(diǎn)的所有緩沖區(qū)裝滿了等待輸出到B節(jié)點(diǎn)的分組,而B節(jié)點(diǎn)的所有緩沖區(qū)也全部裝滿了等待輸出到A節(jié)點(diǎn)的分組;此時(shí),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ā)送分組,但此時(shí)每個(gè)節(jié)點(diǎn)都無(wú)空閑緩沖區(qū)用于接收分組,這種情形稱做間接存儲(chǔ)轉(zhuǎn)發(fā)死鎖。當(dāng)一個(gè)節(jié)點(diǎn)處于死鎖狀態(tài)時(shí),所有與之相連的鏈路將被完全擁塞。
一種防止存儲(chǔ)轉(zhuǎn)發(fā)死鎖的方法是,每個(gè)節(jié)點(diǎn)設(shè)置M+1個(gè)緩沖區(qū),并以0到M編號(hào)。M為通信子網(wǎng)的直徑,即從任一源節(jié)點(diǎn)到任一目的節(jié)點(diǎn)間的最大鏈路段數(shù)。每個(gè)源節(jié)點(diǎn)僅當(dāng)其0號(hào)緩沖區(qū)空時(shí)才能接收源端系統(tǒng)來(lái)的分組,而此分組僅能轉(zhuǎn)發(fā)給1號(hào)緩沖區(qū)空閑的相鄰節(jié)點(diǎn),再由該節(jié)點(diǎn)將分組轉(zhuǎn)發(fā)給它的2號(hào)緩沖區(qū)空閑的相鄰節(jié)點(diǎn)……最后,該分組或者順利到達(dá)目的節(jié)點(diǎn)并被遞交給目的端系統(tǒng),或者到了某個(gè)節(jié)點(diǎn)編號(hào)為M的緩沖區(qū)中再也轉(zhuǎn)發(fā)不下去,此時(shí)一定發(fā)生了循環(huán),應(yīng)該將該分組丟棄。由于每個(gè)分組都是按照編號(hào)遞增規(guī)則分配緩沖區(qū),所以節(jié)點(diǎn)之間不會(huì)相互等待空閑緩沖區(qū)而發(fā)生死鎖現(xiàn)象。這種方法的不足之處在于,當(dāng)某節(jié)點(diǎn)雖然有空閑緩沖區(qū),但正巧沒(méi)有所需要的特定編號(hào)的緩沖區(qū)時(shí),分組仍要等待,從而造成了緩沖區(qū)和鏈路的浪費(fèi)。
另一種防止存儲(chǔ)轉(zhuǎn)發(fā)死鎖的方法是,使每個(gè)分組上都攜帶一個(gè)全局性的惟一的"時(shí)間戳",每個(gè)節(jié)點(diǎn)要為每條輸入鏈路保留一個(gè)特殊的接收緩沖區(qū),而其它緩沖區(qū)均可用于存放中轉(zhuǎn)分組。在每條輸出鏈路的隊(duì)列上分組按時(shí)間戳順序排隊(duì)。例如,節(jié)點(diǎn)A要將分組送到節(jié)點(diǎn)B,若B節(jié)點(diǎn)沒(méi)有空閑緩沖區(qū),但正巧有要送到A節(jié)點(diǎn)的分組,此時(shí)A、B節(jié)點(diǎn)可通過(guò)特殊的接收緩沖區(qū)交換分組;若B節(jié)點(diǎn)既沒(méi)有空閑緩沖區(qū),也沒(méi)有要送往A節(jié)點(diǎn)的分組,B節(jié)點(diǎn)只好強(qiáng)行將一個(gè)出路方向大致與A節(jié)點(diǎn)方向相同的分組與A節(jié)點(diǎn)互相交換分組,但此時(shí)A節(jié)點(diǎn)中的分組必須比B節(jié)點(diǎn)中的分組具有更早的時(shí)間戳,這樣才能保證子網(wǎng)中某個(gè)最早的分組不受阻擋地轉(zhuǎn)發(fā)到目的地。由此可見,每個(gè)分組最終總會(huì)成為最早的分組,并總能被一步一步地發(fā)送到目的節(jié)點(diǎn),從而避免了死鎖現(xiàn)象的發(fā)生。
(2) 重裝死鎖及其防止。死鎖中比較嚴(yán)重的情況是重裝死鎖。假設(shè)發(fā)給一個(gè)端系統(tǒng)的報(bào)文很長(zhǎng),被源節(jié)點(diǎn)拆成若干個(gè)分組發(fā)送,目的節(jié)點(diǎn)要將所有具有相同編號(hào)的分組重新裝配成報(bào)文遞交給目的端系統(tǒng),若目的節(jié)點(diǎn)用于重裝報(bào)文的緩沖區(qū)空間有限,而且它無(wú)法知道正在接收的報(bào)文究竟被拆成多少個(gè)分組,此時(shí),就可能發(fā)生嚴(yán)重的問(wèn)題:為了接收更多的分組,該目的節(jié)點(diǎn)用完了它的緩沖空間,但它又不能將尚未拼裝完整的報(bào)文遞送給目的端系統(tǒng),而鄰節(jié)點(diǎn)仍在不斷地向它傳送分組,但它卻無(wú)法接收。這樣,經(jīng)過(guò)多次嘗試后,鄰節(jié)點(diǎn)就會(huì)繞道從其它途徑再向該目的節(jié)點(diǎn)傳送分組,但該目的節(jié)點(diǎn)已被死鎖,其周邊區(qū)域也由此發(fā)生了擁塞。下面幾種方法可用以避免重裝死鎖的發(fā)生: 本新聞共 4頁(yè),當(dāng)前在第 2頁(yè) 1 2 3 4 |
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|