李清平
(浙江育英職業(yè)技術學院信息技術與應用系,浙江杭州 310018)
三層建模機制所定義的網絡物理通信機制是每個節(jié)點至少包含一對點對點收發(fā)機,通過一條有線雙工鏈路和另一對點對點收發(fā)機構成一個收發(fā)機組,每個這樣的收發(fā)機組可以支持數據的雙向傳輸。網絡拓撲結構包含兩種節(jié)點模型:周邊節(jié)點和中心交換節(jié)點[1-2]。包流以隨機的方式來自周邊節(jié)點,每個數據包包含目的地址,目的地址可以用一個整數來表示不同的目的周邊節(jié)點。中心節(jié)點接收到數據包后,對其目的地址進行解析,通過尋址和包交換,最后選擇一個合適的發(fā)信機將數據包送往目的節(jié)點。筆者從最底層的數據包開始,自定義數據包格式和處理包流的進程模型,并在此基礎上建立基于自定義包流的進程-節(jié)點-網絡三層模型,同時給出網絡鏈路利用率統(tǒng)計分析結果和包延時的離散曲線。
OPNET Modeler提供的三層建模機制是指在進程域、節(jié)點域和網絡域進行自下而上的建模,同時在仿真過程采用離散事件驅動的模擬機理。
進程模型(process model)用有限狀態(tài)機FSM(finite state machine)來描述各種協(xié)議;節(jié)點模型(node model)由進程模型構成,可以組成完整的協(xié)議棧,真實反映建模設備的特性;網絡模型(net model)由節(jié)點模型組成,可以通過不同的網絡拓撲來設計不同的網絡結構[3-4]。
進程模型是網絡三層建模的基礎,也是仿真過程中最重要的部分,采用有限狀態(tài)機、OPNET核心函數及標準的C和C++語言來描述底層協(xié)議算法。進程模型主要用來刻畫節(jié)點模型中的處理機以及隊列模型的行為,其執(zhí)行過程如圖1所示。在每個進程模型中都至少有一個初始狀態(tài)(init),即進程被訪問的第一個狀態(tài)。狀態(tài)的執(zhí)行代碼分為兩部分,上部分稱為進入代碼(enter executive),是進程進入該狀態(tài)時執(zhí)行的動作;下部分稱為離開代碼(exit executive),是進程離開狀態(tài)時執(zhí)行的動作。轉移則描述了進程模型從一個狀態(tài)向另一個狀態(tài)轉移的過程和條件,其含義為:進程只要完成源狀態(tài)離開代碼,就立即對轉移條件進行判斷,當轉移條件成立,則執(zhí)行轉移代碼,之后轉移到目的狀態(tài)。轉移分為條件轉移和無條件轉移,分別用虛線和實線表示[5-8]。
圖1 進程模型的執(zhí)行流程
三層建模機制定義的包格式包含任意數量子域的數據包,包由所有子域大小的疊加及校驗值兩部分組成。自定義數據包的名稱為dest_address,包的大小為 32 bit。
中心節(jié)點進程模型將接收到的包流按照目的地址轉交給正確的發(fā)信機,然后通過發(fā)信機將包流發(fā)往目的周邊節(jié)點。每個數據包的到達都觸發(fā)中心節(jié)點進程的一次中斷,中心節(jié)點進程接收中斷后從休眠狀態(tài)(idle非強制狀態(tài))激活,執(zhí)行代碼處理數據包(強制狀態(tài)),如圖2所示。
圖2 中心節(jié)點進程模型
PK_ARRVL條件判斷中心節(jié)點進程接收的中斷是否為包流中斷,其代碼如下:
周邊節(jié)點進程模型主要有兩個功能:一是當周邊節(jié)點生成數據包時,它必須給該數據包指定目的地址,然后將它發(fā)往中心節(jié)點;二是當周邊節(jié)點接收到數據包時,它必須計算該數據包的端對端延時。為此,周邊節(jié)點進程模型需要設置兩個狀態(tài),一個是初始化initial狀態(tài),另一個是idle狀態(tài),如圖3所示。
圖3 周邊節(jié)點進程模型
SRC_ARRVL和RCV_ARRVL條件判斷周邊節(jié)點進程接收的中斷是否為包流中斷以及對應數據包的輸入流索引號,其代碼如下:
當SRC_ARRVL條件滿足時,xmt()函數為發(fā)送的包分配目的地址,其代碼如下:
當RCV_ARRVL條件滿足時,rcv()函數計算端對端延時并寫入到全局統(tǒng)計量,其代碼如下:
一般來說,計算機網絡是由網絡中參與運行的終端、交換機、路由器和收發(fā)信機等設備組成。對于這些設備而言,輸入包括隨機到達的業(yè)務及經過信道傳輸后包含隨機誤碼的信號、數據包。在網絡仿真建模中,前者可以看作是啟動仿真系統(tǒng)運行的動力,后者則可以看作是改變仿真系統(tǒng)運行狀態(tài)的動力[9-11]。
4.1.1 業(yè)務模型
式中:xi為仿真中第i次業(yè)務輸出;X為業(yè)務模型的輸出函數;r1為業(yè)務達到服從的隨機分布函數;ti為第i次業(yè)務發(fā)生的時間。
4.1.2 設備模型
式中:yi為設備模型的輸出;yi-1為過去的輸出;λ為輸出函數;ti為時間;xi為輸入;qi為當前狀態(tài);qi-1為過去的狀態(tài)。
4.1.3 信道模型
式中:ys為源設備模型的輸出,滿足式(4);xi為目的設備模型的輸入;r2為誤碼發(fā)生服從的隨機分布函數;ti為時間。
由于qi-1為當前狀態(tài)跳轉前的狀態(tài),因此可以將式(2)代入式(3)直到出現初始狀態(tài)q0,即:
將式(6)代入式(4),可得:
由于除r1、r2外,各式因子都是確定的,隨機數則成為激發(fā)仿真系統(tǒng)發(fā)生變化、做出響應的關鍵,因此計算機網絡仿真建模中離散事件驅動的決定因素是隨機數。
節(jié)點模型包括中心交換節(jié)點和周邊節(jié)點。中心交換節(jié)點(hub)由4對發(fā)信機(xmt)和收信機(rcv)構成,每對收發(fā)信機對應一個周邊節(jié)點,如圖4所示。周邊節(jié)點(node)由一個數據包生成模塊(src)、一個進程模塊(proc)和一對收發(fā)信機構成,如圖5所示。
圖4 中心交換節(jié)點(hub)模型
圖5 周邊節(jié)點(node)模型
根據OPNET Modeler層次化建模的思想,創(chuàng)建一個由4個周邊節(jié)點和一個中心交換節(jié)點構成的網絡模型,如圖6所示。
圖6 網絡模型
周邊節(jié)點以預先定義的泊松(Poisson)分布產生非均勻分布的隨機數據包,即:
重復產生exp(1/λ)的隨機數據包,同時計數,直到所產生的隨機數的和大于1為止。
為了觀察數據包不同的產生速率對網絡性能的影響,配置包產生間隔時間分別為4 ms和40 ms的仿真,比較兩者的鏈路利用率如圖7所示,可以看出數據包的產生速率過小,將導致網絡的鏈路利用率很低。
圖7 網絡鏈路利用率比較
該例中,數據包的大小是恒定的,如果包的產生速率足夠快,就可能導致部分數據包在發(fā)信機隊列中積壓,這時包的端對端延時加大,圖8和圖9為包產生間隔時間分別為4 ms和40 ms的端對端延時離散曲線。
圖8 包產生間隔4 ms的端對端延時離散曲線
圖9 包產生間隔40 ms的端對端延時離散曲線
基于OPNET Modeler的層次化建模思想,對最底層的進程模型進行了詳細的闡述和定義,并在此基礎上建立了進層-節(jié)點-網絡三層仿真模型,收集分析了鏈路利用率的統(tǒng)計結果及不同數據包產生速率的端對端延時影響,對于進一步熟悉進程和節(jié)點模型及其如何在網絡中運作,進而評價網絡的性能有一定的指導意義。
[1]陳敏.OPNET網絡仿真[M].北京:清華大學出版,2004:64-89.
[2]李清平.基于自定義數據包的網絡業(yè)務流建模[J].計算機與現代化,2010(8):37-40.
[3]楊蘭,賈連興,段聯(lián)國.寬帶ISDN話音業(yè)務OPNET仿真模型設計與實現[J].武漢理工大學學報:信息與管理工程版,2009,31(1):152-155.
[4]張?zhí)腋?,謝輝.基于OPNET的車用Ad hoc網可靠性評估研究[J].計算機應用研究,2009,26(10):3807-3811.
[5]楊路明,李謝華.網絡仿真軟件比較分析及仿真過程探討[J].計算技術與自動化,2002,21(4):65-70.
[6]陳寅,宋楊,費敏銳.基于Simulink和 OPNET的交互式聯(lián)合仿真研究[J].系統(tǒng)仿真技術,2011,7(3):242-246.
[7]韓晶,黃建國,冉茂華.基于OPNET的水聲通信網絡設計與仿真[J].系統(tǒng)仿真學報,2009,21(17):5498-5502.
[8]陳巖,董淑福,蔣磊.OPNET網絡仿真技術及其應用研究[J].計算機技術與發(fā)展,2009,19(2):199-201.
[9]高嵩.OPNET Modeler仿真建模大解密[M].北京:電子工業(yè)出版社,2010:12-14.
[10]向俊濤,聶明新,劉波.分布式WLAN在OPNET下的建模仿真研究[J].武漢理工大學學報:信息與管理工程版,2006,28(11):60-62.
[11]李曉汀,丁凡,熊華鋼.基于OPNET的CAN網絡建模與仿真[J].北京航空航天大學學報,2009,35(3):284-287.