專利名稱:一種仿真移動自組織網(wǎng)絡(luò)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及了移動自組織網(wǎng)絡(luò)技術(shù),具體涉及一種仿真移動自組織網(wǎng)絡(luò)的方法。
背景技術(shù):
移動自組織網(wǎng)絡(luò)(Mobile Ad-hoc NETwork,MANET)是由可以任意移動的節(jié)點組成的自治系統(tǒng),是一種拓?fù)鋭討B(tài)變化的無線多跳網(wǎng)絡(luò)。與已有的無線蜂窩網(wǎng)絡(luò)(Cellular Networks)、無線局域網(wǎng)(Wireless LAN)相比,具有無需預(yù)先部署、隨時隨地組網(wǎng)、自組織和自維護等優(yōu)點。
近年來,與移動自組織網(wǎng)絡(luò)相關(guān)的協(xié)議研發(fā)持續(xù)火熱,協(xié)議評估是網(wǎng)絡(luò)協(xié)議設(shè)計開發(fā)過程中的重要環(huán)節(jié),直接影響到網(wǎng)絡(luò)協(xié)議設(shè)計開發(fā)的質(zhì)量和效率。模擬、仿真和實景實驗是三種主要的協(xié)議評估途徑。
網(wǎng)絡(luò)模擬器是在虛擬的網(wǎng)絡(luò)上運行偽代碼,具有成本低,可以提供便易的、可重復(fù)的實驗場景設(shè)置,可擴展性好等優(yōu)點,但真實性差,無法模擬移動自組織網(wǎng)絡(luò)無線信道的物理特性。實景實驗是在真實網(wǎng)絡(luò)上運行真實代碼,研究者設(shè)計開發(fā)的協(xié)議最終要在真實環(huán)境下運行,所以搭建實景環(huán)境進行協(xié)議評估很有意義。但實景實驗很難得到重復(fù)的實驗設(shè)置,而且由于移動自組織網(wǎng)絡(luò)是一種無線多跳網(wǎng)絡(luò),所以需要較大的場地部署實景實驗床,這也使得實景實驗的成本很高。
仿真是在半真實的網(wǎng)絡(luò)上運行真實代碼,它追求協(xié)議運行的結(jié)果與實景實驗相同,而且提供獲得可重復(fù)實驗設(shè)置的方法。可以說,仿真是結(jié)合了模擬的設(shè)置便易性、可重復(fù)性和實景實驗真實性特點的第三種協(xié)議評估途徑,具有良好的應(yīng)用前景。
為了保證較好的無線鏈路傳輸特性仿真有效性,已有的移動自組織網(wǎng)絡(luò)仿真平臺通常使用射頻信號衰減控制的方法壓縮仿真平臺的部署空間,降低部署成本,其中文獻(H.Zhao,W.Yan,T.Zhao,and X Li,“WirelessMulti-hop Network Scenario Emulation with MinMax Error”,inProceedings of the 31st IEEE Conference on Local Computer Networks(LCN’06),Nov.2006,pp.949-951)提出一種針對任意移動自組織網(wǎng)絡(luò)靜態(tài)場景獲得最佳仿真平臺的算法,該算法的隱含前提是被仿真節(jié)點與仿真節(jié)點之間的對應(yīng)關(guān)系不固定。但在實際應(yīng)用中,仿真實驗開始后,被仿真節(jié)點上的應(yīng)用就運行在仿真實驗床中的某個固定節(jié)點上,為了使實驗持續(xù)進行,就要求在整個仿真實驗過程中被仿真節(jié)點與仿真節(jié)點之間的對應(yīng)關(guān)系保持不變,而仿真實驗床中的節(jié)點位置固定,節(jié)點間的相對位置關(guān)系也固定,這些約束條件使得射頻信號衰減控制方法對節(jié)點移動仿真的靈活性不足。
現(xiàn)有技術(shù)中有利用固定實驗床仿真移動自組織網(wǎng)絡(luò)的方法,該方法在大空間范圍內(nèi)部署大量輕量級仿真節(jié)點,這些節(jié)點僅需具備有線、無線數(shù)據(jù)包收發(fā)功能,無需運行復(fù)雜應(yīng)用(包括路由協(xié)議),仿真實驗中的所有應(yīng)用都運行在一臺主機上,任意時刻該主機上的每個應(yīng)用都與一個輕量級仿真節(jié)點相對應(yīng),通過改變各應(yīng)用與輕量級仿真節(jié)點的映射關(guān)系實現(xiàn)移動自組織網(wǎng)絡(luò)仿真。顯然,這種仿真方法需要大范圍的部署場地和大量仿真節(jié)點,部署成本高,不宜推廣;而且所有應(yīng)用集中運行在一臺主機上,這與移動自組織網(wǎng)絡(luò)中應(yīng)用運行的分布式特點不符。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明致力于提供一種仿真移動自組織網(wǎng)絡(luò)的方法。
本發(fā)明的上述目的是通過如下的技術(shù)方案予以實現(xiàn)的一種仿真移動自組織網(wǎng)絡(luò)的方法,包括a1)仿真平臺由一個控制節(jié)點和若干個實驗節(jié)點組成,將待實驗的應(yīng)用程序部署到每一個實驗節(jié)點上,所述控制節(jié)點和所述實驗節(jié)點通過高速交換機相連,每個實驗節(jié)點上裝有一塊無線網(wǎng)卡和一塊有線網(wǎng)卡,無線網(wǎng)卡與外接天線相連,在無線網(wǎng)卡和外接天線之間插入可調(diào)射頻信號衰減器;b1)仿真實驗準(zhǔn)備過程中,為每個實驗節(jié)點指定一個虛擬IP地址,供待實驗的應(yīng)用程序使用,在所述控制節(jié)點上對用戶定制的移動自組織網(wǎng)絡(luò)場景進行時間采樣,產(chǎn)生移動自組織網(wǎng)絡(luò)靜態(tài)場景序列,并計算上述序列中每一靜態(tài)場景對應(yīng)的節(jié)點映射關(guān)系和衰減控制參量矢量,將各采樣時刻的仿真節(jié)點映射關(guān)系和衰減控制參量矢量發(fā)送至全部實驗節(jié)點,其中仿真節(jié)點映射關(guān)系表現(xiàn)為虛擬IP地址與實驗節(jié)點的對應(yīng)關(guān)系,即虛擬IP地址與對應(yīng)實驗節(jié)點無線網(wǎng)絡(luò)接口IP地址和有線網(wǎng)絡(luò)接口IP地址的對應(yīng)關(guān)系,存儲在應(yīng)用-接口映射表中;c1)啟動仿真實驗后,每一采樣時刻,所述控制節(jié)點向各實驗節(jié)點發(fā)送當(dāng)前采樣時刻序號,所述實驗節(jié)點根據(jù)當(dāng)前采樣時刻序號設(shè)置本節(jié)點衰減控制參量,并根據(jù)當(dāng)前采樣時刻節(jié)點映射關(guān)系對應(yīng)用程序的IP數(shù)據(jù)包進行調(diào)度。
所述步驟c1之后進一步包括a2)實驗節(jié)點對應(yīng)用程序的IP數(shù)據(jù)包進行發(fā)送時,在IP包中保留原始IP包頭信息;b2)如果原始IP包頭中的源地址是虛擬地址,且該地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP屬于本機,則將IP包標(biāo)記為“實驗床數(shù)據(jù)包”和“已經(jīng)無線發(fā)送”,通過無線網(wǎng)絡(luò)接口將它轉(zhuǎn)發(fā)到原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口;c2)如果原始IP包頭中的源地址是虛擬地址,且該地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP不屬于本機,則將IP包標(biāo)記為“實驗床數(shù)據(jù)包”后,通過有線網(wǎng)絡(luò)接口將它轉(zhuǎn)發(fā)到原始IP包頭中的源地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口。
所述步驟c1之后進一步包括a3)所述實驗節(jié)點接收IP包頭中標(biāo)記為“實驗床數(shù)據(jù)包”的IP數(shù)據(jù)包;b3)如果IP包未被標(biāo)記為“已經(jīng)無線發(fā)送”,則通過無線網(wǎng)絡(luò)接口將該IP包發(fā)送至原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口;c3)如果IP包已被標(biāo)記為“已經(jīng)無線發(fā)送”,且原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP屬于本機,則恢復(fù)原始IP包頭后,將IP包傳遞到協(xié)議棧上層;如果IP包已被標(biāo)記為“已經(jīng)無線發(fā)送”,且原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP不屬于本機,則通過有線網(wǎng)絡(luò)接口將它發(fā)送到原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口。。
所述實驗節(jié)點對數(shù)據(jù)包進行發(fā)送時,在路由協(xié)議前的處理步驟為a4)從網(wǎng)絡(luò)協(xié)議棧上層獲得即將發(fā)送出去的IP包;b4)如果IP包的源地址屬于虛擬IP地址,則將原IP包擴展,預(yù)留空間;c4)將IP包交給下層協(xié)議。
所述實驗節(jié)點對數(shù)據(jù)包進行發(fā)送時,在路由協(xié)議后的處理步驟為
a5)獲得經(jīng)過路由協(xié)議處理之后的IP包;b5)如果源地址不是虛擬IP地址,則對該IP包的調(diào)度結(jié)束,否則繼續(xù);c5)將IP包頭復(fù)制到已預(yù)留的空間;d5)如果IP包源地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP屬于本機,則轉(zhuǎn)到e5;否則轉(zhuǎn)到f5;e5)將IP包標(biāo)識為“實驗床數(shù)據(jù)包”和“已經(jīng)無線發(fā)送”,源地址修改為本機無線網(wǎng)絡(luò)接口IP,目的地址修改為原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP,然后轉(zhuǎn)到g5;f5)將IP包標(biāo)識為“實驗床數(shù)據(jù)包”,源地址修改為本機有線網(wǎng)絡(luò)接口IP,目的地址修改為原始IP包頭中源地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP;g5)將IP包交給協(xié)議棧下層協(xié)議。
實驗節(jié)點對數(shù)據(jù)包進行接收時,在路由協(xié)議前的處理步驟為a6)從網(wǎng)絡(luò)協(xié)議棧下層獲得收到的IP包;b6)如果IP包未被標(biāo)記為“實驗數(shù)據(jù)包”,則將該IP包直接傳送到協(xié)議棧上層協(xié)議,對它的調(diào)度結(jié)束,否則繼續(xù);c6)如果IP包未被標(biāo)記為“已經(jīng)無線發(fā)送”,則找到原始IP包頭中的目的地址,然后將IP包頭的目的地址設(shè)為原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP,將IP包頭的源地址設(shè)為本機無線網(wǎng)絡(luò)接口IP,并將IP包標(biāo)記為“已經(jīng)無線發(fā)送”后,將IP包傳遞到協(xié)議棧上層,結(jié)束,否則繼續(xù);d6)此時IP包被標(biāo)記為“已經(jīng)無線發(fā)送”。如果原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP屬于本機,則用內(nèi)部保留的原始IP包頭覆蓋外部包頭,重新計算整個IP包的校驗值后,將它傳遞到協(xié)議棧上層;否則,將IP包頭目的地址設(shè)為原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP,將IP包頭的源地址設(shè)為本機有線網(wǎng)路接口IP,傳遞到協(xié)議棧上層。
實驗節(jié)點對數(shù)據(jù)包進行接收時,在路由協(xié)議后的處理步驟為a7)獲得經(jīng)過路由協(xié)議處理的IP包;b7)如果IP包源地址是虛擬地址,則轉(zhuǎn)到c7;否則轉(zhuǎn)到d7;c7)壓縮IP包,去掉b4步驟中預(yù)留的空間;d7)將IP包交給協(xié)議棧上層協(xié)議。
本發(fā)明具有如下技術(shù)效果射頻信號衰減控制方法中存在隱含地要求被仿真節(jié)點與仿真節(jié)點映射關(guān)系保持不變的缺陷,使得該仿真方法對節(jié)點移動仿真的靈活性不足,無法滿足用戶定制實驗場景的需求,其根本原因是運行在實驗節(jié)點上的應(yīng)用使用本機無線接口收發(fā)數(shù)據(jù)。本發(fā)明提出的應(yīng)用-接口分離技術(shù)使得被仿真節(jié)點與實驗節(jié)點映射關(guān)系固定,但被仿真節(jié)點與無線接口映射關(guān)系可變,在保證應(yīng)用持續(xù)運行的同時,解決了射頻信號衰減控制方法的缺陷,提升了對節(jié)點移動仿真的靈活性,使基于射頻信號衰減控制的移動自組織網(wǎng)絡(luò)能夠允許用戶定制實驗場景。使用本發(fā)明進行移動自組織網(wǎng)絡(luò)仿真實驗時,應(yīng)用依據(jù)起始采樣時刻的節(jié)點映射關(guān)系被部署在仿真平臺中的不同無線節(jié)點上,保持了移動自組織網(wǎng)絡(luò)中應(yīng)用分布運行的特點;采用射頻信號衰減控制方法,既保證了較好的無線鏈路傳輸特性仿真有效性,又降低了部署成本;且采用應(yīng)用-接口分離技術(shù),也保證了較好的節(jié)點移動仿真有效性。
圖1是本發(fā)明移動自組織網(wǎng)絡(luò)的仿真平臺硬件體系結(jié)構(gòu)示意圖;
圖2是本發(fā)明仿真平臺中控制節(jié)點軟件體系結(jié)構(gòu)示意圖;圖3是本發(fā)明仿真平臺中實驗節(jié)點軟件體系結(jié)構(gòu)示意圖;圖4是本發(fā)明射頻信號衰減控制示意圖;圖5是實驗節(jié)點對數(shù)據(jù)包進行發(fā)送時,在路由協(xié)議前的處理流程圖;圖6是實驗節(jié)點對數(shù)據(jù)包進行發(fā)送時,在路由協(xié)議后的處理流程圖;圖7是實驗節(jié)點對數(shù)據(jù)包進行接收時,在路由協(xié)議前的處理流程圖;圖8是實驗節(jié)點對數(shù)據(jù)包進行接收時,在路由協(xié)議后的處理流程圖;圖9是Linux操作系統(tǒng)Netfilter框架的示意圖。
具體實施例方式
下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細(xì)說明。
圖1是用于仿真移動自組織網(wǎng)絡(luò)的仿真平臺硬件體系結(jié)構(gòu),該平臺由一個控制節(jié)點和若干實驗節(jié)點組成,它們通過高速交換機相連。每個實驗節(jié)點上裝有一個無線網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口通過SMA接口與外接天線相連,在無線網(wǎng)絡(luò)接口和外接天線之間插入雙SMA接口的可調(diào)射頻信號衰減器,例如BOWEISZZ007程控步進衰減器。
圖2是仿真平臺中控制節(jié)點軟件體系結(jié)構(gòu)?!坝脩舨僮鹘缑妗毕蛴脩籼峁嶒炘O(shè)置輸入接口,該模塊將用戶定制的移動自組織網(wǎng)絡(luò)場景時間采樣后,將采樣后的靜態(tài)場景序列傳送給“命令解釋器”;“命令解釋器”求解并輸出各采樣時刻靜態(tài)場景對應(yīng)的節(jié)點映射關(guān)系和衰減控制參量矢量,并將與該靜態(tài)場景相關(guān)聯(lián)的采樣時刻、節(jié)點映射關(guān)系和衰減參量一同傳給“規(guī)則生成器”;“規(guī)則生成器”根據(jù)來自“命令解釋器”的輸入,對采樣時刻進行編號,生成“采樣時刻編號、采樣時刻序號”對應(yīng)關(guān)系及“采樣時刻序號、應(yīng)用映射、接口映射、衰減參量矢量”格式的規(guī)則,各采樣時刻的全部規(guī)則構(gòu)成仿真實驗中需要使用的規(guī)則序列;“規(guī)則分發(fā)器”在仿真準(zhǔn)備過程中將該規(guī)則序列分發(fā)給所有實驗節(jié)點,在仿真實驗啟動后,依據(jù)“采樣時刻編號、采樣時刻序號”對應(yīng)關(guān)系,采用時鐘驅(qū)動的方法在每一采樣時刻到來時,向各實驗節(jié)點發(fā)送當(dāng)前采樣時刻序號;“節(jié)點狀態(tài)管理”模塊負(fù)責(zé)接收來自實驗節(jié)點的狀態(tài)報告,通過規(guī)則生成器生成節(jié)點信息,上傳給“節(jié)點信息管理”模塊。
圖3是仿真平臺中實驗節(jié)點軟件體系結(jié)構(gòu),運行Linux操作系統(tǒng)?!耙?guī)則接收器”接收來自控制節(jié)點的規(guī)則序列和最新采樣時刻序號,并傳給“規(guī)則解釋器”;“規(guī)則解釋器”根據(jù)收到的規(guī)則序列和當(dāng)前采樣時刻序號,向“衰減器控制”模塊傳送當(dāng)前衰減參量值,向“配置文件生成器”發(fā)送當(dāng)前應(yīng)用映射和接口映射規(guī)則;“數(shù)據(jù)包調(diào)度器”根據(jù)配置文件(即當(dāng)前應(yīng)用映射和接口映射規(guī)則)對發(fā)往/收自無線網(wǎng)絡(luò)接口和有線網(wǎng)絡(luò)接口的數(shù)據(jù)包進行重新調(diào)度;“狀態(tài)報告器”定時向控制節(jié)點的“節(jié)點狀態(tài)管理”模塊報告實驗節(jié)點的運行狀態(tài)。
圖4是射頻信號衰減控制示意圖。虛線框內(nèi)是衰減器及其外圍電路組成的控制電路板,與圖1中的“可調(diào)衰減器”模塊對應(yīng),實現(xiàn)框內(nèi)是實驗節(jié)點機上的軟件硬件模塊,其中“衰減器控制”與圖3中的“衰減器控制”軟件模塊對應(yīng),“無線網(wǎng)卡”是插在實驗節(jié)點機上的無線網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口的特點是通過SMA接口與天線相連??刂齐娐钒逋ㄟ^實驗節(jié)點機的USB接口供電;實驗節(jié)點機上的衰減器控制模塊通過串口向控制電路板發(fā)送控制數(shù)據(jù),控制電路板上的CPU將來自實驗節(jié)點機上的控制數(shù)據(jù)轉(zhuǎn)換成可控制SZZ007衰減器的控制數(shù)據(jù),從而控制衰減參量。
在仿真實驗準(zhǔn)備過程中,包括以下步驟
a)對用戶定制的移動自組織網(wǎng)絡(luò)場景進行時間采樣,產(chǎn)生移動自組織網(wǎng)絡(luò)靜態(tài)場景序列;用戶通過控制節(jié)點上的“用戶操作界面”定制仿真實驗需要的移動自組織網(wǎng)絡(luò)場景,構(gòu)成靜態(tài)場景序列;b)求解上述序列中每一靜態(tài)場景對應(yīng)的節(jié)點映射關(guān)系和衰減控制參量;“用戶操作界面”模塊將靜態(tài)場景序列傳送給“命令解釋器”,“命令解釋器”計算每一靜態(tài)場景對應(yīng)的節(jié)點映射關(guān)系和衰減控制參量,并將與該靜態(tài)場景相關(guān)聯(lián)的采樣時刻、節(jié)點映射關(guān)系和衰減參量一同傳給“規(guī)則生成器”;“規(guī)則生成器”根據(jù)來自“命令解釋器”的輸入,對采樣時刻進行編號,生成“采樣時刻編號、采樣時刻序號”對應(yīng)關(guān)系及“采樣時刻序號、應(yīng)用映射、接口映射、衰減參量矢量”格式的規(guī)則,各采樣時刻的全部規(guī)則構(gòu)成仿真實驗中需要使用的規(guī)則序列,具體格式參見f步驟中的例子;“規(guī)則生成器”將“采樣時刻編號、采樣時刻序號”對應(yīng)關(guān)系和“采樣時刻序號、應(yīng)用映射、接口映射、衰減參量矢量”規(guī)則序列傳給“規(guī)則分發(fā)器”;c)將各采樣時刻的仿真節(jié)點映射關(guān)系和衰減控制參量發(fā)送至全部實驗節(jié)點;“規(guī)則發(fā)送器”將“采樣時刻序號、應(yīng)用映射、接口映射、衰減參量矢量”規(guī)則序列發(fā)送至所有實驗節(jié)點的“規(guī)則接收器”模塊。
啟動仿真實驗后,包括以下步驟d)每一采樣時刻,控制節(jié)點向各實驗節(jié)點發(fā)送當(dāng)前采樣時刻序號;“規(guī)則分發(fā)器”依據(jù)“采樣時刻編號、采樣時刻序號”對應(yīng)關(guān)系,采用時鐘驅(qū)動的方法在每一采樣時刻到來時,向各實驗節(jié)點的“規(guī)則接收器模塊”發(fā)送當(dāng)前采樣時刻序號。
e)實驗節(jié)點根據(jù)當(dāng)前采樣時刻序號設(shè)置本節(jié)點衰減控制參量;“規(guī)則解釋器”根據(jù)當(dāng)前采樣時刻序號,從“采樣時刻序號、應(yīng)用映射、接口映射、衰減參量矢量”規(guī)則序列中提取當(dāng)前時刻本節(jié)點的衰減控制參量值并發(fā)送給“衰減器控制”模塊,“衰減器控制”模塊向圖4虛線所示的控制電路板發(fā)送控制信號,調(diào)節(jié)SZZ007衰減器的控制參量;f)實驗節(jié)點上的數(shù)據(jù)包調(diào)度模塊根據(jù)當(dāng)前采樣時刻節(jié)點映射關(guān)系對應(yīng)用程序數(shù)據(jù)包進行調(diào)度;“規(guī)則解釋器”根據(jù)當(dāng)前采樣時刻序號,從“采樣時刻序號、應(yīng)用映射、接口映射、衰減參量矢量”規(guī)則序列中提取當(dāng)前時刻應(yīng)用映射和接口映射規(guī)則并發(fā)送給“配置文件生成器”,“配置文件生成器”生成應(yīng)用-接口映射表,“數(shù)據(jù)包調(diào)度器”根據(jù)當(dāng)前應(yīng)用-接口映射表對發(fā)往/收自無線網(wǎng)絡(luò)接口和有線網(wǎng)絡(luò)接口的數(shù)據(jù)包進行重新調(diào)度;例如,下表所示一個具有三個節(jié)點的實驗床系統(tǒng)的規(guī)則序列。
它表示在時刻1,節(jié)點1、2和3分別對應(yīng)著位于節(jié)點1、2和3上的無線網(wǎng)絡(luò)接口;到了在時刻2,節(jié)點2仍然使用自己節(jié)點上的無線網(wǎng)絡(luò)接口,而節(jié)點1和3則互相使用對方機器上的無線網(wǎng)絡(luò)接口傳輸;這樣就仿真了1號和3號節(jié)點由于移動而互相交換了物理位置這樣的動態(tài)場景。
當(dāng)節(jié)點收到控制節(jié)點發(fā)送的時刻序號1時,就生成如下表所示的應(yīng)用-接口映射表。
其中,“虛擬網(wǎng)絡(luò)接口”IP表示用戶的應(yīng)用程序所使用的IP地址,并不代表一個實際的網(wǎng)絡(luò)接口。“無線網(wǎng)絡(luò)接口”和“有線網(wǎng)絡(luò)接口”分別表示此時使用該虛擬接口的應(yīng)用程序在無線網(wǎng)絡(luò)中進行數(shù)據(jù)包收發(fā)所使用的無線接口,以及應(yīng)用程序所在節(jié)點上的有線接口。IP地址中最后一部分相同的無線網(wǎng)絡(luò)接口和有線網(wǎng)絡(luò)接口,例如192.168.1.1和192.168.2.1,都位于同一個節(jié)點上,當(dāng)節(jié)點收到控制節(jié)點發(fā)送的時刻序號2時,節(jié)點上的應(yīng)用-接口映射如下表所示
g)在整個仿真實驗過程中,步驟d~f循環(huán)執(zhí)行,直至仿真實驗結(jié)束。
在描述步驟f中的基于Linux操作系統(tǒng)的“數(shù)據(jù)包調(diào)度器”的算法之前,需要對兩個關(guān)鍵問題進行說明。
第一個問題是,調(diào)度算法的實現(xiàn)方式,即如何將調(diào)度算法插入到系統(tǒng)中。在Linux操作系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧中實現(xiàn)了名為Netfilter的框架,允許內(nèi)核態(tài)的程序在網(wǎng)絡(luò)協(xié)議棧處理數(shù)據(jù)包的流程中的幾個不同位置插入鉤子函數(shù),以便對數(shù)據(jù)包進行特定的處理。與本方法有關(guān)的鉤子主要包含以下幾個
NF_IP_LOCAL_OUT,表示數(shù)據(jù)包正在被發(fā)送且未經(jīng)過路由協(xié)議處理;NF_IP_POST_ROUTING,表示數(shù)據(jù)包正在被發(fā)送且已經(jīng)過路由協(xié)議處理;NF_IP_PRE_ROUTING,表示數(shù)據(jù)包正在被接收且未經(jīng)過路由協(xié)議處理;NF_IP_LOCAL_IN,表示數(shù)據(jù)包正在被接收且已經(jīng)過路由協(xié)議處理。因此,本方法將調(diào)度算法實現(xiàn)為模塊,在各個鉤子處注冊處理函數(shù)后,插入到系統(tǒng)內(nèi)核中,這樣就能夠?qū)崿F(xiàn)對數(shù)據(jù)包發(fā)送和接收過程的細(xì)粒度控制,比如在路由程序處理之前或之后對數(shù)據(jù)包進行修改和調(diào)度。
第二個問題是該調(diào)度模塊與現(xiàn)有TCP/IP協(xié)議棧的兼容性問題。需要考慮的問題主要包括,IP包頭格式問題,IP分片問題,等等。針對IP包頭格式問題,為了使調(diào)度工作不影響原有數(shù)據(jù),下面的做法是使用“隧道”技術(shù),將整個原IP包封裝在新的包頭中,到達目的地后再“拆封”;針對IP分片問題,下面的做法是,在網(wǎng)絡(luò)的路由層程序?qū)?shù)據(jù)包處理之前(此時大數(shù)據(jù)包尚未經(jīng)過分片),為IP包數(shù)據(jù)部分的每1456個字節(jié)多預(yù)留24字節(jié)的空間,其中20字節(jié)用于分片后填寫新的IP包頭,4字節(jié)是為了以后可能的擴展而預(yù)留的,到達目的地并“合片”之后,再將預(yù)留的空間去除。
調(diào)度過程分為對需要發(fā)送出去的數(shù)據(jù)包的調(diào)度和對從網(wǎng)絡(luò)接口收到的數(shù)據(jù)包的調(diào)度兩部分,其處理步驟分別闡述如下發(fā)送數(shù)據(jù)包調(diào)度fa)在路由程序處理之前,從網(wǎng)絡(luò)協(xié)議棧上層獲得即將發(fā)送出去的IP包;fb)如果IP包的源地址屬于虛擬IP地址,則將原IP包擴展,在數(shù)據(jù)部分前面為每1456字節(jié)的數(shù)據(jù)預(yù)留24個字節(jié)的空間;fc)將IP包交給下層協(xié)議;fd)獲得經(jīng)過路由協(xié)議處理之后的IP包;
fe)如果源地址不是虛擬IP地址,則對該IP包的調(diào)度結(jié)束,否則繼續(xù);ff)將IP包頭復(fù)制到fb中預(yù)留的空間的前面部分;fg)在應(yīng)用-接口映射表中查找源地址對應(yīng)的無線接口地址。如果該無線接口地址屬于本機地址,則轉(zhuǎn)到fh;否則轉(zhuǎn)到fi;fh)將IP包外部包頭(區(qū)別于f中復(fù)制到數(shù)據(jù)部分的IP包頭)中的協(xié)議號修改為144(這是從尚未分配到特定協(xié)議的號碼中任意選出的,用來表明該包屬于“實驗床數(shù)據(jù)包”,即經(jīng)過封裝,含有內(nèi)部IP包頭),目的地址修改為原目的地址對應(yīng)的無線地址,TOS域設(shè)為1(表示該IP包經(jīng)過了無線接口的傳輸過程,即前面提到的“經(jīng)過無線發(fā)送”),該IP包對應(yīng)的struct sk_buff結(jié)構(gòu)的dev成員設(shè)為本機無線接口對應(yīng)的struct net_device結(jié)構(gòu)(通過系統(tǒng)函數(shù)__dev_get_by_name獲得);調(diào)用系統(tǒng)函數(shù)ip_route_me_harder對IP包的路由進行計算,調(diào)用系統(tǒng)函數(shù)ip_send_check重新計算整個IP包的校驗值,然后轉(zhuǎn)到fj;fi)將外部包頭的協(xié)議號修改為144,目的地址修改為其源地址對應(yīng)的有線接口,該IP包對應(yīng)的struct sk_buff結(jié)構(gòu)的dev成員設(shè)為本機有線接口對應(yīng)的struct net_device結(jié)構(gòu);調(diào)用系統(tǒng)函數(shù)ip_route_me_harder對IP包的路由進行計算,調(diào)用系統(tǒng)函數(shù)ip_send_check重新計算整個IP包的校驗值;fj)將IP包交給協(xié)議棧下層協(xié)議。
在上述方案中,步驟fa~fc如圖5所示,步驟fd~fj如圖6所示。
在上述方案中,將fb步驟作為處理函數(shù)掛載到Netfilter的NF_IP_LOCAL_OUT處,即可在其被調(diào)用時自動獲得fa步驟中所需的待發(fā)送IP數(shù)據(jù)包;fb步驟的處理函數(shù)返回NF_ACCEPT即可以完成c步驟。
在上述方案中,將fe~fi步驟作為處理函數(shù)掛載到Netfilter的NF_IP_POST_ROUTING鉤子處,即可在其被調(diào)用時自動獲得fd步驟中所需的經(jīng)過路由協(xié)議處理的數(shù)據(jù)包;該函數(shù)返回NF_ACCEPT即可完成fj步驟。
在上述方案中,fb步驟包含以下步驟fb1)在應(yīng)用-接口映射表中查找虛擬地址等于該IP包源地址的表項。如果找到,轉(zhuǎn)fb2,否則轉(zhuǎn)fc;fb2)用IP包頭中記錄的整個IP包長度減去IP包頭本身的長度,得到數(shù)據(jù)部分的長度。然后用這個值除以1456并乘以24,得到數(shù)據(jù)包需要擴展的大小,如果除法計算余數(shù)不為零,需要在最后的結(jié)果中再加上24;fb3)使用skb_copy_expand系統(tǒng)函數(shù)復(fù)制并擴展原IP包,其指明擴展大小的參數(shù)設(shè)為fb2的計算結(jié)果。使用skb_put系統(tǒng)函數(shù)增大新IP包的數(shù)據(jù)部分長度,其指明擴展大小的參數(shù)也設(shè)為fb2的計算結(jié)果;fb4)將原IP包頭復(fù)制到新數(shù)據(jù)包的頭部;將原IP包的數(shù)據(jù)復(fù)制到新IP包的合適位置,其他位置用數(shù)字0填充;fb5)設(shè)置新IP包的長度為原IP包長度加上fb2的計算結(jié)果,使用ip_send_check函數(shù)重新計算新IP包的IP包頭校驗值;fb6)用新構(gòu)建的IP包替換原IP包,使用kfree_skb系統(tǒng)函數(shù)將原IP包釋放。
在上述方案中,步驟fb4包含以下步驟fb41)將原IP包頭復(fù)制到新數(shù)據(jù)包的頭部;fb42)將原IP包的數(shù)據(jù)部分看作k個部分,除了最后一個部分,其他每個部分由連續(xù)的1456個字節(jié)組成,第k個部分包含的數(shù)據(jù)在1個字節(jié)到1456字節(jié)之間。將這k個部分從原IP包分別復(fù)制到新IP包中以f(k)為起始的新位置上。f(k)表示新位置的第一個字節(jié)到新IP包數(shù)據(jù)部分第一個字節(jié)的距離(字節(jié)數(shù)),其公式為f(k)=1460*(k-1)+20。每次復(fù)制完一個部分的數(shù)據(jù)后,在新IP包中該部分之前的20字節(jié)和之后的4字節(jié)用數(shù)值0填充。
接收數(shù)據(jù)包調(diào)度fk)在路由程序處理之前,從網(wǎng)絡(luò)協(xié)議棧下層獲得收到的數(shù)據(jù)包;fl)如果IP包的協(xié)議號不是144,則將該IP包直接傳送到協(xié)議棧上層協(xié)議,對它的調(diào)度結(jié)束。否則繼續(xù);fm)如果IP包頭TOS域為0,則找到內(nèi)部包頭(協(xié)議號144能夠保證內(nèi)部包頭的存在)中的目的地址,然后將外部包頭的目的地址設(shè)為該地址對應(yīng)的無線接口地址,源地址設(shè)為本機無線接口地址,TOS域設(shè)為1,該IP包對應(yīng)的structsk_buff結(jié)構(gòu)的dev成員設(shè)為本機無線接口對應(yīng)的struct net_device結(jié)構(gòu),調(diào)用系統(tǒng)函數(shù)ip_route_me_harder對IP包的路由進行計算,并重新計算整個IP包的校驗值后,將IP包傳遞到協(xié)議棧上層,結(jié)束。否則繼續(xù);fn)此時IP包頭TOS域為1,找到內(nèi)部包頭目的地址。如果該地址對應(yīng)的有線接口地址屬于本機,則用內(nèi)部包頭覆蓋外部包頭,并將內(nèi)部預(yù)留的24字節(jié)空間置為0,重新計算整個IP包的校驗值后,將它傳遞到協(xié)議棧上層;否則,將外部包頭目的地址設(shè)為這個有線接口地址,源地址設(shè)為本機有線接口地址,調(diào)用系統(tǒng)函數(shù)ip_route_me_harder對IP包的路由進行計算,并重新計算整個IP包的校驗值后,傳遞到協(xié)議棧上層的路由協(xié)議;fo)獲得經(jīng)過路由協(xié)議處理的IP包;fp)如果IP包源地址是虛擬地址,則轉(zhuǎn)到fq;否則轉(zhuǎn)到fr;fq)壓縮IP包,去掉內(nèi)部包頭和填充的部分;fr)將IP包交給協(xié)議棧上層協(xié)議,對該IP包的調(diào)度結(jié)束。
在上述方案中,步驟fk~fn如圖7所示,步驟fo~fr如圖8所示。
在上述方案中,將fl~fn步驟作為處理函數(shù)掛載到Netfilter的NF_IP_PRE_ROUTING處,即可在其被調(diào)用時自動獲得fk步驟中所需的待發(fā)送IP數(shù)據(jù)包;該處理函數(shù)返回NF_ACCEPT即可以完成“傳遞到協(xié)議棧上層”操作,返回NF_DROP即可完成“丟棄該數(shù)據(jù)包”操作。
在上述方案中,將fp和fq步驟作為處理函數(shù)掛載到Netfilter的NF_IP_LOCAL_IN處,即可在其被調(diào)用時自動獲得fo步驟中所需的經(jīng)過路由協(xié)議處理的數(shù)據(jù)包;該函數(shù)返回NF_ACCEPT即可完成fr步驟。
在上述方案中,fq步驟包含以下步驟fq1)用IP包頭中記錄的整個IP包長度減去IP包頭本身的長度,得到數(shù)據(jù)部分的長度。然后用這個值除以1480,得到分片個數(shù),如果除法計算余數(shù)不為零,需要將個數(shù)加1;fq2)使用skb_copy_expand系統(tǒng)函數(shù)復(fù)制原IP包;fq3)將原IP包的數(shù)據(jù)復(fù)制到新IP包的合適位置;fq4)使用系統(tǒng)函數(shù)skb_trim設(shè)置新IP包的struct sk_buff結(jié)構(gòu)的某些指針,其第二個參數(shù)取為原IP包長度減去24與分片個數(shù)的乘積;fq5)將IP頭中的總長度設(shè)為新IP包的長度(即為q4中提到的的第二個參數(shù)),使用ip_send_check函數(shù)重新計算新IP包的IP包頭校驗值;fq6)用新構(gòu)建的IP包替換原IP包,使用kfree_skb系統(tǒng)函數(shù)將原IP包釋放。
在上述方案中,fq3分為以下步驟fq31)將原IP包的數(shù)據(jù)部分看作k個部分,k等于q1中求出的分片個數(shù)。除了最后一個部分,其他每個部分由連續(xù)的1460個字節(jié)組成,第k個部分包含的數(shù)據(jù)在1個字節(jié)到1460字節(jié)之間。
fq32)將這k個部分從原IP包分別復(fù)制到新IP包中以f(k)為起始的新位置上。f(k)表示新位置的第一個字節(jié)到新IP包數(shù)據(jù)部分第一個字節(jié)的距離(字節(jié)數(shù)),其公式為f(k)=1456*(k-1)+20。
綜上所述,本發(fā)明公開了一種仿真移動自組織網(wǎng)絡(luò)的方法。上面描述的應(yīng)用場景和實施例,并非用于限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),可做各種的更動和潤飾,因此本發(fā)明的保護范圍視權(quán)利要求范圍所界定。
權(quán)利要求
1.一種仿真移動自組織網(wǎng)絡(luò)的方法,包括a1)仿真平臺由一個控制節(jié)點和若干個實驗節(jié)點組成,將待實驗的應(yīng)用程序部署到每一個實驗節(jié)點上,所述控制節(jié)點和所述實驗節(jié)點通過高速交換機相連,每個實驗節(jié)點上裝有一塊無線網(wǎng)卡和一塊有線網(wǎng)卡,無線網(wǎng)卡與外接天線相連,在無線網(wǎng)卡和外接天線之間插入可調(diào)射頻信號衰減器;b1)仿真實驗準(zhǔn)備過程中,為每個實驗節(jié)點指定一個虛擬IP地址,供待實驗的應(yīng)用程序使用,在所述控制節(jié)點上對用戶定制的移動自組織網(wǎng)絡(luò)場景進行時間采樣,產(chǎn)生移動自組織網(wǎng)絡(luò)靜態(tài)場景序列,并計算上述序列中每一靜態(tài)場景對應(yīng)的節(jié)點映射關(guān)系和衰減控制參量矢量,將各采樣時刻的仿真節(jié)點映射關(guān)系和衰減控制參量矢量發(fā)送至全部實驗節(jié)點,其中仿真節(jié)點映射關(guān)系表現(xiàn)為虛擬IP地址與實驗節(jié)點的對應(yīng)關(guān)系,即虛擬IP地址與對應(yīng)實驗節(jié)點無線網(wǎng)絡(luò)接口IP地址和有線網(wǎng)絡(luò)接口IP地址的對應(yīng)關(guān)系,存儲在應(yīng)用-接口映射表中;c1)啟動仿真實驗后,每一采樣時刻,所述控制節(jié)點向各實驗節(jié)點發(fā)送當(dāng)前采樣時刻序號,所述實驗節(jié)點根據(jù)當(dāng)前采樣時刻序號設(shè)置本節(jié)點衰減控制參量,并根據(jù)當(dāng)前采樣時刻節(jié)點映射關(guān)系對應(yīng)用程序的IP數(shù)據(jù)包進行調(diào)度。
2.如權(quán)利要求1所述的仿真移動自組織網(wǎng)絡(luò)的方法,其特征在于所述步驟c1之后進一步包括a2)實驗節(jié)點對應(yīng)用程序的IP數(shù)據(jù)包進行發(fā)送時,在IP包中保留原始IP包頭信息;b2)如果原始IP包頭中的源地址是虛擬地址,且該地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP屬于本機,則將I P包標(biāo)記為“實驗床數(shù)據(jù)包”和“已經(jīng)無線發(fā)送”,通過無線網(wǎng)絡(luò)接口將它轉(zhuǎn)發(fā)到原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口;c2)如果原始IP包頭中的源地址是虛擬地址,且該地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP不屬于本機,則將IP包標(biāo)記為“實驗床數(shù)據(jù)包”后,通過有線網(wǎng)絡(luò)接口將它轉(zhuǎn)發(fā)到原始IP包頭中的源地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口。
3.如權(quán)利要求2所述的仿真移動自組織網(wǎng)絡(luò)的方法,其特征在于所述步驟c1之后進一步包括a3)所述實驗節(jié)點接收IP包頭中標(biāo)記為“實驗床數(shù)據(jù)包”的IP數(shù)據(jù)包;b3)如果IP包未被標(biāo)記為“已經(jīng)無線發(fā)送”,則通過無線網(wǎng)絡(luò)接口將該IP包發(fā)送至原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口;c3)如果IP包已被標(biāo)記為“已經(jīng)無線發(fā)送”,且原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP屬于本機,則恢復(fù)原始IP包頭后,將IP包傳遞到協(xié)議棧上層;如果IP包已被標(biāo)記為“已經(jīng)無線發(fā)送”,且原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP不屬于本機,則通過有線網(wǎng)絡(luò)接口將它發(fā)送到原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口。。
4.如權(quán)利要求2所述的仿真移動自組織網(wǎng)絡(luò)的方法,其特征在于所述實驗節(jié)點對IP數(shù)據(jù)包進行發(fā)送時,在路由協(xié)議前的處理步驟為a4)從網(wǎng)絡(luò)協(xié)議棧上層獲得即將發(fā)送出去的IP包;b4)如果IP包的源地址屬于虛擬IP地址,則將原IP包擴展,預(yù)留空間;c4)將IP包交給下層協(xié)議。
5.如權(quán)利要求4所述的仿真移動自組織網(wǎng)絡(luò)的方法,其特征在于實驗節(jié)點對IP數(shù)據(jù)包進行發(fā)送時,在路由協(xié)議后的處理步驟為a5)獲得經(jīng)過路由協(xié)議處理之后的IP包;b5)如果源地址不是虛擬IP地址,則對該IP包的調(diào)度結(jié)束,否則繼續(xù);c5)將IP包頭復(fù)制到已預(yù)留的空間;d5)如果IP包源地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP屬于本機,則轉(zhuǎn)到e5;否則轉(zhuǎn)到f5;e5)將IP包標(biāo)識為“實驗床數(shù)據(jù)包”和“已經(jīng)無線發(fā)送”,源地址修改為本機無線網(wǎng)絡(luò)接口IP,目的地址修改為原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP,然后轉(zhuǎn)到g5;f5)將IP包標(biāo)識為“實驗床數(shù)據(jù)包”,源地址修改為本機有線網(wǎng)絡(luò)接口IP,目的地址修改為原始IP包頭中源地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP;g5)將IP包交給協(xié)議棧下層協(xié)議。
6.如權(quán)利要求3所述的仿真移動自組織網(wǎng)絡(luò)的方法,其特征在于實驗節(jié)點對IP數(shù)據(jù)包進行接收時,在路由協(xié)議前的處理步驟為a6)從網(wǎng)絡(luò)協(xié)議棧下層獲得收到的IP包;b6)如果IP包未被標(biāo)記為“實驗數(shù)據(jù)包”,則將該IP包直接傳送到協(xié)議棧上層協(xié)議,對它的調(diào)度結(jié)束,否則繼續(xù);c6)如果IP包未被標(biāo)記為“已經(jīng)無線發(fā)送”,則找到原始IP包頭中的目的地址,然后將IP包頭的目的地址設(shè)為原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的無線網(wǎng)絡(luò)接口IP,將IP包頭的源地址設(shè)為本機無線網(wǎng)絡(luò)接口IP,并將IP包標(biāo)記為“已經(jīng)無線發(fā)送”后,將IP包傳遞到協(xié)議棧上層,結(jié)束,否則繼續(xù);d6)此時IP包被標(biāo)記為“已經(jīng)無線發(fā)送”。如果原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP屬于本機,則用內(nèi)部保留的原始IP包頭覆蓋外部包頭,重新計算整個IP包的校驗值后,將它傳遞到協(xié)議棧上層;否則,將IP包頭目的地址設(shè)為原始IP包頭中的目的地址在應(yīng)用-接口映射表中對應(yīng)的有線網(wǎng)絡(luò)接口IP,將IP包頭的源地址設(shè)為本機有線網(wǎng)路接口IP,傳遞到協(xié)議棧上層。
7.如權(quán)利要求6所述的仿真移動自組織網(wǎng)絡(luò)的方法,其特征在于實驗節(jié)點對IP數(shù)據(jù)包進行接收時,在路由協(xié)議后的處理步驟為a7)獲得經(jīng)過路由協(xié)議處理的IP包;b7)如果IP包源地址是虛擬地址,則轉(zhuǎn)到c7;否則轉(zhuǎn)到d7;c7)壓縮IP包,去掉b4步驟中預(yù)留的空間;d7)將IP包交給協(xié)議棧上層協(xié)議。
全文摘要
本發(fā)明公開了一種仿真移動自組織網(wǎng)絡(luò)的方法,屬于移動自組織網(wǎng)絡(luò)技術(shù)。該方法利用應(yīng)用-接口分離技術(shù),將被仿真節(jié)點與實驗節(jié)點映射關(guān)系固定,實驗節(jié)點根據(jù)該節(jié)點映射關(guān)系對應(yīng)用程序的數(shù)據(jù)包進行調(diào)度,實現(xiàn)移動自組織網(wǎng)絡(luò)的仿真。本發(fā)明將采樣時刻的節(jié)點映射關(guān)系部署在仿真平臺中的不同無線節(jié)點上,保持了移動自組織網(wǎng)絡(luò)中應(yīng)用分布運行的特點,同時將該技術(shù)與射頻信號衰減控制相結(jié)合,可獲得對移動自組織網(wǎng)絡(luò)中無線鏈路傳輸特性和節(jié)點移動兩大特點的高仿真有效性,既保證了較好的無線鏈路傳輸特性仿真有效性,又降低了部署成本。
文檔編號H04L29/06GK101051874SQ20071009938
公開日2007年10月10日 申請日期2007年5月18日 優(yōu)先權(quán)日2007年5月18日
發(fā)明者趙慧周, 辜新星, 嚴(yán)偉, 趙通, 李曉明 申請人:北京大學(xué)