李保婷+周雷+韓沁+趙宏
摘要:提出一種基于多信道的Qos保障方案,結(jié)合業(yè)務(wù)區(qū)分和資源預(yù)留兩種Qos保障策略,保證優(yōu)先級高的業(yè)務(wù)及時接入信道;并且建立節(jié)點發(fā)送鏈表,給數(shù)據(jù)通信預(yù)留一段時間,實現(xiàn)數(shù)據(jù)信道上連續(xù)的幀交換,有效地使用了數(shù)據(jù)信道資源。
關(guān)鍵詞:無線自組織網(wǎng);服務(wù)質(zhì)量;多信道
近年來,在無線網(wǎng)絡(luò)中傳輸多媒體業(yè)務(wù)逐漸成為用戶的基本需求,在無線網(wǎng)絡(luò)中如何提供服務(wù)質(zhì)量(Qos:Qualityof Service)保障已成為Ad Hoc網(wǎng)絡(luò)領(lǐng)域中的研究重點;MAC子層是自組網(wǎng)QoS體系中最基本的部分,與單信道技術(shù)相比,多信道技術(shù)能較好地解決信道爭用、隱藏終端、暴露終端、入侵終端等問題,其具有提高系統(tǒng)吞吐量、降低時延等優(yōu)點,但是大都不能為實時業(yè)務(wù)提供QoS保障。文章參考動態(tài)信道分配信道預(yù)約的思想,結(jié)合業(yè)務(wù)區(qū)分和資源預(yù)留兩種方式,給出了一種提供QoS保障的多信道MAC層協(xié)議,為不同種類的業(yè)務(wù)類型設(shè)置不同的優(yōu)先級和幀間隔,使高優(yōu)先級業(yè)務(wù)優(yōu)先預(yù)約數(shù)據(jù)信道,同時給不同目的地址節(jié)點建立發(fā)送鏈表,并且使用自動重傳請求技術(shù),實現(xiàn)在數(shù)據(jù)信道上進行連續(xù)幀交換過程,以此提高系統(tǒng)的吞吐量和時延性能,保證多媒體業(yè)務(wù)的實時傳輸。
1 協(xié)議基本思想
把多信道分成N個數(shù)據(jù)信道和1個控制信道,每個節(jié)點配兩個半雙工收發(fā)模塊,1個用于控制信道且附加偵聽模塊,1個用于在多個數(shù)據(jù)信道間切換使用。通信節(jié)點在控制信道上收發(fā)RTS/CTS/RES幀來預(yù)約數(shù)據(jù)信道,然后在數(shù)據(jù)信道上收發(fā)DATA/ACK幀來進行通信。業(yè)務(wù)區(qū)分功能是給不同業(yè)務(wù)類型設(shè)置不同的優(yōu)先級和幀間隔,資源預(yù)留功能是在每次RTS/CTS/RES幀交換中,都預(yù)約好一段時間,在該時間內(nèi),通信節(jié)點可進行連續(xù)的幀交換過程。下面詳細說明本協(xié)議中的幾個重要規(guī)則。
1.1 發(fā)送鏈表
協(xié)議中,給不同目的地址節(jié)點分別建立發(fā)送鏈表,鏈表結(jié)構(gòu)如圖l所示;SrvDataElem是業(yè)務(wù)數(shù)據(jù)在鏈表中的結(jié)構(gòu):Pkptr指向業(yè)務(wù)數(shù)據(jù);Oos是分組優(yōu)先級的整數(shù)值,實時業(yè)務(wù)分組(如語音、視頻等)比普通業(yè)務(wù)分組有更高的優(yōu)先級,Oos數(shù)值越大表示優(yōu)先級越高;AtTime是高層數(shù)據(jù)的到達時間。
NL[]是鏈表表頭結(jié)構(gòu):SrvList是以SrvDataElem為元素的數(shù)組首地址;Dest是目的地址;TOos是鏈表優(yōu)先級權(quán)重值,表示鏈表中分組的平均優(yōu)先級,由鏈表中分組的Oos和ArTime共同決定,有:
其中Q、T表示Oos和ArTime在鏈表優(yōu)先級權(quán)值中的比例度量,DataNum表示鏈表中分組個數(shù),TQos值定期更新且其值越大表示本鏈表的優(yōu)先級越高;業(yè)務(wù)數(shù)據(jù)按照目的地址放入相應(yīng)的發(fā)送鏈表中,相同目的地址分組在同一個鏈表中,分組的類型和目的地址由相應(yīng)的路由協(xié)議規(guī)定。
1.2 信道規(guī)程
在控制信道上收發(fā)RTS/CTS/RES幀來預(yù)約數(shù)據(jù)信道,幀格式如下所示:
當節(jié)點A的發(fā)送鏈表非空時,選擇TQos值最大的鏈表且其目的地址為B。在控制信道空閑時,等待一段間隔時間,執(zhí)行退避后發(fā)送RTS幀。TOos越大,此間隔時間越小,以保證高優(yōu)先級業(yè)務(wù)數(shù)據(jù)較早接入信道。RTS幀中設(shè)置NAVrts、Fcl、N、Tdl、Ndl域,其中NAVrts表示網(wǎng)絡(luò)分配矢量,以將控制信道的使用情況告知鄰居節(jié)點;Fcl是節(jié)點A的空閑數(shù)據(jù)信道列表;N表示發(fā)送鏈表的業(yè)務(wù)數(shù)據(jù)數(shù);Tdl表示N個業(yè)務(wù)數(shù)據(jù)的總長度,目的節(jié)點根據(jù)N、Tdl字段計算數(shù)據(jù)信道上的通信占用時間。Ndl是節(jié)點A發(fā)送鏈表中下一條數(shù)據(jù)的長度,節(jié)點B可以根據(jù)該字段設(shè)置超時定時器值。在節(jié)點B接收到RTS幀時,將幀中的Fcl值與自己的FCL表進行匹配,在有匹配空閑數(shù)據(jù)信道的情況下返回CTS(Dj,NAVcts)幀,其中Dj是一個隨機選擇的匹配信道號,NAVcts用來將數(shù)據(jù)信道Dj的使用情況告知鄰居節(jié)點;在無匹配空閑數(shù)據(jù)信道時,B返回CTS(0,TEst)幀,這里的TEst表示節(jié)點B的CUL表中出現(xiàn)空閑信道的最小時間:
TEst=min{i,CUL[i].RelTime-TCurr-TSifs-TCts}。
A節(jié)點在收到CTS(Dj,NAVcts)幀后發(fā)送RES(Dj,NAVres)廣播幀,Dj表示選定的空閑數(shù)據(jù)信道號,NAVres是網(wǎng)絡(luò)分配矢量,用于將信道Dj的使用情況告知鄰居節(jié)點。A節(jié)點在收到CTS(0,Test)幀后退避TEst時間,之后需要等待一個幀間隔時間再發(fā)送RTS幀。
在數(shù)據(jù)信道上收發(fā)DATA/ACK幀進行通信,DATA/ACK幀格式如下所示:
DATA幀中有Ndl、Itrp、Seq字段,Ndl是發(fā)送數(shù)據(jù)鏈表中下一條DATA幀的長度,用于對端節(jié)點計算超時定時器值;Seq用于對方節(jié)點辨別接收幀是新幀還是重復(fù)幀,正常時此字段值按0、1交替變化,重傳時值不變;Itrp表示強制中斷,正常時此字段值1,為0時表示需要立即中止通信,之后雙方收發(fā)ACK幀結(jié)束本次通信;強制中止通信可以保證在重傳發(fā)生時,通信時間小于NAVcts值。ACK幀中有Ack字段,為1時表示確認接收到幀,為0時表示收到的幀錯誤或者未收到。
2 協(xié)議過程描述
每個通信節(jié)點(A節(jié)點)有兩張表:信道使用列表(cuL)和空閑信道列表(FcL)。CUL表中有三個元素,CUL口.Host表示A的一個鄰節(jié)點,CUL[].ch是和鄰節(jié)點CUL[].Host的數(shù)據(jù)信道,CUL[].RelTime指CUL[].ch信道的釋放時間,F(xiàn)CL表由CUL計算得出。下面詳細描述協(xié)議過程,分組收發(fā)時序如圖2所示。
(1)節(jié)點A發(fā)送鏈表非空時,選擇TQos值最大的鏈表作為發(fā)送鏈表,目的地址為節(jié)點B,在發(fā)送RTS幀前,節(jié)點A做以下檢查:
①節(jié)點B的數(shù)據(jù)信道收發(fā)模塊空閑。在CUL表滿足:
CUL[i].Host=B且CUL[i].RelTime>TCurr+(TRts+TSifs+TCts)。
②本節(jié)點的數(shù)據(jù)信道收發(fā)模塊空閑。在CUL表滿足:
CUL[i].Host=ARCUL[i].RelTime>TCurr+(TRts+TSifs+TCts)。
③本節(jié)點A有空閑的數(shù)據(jù)信道。最少有一個數(shù)據(jù)信道Dj滿足:
CUL[i].Ch=Dj且CUL[i].RelTime<=TCurr+(TRts+TSifs+TCts)。
將符合條件的信道記到FCL表,設(shè)定NAVrts、Fcl、N、Tdl、Ndl等字段值,向節(jié)點B發(fā)送RTS幀。
(2)接收RTS幀后,節(jié)點B檢查是否有匹配的空閑數(shù)據(jù)信道,需要FCL與FCL有匹配項或Dj FCL時CULlil.ch=Dj且CUL[i].RelTime<=TCurr+TCts存在。
①如滿足,選擇一個空閑的數(shù)據(jù)信道,設(shè)置NAVcts等字段,向A返回NAVcts(Dj,NAVcts)幀,再把數(shù)據(jù)信道收發(fā)模塊切到Dj,準備DATA幀的接收。
②如不滿足,返回CTS(0,TEst)幀,TEst是B節(jié)點有信道空閑的最小預(yù)測時間。
(3)非目的節(jié)點在控制信道接收到RTS幀后,執(zhí)行退避,以免控制信道上繼續(xù)發(fā)生沖突,退避時間為:
NAVrts=TCts+TRes+2*TSifs+2*TProp
(4)B收到CTS(Dj,NAVcts)幀后,節(jié)點A執(zhí)行:
①向CUL表中增加一項:CUL[i].Host=B;CUL[i].Ch=Dj;CUL[i].RelTime=TCurr+NAVcts:
②將數(shù)據(jù)信道收發(fā)模塊切換到Dj,再發(fā)送DATA幀,然后設(shè)置超時定時器。
③發(fā)送廣播幀REs(Dj,NAVres),其中:NAVres=NAVcts-TSifs-TRes-TProp。
若收到的是CTS(TEst)幀,則A退避TEst時間重新發(fā)送RTS幀。
(5)非源節(jié)點c收到B發(fā)送的CTS(Dj,NAVcts)幀時:
在CUL表中增加一項:CUL[i].Ch=Dj;CUL[i].Host=B;CUL[i].RelTime=TCurr+NAVcts。
若收到CTS(TEst)時,不用處理。
(6)非目的節(jié)點接到A的廣播幀RES(Dj,NAVres)后:
在CUL表中加一項:CUL[i].Ch=Dj;CUL[i].Host=B;CUL[i]l.RelTime=TCurr+NAVres。
(7)在收到A發(fā)送的DATA幀后,B返回ACK幀:
①檢查DATA的Itrp位,若為0,則回送ACK幀并且中止通信。
②檢查DATA的Seq位,檢查是否重發(fā)。
③檢查DATA的Ndl字段,在回送ACK幀后設(shè)定超時定時器;Ndl為0時源節(jié)點發(fā)送數(shù)據(jù)完畢,回送ACK后中止通信。
若DATA幀有錯誤或定時器超時,回送CK(Ack(0))以表重傳。
(8)在收到節(jié)點B的ACK幀后,節(jié)點A回送DATA幀:
①如ACK幀的Ack位是0,則重傳DATA,其中的seq位不改變。
②計算下一條數(shù)據(jù)傳輸結(jié)束的時刻是否會超過NAVcts值表示的時刻,若會,則將回復(fù)的DATA幀Itrp位置1,就此結(jié)束通信。
如ACK幀錯誤或定時器發(fā)生超時,則重傳DATA幀。
綜上所述,本協(xié)議的優(yōu)點是建立了發(fā)送鏈表,在數(shù)據(jù)信道上采用自動重傳技術(shù),實現(xiàn)了持續(xù)的幀收發(fā)過程,減少控制幀的收發(fā)次數(shù);既提高了數(shù)據(jù)信道的通信效率,又降低了控制信道的沖突。
3 仿真分析
利用Opnet10.0網(wǎng)絡(luò)仿真軟件,對本協(xié)議進行仿真分析,在3000×3000m的范圍內(nèi)設(shè)定了50個節(jié)點,隨機放置,節(jié)點間的最大通信距離為300m,數(shù)據(jù)信道數(shù)量為6,仿真分析時間是400s,采用二進制指數(shù)退避算法,其他的仿真參數(shù)如表1所示。各幀頭及報文的長度是:MAC頭大小為144bits,PHY頭大小為192bits,RTS報文大小為160bits,CTS報文大小為112bits,RES報文大小為112bits。對于每個到達MAC層的高層數(shù)據(jù),節(jié)點隨機選擇一個鄰居節(jié)點作為目的節(jié)點,因為實時分組長度較大,支持對其分割、重組。
下面從吞吐量和時延特性兩個方面分析文章協(xié)議的性能。吞吐量反映了系統(tǒng)傳輸數(shù)據(jù)的能力,仿真中用歸一化吞吐量作為衡量系統(tǒng)吞吐量性能的指標,其定義為:
歸一化吞吐量=單位時間內(nèi)的吞吐量/信道容量
在相同場景下,同時運行多信道DCA協(xié)議和文章協(xié)議,比較其吞吐量和平均時延指標情況,如圖3、圖4所示。由此可知,本協(xié)議提供了更大的吞吐量和更低的時延。