譚方勇,張 震,曾 海
(蘇州市職業(yè)大學(xué) 計(jì)算機(jī)工程學(xué)院,江蘇 蘇州 215104)
一種高速大規(guī)模Ad Hoc網(wǎng)絡(luò)下OLSR協(xié)議軟件設(shè)計(jì)方案
譚方勇,張 震,曾 海
(蘇州市職業(yè)大學(xué) 計(jì)算機(jī)工程學(xué)院,江蘇 蘇州 215104)
在高速大規(guī)模Ad Hoc網(wǎng)絡(luò)環(huán)境下,提出一種基于用戶模式的OLSR協(xié)議軟件的整體架構(gòu)方案,方案定義軟件的實(shí)現(xiàn)方案及軟件框架.軟件框架的設(shè)計(jì)借鑒TCP/IP 協(xié)議棧的分層設(shè)計(jì)思想,解決移植性問(wèn)題.算法重新設(shè)計(jì)節(jié)點(diǎn)之間的管理關(guān)系結(jié)構(gòu),并通過(guò)使用靜態(tài)路由和OLSR路由相結(jié)合的方式,提高在高速大規(guī)模Ad Hoc網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)男阅?
Ad Hoc網(wǎng)絡(luò);OLSR協(xié)議;用戶模式;軟件框架;靜態(tài)路由
Ad Hoc是一種將移動(dòng)通信技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)結(jié)合在一起的網(wǎng)絡(luò),具有分布式、自組織、自配置和自管理等特點(diǎn),無(wú)需固定基礎(chǔ)設(shè)施的支持.Ad Hoc網(wǎng)絡(luò)的節(jié)點(diǎn)間是通過(guò)多跳轉(zhuǎn)發(fā)機(jī)制進(jìn)行數(shù)據(jù)交換,并使用路由協(xié)議實(shí)現(xiàn)分組轉(zhuǎn)發(fā)策略.路由協(xié)議是Ad Hoc網(wǎng)絡(luò)通信的基礎(chǔ),可實(shí)現(xiàn)Ad Hoc網(wǎng)絡(luò)通信移動(dòng)節(jié)點(diǎn)之間的互通.OLSR(optimized link state routing)協(xié)議是一種適用于Ad Hoc網(wǎng)絡(luò)的主動(dòng)式路由協(xié)議[1-3],優(yōu)化了傳統(tǒng)的鏈路狀態(tài)算法,能高效快速地形成路由.
目前,國(guó)外已有的OLSR協(xié)議的實(shí)現(xiàn)主要包括olsr.org OLSR daemon、NRLolsr、OOLSR等,國(guó)內(nèi)也有人提出了OLSR協(xié)議的實(shí)現(xiàn)方案[4-5].這些的OLSR路由協(xié)議的實(shí)現(xiàn)方案都較好地實(shí)現(xiàn)Ad Hoc網(wǎng)絡(luò)的通信功能,其中有些側(cè)重功能的齊全、有些側(cè)重各個(gè)功能模塊,但是在網(wǎng)絡(luò)規(guī)模龐大、節(jié)點(diǎn)數(shù)量眾多以及數(shù)據(jù)業(yè)務(wù)負(fù)載極高的Ad Hoc網(wǎng)絡(luò)中進(jìn)行應(yīng)用時(shí)顯得不太適合[6].本文提出了在一種高速大規(guī)模Ad Hoc網(wǎng)絡(luò)環(huán)境下的基于用戶模式的OLSR協(xié)議軟件的整體架構(gòu)方案,并對(duì)軟件的關(guān)鍵技術(shù)模塊進(jìn)行分析與設(shè)計(jì),算法在OLSR協(xié)議的基礎(chǔ)上添加了按照管理關(guān)系確定的靜態(tài)路由過(guò)程,重新優(yōu)化了節(jié)點(diǎn)之間的管理關(guān)系,從而提高Ad Hoc網(wǎng)絡(luò)的整體性能.
OLSR協(xié)議是一種基于表驅(qū)動(dòng)的優(yōu)化鏈路狀態(tài)路由協(xié)議[7],協(xié)議定義了其每個(gè)節(jié)點(diǎn)在自己的一跳鄰居節(jié)點(diǎn)中選擇其中的部分節(jié)點(diǎn)作為多點(diǎn)中繼節(jié)點(diǎn)(multi point relay,MPR),只有被選為MPR的鄰居節(jié)點(diǎn)才負(fù)責(zé)轉(zhuǎn)發(fā)控制消息,節(jié)點(diǎn)之間通過(guò)周期性地交換信息并進(jìn)行分布式計(jì)算更新和建立網(wǎng)絡(luò)拓?fù)?只有MPR節(jié)點(diǎn)才有路由選擇功能,而非MPR節(jié)點(diǎn)則不參與路由計(jì)算.OLSR協(xié)議利用MPR節(jié)點(diǎn)進(jìn)行選擇性洪泛,可以有效地降低控制消息洪泛的規(guī)模.被選為MPR的節(jié)點(diǎn)在其鏈路狀態(tài)信息中聲明了其與MPR Selector之間的鏈路狀態(tài)信息,這些節(jié)點(diǎn)通過(guò)周期性地發(fā)送控制消息,向全網(wǎng)聲明通過(guò)自己可以達(dá)到自己的MPR Selector.在進(jìn)行路由計(jì)算的過(guò)程中,通過(guò)MPR形成從一個(gè)節(jié)點(diǎn)到網(wǎng)絡(luò)中的其他節(jié)點(diǎn)的路由.節(jié)點(diǎn)在自己的一跳鄰居節(jié)點(diǎn)中選擇MPR時(shí),必須選擇與自己存在雙向?qū)ΨQ鏈路的節(jié)點(diǎn),這可以避免數(shù)據(jù)分組在單向鏈路上傳輸時(shí)如何獲得分組接收確認(rèn)的問(wèn)題.
為了最大限度地利用操作系統(tǒng)提供的TCP/IP協(xié)議棧的功能以及軟件實(shí)現(xiàn)的可行性,本OLSR協(xié)議軟件的設(shè)計(jì)是在操作系統(tǒng)中采用基于用戶模式的方式來(lái)實(shí)現(xiàn).此外,為了讓軟件具有更好的可移植性,軟件參考了TCP/IP協(xié)議棧的分層設(shè)計(jì)模式,將OLSR協(xié)議軟件框架分為三層實(shí)現(xiàn),即虛擬接口服務(wù)層(virtual interface service layer,VISL)、消息及事件調(diào)度層(message and event schedule layer,MESL)和路由服務(wù)管理層(routing service manage layer,RSML).每一層都按照功能分模塊地實(shí)現(xiàn),方便對(duì)協(xié)議功能的擴(kuò)展.其中,虛擬接口服務(wù)器負(fù)責(zé)提供對(duì)不同操作系統(tǒng)以及第三方工具庫(kù)的適配支持;消息及事件調(diào)度層負(fù)責(zé)對(duì)軟件各個(gè)功能模塊代碼的調(diào)度管理;路由服務(wù)管理層主要負(fù)責(zé)完成OLSR協(xié)議的邏輯功能,控制分組與控制消息格式定義、協(xié)議數(shù)據(jù)表的管理和協(xié)議算法的實(shí)現(xiàn).OLSR協(xié)議軟件實(shí)現(xiàn)方案如圖1所示.
圖1 OLSR協(xié)議軟件實(shí)現(xiàn)方案
OLSR協(xié)議軟件為運(yùn)行在操作系統(tǒng)中的基于用戶模式的應(yīng)用軟件,根據(jù) IANA(internet assigned numbers authority)的定義,OLSR協(xié)議軟件使用UDP 698端口發(fā)送控制分組.OLSR協(xié)議軟件本身不為業(yè)務(wù)分組提供路由查詢操作,而是利用TCP/IP協(xié)議棧提供的通信功能進(jìn)行IP路由表的維護(hù).OLSR協(xié)議軟件為節(jié)點(diǎn)提供路由計(jì)算方法,通過(guò)基于節(jié)點(diǎn)間協(xié)議控制信息的交換掌握網(wǎng)絡(luò)拓?fù)湫畔ⅲ⒁罁?jù)這些信息計(jì)算路由表.當(dāng)節(jié)點(diǎn)收到需要轉(zhuǎn)發(fā)的分組(如用戶應(yīng)用的分組、非協(xié)議控制分組等)的時(shí)候,則仍通過(guò)IP從路由表中查找合適的路由并進(jìn)行轉(zhuǎn)發(fā),即OLSR協(xié)議軟件利用TCP/IP的通信功能管理和維護(hù)IP路由表,而IP利用OLSR協(xié)議軟件提供的IP路由表完成路由操作.
圖2 OLSR協(xié)議軟件框架
OLSR協(xié)議軟件的框架如圖2所示.軟件的每一層功能獨(dú)立,上層使用下層提供的服務(wù).虛擬接口服務(wù)層用來(lái)向其他兩層提供接口服務(wù),屏蔽操作系統(tǒng)或者將要用到的第三方支持的特殊性,以提供更好的可移植性.消息及事件調(diào)度層向路由服務(wù)管理層提供一套完備的程序調(diào)度和事件觸發(fā)機(jī)制,保證在需要調(diào)用程序功能的時(shí)候執(zhí)行正確的程序代碼.路由服務(wù)管理層提供 OLSR 路由的邏輯功能.軟件主程序完成對(duì)系統(tǒng)及協(xié)議的初始化及進(jìn)程退出方式的設(shè)置.在協(xié)議運(yùn)行期間,由消息及事件調(diào)度層進(jìn)行對(duì)主線程序執(zhí)行權(quán)的調(diào)度管理.調(diào)度的產(chǎn)生是基于定時(shí)器和事件來(lái)觸發(fā)的.例如:一條鏈路的狀態(tài)改變(由對(duì)稱到不對(duì)稱)將使消息及事件調(diào)度層觸發(fā)對(duì)相關(guān)功能模塊的調(diào)用(鏈路偵聽(tīng)、鄰居探測(cè)等).路由服務(wù)管理層集中實(shí)現(xiàn)了協(xié)議的主要功能:控制分組及各種控制消息格式的定義、協(xié)議內(nèi)部數(shù)據(jù)表的存儲(chǔ)和維護(hù)以及協(xié)議算法的實(shí)現(xiàn);各功能模塊向消息及事件調(diào)度層注冊(cè)被調(diào)用的條件;當(dāng)條件滿足時(shí),消息及事件調(diào)度層將觸發(fā)相應(yīng)的程序調(diào)度.同時(shí),利用節(jié)點(diǎn)剩余電量確定節(jié)點(diǎn)轉(zhuǎn)發(fā)意愿 Willingness 也放在路由服務(wù)管理層中實(shí)現(xiàn).而虛擬接口服務(wù)層則為其他所有的功能模塊提供底層系統(tǒng)調(diào)用.
圖3 網(wǎng)絡(luò)關(guān)系管理圖
在高速大規(guī)模Ad Hoc網(wǎng)絡(luò)中,節(jié)點(diǎn)之間的網(wǎng)絡(luò)關(guān)系管理如圖3所示.高層節(jié)點(diǎn)往底層節(jié)點(diǎn)發(fā)送數(shù)據(jù),只能通過(guò)底層節(jié)點(diǎn)的管理節(jié)點(diǎn)轉(zhuǎn)發(fā),且其采用的是靜態(tài)路由的方式.同一層節(jié)點(diǎn)之間的交互信息則通過(guò)OLSR協(xié)議.路由協(xié)議的實(shí)現(xiàn)是在OLSR協(xié)議的基礎(chǔ)上添加了按照管理關(guān)系確定的靜態(tài)路由過(guò)程,首先在OLSR::recv()函數(shù)中進(jìn)行分支選擇,簇頭節(jié)點(diǎn)產(chǎn)生的數(shù)據(jù)按照OLSR::SR_forwardPacket(Packet * p)函數(shù)進(jìn)行發(fā)送,而其他節(jié)點(diǎn)產(chǎn)生的數(shù)據(jù)則按照OLSR原有的OLSR::forward_data(Packet* p)函數(shù)進(jìn)行發(fā)送.
路由協(xié)議的主要模塊由函數(shù)OLSR::recv(Packet*p,Handler*h)、OLSR::SR_forwardPacket (Packet *p)和OLSR::getEntry(intdst)三部分組成,這3個(gè)函數(shù)分別進(jìn)行路由協(xié)議選擇、靜態(tài)路由具體過(guò)程以及數(shù)據(jù)包下一跳節(jié)點(diǎn)獲取.其具體流程分別如圖4、圖5、圖6所示.
圖4 OLSR協(xié)議中添加靜態(tài)路由后OLSR::recv()流程
圖5 OLSR::SR_forwardPacket()函數(shù)流程圖
圖6 OLSR::getEntry()函數(shù)流程圖
在對(duì)路由有較高的健壯性和快速反應(yīng)的移動(dòng)Ad Hoc網(wǎng)絡(luò)中,采用先應(yīng)試路由協(xié)議可以符合這一特點(diǎn).OLSR屬于先應(yīng)試路由協(xié)議,可以通過(guò)其MPR機(jī)制有效地控制路由開(kāi)銷,同時(shí)其延時(shí)小、反應(yīng)迅速.目前OLSR協(xié)議軟件的實(shí)現(xiàn)有較多版本,各有特點(diǎn),本文以TCP/IP協(xié)議為基礎(chǔ),設(shè)計(jì)了基于用戶模式的OLSR軟件應(yīng)用軟件框架,同時(shí)對(duì)OLSR軟件的關(guān)鍵模塊進(jìn)行了分析與設(shè)計(jì),提出了利用靜態(tài)路由與OLSR動(dòng)態(tài)路由相結(jié)合的方式以重新設(shè)計(jì)節(jié)點(diǎn)之間的網(wǎng)絡(luò)管理關(guān)系,從而實(shí)現(xiàn)在高速、大規(guī)模Ad Hoc網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)男阅?
[1] IETF.Mobile Ad hoc networks charter [EB/OL].(2004-06-01)[2004-12-18].http://www.ietf.org/html.charters/manet-charter.html.
[2] Clausen T,JacquetEds P. RFC 3626-optimized link state routing protocol(OLSR)[S].Project Hipercom:INRTA,2003.
[3] 黃帥,任佳敏. 一種基于Android的OLSR路由協(xié)議實(shí)現(xiàn)方案[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(2):29-32.
[4] 梁海蓮,張懿煌,須文波. 基于OOP的OLSR路由協(xié)議的一種實(shí)現(xiàn)方案[J]. 微計(jì)算機(jī)信息,2007,23:125-126.
[5] 譚方勇,葉良,于復(fù)生,等. Ad hoc網(wǎng)絡(luò)中TDMA/CSMA融合的多址接入?yún)f(xié)議[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2011,32(11):3656-3659.
[6] Akyildiz I F,Wang Xudong.A survey on wireless mesh network[J].IEEE Communications Manazine,2005,43(9):23-30.
(責(zé)任編輯:李 華)
A Design of OLSR Protocol Software in High-speed and Large-scale Ad Hoc Network
TAN Fang-yong,ZHANG Zhen,ZENG Hai
(School of Computer Engineering,Suzhou Vocational University,Suzhou 215104,China)
This paper proposes an overall framework of OLSR protocol software based on user mode in highspeed and large-scale Ad Hoc network environment,and defnes its implementation and framework.The design of the software framework borrows the idea of layered design of TCP/IP protocol stack,which can solve the portability problem.The management structure of the nodes is redesigned by means of algorithon,and the combination of static routing protocol and OLSR routing protocol improves the performance of data transmission in high-speed and large-scale Ad Hoc network.
Ad Hoc network;OLSR protocol;user mode;software framework;static routing
TP393.04
A
1008-5475(2014)04-0011-04
2014-06-01;
2014-06-25
蘇州市科技計(jì)劃資助項(xiàng)目(SYG201257);蘇州市職業(yè)大學(xué)校級(jí)課題資助項(xiàng)目(2013SZDYJ10)
譚方勇(1976-),男,江蘇蘇州人,副教授,碩士,主要從事無(wú)線網(wǎng)絡(luò)及網(wǎng)絡(luò)安全研究.