摘 要: 提出了一種提供QoS保障的多信道MAC協(xié)議,該協(xié)議把不同種類業(yè)務(wù)劃分優(yōu)先級(jí)和幀間隔時(shí)間,以保障優(yōu)先級(jí)高的數(shù)據(jù)較早接入信道,同時(shí)把高層數(shù)據(jù)按目的地址的不同建立發(fā)送鏈表,采用自動(dòng)重傳技術(shù),實(shí)現(xiàn)數(shù)據(jù)信道上連續(xù)的幀交換過程。仿真結(jié)果表明,該方法大大提高了數(shù)據(jù)信道利用率,改善了系統(tǒng)性能。
關(guān)鍵詞: 無線自組織網(wǎng)絡(luò);服務(wù)質(zhì)量;介質(zhì)接入控制協(xié)議;多信道
無線自組織網(wǎng)絡(luò)(Ad hoc)是一種具有無中心、自組織、快速展開和移動(dòng)等特點(diǎn)的對(duì)等式網(wǎng)絡(luò),又被稱作多跳網(wǎng)絡(luò)(Multi-hop Network)或自組織網(wǎng)絡(luò)(Self-organized Network)[1]。隨著自組網(wǎng)業(yè)務(wù)的多樣化以及逐漸向公用網(wǎng)絡(luò)領(lǐng)域滲透,服務(wù)質(zhì)量QoS(Quality of Service)保障問題越來越重要,介質(zhì)接入控制(MAC)協(xié)議是自組網(wǎng)QoS體系中最基本的部分,主要用來管理和協(xié)調(diào)多個(gè)用戶共享可用的頻譜資源,QoS路由和信令都要依賴它。MAC需要解決兩個(gè)問題[2]:如何將頻譜劃分為不同的信道,如何將信道資源分配給不同的用戶。在Ad hoc網(wǎng)絡(luò)MAC協(xié)議領(lǐng)域,多信道技術(shù)成為研究熱點(diǎn),很多的多信道MAC協(xié)議能較好地解決信道爭用、隱藏終端、暴露終端[3-4],與單信道技術(shù)相比,其具有提高系統(tǒng)吞吐量、降低時(shí)延等優(yōu)點(diǎn)[3-5],但是大部分不能為實(shí)時(shí)業(yè)務(wù)提供QoS保障。本文結(jié)合多信道DCA[5]協(xié)議信道預(yù)約的思想,給不同種類的業(yè)務(wù)劃分優(yōu)先級(jí)和幀間隔,保證優(yōu)先級(jí)高的業(yè)務(wù)較早地預(yù)約數(shù)據(jù)信道,同時(shí)把高層數(shù)據(jù)按目的地址的不同建立發(fā)送鏈表,實(shí)現(xiàn)數(shù)據(jù)信道上連續(xù)的幀交換,改善了系統(tǒng)吞吐量和時(shí)延特性。
1 協(xié)議基本思想
把整個(gè)信道分為1個(gè)控制信道和n個(gè)數(shù)據(jù)信道,這些子信道互不重疊且?guī)捪嗟?,每個(gè)節(jié)點(diǎn)配置兩部半雙工收發(fā)機(jī),1個(gè)用于控制信道,1個(gè)可在n個(gè)數(shù)據(jù)信道間切換使用。通信雙方通過在控制信道上交換RTS/CTS/RES幀來預(yù)約數(shù)據(jù)信道,然后在數(shù)據(jù)信道上交換DATA/ACK幀進(jìn)行通信。每個(gè)節(jié)點(diǎn)(如A)保存信道使用列表CUL[]和空閑信道列表FCL。CUL[]表項(xiàng)有3個(gè)元素:CUL[i].host是A的一個(gè)鄰居地址,CUL[i].ch是被鄰居CUL[i].host占用的數(shù)據(jù)信道,CUL[i].rel_time指CUL[i].ch信道的釋放時(shí)間。FCL表可由CUL[]計(jì)算得出。
建立發(fā)送鏈表,采用自動(dòng)重傳技術(shù),雙方可實(shí)現(xiàn)數(shù)據(jù)信道上連續(xù)的DATA/ACK幀交換過程,直到通信完成或者達(dá)到預(yù)定通信時(shí)間。下面說明協(xié)議中的幾個(gè)重要規(guī)則。協(xié)議中用到的標(biāo)識(shí)符含義如表1所示。
1.1 發(fā)送鏈表
按目的地址的不同把高層數(shù)據(jù)加入到相應(yīng)鏈表中,發(fā)送數(shù)據(jù)鏈表的結(jié)構(gòu)形式如圖1所示。
Hld_Data_Elem是高層數(shù)據(jù)的表示結(jié)構(gòu),pkptr指向高層數(shù)據(jù),qos是描述分組優(yōu)先級(jí)的整數(shù)值,實(shí)時(shí)(語音、視頻等)分組比數(shù)據(jù)分組優(yōu)先級(jí)高,ar_time是高層數(shù)據(jù)的到達(dá)時(shí)間。NL[]是鏈表頭結(jié)構(gòu),具有同一目的地址的分組均放在此鏈表中,Hld_List是鏈表頭指針,dest是目的地址,T_qos是表示此鏈表中所有分組的平均優(yōu)先級(jí)權(quán)值,由鏈表中所有分組的qos和ar_time值決定:
1.2 控制信道規(guī)程
在控制信道上交換RTS/CTS/RES幀預(yù)約數(shù)據(jù)信道,RTS/CTS/RES幀格式如圖2所示。
RTS幀中的N域表示發(fā)送鏈表中的高層數(shù)據(jù)個(gè)數(shù);Tdl(Total data length)域是N個(gè)高層數(shù)據(jù)的總長度,目的節(jié)點(diǎn)可以結(jié)合N、Tdl域計(jì)算數(shù)據(jù)信道上的總通信時(shí)間。Ndl(next data length)域是節(jié)點(diǎn)A當(dāng)前發(fā)送鏈表中下一個(gè)要發(fā)送的數(shù)據(jù)長度,用于節(jié)點(diǎn)B設(shè)置超時(shí)定時(shí)器。
要在數(shù)據(jù)信道上實(shí)現(xiàn)連續(xù)的幀交換功能,則在控制幀交換過程中,網(wǎng)絡(luò)分配矢量NAVcts必須有效地預(yù)測數(shù)據(jù)信道Dj上的通信時(shí)間,NAVcts值被設(shè)為發(fā)送鏈表中的數(shù)據(jù)正常交換完成所需要的時(shí)間,NAVcts的計(jì)算過程如下:
源節(jié)點(diǎn)的當(dāng)前發(fā)送鏈表中有4條數(shù)據(jù),在數(shù)據(jù)信道上正常交換時(shí)的傳輸序列如圖3所示,由此可以推出:
NAVcts=TdlA+NA×T_ack+2NA×T_prop
其中,若幀交換過程中出現(xiàn)異常需要重傳,則數(shù)據(jù)信道上的通信時(shí)間將會(huì)大于NAVcts值,這種異常情況的處理見下文。
1.3 數(shù)據(jù)信道規(guī)程
數(shù)據(jù)信道上交換DATA/ACK幀,DATA/ACK幀格式如圖4所示。
DATA幀中的Seq域用于對(duì)方節(jié)點(diǎn)辨別到來是否是重復(fù)幀,正常情況下此位按0、1交替變化,在重傳時(shí)不發(fā)生變化,此位是必要的,因?yàn)楣?jié)點(diǎn)超時(shí)定時(shí)器發(fā)生超時(shí),可能是正確的應(yīng)答幀在鏈路上丟失造成的,這樣重傳時(shí)設(shè)置Seq位不變,對(duì)方節(jié)點(diǎn)便知道是重復(fù)幀而丟棄它;Itrp域是強(qiáng)制中斷位,正常情況下此位為1,當(dāng)為0時(shí),表示要求立即停止通信,之后雙方交換ACK幀結(jié)束本次通信。
系統(tǒng)記錄數(shù)據(jù)信道上的通信時(shí)間,當(dāng)發(fā)生重傳時(shí),源節(jié)點(diǎn)在發(fā)送本條數(shù)據(jù)時(shí),計(jì)算發(fā)送鏈表中下一條數(shù)據(jù)正常傳輸結(jié)束的時(shí)刻會(huì)不會(huì)超過NAVcts值表示的時(shí)刻,如果超過,則把Itrp位置0,強(qiáng)制結(jié)束通信,如圖5中所示,目的節(jié)點(diǎn)收到DATA(Itrp(0))時(shí),返回ACK幀,之后結(jié)束通信。A中未傳完的數(shù)據(jù)依然留在發(fā)送鏈表中。因此,Itrp位保證了發(fā)生錯(cuò)誤重傳時(shí),數(shù)據(jù)信道上總的通信時(shí)間不大于NAVcts表示的時(shí)間,既充分利用了信道資源,又及時(shí)釋放信道不至于造成沖突。
2 本文協(xié)議的描述過程
本文協(xié)議的描述過程如下,其分組交換時(shí)序圖如圖6所示。
(1)節(jié)點(diǎn)(如A)發(fā)送鏈表不全為空時(shí),選擇T_qos權(quán)值最大的鏈表作為當(dāng)前發(fā)送鏈表,其目的地址為節(jié)點(diǎn)B,在RTS幀前,節(jié)點(diǎn)A做三項(xiàng)檢查:
(a)保證目的節(jié)點(diǎn)B的數(shù)據(jù)信道收發(fā)機(jī)空閑。在CUL表中不能有:
CUL[i].host=B且CUL[i].rel_time>T_curr+(T_rts+T_sifs+T_cts)
(b)保證本節(jié)點(diǎn)的數(shù)據(jù)信道收發(fā)機(jī)空閑。在CUL表中不能有:
CUL[i].host=A且CUL[i].rel_time>T_curr+(T_rts+T_sifs+T_cts)
(c)保證本節(jié)點(diǎn)A有空閑的數(shù)據(jù)信道。至少一數(shù)據(jù)信道Dj滿足:
CUL[i].ch=Dj且CUL[i].rel_time<=T_curr+(T_rts+T_sifs+T_cts)
再把滿足條件的信道記入FCL表,設(shè)置好NAVrts、Fcl、N、Tdl、Ndl等域,向B發(fā)送RTS幀。
(2)收到RTS幀后,B檢查是否有匹配的空閑數(shù)據(jù)信道,能否滿足FCLA與FCLB有匹配項(xiàng)或者對(duì)DjEFCLA有:CUL[i].ch=Dj且CUL[i].rel_time<=T_curr+T_cts存在。
(a)若滿足,選擇一個(gè)空閑數(shù)據(jù)信道(如Dj),設(shè)置NAVcts等域,向A返回NAVcts(Dj,NAVcts)幀。然后把數(shù)據(jù)信道收發(fā)機(jī)切換到Dj,準(zhǔn)備接收DATA幀。
(b)若不滿足,返回CTS(0,T_est)幀,其中T_est是B節(jié)點(diǎn)有空閑信道的最小估計(jì)時(shí)間。
(3)當(dāng)非目的節(jié)點(diǎn)收到RTS幀時(shí),控制信道上執(zhí)行退避,以避免控制信道上發(fā)生沖突,退避時(shí)間為:
NAVrts=T_cts+T_res+2×T_sifs+2×T_prop
(4)收到B的CTS(Dj,NAVcts)后,節(jié)點(diǎn)A執(zhí)行:
(a)向CUL表中增加一表項(xiàng):
CUL[i].host=B;
CUL[i].ch=Dj;
CUL[i].rel_time=T_curr+NAVcts;
(b)把數(shù)據(jù)信道收發(fā)機(jī)切換到Dj上發(fā)送DATA幀,發(fā)送完設(shè)置超時(shí)定時(shí)器。
(c)發(fā)送廣播幀RES(Dj,NAVres),其中:
NAVres=NAVcts-T_sifs-T_res-T_prop。
若收到的是CTS(T_est)幀,則A退避T_est時(shí)間重新發(fā)送RTS幀。
(5)非源節(jié)點(diǎn)C收到B返回的CTS(Dj,NAVcts)幀時(shí):
(a)向CUL表中增加一表項(xiàng):
CUL[i].host=B;
CUL[i].ch=Dj;
CUL[i].rel_time=T_curr+NAVcts
若收到的是CTS(T_est),不做任何處理。
(6)非目的節(jié)點(diǎn)收到來自A的廣播幀RES(Dj,NAVres)時(shí),向CUL表中增加一項(xiàng):
CUL[i].host=B;
CUL[i].ch=Dj;
CUL[i].rel_time=T_curr+NAVres
(7)當(dāng)收到A的DATA幀時(shí),B返回ACK幀:
(a)檢查DATA幀的Itrp位是否為0,若是,則回復(fù)ACK幀后終止通信。
(b)檢查DATA幀的Seq位,確認(rèn)是否為重發(fā)幀,再根據(jù)情況決定是否丟棄DATA幀。
(c)根據(jù)DATA幀的Ndl域值,在回復(fù)ACK幀后設(shè)置超時(shí)定時(shí)器,若Ndl值為0,表示源節(jié)點(diǎn)數(shù)據(jù)發(fā)送完畢,回復(fù)ACK后結(jié)束通信。若DATA幀錯(cuò)誤或定時(shí)器超時(shí)回復(fù)ACK(Ack(0))以示重傳。
(8)當(dāng)收到節(jié)點(diǎn)B的ACK幀時(shí),A回DATA幀:
(a)若ACK幀中Ack位為0,則重傳上一條DATA幀,其中Seq位保持不變。
(b)計(jì)算下一條數(shù)據(jù)傳輸完成后立即結(jié)束本次通信時(shí)刻會(huì)不會(huì)超過NAVcts值表示的時(shí)刻,若超過,回復(fù)DATA幀中Itrp位置1,就此終止通信。
若ACK幀錯(cuò)誤或者定時(shí)器超時(shí),則重傳上一條DATA幀。
本協(xié)議最大的優(yōu)點(diǎn)在于建立發(fā)送鏈表,結(jié)合自動(dòng)重傳請(qǐng)求技術(shù),實(shí)現(xiàn)連續(xù)的幀交換過程,減少了控制幀交換次數(shù),既增加數(shù)據(jù)信道上的通信時(shí)間,又減少了控制信道上的沖突。
4 仿真結(jié)果分析
在相同的場景中,從吞吐量、分組平均時(shí)延兩方面比較本文協(xié)議和DCA協(xié)議的性能。仿真條件:在3 km×3 km的范圍內(nèi)放置50個(gè)節(jié)點(diǎn),最大通信距離為300 m,仿真時(shí)間為400 s,分組長度1 024 B,發(fā)包率服從Poisson分布,其中實(shí)時(shí)業(yè)務(wù)分組隨機(jī)產(chǎn)生,數(shù)據(jù)分組幀間隔50 ?滋s,實(shí)時(shí)分組幀間隔20 ?滋s。仿真結(jié)果對(duì)比如圖7、圖8所示。
DCA協(xié)議中,每條數(shù)據(jù)發(fā)送前需要進(jìn)行一次信道預(yù)約,而本文協(xié)議實(shí)現(xiàn)了數(shù)據(jù)信道上的連續(xù)幀交換過程,一次信道預(yù)約可以完成多個(gè)分組交換,既大大避免了控制信道上的沖突,又提高了數(shù)據(jù)信道上的平均通信時(shí)間,系統(tǒng)的吞吐量和平均時(shí)延特性得到明顯改善。同時(shí),本文協(xié)議給實(shí)時(shí)業(yè)務(wù)規(guī)定較高的優(yōu)先級(jí)和較小的幀間隔時(shí)間,可以保證先于普通數(shù)據(jù)分組接入信道,平均時(shí)延顯著低于數(shù)據(jù)分組,因此可以從一定程度上為實(shí)時(shí)業(yè)務(wù)提供QoS保障。
本文提供了一種支持QoS保障的Ad hoc網(wǎng)絡(luò)多信道MAC協(xié)議,給不同種類的業(yè)務(wù)劃分不同的優(yōu)先級(jí)和幀間隔,以保證高優(yōu)先級(jí)業(yè)務(wù)較早地接入信道。同時(shí)把高層數(shù)據(jù)按其目的地址的不同建立發(fā)送鏈表。采用自動(dòng)重傳技術(shù),實(shí)現(xiàn)了數(shù)據(jù)信道上連續(xù)的幀交換過程,大大減少了控制信道上的沖突,提高了數(shù)據(jù)信道上的平均通信時(shí)間,系統(tǒng)吞吐量和時(shí)延特性得到明顯改善。
參考文獻(xiàn)
[1] 鄭少仁,王海濤,趙志峰,等.Ad hoc網(wǎng)絡(luò)技術(shù)[M].北京:人民郵電出版社,2005.
[2] RAMANATHAN R, REDI J. A brief overvirew of Ad hoc network: challenges and directions[J]. IEEE Communication Magazine, 2002,40(5):20-22.
[3] SO J, VAIDYA N. A multi-channel MAC for Ad hoc wireless networks[J]. Dept. of Electrical and Computer Engineering, 2003(1):254-257.
[4] JIN K T, CHO D H. Multi-code MAC for multi-hop wireless ad hoc network[C]. Vehicular Technology Conference 2002 Proceedings, USA. 2002,2:1100-1104.
[5] WU Shih-Lin, TSENG Yu-Chee, LIN Chih-Yu, et al. A new multi-channel MAC protocol with on-demand channel assignment for mobile Ad hoc networks[C]. Dallas: in Proc. of the International Symposium on Parallel Architectures, Algorithms and Networks(I-SPAN), 2000: 232-237.