專利名稱:支持大規(guī)模復(fù)雜dtn網(wǎng)絡(luò)的分布式仿真系統(tǒng)和仿真方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)仿真技術(shù)領(lǐng)域,具體涉及一種支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng)和仿真方法。
背景技術(shù):
DTN網(wǎng)絡(luò),即時(shí)延容忍網(wǎng)絡(luò)(Delay Tolerant Networks)。在一些特定的網(wǎng)絡(luò)環(huán)境下(如軍事Ad hoc網(wǎng)絡(luò),傳感器網(wǎng)絡(luò)),會(huì)經(jīng)常出現(xiàn)由于節(jié)點(diǎn)不斷移動(dòng)造成網(wǎng)絡(luò)斷開的現(xiàn)象,導(dǎo)致報(bào)文在傳輸過程中不能確保端到端的路徑,這類網(wǎng)絡(luò)被稱為時(shí)延容忍網(wǎng)絡(luò)。目前仿真(simulation)在DTN網(wǎng)絡(luò)的路由協(xié)議設(shè)計(jì)和分析中發(fā)揮著重要作用。在DTN網(wǎng)絡(luò)路由協(xié)議的驗(yàn)證過程中,出于成本的考慮,不可能在現(xiàn)實(shí)世界中搭建出一套具備一定規(guī)模的DTN網(wǎng)絡(luò),因此大部分DTN網(wǎng)絡(luò)路由協(xié)議的設(shè)計(jì)、驗(yàn)證和分析,都依賴于仿真工具。 目前簡(jiǎn)單易用的DTN網(wǎng)絡(luò)仿真工具有ONE、DTNSim2。DTNSim2是一個(gè)架構(gòu)簡(jiǎn)單的單機(jī)單線程的DTN網(wǎng)絡(luò)仿真工具,支持腳本控制。ONE是一個(gè)架構(gòu)完善,可擴(kuò)展性好的單機(jī)單線程的DTN網(wǎng)絡(luò)仿真工具,支持創(chuàng)建節(jié)點(diǎn)運(yùn)動(dòng)模型、創(chuàng)建消息分發(fā)路由協(xié)議,同時(shí)支持導(dǎo)入現(xiàn)實(shí)世界中的GPS和經(jīng)緯度等地理數(shù)據(jù)。ONE是目前使用最多的DTN網(wǎng)絡(luò)仿真工具。但是現(xiàn)有的DTN網(wǎng)絡(luò)仿真工具都只能在單機(jī)上運(yùn)行,由于單機(jī)的運(yùn)算能力有限,導(dǎo)致仿真工具的仿真能力小,可以支持的仿真節(jié)點(diǎn)規(guī)模小,可以支持的消息分發(fā)路由協(xié)議簡(jiǎn)單。上述缺陷導(dǎo)致使用現(xiàn)有仿真器進(jìn)行仿真無法高效快速的完成實(shí)驗(yàn)仿真。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種能提高仿真速度、可擴(kuò)展性和通用性更好的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng)和仿真方法,用以解決DTN網(wǎng)絡(luò)仿真系統(tǒng)的仿真能力問題,特別是解決仿真節(jié)點(diǎn)規(guī)模大、消息分發(fā)路由協(xié)議復(fù)雜的大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)仿真的性能問題。本發(fā)明采用的技術(shù)方案是
支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng),其特征在于
設(shè)置有同在一個(gè)局域網(wǎng)的一臺(tái)主控制器和若干臺(tái)仿真器;
所述的主控制器中設(shè)置有節(jié)點(diǎn)初始化模塊、主控制器模塊和仿真時(shí)鐘同步模塊;
所述的仿真器中設(shè)置有仿真器狀態(tài)更新模塊、仿真器狀態(tài)同步模塊和節(jié)點(diǎn)初始化模塊。所述的節(jié)點(diǎn)初始化模塊在系統(tǒng)啟動(dòng)時(shí)初始化所有仿真節(jié)點(diǎn);
所述的主控制器模塊統(tǒng)一管理仿真時(shí)鐘和仿真事件;在每次仿真時(shí)鐘的推進(jìn)后,將仿真時(shí)鐘同步到所有仿真器上并給仿真器發(fā)送仿真命令;根據(jù)仿真時(shí)鐘處理仿真事件,并把狀態(tài)有變化的節(jié)點(diǎn)同步到相應(yīng)的仿真器,最后推進(jìn)時(shí)鐘;
所述的仿真時(shí)鐘同步模塊保證仿真時(shí)鐘的一致性;主控制器模塊將仿真時(shí)鐘同步到所有仿真器并發(fā)送仿真命令,仿真器根據(jù)仿真命令完成節(jié)點(diǎn)狀態(tài)更新,之后通知仿真時(shí)鐘同步模塊命令執(zhí)行完畢;仿真時(shí)鐘同步模塊收到所有仿真器的命令執(zhí)行完畢消息后,通知主控制器模塊分發(fā)下一條仿真命令或者推進(jìn)時(shí)鐘;
所述的仿真器狀態(tài)更新模塊接收主控制器模塊的仿真命令,根據(jù)仿真命令更新仿真器上節(jié)點(diǎn)的狀態(tài);
所述的仿真器狀態(tài)同步模塊將相鄰的仿真器上的節(jié)點(diǎn)狀態(tài)同步到本地仿真器。所述的主控制器和仿真器均為個(gè)人計(jì)算機(jī)或高性能服務(wù)器。支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真方法,其特征在于
由以下步驟實(shí)現(xiàn)
步驟一將若干臺(tái)機(jī)器搭建成局域網(wǎng),并指定其中一臺(tái)機(jī)器為主控制器,其他機(jī)器為仿
真器;
步驟二 啟動(dòng)主控制器和仿真器,創(chuàng)建并初始化仿真網(wǎng)絡(luò)中的所有節(jié)點(diǎn),為每個(gè)節(jié)點(diǎn)分配唯一的ID ;
步驟三將整個(gè)仿真網(wǎng)絡(luò)分割成大小一致的網(wǎng)格,同時(shí)為每個(gè)網(wǎng)格分配唯一的ID ;步驟四主控制器初始化節(jié)點(diǎn)后等待仿真器連接,當(dāng)所有仿真器都連接到主控制器并進(jìn)行注冊(cè)登記后,主控制器檢測(cè)到所有仿真器都已經(jīng)連接,則分割仿真網(wǎng)絡(luò)并給仿真器分配管轄區(qū)域;
步驟五主控制器在節(jié)點(diǎn)初始化后初始化仿真時(shí)鐘并初始化事件模型,然后向各個(gè)仿真器發(fā)送仿真命令;
步驟六主控制器處理仿真事件,將狀態(tài)有變化的節(jié)點(diǎn)同步到相應(yīng)的仿真器,然后推進(jìn)仿真時(shí)鐘,再次向仿真器發(fā)送仿真命令,之后繼續(xù)處理后續(xù)仿真事件,如此往復(fù)直到仿真結(jié)束;仿真器收到仿真命令后執(zhí)行相應(yīng)的仿真命令。步驟三中,主控制器分割仿真網(wǎng)絡(luò)的方法為
將仿真網(wǎng)絡(luò)分割成大小一致的網(wǎng)格,選定的網(wǎng)格尺寸必須大于節(jié)點(diǎn)的輻射直徑;將網(wǎng)格按照水平或垂直方向劃分為與仿真器等數(shù)量的區(qū)域,將所有區(qū)域一對(duì)一分配給每個(gè)仿真器,并告知每個(gè)仿真器與自己的管轄區(qū)域相鄰的仿真器的通信地址;主控制器與各個(gè)仿真器保持套接字連接,仿真器與相鄰仿真器保持套接字連接。 步驟五中,所述的仿真命令有MOVE、SIM_SYN, CONNECT、UPDATE ;
其中,MOVE命令,即通知各仿真器移動(dòng)管轄范圍內(nèi)的節(jié)點(diǎn);SM_SYN命令,即通知各仿真器將移動(dòng)出管轄范圍的節(jié)點(diǎn)的狀態(tài)同步到相鄰仿真器;CONNECT命令,即通知各仿真器嘗試連接管轄范圍內(nèi)所有節(jié)點(diǎn);UPDATE命令,即通知仿真器更新管轄范圍內(nèi)所有節(jié)點(diǎn)狀態(tài),包括發(fā)送仿真消息、鏈路建立和斷開。步驟六中,處理仿真命令中,節(jié)點(diǎn)因?yàn)檫\(yùn)動(dòng)離開仿真器的管轄范圍時(shí)的節(jié)點(diǎn)遷移過程為
確定節(jié)點(diǎn)遷移的目的仿真器,將離開管轄范圍的節(jié)點(diǎn)打包成數(shù)據(jù)包發(fā)送給目的仿真器;目的仿真器根據(jù)數(shù)據(jù)包將節(jié)點(diǎn)狀態(tài)同步到同ID的節(jié)點(diǎn)上,在同步之前,具有同ID的節(jié)點(diǎn)不在目的仿真器的管轄范圍,節(jié)點(diǎn)狀態(tài)同步之后該節(jié)點(diǎn)處于仿真器的管轄范圍。步驟六中,處理仿真命令中,鏈路狀態(tài)同步過程為
拷貝相鄰仿真器上邊界網(wǎng)格中的節(jié)點(diǎn)位置信息到本地仿真器;對(duì)于管轄范圍內(nèi)的所有節(jié)點(diǎn),取出節(jié)點(diǎn)周圍八個(gè)相鄰網(wǎng)格內(nèi)的所有節(jié)點(diǎn)逐一判斷;若節(jié)點(diǎn)間距離小于節(jié)點(diǎn)輻射半、徑,則在節(jié)點(diǎn)間嘗試建立鏈路連接;若節(jié)點(diǎn)間距離不小于節(jié)點(diǎn)輻射半徑,則判斷節(jié)點(diǎn)間是否已經(jīng)存在鏈路連接,如果是,則刪除鏈路。步驟六中,處理仿真命令中,仿真消息的分發(fā)過程為
將節(jié)點(diǎn)上已有的仿真消息發(fā)送到已有鏈路的對(duì)端節(jié)點(diǎn);判斷對(duì)端節(jié)點(diǎn)是否在仿真器的管轄范圍;如果否,則對(duì)端節(jié)點(diǎn)將仿真消息發(fā)送給與自己同ID且位于相鄰仿真器上的節(jié)點(diǎn);在建立鏈路連接時(shí),處于管轄范圍的節(jié)點(diǎn)有可能和不處于管轄范圍的節(jié)點(diǎn)建立連接,該不處于管轄范圍的節(jié)點(diǎn)稱為代理節(jié)點(diǎn),代理節(jié)點(diǎn)是相鄰仿真器上某節(jié)點(diǎn)的代理;代理節(jié)點(diǎn)和被代理節(jié)點(diǎn)即目的節(jié)點(diǎn)通過節(jié)點(diǎn)ID來確定關(guān)系;當(dāng)代理節(jié)點(diǎn)收到仿真消息,則將仿真消息轉(zhuǎn)發(fā)給實(shí)際應(yīng)該接收該消息的目的節(jié)點(diǎn)。本發(fā)明將DTN網(wǎng)絡(luò)仿真時(shí)的計(jì)算需求分布到不同仿真器,同時(shí)保證仿真的有效性,它主要具有以下優(yōu)點(diǎn)
(I)提高仿真速度本發(fā)明將DTN網(wǎng)絡(luò)仿真時(shí)的巨大計(jì)算需求分布到不同仿真器,相對(duì)于現(xiàn)有仿真工具,本發(fā)明的DTN網(wǎng)絡(luò)仿真速度有明顯的提升。特別是在DTN網(wǎng)絡(luò)規(guī)模大、消息分發(fā)路由協(xié)議復(fù)雜的情況下,本發(fā)明的優(yōu)勢(shì)更為突出。(2)可擴(kuò)展性本發(fā)明采用一個(gè)主控制器多個(gè)仿真器的基礎(chǔ)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),可擴(kuò)展性強(qiáng);與此同時(shí),仿真網(wǎng)絡(luò)支持線性分割,可以很方便的在已有仿真系統(tǒng)上添加仿真器。一般情況下,仿真器的增加將促使仿真速度的進(jìn)一步增加。(3)通用性本發(fā)明對(duì)DTN網(wǎng)絡(luò)仿真方案要求少,只需要仿真方案支持仿真網(wǎng)絡(luò)的線性分割即可使用本發(fā)明來實(shí)現(xiàn)分布式仿真。本發(fā)明與DTN網(wǎng)絡(luò)仿真協(xié)議無關(guān),對(duì)上層仿真系統(tǒng)幾乎透明,對(duì)于已有的DTN網(wǎng)絡(luò)仿真工具,可以很方便的利用本發(fā)明改造成分布式的仿真系統(tǒng)。
圖I為支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng)結(jié)構(gòu)圖。圖2為支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng)方法流程圖。圖3為仿真網(wǎng)絡(luò)分割流程圖。圖4為仿真時(shí)節(jié)點(diǎn)移動(dòng)流程圖。圖5為仿真時(shí)節(jié)點(diǎn)鏈路狀態(tài)同步流程圖。圖6為仿真時(shí)仿真消息分發(fā)流程圖。
具體實(shí)施例方式下面結(jié)合具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行詳細(xì)的說明。研究和分析DTN網(wǎng)絡(luò)的仿真行為和仿真過程時(shí),可以發(fā)現(xiàn)距離相距比較遠(yuǎn)的節(jié)點(diǎn)存在長(zhǎng)時(shí)間的狀態(tài)無關(guān)性,即距離相距比較遠(yuǎn)的兩個(gè)節(jié)點(diǎn),其中一個(gè)節(jié)點(diǎn)的狀態(tài)變化,在很長(zhǎng)一段時(shí)間內(nèi)不影響另外一個(gè)節(jié)點(diǎn)的狀態(tài)。進(jìn)而可以發(fā)現(xiàn)DTN網(wǎng)絡(luò)中節(jié)點(diǎn)存在區(qū)域相關(guān)性,即位于兩個(gè)不同的區(qū)域的節(jié)點(diǎn),它們之間相互影響的概率比較小。本發(fā)明的技術(shù)方案就是基于上述指導(dǎo)思想完成的。本發(fā)明所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng),由同在一個(gè)局域網(wǎng)的一臺(tái)主控制器和若干臺(tái)仿真器組成。所有機(jī)器通過以太網(wǎng)進(jìn)行數(shù)據(jù)交換,均為個(gè)人計(jì)算機(jī)或高性能服務(wù)器。如圖1,主控制器中設(shè)置有節(jié)點(diǎn)初始化模塊、主控制器模塊和仿真時(shí)鐘同步模塊;仿真器中設(shè)置有仿真器狀態(tài)更新模塊、仿真器狀態(tài)同步模塊和節(jié)點(diǎn)初始化模塊。這五類功能模塊的具體作用為
(1)節(jié)點(diǎn)初始化模塊在系統(tǒng)啟動(dòng)時(shí)初始化所有仿真節(jié)點(diǎn);
(2)主控制器模塊統(tǒng)一管理仿真時(shí)鐘和仿真事件;在每次仿真時(shí)鐘的推進(jìn)后,將仿真時(shí)鐘同步到所有仿真器上并給仿真器發(fā)送仿真命令;根據(jù)仿真時(shí)鐘處理仿真事件,并把狀態(tài)有變化的節(jié)點(diǎn)同步到相應(yīng)的仿真器,最后推進(jìn)時(shí)鐘;
(3)所述的仿真時(shí)鐘同步模塊保證仿真時(shí)鐘的一致性。主控制器模塊將仿真時(shí)鐘同步到所有仿真器并發(fā)送仿真命令,仿真器根據(jù)仿真命令完成節(jié)點(diǎn)狀態(tài)更新,之后通知仿真時(shí)鐘同步模塊命令執(zhí)行完畢;仿真時(shí)鐘同步模塊收到所有仿真器的命令執(zhí)行完畢消息后,通知主控制器模塊分發(fā)下一條仿真命令或者推進(jìn)時(shí)鐘;
(4)仿真器狀態(tài)更新模塊接收主控制器模塊的仿真命令,根據(jù)仿真命令更新仿真器上節(jié)點(diǎn)的狀態(tài);
(5)仿真器狀態(tài)同步模塊將相鄰的仿真器上的節(jié)點(diǎn)狀態(tài)同步到本地仿真器。其中,節(jié)點(diǎn)初始化為仿真系統(tǒng)初始化流程,主控制器和仿真器都需要完成節(jié)點(diǎn)初始化流程,后面的四部分構(gòu)成仿真運(yùn)行時(shí)環(huán)境。本發(fā)明所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真方法如圖2所示
(I)將若干臺(tái)機(jī)器搭建成局域網(wǎng),并指定其中一臺(tái)機(jī)器為主控制器,其他機(jī)器為仿真器。所述機(jī)器為個(gè)人計(jì)算機(jī)或者高性能服務(wù)器。(2)在主控制器和仿真器上構(gòu)造節(jié)點(diǎn)初始化模塊,將所有節(jié)點(diǎn)初始化。(3)在主控制器上構(gòu)造主控制器模塊,該主控制器模塊統(tǒng)一管理仿真時(shí)鐘和仿真事件。(4)在仿真器上構(gòu)造仿真器狀態(tài)更新模塊,該仿真器狀態(tài)更新模塊接收主控制器模塊的仿真命令,根據(jù)仿真命令更新仿真器上節(jié)點(diǎn)的狀態(tài)。(5)在仿真器上構(gòu)造仿真器狀態(tài)同步模塊,該仿真器狀態(tài)同步模塊將相鄰的仿真器上的節(jié)點(diǎn)狀態(tài)同步到本地仿真器。(6)在主控制器上構(gòu)造仿真時(shí)鐘同步模塊,該仿真時(shí)鐘同步模塊保證仿真時(shí)鐘的一致性。主控制器模塊將仿真時(shí)鐘同步到所有仿真器并發(fā)送仿真命令,仿真器根據(jù)仿真命令完成節(jié)點(diǎn)狀態(tài)更新,之后通知仿真時(shí)鐘同步模塊命令執(zhí)行完畢;仿真時(shí)鐘同步模塊收到所有仿真器的命令執(zhí)行完畢消息后,通知主控制器模塊分發(fā)下一條仿真命令或者推進(jìn)時(shí)鐘; 主控制器和仿真器剛剛啟動(dòng)時(shí)創(chuàng)建并初始化仿真網(wǎng)絡(luò)中的所有節(jié)點(diǎn),為每個(gè)節(jié)點(diǎn)分配唯一的ID,該ID值代表了節(jié)點(diǎn)在仿真系統(tǒng)中的身份,為后面節(jié)點(diǎn)狀態(tài)同步和節(jié)點(diǎn)狀態(tài)遷移做好基礎(chǔ)。最后,在水平方向和垂直方向上將整個(gè)仿真網(wǎng)絡(luò)分割成大小一致的網(wǎng)格,同時(shí)為每個(gè)網(wǎng)格分配唯一的ID。主控制器初始化節(jié)點(diǎn)后等待仿真器連接,當(dāng)所有仿真器都連接主控制器后,主控制器將所有網(wǎng)格按照水平方向或者垂直方向劃分為與仿真器等數(shù)量的區(qū)域,將所有區(qū)域一對(duì)一分配給每個(gè)仿真器,并告知每個(gè)仿真器與自己的管轄區(qū)域相鄰的仿真器的地址,即相鄰仿真器的地址。主控制器與所有仿真器保持套接字連接,連接主要用于發(fā)送仿真命令和回饋仿真狀態(tài);仿真器I與仿真器2在管轄范圍上是相鄰的,仿真器I與仿真器2保持套接字連接,連接主要用于同步節(jié)點(diǎn)狀態(tài)。主控制器在節(jié)點(diǎn)初始化后初始化仿真時(shí)鐘并初始化事件模型,然后向各個(gè)仿真器發(fā)送一個(gè)仿真命令,仿真命令有MOVE、SIM_SYN, CONNECT、UPDATE。MOVE命令,即通知各仿真器移動(dòng)管轄范圍內(nèi)的節(jié)點(diǎn);SIM_SYN命令,即通知各仿真器將移動(dòng)出管轄范圍的節(jié)點(diǎn)的狀態(tài)同步到相鄰仿真器;C0NNECT命令,即通知各仿真器嘗試連接管轄范圍內(nèi)所有節(jié)點(diǎn);UPDATE命令,即通知仿真器更新管轄范圍內(nèi)所有節(jié)點(diǎn)狀態(tài),包括發(fā)送仿真消息、鏈路建立和斷開。
主控制器處理仿真事件,將狀態(tài)有變化的節(jié)點(diǎn)同步到相應(yīng)的仿真器,然后推進(jìn)仿真時(shí)鐘,依次發(fā)送MOVE、SIM_SYN, CONNECT、UPDATE命令,之后繼續(xù)處理后續(xù)仿真事件,如此往復(fù)直到仿真結(jié)束。仿真器收到仿真命令后執(zhí)行相應(yīng)的仿真命令。如圖3所示,本發(fā)明所述的仿真方法中,分割仿真網(wǎng)絡(luò)的方法如下
S201將DTN網(wǎng)絡(luò)分割成一定數(shù)量的大小一致的網(wǎng)格。選定一個(gè)網(wǎng)格尺寸,要求網(wǎng)格尺寸必須大于節(jié)點(diǎn)的輻射直徑。根據(jù)選定的網(wǎng)格尺寸將DTN網(wǎng)絡(luò)分割成網(wǎng)格。這樣,每個(gè)節(jié)點(diǎn)必須在且僅在某一個(gè)網(wǎng)格中。S202在主控制器端,將所有網(wǎng)格分割成與仿真器等數(shù)量的規(guī)則區(qū)域。一般的,可以將網(wǎng)格在水平方向上均勻劃分為等大小的矩形網(wǎng)格區(qū)。S104在主控制器端,將劃分后的網(wǎng)格分配給仿真器。將劃分后的網(wǎng)格區(qū)域一一分配給仿真器,同時(shí)告知其相鄰仿真器的地址。所述相鄰仿真器指的是管轄區(qū)域相鄰的仿真器。S30在主控制器上構(gòu)造主控制器模塊。該模塊統(tǒng)一管理仿真時(shí)鐘和仿真事件。主控制器模塊推進(jìn)仿真時(shí)鐘,處理仿真事件,管理各個(gè)仿真器的仿真與狀態(tài)同步。S40在仿真器上構(gòu)造仿真器狀態(tài)更新模塊。仿真器在仿真過程中,需要接收主控制器的命令,然后執(zhí)行命令。執(zhí)行命令的過程,即為更新管轄區(qū)域內(nèi)所有節(jié)點(diǎn)的狀態(tài),包括MOVE節(jié)點(diǎn)位置、節(jié)點(diǎn)之間建立CONNECT、UPDATE節(jié)點(diǎn)狀態(tài)。S50在仿真器上構(gòu)造仿真器狀態(tài)同步模塊。由于節(jié)點(diǎn)存在運(yùn)動(dòng),節(jié)點(diǎn)有可能會(huì)離開仿真器的管轄范圍而進(jìn)入相鄰仿真器的管轄范圍。節(jié)點(diǎn)在仿真器之間遷移,會(huì)引起仿真器之間狀態(tài)同步。仿真器在接收到主控制器的SM_SYN命令后,檢查是否有節(jié)點(diǎn)因?yàn)橐苿?dòng)而離開了管轄范圍,如果有則將節(jié)點(diǎn)打包成數(shù)據(jù)包并發(fā)送給相鄰仿真器。S60在主控制器上構(gòu)造仿真時(shí)鐘同步模塊。主控制器管理仿真時(shí)鐘。每當(dāng)主控制器向所有仿真器發(fā)送一個(gè)仿真命令后,則由仿真時(shí)鐘同步模塊等待仿真器的回饋狀態(tài)。等待所有仿真器都執(zhí)行完仿真命令,通知主控制器模塊發(fā)送下一個(gè)仿真命令。在發(fā)送仿真命令之前,檢查是否需要推進(jìn)時(shí)鐘。如果時(shí)鐘發(fā)送變更,則在發(fā)送命令的時(shí)候以參數(shù)的形式傳遞仿真時(shí)鐘信息?;谏鲜鲋С执笠?guī)模復(fù)雜仿真節(jié)點(diǎn)的DTN網(wǎng)絡(luò)分布式仿真系統(tǒng)的仿真過程為
主控制器處理仿真事件,把狀態(tài)有更變的節(jié)點(diǎn)的狀態(tài)同步到相應(yīng)的仿真器。由前面所
述的仿真網(wǎng)絡(luò)分割過程可以發(fā)現(xiàn),節(jié)點(diǎn)在任何時(shí)刻只可能處于某一個(gè)仿真器的管轄范圍。處理完仿真事件后,向所有仿真器發(fā)送MOVE命令,所有仿真器執(zhí)行MOVE命令移動(dòng)管轄范圍內(nèi)所有節(jié)點(diǎn)的位置,然后向主控制器回饋命令執(zhí)行結(jié)果。主控制器檢測(cè)到所有仿真器執(zhí)行完MOVE命令后向所有仿真器發(fā)送SIM_SYN命令,所有仿真器在這個(gè)時(shí)刻將剛剛離開管轄范圍的節(jié)點(diǎn)遷移到相鄰仿真器。同樣,主控制器檢測(cè)到所有仿真器執(zhí)行完SM_SYN命令后發(fā)送CONNECT命令,仿真器將管轄范圍內(nèi)所有節(jié)點(diǎn)嘗試建立鏈路連接。主控制器檢測(cè)到所有仿真器執(zhí)行完CONNECT命令后發(fā)送UPDATE命令,仿真器執(zhí)行UPDATE命令,對(duì)于管轄范圍內(nèi)所有節(jié)點(diǎn),在節(jié)點(diǎn)之間已有鏈路的基礎(chǔ)上,將節(jié)點(diǎn)上已有的仿真消息發(fā)送到鏈路的另端節(jié)點(diǎn)。主控制器檢測(cè)到所有節(jié)點(diǎn)執(zhí)行完UPDATE命令后,重復(fù)上述仿真過程,直到仿真結(jié)束?;谏鲜鲋С执笠?guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng)的仿真時(shí)節(jié)點(diǎn)遷移過程如圖4所示
T401仿真節(jié)點(diǎn)運(yùn)動(dòng)。節(jié)點(diǎn)因?yàn)檫\(yùn)動(dòng)有可能離開仿真器的管轄范圍。
T402仿真器判斷節(jié)點(diǎn)是否離開了管轄范圍。T403如果是,則將離開管轄范圍的節(jié)點(diǎn)打包成數(shù)據(jù)包。數(shù)據(jù)包格式在仿真器之間相互約定好。T404確定目的仿真器。離開管轄范圍的節(jié)點(diǎn),必定處于相鄰仿真器的管轄范圍。根據(jù)節(jié)點(diǎn)的當(dāng)前位置可以確定節(jié)點(diǎn)當(dāng)前所在的管轄范圍,從而確定目的仿真器。T405將數(shù)據(jù)包發(fā)送給目的仿真器。T406目的仿真器根據(jù)數(shù)據(jù)包將節(jié)點(diǎn)狀態(tài)同步到同ID的節(jié)點(diǎn)上。在同步之前,具有同ID的節(jié)點(diǎn)不在目的仿真器的管轄范圍,節(jié)點(diǎn)狀態(tài)同步之后該節(jié)點(diǎn)處于仿真器的管轄范圍。至此,節(jié)點(diǎn)已經(jīng)從源仿真器遷移到目的仿真器?;谏鲜鲋С执笠?guī)模復(fù)雜仿真DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng)的仿真時(shí)節(jié)點(diǎn)鏈路狀態(tài)同步過程如圖5所示
T501拷貝相鄰仿真器上邊界網(wǎng)格中的節(jié)點(diǎn)位置信息到本地仿真器。所述邊界網(wǎng)格為,仿真器管轄范圍內(nèi)邊界上的所有網(wǎng)格。在兩個(gè)節(jié)點(diǎn)之間建立連接的時(shí)候,需要兩個(gè)節(jié)點(diǎn)的位置信息,而邊界網(wǎng)格內(nèi)的節(jié)點(diǎn)有可能跨仿真器建立連接,本發(fā)明解決跨仿真器建立連接的做法是將相鄰仿真器上邊界網(wǎng)格內(nèi)節(jié)點(diǎn)的位置信息同步到本地。T502對(duì)于管轄范圍內(nèi)的所有節(jié)點(diǎn),取出節(jié)點(diǎn)周圍八個(gè)相鄰網(wǎng)格內(nèi)的所有節(jié)點(diǎn)逐一判斷。由于之前已經(jīng)同步相鄰仿真器上邊界網(wǎng)格中的節(jié)點(diǎn)位置信息到本地,于是邊界網(wǎng)格內(nèi)的節(jié)點(diǎn)的八個(gè)相鄰的網(wǎng)格內(nèi)的所有節(jié)點(diǎn)的位置信息都是有效的,包括不在仿真器管轄范圍的節(jié)點(diǎn)的位置信息。T503判斷節(jié)點(diǎn)間距離是否小于節(jié)點(diǎn)輻射半徑。T504如果是,則在節(jié)點(diǎn)間嘗試建立鏈路連接。T505如果節(jié)點(diǎn)間距離不小于節(jié)點(diǎn)輻射半徑,則判斷節(jié)點(diǎn)間是否已經(jīng)存在鏈路連接。T506如果是,則刪除鏈路?;谏鲜鲋С执笠?guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng)的仿真時(shí)仿真消息分發(fā)過程如圖6所
T411將節(jié)點(diǎn)上已有的仿真消息發(fā)送到已有鏈路的對(duì)端節(jié)點(diǎn)。所述對(duì)端節(jié)點(diǎn)為,鏈路中消息的接收節(jié)點(diǎn)。仿真器在執(zhí)行UPDATE命令時(shí),逐一更新管轄范圍內(nèi)的所有節(jié)點(diǎn)。把所有節(jié)點(diǎn)上的仿真消息通過鏈路發(fā)送到對(duì)端節(jié)點(diǎn);
T412判斷對(duì)端節(jié)點(diǎn)是否在仿真器的管轄范圍;
T413如果否,則對(duì)端節(jié)點(diǎn)將仿真消息發(fā)送給與自己同ID且位于相鄰仿真器上的節(jié)點(diǎn)。在建立鏈路連接時(shí),處于管轄范圍的節(jié)點(diǎn)有可能和不處于管轄范圍的節(jié)點(diǎn)建立連接,該不處于管轄范圍的節(jié)點(diǎn)稱為代理節(jié)點(diǎn),代理節(jié)點(diǎn)是相鄰仿真器上某節(jié)點(diǎn)的代理。代理節(jié)點(diǎn)和被代理節(jié)點(diǎn)(目的節(jié)點(diǎn))通過節(jié)點(diǎn)ID來確定關(guān)系。當(dāng)代理節(jié)點(diǎn) 收到仿真消息,則將仿真消息轉(zhuǎn)發(fā)給實(shí)際應(yīng)該接收該消息的目的節(jié)點(diǎn)。
權(quán)利要求
1.支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng),其特征在于 設(shè)置有同在一個(gè)局域網(wǎng)的一臺(tái)主控制器和若干臺(tái)仿真器; 所述的主控制器中設(shè)置有節(jié)點(diǎn)初始化模塊、主控制器模塊和仿真時(shí)鐘同步模塊; 所述的仿真器中設(shè)置有仿真器狀態(tài)更新模塊、仿真器狀態(tài)同步模塊和節(jié)點(diǎn)初始化模塊。
2.根據(jù)權(quán)利要求I所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng),其特征在于 所述的節(jié)點(diǎn)初始化模塊在系統(tǒng)啟動(dòng)時(shí)初始化所有仿真節(jié)點(diǎn); 所述的主控制器模塊統(tǒng)一管理仿真時(shí)鐘和仿真事件;在每次仿真時(shí)鐘的推進(jìn)后,將仿真時(shí)鐘同步到所有仿真器上并給仿真器發(fā)送仿真命令;根據(jù)仿真時(shí)鐘處理仿真事件,并把狀態(tài)有變化的節(jié)點(diǎn)同步到相應(yīng)的仿真器,最后推進(jìn)時(shí)鐘; 所述的仿真時(shí)鐘同步模塊保證仿真時(shí)鐘的一致性;主控制器模塊將仿真時(shí)鐘同步到所有仿真器并發(fā)送仿真命令,仿真器根據(jù)仿真命令完成節(jié)點(diǎn)狀態(tài)更新,之后通知仿真時(shí)鐘同步模塊命令執(zhí)行完畢;仿真時(shí)鐘同步模塊收到所有仿真器的命令執(zhí)行完畢消息后,通知主控制器模塊分發(fā)下一條仿真命令或者推進(jìn)時(shí)鐘; 所述的仿真器狀態(tài)更新模塊接收主控制器模塊的仿真命令,根據(jù)仿真命令更新仿真器上節(jié)點(diǎn)的狀態(tài); 所述的仿真器狀態(tài)同步模塊將相鄰的仿真器上的節(jié)點(diǎn)狀態(tài)同步到本地仿真器。
3.根據(jù)權(quán)利要求I所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng),其特征在于 所述的主控制器和仿真器均為個(gè)人計(jì)算機(jī)或高性能服務(wù)器。
4.根據(jù)權(quán)利要求I所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真方法,其特征在于 由以下步驟實(shí)現(xiàn) 步驟一將若干臺(tái)機(jī)器搭建成局域網(wǎng),并指定其中一臺(tái)機(jī)器為主控制器,其他機(jī)器為仿真器; 步驟二 啟動(dòng)主控制器和仿真器,創(chuàng)建并初始化仿真網(wǎng)絡(luò)中的所有節(jié)點(diǎn),為每個(gè)節(jié)點(diǎn)分配唯一的ID ; 步驟三將整個(gè)仿真網(wǎng)絡(luò)分割成大小一致的網(wǎng)格,同時(shí)為每個(gè)網(wǎng)格分配唯一的ID ;步驟四主控制器初始化節(jié)點(diǎn)后等待仿真器連接,當(dāng)所有仿真器都連接到主控制器并進(jìn)行注冊(cè)登記后,主控制器檢測(cè)到所有仿真器都已經(jīng)連接,則分割仿真網(wǎng)絡(luò)并給仿真器分配管轄區(qū)域; 步驟五主控制器在節(jié)點(diǎn)初始化后初始化仿真時(shí)鐘并初始化事件模型,然后向各個(gè)仿真器發(fā)送仿真命令; 步驟六主控制器處理仿真事件,將狀態(tài)有變化的節(jié)點(diǎn)同步到相應(yīng)的仿真器,然后推進(jìn)仿真時(shí)鐘,再次向仿真器發(fā)送仿真命令,之后繼續(xù)處理后續(xù)仿真事件,如此往復(fù)直到仿真結(jié)束;仿真器收到仿真命令后執(zhí)行相應(yīng)的仿真命令。
5.根據(jù)權(quán)利要求4所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真方法,其特征在于 步驟三中,主控制器分割仿真網(wǎng)絡(luò)的方法為 將仿真網(wǎng)絡(luò)分割成大小一致的網(wǎng)格,選定的網(wǎng)格尺寸必須大于節(jié)點(diǎn)的輻射直徑;將網(wǎng)格按照水平或垂直方向劃分為與仿真器等數(shù)量的區(qū)域,將所有區(qū)域一對(duì)一分配給每個(gè)仿真器,并告知每個(gè)仿真器與自己的管轄區(qū)域相鄰的仿真器的通信地址;主控制器與各個(gè)仿真器保持套接字連接,仿真器與相鄰仿真器保持套接字連接。
6.根據(jù)權(quán)利要求4或5所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真方法,其特征在于 步驟五中,所述的仿真命令有MOVE、SIM_SYN, CONNECT、UPDATE ; 其中,MOVE命令,即通知各仿真器移動(dòng)管轄范圍內(nèi)的節(jié)點(diǎn);SIM_SYN命令,即通知各仿真器將移動(dòng)出管轄范圍的節(jié)點(diǎn)的狀態(tài)同步到相鄰仿真器;C0NNECT命令,即通知各仿真器嘗試連接管轄范圍內(nèi)所有節(jié)點(diǎn);UPDATE命令,即通知仿真器更新管轄范圍內(nèi)所有節(jié)點(diǎn)狀態(tài),包括發(fā)送仿真消息、鏈路建立和斷開。
7.根據(jù)權(quán)利要求6所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真方法,其特征在于 步驟六中,處理仿真命令中,節(jié)點(diǎn)因?yàn)檫\(yùn)動(dòng)離開仿真器的管轄范圍時(shí)的節(jié)點(diǎn)遷移過程 為 確定節(jié)點(diǎn)遷移的目的仿真器,將離開管轄范圍的節(jié)點(diǎn)打包成數(shù)據(jù)包發(fā)送給目的仿真器;目的仿真器根據(jù)數(shù)據(jù)包將節(jié)點(diǎn)狀態(tài)同步到同ID的節(jié)點(diǎn)上,在同步之前,具有同ID的節(jié)點(diǎn)不在目的仿真器的管轄范圍,節(jié)點(diǎn)狀態(tài)同步之后該節(jié)點(diǎn)處于仿真器的管轄范圍。
8.根據(jù)權(quán)利要求7所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真方法,其特征在于 步驟六中,處理仿真命令中,鏈路狀態(tài)同步過程為 拷貝相鄰仿真器上邊界網(wǎng)格中的節(jié)點(diǎn)位置信息到本地仿真器;對(duì)于管轄范圍內(nèi)的所有節(jié)點(diǎn),取出節(jié)點(diǎn)周圍八個(gè)相鄰網(wǎng)格內(nèi)的所有節(jié)點(diǎn)逐一判斷;若節(jié)點(diǎn)間距離小于節(jié)點(diǎn)輻射半徑,則在節(jié)點(diǎn)間嘗試建立鏈路連接;若節(jié)點(diǎn)間距離不小于節(jié)點(diǎn)輻射半徑,則判斷節(jié)點(diǎn)間是否已經(jīng)存在鏈路連接,如果是,則刪除鏈路。
9.根據(jù)權(quán)利要求8所述的支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真方法,其特征在于 步驟六中,處理仿真命令中,仿真消息的分發(fā)過程為 將節(jié)點(diǎn)上已有的仿真消息發(fā)送到已有鏈路的對(duì)端節(jié)點(diǎn);判斷對(duì)端節(jié)點(diǎn)是否在仿真器的管轄范圍;如果否,則對(duì)端節(jié)點(diǎn)將仿真消息發(fā)送給與自己同ID且位于相鄰仿真器上的節(jié)點(diǎn);在建立鏈路連接時(shí),處于管轄范圍的節(jié)點(diǎn)有可能和不處于管轄范圍的節(jié)點(diǎn)建立連接,該不處于管轄范圍的節(jié)點(diǎn)稱為代理節(jié)點(diǎn),代理節(jié)點(diǎn)是相鄰仿真器上某節(jié)點(diǎn)的代理;代理節(jié)點(diǎn)和被代理節(jié)點(diǎn)即目的節(jié)點(diǎn)通過節(jié)點(diǎn)ID來確定關(guān)系;當(dāng)代理節(jié)點(diǎn)收到仿真消息,則將仿真消息轉(zhuǎn)發(fā)給實(shí)際應(yīng)該接收該消息的目的節(jié)點(diǎn)。
全文摘要
本發(fā)明涉及一種支持大規(guī)模復(fù)雜DTN網(wǎng)絡(luò)的分布式仿真系統(tǒng)和仿真方法?,F(xiàn)有的DTN網(wǎng)絡(luò)仿真工具都只能在單機(jī)上運(yùn)行,運(yùn)算能力有限,仿真能力小,可以支持的仿真節(jié)點(diǎn)規(guī)模小。本發(fā)明構(gòu)建了同在一個(gè)局域網(wǎng)的一臺(tái)主控制器和若干臺(tái)仿真器;將DTN網(wǎng)絡(luò)分割成網(wǎng)格,并給每個(gè)仿真器分配管轄區(qū)域;主控制器通過推進(jìn)仿真時(shí)鐘,處理仿真事件,管理各個(gè)仿真器的仿真與狀態(tài)同步。本發(fā)明將DTN網(wǎng)絡(luò)仿真時(shí)的巨大計(jì)算需求分布到不同仿真器,仿真速度明顯的提升;采用一個(gè)主控制器多個(gè)仿真器的基礎(chǔ)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),可擴(kuò)展性強(qiáng);對(duì)DTN網(wǎng)絡(luò)仿真方案要求少,只需要仿真方案支持仿真網(wǎng)絡(luò)的線性分割即可使用本發(fā)明來實(shí)現(xiàn)分布式仿真,通用性強(qiáng)。
文檔編號(hào)H04L29/08GK102752173SQ20121025045
公開日2012年10月24日 申請(qǐng)日期2012年7月19日 優(yōu)先權(quán)日2012年7月19日
發(fā)明者付少鋒, 張星明, 李龍海 申請(qǐng)人:西安電子科技大學(xué)