呂 超, 陳向東
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 610031)
目前,國(guó)內(nèi)外學(xué)者從CSMA/CA退避算法方面提出了大量改進(jìn)措施, 以提高IEEE802.11[1]無(wú)線局域網(wǎng)的性能。從這些方法中的預(yù)約退避算法著手分析,通過(guò)對(duì)NS2 網(wǎng)絡(luò)仿真軟件的IEEE802.11無(wú)線局域網(wǎng)仿真模塊進(jìn)行修改和擴(kuò)展,實(shí)現(xiàn)和改進(jìn)了預(yù)約退避算法的仿真模塊,并通過(guò)大量仿真實(shí)驗(yàn),對(duì)IEEE802.11無(wú)線局域網(wǎng)標(biāo)準(zhǔn)CSMA/CA二進(jìn)制退避算法和預(yù)約退避算法的吞吐量和平均時(shí)延等方面進(jìn)行了詳細(xì)分析和比較。
在IEEE 802.11標(biāo)準(zhǔn)中定義了兩種無(wú)線介質(zhì)訪問(wèn)控制方法,它們是:分布協(xié)調(diào)功能(DCF)和點(diǎn)協(xié)調(diào)功能(PCF)。DCF是 IEEE802.11最基本的媒體訪問(wèn)方法,其核心是CSMA/CA。IEEE802.11DCF分布式協(xié)調(diào)功能的介紹已經(jīng)有很多,例如參考文獻(xiàn)[2-4]。
基于802.11DCF的基本工作框架, 目前已提出了多種改進(jìn)的退避算法, 可使MAC 協(xié)議在吞吐率、時(shí)延、公平性、穩(wěn)定性等因素的一個(gè)或幾個(gè)方面得到性能提升。目前主有要改進(jìn) CW更新規(guī)則類、檢測(cè)網(wǎng)絡(luò)狀況動(dòng)態(tài)調(diào)整參數(shù)類、動(dòng)態(tài)調(diào)整接入優(yōu)先級(jí)類、多階退避類、多接入優(yōu)先級(jí)類和預(yù)約發(fā)送時(shí)隙類[5]。下面主要介紹預(yù)約發(fā)送時(shí)隙類。
目前提出的EBA( Early Backoff Announcement)[6]算法中,節(jié)點(diǎn)在競(jìng)爭(zhēng)到信道后,立即計(jì)算出本節(jié)點(diǎn)在發(fā)送完畢后在下一次退避過(guò)程中將要使用的退避時(shí)間(如果本次發(fā)送成功),并在發(fā)送的控制或數(shù)據(jù)報(bào)文中將此信息捎帶出去,預(yù)約發(fā)送時(shí)隙。其他節(jié)點(diǎn)若成功收到此報(bào)文,就能預(yù)知發(fā)送節(jié)點(diǎn)下一次發(fā)送將要使用的時(shí)隙,如果和自己的相同,則換一個(gè)。以達(dá)到降低節(jié)點(diǎn)之間的碰撞。EBA的主要思想[6]如圖 1所示。
EBA在MAC層標(biāo)頭的尾部加上一個(gè)新的3字節(jié)的預(yù)發(fā)送域。并把該標(biāo)頭用于發(fā)送 DATA幀時(shí)使用,并假設(shè)所有節(jié)點(diǎn)能量無(wú)限,能實(shí)時(shí)檢測(cè)到信道情況和其他節(jié)點(diǎn)發(fā)送的時(shí)隙占用情況。當(dāng)其他節(jié)點(diǎn)在收到不是發(fā)給自己的 DATA幀時(shí)能讀出源節(jié)點(diǎn)的下次退避使用的時(shí)隙,如果和自己退避結(jié)束時(shí)刻的時(shí)隙相同,則向前向后搜索1個(gè)未預(yù)約的空閑時(shí)隙作為自己退避結(jié)束時(shí)的發(fā)送時(shí)隙。
圖1 標(biāo)準(zhǔn)802.11與EBA退避時(shí)間的產(chǎn)生過(guò)程
在 EBA中,每個(gè)節(jié)點(diǎn)都有自己的預(yù)約窗口(RW,Reservation Window)[6]以記錄自己和鄰居節(jié)點(diǎn)的預(yù)約發(fā)送時(shí)隙以及占用情況。在預(yù)約窗口中記錄 3個(gè)分量 Iempty、Ireserved和 Itx。Iempty表示還未被任何站點(diǎn)預(yù)約的時(shí)隙點(diǎn),Ireserved表示已經(jīng)被其他站點(diǎn)預(yù)約的發(fā)送時(shí)隙點(diǎn),Itx表示該節(jié)點(diǎn)選擇的下一發(fā)送時(shí)隙點(diǎn)。Backoff=Itxslotnumber。
根據(jù)EBA把預(yù)約的下次退避時(shí)間寄存在MAC層的標(biāo)頭中和僅在傳送 DATA幀時(shí)發(fā)送的思想,簡(jiǎn)化退避記時(shí)用預(yù)約窗口的要求,減少按時(shí)隙數(shù)來(lái)區(qū)分退避時(shí)間和發(fā)送時(shí)間的麻煩,體現(xiàn)預(yù)約退避算法的直接想法,介紹一種簡(jiǎn)化的改進(jìn)預(yù)約退避算法。即 MAC幀格式采用和 EBA相關(guān)的方法,只是MAC幀尾加一個(gè)2字節(jié)的預(yù)發(fā)送域來(lái)儲(chǔ)存發(fā)送節(jié)點(diǎn)的下次退避時(shí)間。其他節(jié)點(diǎn)將該值來(lái)與自身退避計(jì)數(shù)器值相比較,如果相同則再次隨機(jī)選取一個(gè)退避時(shí)間,從而減少節(jié)點(diǎn)間的碰撞。這也即是在實(shí)現(xiàn)方法的上的改進(jìn)。
NS2,即Network Simulator Version 2,是面向?qū)ο蟮?、離散事件驅(qū)動(dòng)的網(wǎng)絡(luò)環(huán)境模擬器,主要用于解決網(wǎng)絡(luò)研究方面的問(wèn)題。NS2 提供了在無(wú)線或者有線網(wǎng)絡(luò)上的路由、多播等多種協(xié)議的模擬,它能客觀的驗(yàn)證網(wǎng)絡(luò)協(xié)議的正確性和進(jìn)行相關(guān)的性能測(cè)試,實(shí)現(xiàn)絕大多數(shù)常見(jiàn)的網(wǎng)絡(luò)協(xié)議以及鏈路層的模型,直觀的評(píng)價(jià)網(wǎng)絡(luò)協(xié)議的性能和運(yùn)行情況[7]。
在NS2中, IEEE802.11無(wú)線局域網(wǎng)的仿真由Mac802_11類實(shí)現(xiàn)。Mac802_11類定義了 IEEE802.11無(wú)線局域網(wǎng)標(biāo)準(zhǔn)DCF機(jī)制的所有操作方法。并詳細(xì)描述對(duì) NS2 2.31 版本中的Mac802_11類的修改和擴(kuò)展, 以實(shí)現(xiàn)對(duì)改進(jìn)預(yù)約退避算法的仿真。NS2的 IEEE820.11部分主要是由程序 mac-802_11.h、mac-802_11.cc、mac-timers.h、mac- timers.cc 等實(shí)現(xiàn)。而對(duì)改進(jìn)預(yù)約退避算法的仿真也就是基于在這四個(gè)程序的基礎(chǔ)上做了改進(jìn)。現(xiàn)對(duì)源代碼的主要修改做如下介紹:
(1)添加屬性
(2)添加操作
①在發(fā)送數(shù)據(jù)幀前把下次將采用的退避時(shí)間寫入MAC幀標(biāo)頭中,隨數(shù)據(jù)幀一起發(fā)送給其他鄰居節(jié)點(diǎn)包括目的節(jié)點(diǎn)。根據(jù)NS2中 MAC層 DCF的數(shù)據(jù)傳送流程,信道競(jìng)爭(zhēng)接入主要由check_pktTx()函數(shù)實(shí)現(xiàn)。所以把這流程添加到check_pktTx()函數(shù)中。基于篇幅僅給出具體改進(jìn)的程序如下:
②鄰居節(jié)點(diǎn)在收到源節(jié)點(diǎn)發(fā)送的數(shù)據(jù)幀時(shí)提取出幀標(biāo)頭中退避時(shí)間域的值,并與自身的退避時(shí)間做比較,如果一樣,則更新。
③在mac-timers.h文件中添加backofftimer()類中的子函數(shù):void checkrtime(int cw, u_int16_t newrtime);在mac-timers.cc文件中添加checkrtime()子函數(shù)的具體內(nèi)容。并對(duì)backofftimer()類中的子函數(shù)start()函數(shù)做相應(yīng)修改。
仿真場(chǎng)景設(shè)置為無(wú)線模式,一個(gè)中心節(jié)點(diǎn)只負(fù)責(zé)接收數(shù)據(jù),四周100~200 m半徑內(nèi)隨機(jī)分布4~16個(gè)節(jié)點(diǎn),所有節(jié)點(diǎn)固定不動(dòng),所有的節(jié)點(diǎn)都處在其余所有節(jié)點(diǎn)的通信范圍之內(nèi),也就是說(shuō)網(wǎng)絡(luò)中任意2個(gè)節(jié)點(diǎn)之間都能直接進(jìn)行通信。這樣網(wǎng)絡(luò)中不存在隱藏節(jié)點(diǎn),不用考慮路由問(wèn)題。RTS門限取3000(即不使用RTS/CTS),傳輸層采用UDP協(xié)議,應(yīng)用層采用 CBR數(shù)據(jù)流,包長(zhǎng)為 1000 Bytes。數(shù)據(jù)傳輸速率為11 Mb,控制幀傳輸速率為1 Mb。仿真場(chǎng)景由NSG2生成,具體方法參見(jiàn)參考文獻(xiàn)[8]。
吞吐量分析:由圖2可看出,可看出在6節(jié)點(diǎn)前,因?yàn)榫W(wǎng)絡(luò)容量還未飽和,碰撞不激烈,隨節(jié)點(diǎn)增多,吞吐量也增大;但在6節(jié)點(diǎn)后,無(wú)論是802.11DCF還是改進(jìn)的預(yù)約退避算法的吞吐量都隨節(jié)點(diǎn)的增加而減少,這也說(shuō)明隨著節(jié)點(diǎn)的增多,碰撞越來(lái)越激烈,吞吐量下降,但預(yù)約退避算法的下降速度顯然要比802.11DCF平緩些,節(jié)點(diǎn)越多預(yù)約退避算法的優(yōu)勢(shì)越明顯。
圖2 平均吞吐量隨節(jié)點(diǎn)數(shù)變化
時(shí)延、包投遞率分析:由圖3和圖4所示。無(wú)論802.11DCF還是改進(jìn)的預(yù)約退避算法,平均延時(shí)都隨節(jié)點(diǎn)的增加而增大,包投遞率都隨節(jié)點(diǎn)的增加而減少。反映了隨節(jié)點(diǎn)數(shù)增加,碰撞發(fā)生概率的增加。但改進(jìn)的預(yù)約退避算法要比802.11DCF的平均延時(shí)還要小,包投遞率要高,特別隨著節(jié)點(diǎn)數(shù)增多,優(yōu)勢(shì)體現(xiàn)越明顯。
圖3 平均延時(shí)隨節(jié)點(diǎn)數(shù)變化
圖4 包投遞率隨節(jié)點(diǎn)數(shù)變化
從NS2的MAC802_11類出發(fā),分析和改進(jìn)了預(yù)約退避算法,以簡(jiǎn)單的方式實(shí)現(xiàn)EBA的功能,并通過(guò)NS2仿真得以實(shí)現(xiàn)。在仿真結(jié)果中可以看出,簡(jiǎn)化的改進(jìn)預(yù)約退避算法在單跳網(wǎng)絡(luò)中性能也較好, 也能對(duì)IEEE802.11無(wú)線局域網(wǎng)的網(wǎng)絡(luò)吞吐量、平均時(shí)延和包投遞率有一定的提高,尤其是對(duì)吞吐量的改善。
[1]張勇,郭達(dá).無(wú)線網(wǎng)狀網(wǎng)原理與技術(shù)[M].北京:電子工業(yè)出版社,2004:20-25.
[2]孫戈.段距離無(wú)線通信及組網(wǎng)技術(shù)[M].西安:西安電子科技大學(xué)出版社,2008:18-23.
[3]金艷華,宋軍.基于 NS2 的 IEEE802.11MAC 仿真模塊分析[J].電視技術(shù),2009,33(S2):196-199.
[4]徐春瑩.WLAN上的多媒體業(yè)務(wù)質(zhì)量研究[J].通信技術(shù),2007,40(11):162-163.
[5]黎寧,韓露.無(wú)線自組織網(wǎng)絡(luò)退避算法綜述[J].計(jì)算機(jī)應(yīng)用,2005,25(06):1244-1247
[6]CHOI J, YOO J, CHOI S.EBA: An Enhancement of the IEEE 802.11 DCF via Distributed Reservation. IEEE Transactions on Mobile Computing[J].2005,4(04):378-390.
[7]盧聘,王翀.基于 NS2 的輪詢組網(wǎng)協(xié)議模擬[J].通信技術(shù),2010,43(05):130-131.
[8]柯志亨,程容祥,鄧德雋.NS2仿真實(shí)驗(yàn)—多媒體和無(wú)線網(wǎng)絡(luò)通信[M].北京:電子工業(yè)出版社,2009:82-103.