包交換網(wǎng)絡建模_第1頁
包交換網(wǎng)絡建模_第2頁
包交換網(wǎng)絡建模_第3頁
包交換網(wǎng)絡建模_第4頁
包交換網(wǎng)絡建模_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、創(chuàng)建一個包交換網(wǎng)絡1概述該例程將仿真一個簡單的包交換網(wǎng)絡。它包括2個周邊節(jié)點和1個集線器。網(wǎng)絡拓撲結(jié)構(gòu)構(gòu)建該網(wǎng)絡模型的同時,我們還將接觸到一些新的核心函數(shù),學會如何使用包和鏈路編輯器,以及如何自定義統(tǒng)計結(jié)果。最后通過觀察網(wǎng)絡的包交換行為,我們將更加熟悉節(jié)點和進程模型及其如何在網(wǎng)絡模 型中運作。實驗完畢,將得到業(yè)務的端對端延時結(jié)果,進而評估網(wǎng)絡的性能。2開始建立在開始構(gòu)建該網(wǎng)絡之前,我們先熟悉它的物理通信機制和各個節(jié)點的功能:。網(wǎng)絡的物理通信機制一一如圖1-2所示,每個節(jié)點至少包含一對點對點收發(fā)機,并且 通過一條有線雙工鏈路和另一對點對點收發(fā)機構(gòu)成一個收發(fā)機組。每個這樣的收發(fā)機組可 以支持數(shù)據(jù)的

2、雙向傳輸。圖1-2網(wǎng)絡的物理通信拓撲結(jié)構(gòu)網(wǎng)絡功能概述一一拓撲結(jié)構(gòu)包含兩種類型節(jié)點模型,它們分別是周邊節(jié)點和中心交換 節(jié)點。本例程的目的是仿真一個周邊節(jié)點發(fā)出的業(yè)務能夠通過中心交換節(jié)點路由至另一個 目的周邊節(jié)點。從中心交換節(jié)點中看,我們假設,包是以隨機的方式來自四個周邊節(jié)點, 每個包包含目的地址,目的地址可以用一個整數(shù)來表示不同的目的周邊節(jié)點,中心節(jié)點接 收到包后通過對目的地址的解析最后選擇一個合適的發(fā)信機將包送往目的地。中心交換節(jié)點如何實現(xiàn)尋址和包交換一一每個有向包流(以某個進程模型為參考,某 個包流或者進入該進程或者離開該進程,因此稱之為有向包流)有一個惟一的索引號。這個索引號總是和某個收信

3、機(對應進入包流)或者某個發(fā)信機(對應離開包流)惟一對應,而收信機和發(fā)信機又和某個周邊節(jié)點惟一對應,因此可以直接用流索引號作為交換包的依據(jù)。當然為了增強網(wǎng)絡的穩(wěn)健性,我們也可以建立一個目的地址和流索引(可以看作是物理地址)的映射表。為了簡單起見,采用前一種方法實現(xiàn)尋址和包交換,如圖6-3所示。周邊節(jié)點的功能一一作為網(wǎng)絡的業(yè)務源,周邊節(jié)點產(chǎn)生包(用標準的業(yè)務生成模塊實現(xiàn)),然后為每個包分配一個目的地址并且通過點對點發(fā)信機傳輸出去(自定義模塊實現(xiàn))。同時作為網(wǎng)絡的業(yè)務終端,周邊節(jié)點接收包并且統(tǒng)計其端對端延時(在同上的自定義模塊 中實現(xiàn)),如圖6-4所示。圖1-3中心交換節(jié)點結(jié)構(gòu)Kmt圖1-4周邊節(jié)

4、點結(jié)構(gòu)OPNET Modeler的精髓之一為層次化建模的思想,在構(gòu)建本網(wǎng)絡中,采用如 下的層次化的步驟:定義包格式一定義鏈路模型一創(chuàng)建中心交換節(jié)點模型一創(chuàng)建周邊節(jié)點模型一建立網(wǎng)絡模型OPNET的包格式編輯器可以創(chuàng)建包含任意數(shù)量子域的數(shù)據(jù)包,包的大小由兩部分組成:(1)所有子域大小的疊加。(2)校驗值(bulk size)。3創(chuàng)建新的包格式要創(chuàng)建一個新的包模型:(1)從File菜單中選擇New,然后從列表中選擇Packet Format,單擊OK按鈕。 這時打開包格式編輯器。(2)單擊Create New Field工具按鈕,然后將光標移到編輯窗口中,單擊鼠標左鍵,接著單擊右鍵。這時一個新的包域

5、出現(xiàn)在編輯窗口中?,F(xiàn)在我們來設置包域的屬性:(3)在包域上單擊鼠標右鍵,從彈出的菜單中選擇Edit Attributeo(4)從彈出的屬性設置對話框中,按圖1-5設置屬性值,然后單擊OK按鈕。圖1-5包域的屬性這時定義好的包域名稱和大小會在編輯窗口中顯示,如圖1-6所示。圖1-6定義好的包域(5)從File菜單中選擇Save,將包格式命名為_pksw_format。initials為文件名的前綴,可以任意取一個合適的前綴名。(6)關(guān)閉包格式編輯器。4創(chuàng)建新的鏈路模型使用鏈路模型編輯器創(chuàng)建自定義鏈路。要創(chuàng)建連接中心和周邊節(jié)點的雙工鏈路模型,并且能支持已定義的包:(1)從File菜單中選擇New,

6、然后從列表中選擇Link Model,單擊OK按鈕。這時打開鏈路模型編輯器,如圖1-7所示。圖1-7鏈路模型編輯器接下來設置支持的包格式:(2)找到鏈路類型支持屬性框,如圖6-8所示除了ptdup外的鏈路類型對應的Supported屬性設置為no,表明該鏈路只支持點對點雙工連接。Link Types:Link Tyr*PalitXIQSLFipn t_lhyesdup_pbswnobuz_lkbug t apnobus_t(3)在packet formats屬性右邊對應的Initial Value欄中單擊鼠標左鍵。這時彈出選擇包格式支持對話框。(4)單擊“Supports All Packet

7、 Formats”和“Supports Unformatted Packets”復選框,關(guān)掉所有默認支持的格式,然后找到_pksw_format包格式,將它屬性改為supported。(5)單擊OK按鈕關(guān)閉此對話框。接下來需要定義鏈路模型的其他屬性:(6)設置data rate屬性值為9600。(7)設置ecc model(錯誤糾錯模式)屬性值為ecc_zero_err(取消鏈路的糾錯功能)(8)設置error model(鏈路干擾模式)屬性值為error_zero_err(鏈路無干擾)。(9)設置prodel model(傳播延時計算模式)屬性值為dpt_prodel(計算點對點傳播延 時)

8、。(10)設置txdel model(傳輸延時計算模式)屬性值為dpt_txdel(計算點對點傳輸延 時)。如果需要,還可以增加對該鏈路模型的描述。設置完屬性后,我們還需要增加link_delay外部函數(shù)。注意:這一步只針對OPNET 9.0及其更高的版本,如果漏掉這一步編譯dpt_prodel時會因為找不到link_delay函數(shù)而出現(xiàn)unresolved external error錯誤。 在OPNET 8.0系列版本中由于默認dpt_prodel管道程序沒有使用link_delay函數(shù),因此不存在這個問題。(11)從File菜單中選擇Declare External Files,。這時出

9、現(xiàn)申明外部函數(shù)文件對話框。(12)找到link_delay并單擊其左邊的復選框,這時出現(xiàn)綠色的勾。(13)單擊OK按鈕關(guān)閉對話框。最后命名鏈路模型:(14)File菜單中選擇Save,將鏈路模型命名為_pksw_link ,然后單擊Save。(15)關(guān)閉鏈路模型編輯器。1.5創(chuàng)建中心交換節(jié)點模型創(chuàng)建節(jié)點模型需要定義節(jié)點模型和定義進程模型兩個步驟。我們從定義節(jié)點模型開始,中心交換節(jié)點包含:四對發(fā)信機和收信機(每對收發(fā)信機對應一個周邊節(jié)點),一個中心交換處理進程(用來按地址轉(zhuǎn)交包)。要創(chuàng)建節(jié)點模型:(1)從File菜單中選擇New,然后從列表中選擇Node Model,單擊OK按鈕。這 時打開節(jié)點

10、模型編輯器。(2)在編輯窗口中放置一個進程模塊,四個點對點發(fā)信機 ,和四個點對點收信 機。(3)如圖6-9所示給每個對象命名,并用包流將每個收信機和發(fā)信機和hub相連。圖1-9中心交換節(jié)點模型接下來查看包流的連接情況:(4)在hub進程模塊上單擊右鍵,從彈出的菜單中選擇Show Connectivity。這時出現(xiàn)一個包流指向列表,描述包流與hub連接情況(格式為:hub輸出流索引號發(fā)信機;收信機hub輸入流索引號),如圖1-10所示。Module: hub_n| =1streamhub UJ - xmtu UJstreamhub 1/1-xrrrtl UJstreamhub - xmtk! U

11、Jstreamhub JJ - xmtJ UJstreamrcvU LUJ - hub Ustreamrcvl UJ hub JstreamrcvH UJ - hub切stre&mrcv3 UJ - hub 3JCl QMW圖1-10包流的連接關(guān)系(5)關(guān)閉該對話框。接下來你需要定義收發(fā)機模型屬性:(6)按住shift鍵,依次以鼠標左鍵單擊所有的收信機和發(fā)信機。注意不要選中包流。(7)在其中一個收信機或收發(fā)信機模塊上單擊鼠標右鍵,從彈出的菜單中選擇EditAttributes。(8)單擊channel屬性右邊的value欄, 在彈出的信道屬性表中將data rate設置為9600。(9

12、)單擊packet formats欄,在彈出的對話框中單擊Supports All Packet Formats”和Supports UnformattedPackets”復選框,關(guān)掉所有默認支持的格式,然后找到_pksw_format包格式,將它屬性改為supportedo單擊OK關(guān)閉對話框。(10)確定數(shù)據(jù)率和支持的包格式正確設置,如圖1-11所示,然后單擊OK關(guān)閉對話 框。圖1-11有線收發(fā)信機的屬性框(11)需要將以上的設置改變對所有選中的對象起作用,單擊Apply changes to selected objects復選框,然后單擊OK按鈕。接下來需要定義節(jié)點模型的界面屬性:(12

13、)從Interfaces菜單選擇Node Interfaceso出現(xiàn)節(jié)點界面對話框。(13)找到節(jié)點類型支持屬性表框,如圖1-12所示除了fixed外的節(jié)點類型對應的Supported屬性設置為no,表明該節(jié)點只能作為固定節(jié)點。Hods TypeSupporteJ.He favilt Iconfixadyesmobilano34槌LLi t冬冬圖1-12節(jié)點類型支持屬性表框如果需要,還可以在Comments文本欄中加上對該節(jié)點的描述?,F(xiàn)在節(jié)點模型就建立完了,將節(jié)點模型命名為_pksw_hub并保存,但是不要關(guān)閉節(jié)點模型編輯器,接下來我們來創(chuàng)建hub進程模型。1.6創(chuàng)建hub進程模型hub進程模

14、塊將接收到的包按照目的地址轉(zhuǎn)交給正確的發(fā)信機,機將包發(fā)往目的節(jié)點。在節(jié)點模型中,hub進程模塊通過包流與發(fā)信機和收信機相連。因為每個包的到達都觸發(fā)hub進程的一次中斷,hub進程接收到中斷后將從休眠狀態(tài)(idle非強制狀態(tài))激活執(zhí)行代碼處理包(綠色的強制狀態(tài))(1)從File菜單中選擇這時打開進程模型編輯器。(2)單擊創(chuàng)建狀態(tài)按鈕狀態(tài),然后單擊鼠標右鍵,當包被收信機接收,即給進程觸發(fā)一個流中斷,因此狀態(tài)必須能夠判斷出這個條件并做出正確的狀態(tài)轉(zhuǎn)移。接著我們來建立狀態(tài)轉(zhuǎn)移:(3)單擊創(chuàng)建狀態(tài)轉(zhuǎn)移按鈕,單擊idle狀態(tài),創(chuàng)建一個回到該狀態(tài)自身的轉(zhuǎn)移。(4)在轉(zhuǎn)移線上單擊鼠標右鍵,從彈出的菜單中選擇E

15、dit Attributes ,然后將轉(zhuǎn)移的condition屬性改為PK_ARRVL ,并且將executive屬性改為route_pk()。如圖1-13所示。圖1 -13 hub進程模型(5)單擊OK關(guān)閉轉(zhuǎn)移屬性對話框。接下來你需要定義PK_ARRVL條件的宏然后通過發(fā)信ONew,然后從列表中選擇Process Model,單擊OK按鈕。,然后將光標移到編輯窗口中,單擊鼠標左鍵,放置一個 命名該狀態(tài)為idle。PK_ARRVLVroutpk(6)單擊編輯頭塊按鈕(7)輸入以下定義宏P(guān)K_ARRVL的代碼#define PK_ARRVL (op_intrpt_type () = OPC_IN

16、TRPT_STRM)(8)從File菜單中選擇Save。PK_ARRVL條件判斷hub進程接收的中斷類型是否是流中斷(在OPNET中以常量OPC_INTRPT_STRM表示),如果進程異常地接收到其他類型的中斷則狀態(tài)找不到轉(zhuǎn)移 條件從而導致出錯,為以防萬一還需要為idle狀態(tài)創(chuàng)建一個指向自身default(其他條件不滿足則該條件滿足)的轉(zhuǎn)移線:(9)為idle狀態(tài)創(chuàng)建一個指向自身的轉(zhuǎn)移線。(10)在轉(zhuǎn)移線上單擊鼠標右鍵,從彈出的菜單中選擇Edit Attributes ,然后將轉(zhuǎn)移的condition屬性改為default,右擊鼠標關(guān)閉對話框,如圖1-14所示。(ciefaLjlt)l.-|2

17、(PK_AFIRVL/fouite_pk(圖1-14 hub進程模型接下來你需要編寫條件執(zhí)行代碼route_pk():(11)單擊編輯函數(shù)塊按鈕(12)輸入以下代碼:static void route_pk(void)int dest_address;Packet* pkptr;FIN(route_pk();pkptr = op_pk_get (op_intrpt_strm ();op_pk_nfd_get (pkptr, dest_address”, &dest_address);op_pk_send (pkptr, dest_address); 真正有效的代碼是在FIN(route

18、_pk()之后。第一句用來從合適的輸入流(輸入流索引通過核心函數(shù)op_intrpt_strm得到)中取得包(op_pk_get)。第二句代碼析取包中的目的 域,它含有包的目的地址。前面提過,這里的目的地址實際上是輸出流索引,它對應發(fā)往目的節(jié)點的收信機,而最后一句代碼將包發(fā)送給相應的收信機。(13)從File菜單中選擇Save。然后,需要更改進程的屬性:(14)從Interfaces菜單中選擇Process Interfaces。(15)把begsim intrpt屬性的初識值改為enabled(16)如果需要,在Comments文本欄增加模塊的說明。(17)單擊OK按鈕,保存更改。接下來,你需

19、要編譯模塊:(18)單擊編譯進程模型按鈕。(19)從File菜單中選擇Close,關(guān)閉進程模型編輯器。最后,需要將編譯好的進程模型指定給節(jié)點模型:(20)從Windows下拉菜單中選擇Node Editors,然后找到_pksw_hub。這時節(jié)點模型編輯器被激活。(21)在hub進程上單擊鼠標右鍵,從彈出的菜單中選擇EditAttributes ,將process model的屬性值改為_pksw_hub_proc。(22)單擊OK按鈕關(guān)閉屬性對話框。(23)保存節(jié)點模型。1.7創(chuàng)建周邊節(jié)點模型當周邊節(jié)點生成一個包時,它必須給這個包指定一個目的地址,然后將它發(fā)往中心節(jié)點。如果周邊節(jié)點接收到一個

20、包時,它必須計算該包的端對端延時。因此周邊節(jié)點必須包括一個業(yè)務生成模塊、一個進程模塊和一對點對點收發(fā)信機來完成這些任務。要創(chuàng)建周邊節(jié)點模型:(1)在剛剛保存過hub節(jié)點模型編輯器中的Edit的菜單下選擇ClearModel。這時編輯器工作空間被清空。(2)按圖1-15所示放置并命名模塊。Esrcprocrnt圖1-15周邊節(jié)點模型包含的模塊(3)在src模塊上單擊鼠標右鍵,從彈出的菜單中選擇Edit Attributes ,將process model屬性值改為simple_source,然后單擊OK關(guān)閉屬性對話框。(4)按下歹U方向建立包流:rcvproc; procxmt; srL pro

21、c。%o在proc進程模塊上單擊鼠標右鍵,在彈出的菜單中選擇Show Connectivity ,查看 包流分配表,如圖1-16所示。圖1-16 proc進程模塊的包流連接關(guān)系4)設置一遍。為了運行參數(shù)化仿真,需要將業(yè)務的Packet Interarrival Time屬性提升。當提升了屬性后,就可以在仿真運行時很容易地改變了。(5)在src模塊上單擊鼠標右鍵,從彈出地菜單中選擇Edit Attributeo(6)在屬性表中,選中左邊一欄的PacketInterarrival Time(這時該屬性變成藍色),然后單擊Promote按鈕。這樣就提升了屬性,可以在仿真屬性中設置它的值。同時希望業(yè)務

22、生成模塊能夠產(chǎn)生前面定義的包格式:(7)單擊Packet Format屬性對應的右邊Va lue欄,將它更改為_pksw_format。(8)參考圖1-17,確定你的設置正確,然后單擊OK關(guān)閉屬性對話框。圖1-17 src進程模塊屬性接下來,需要改變收發(fā)信機的信道速率和支持的包格式,以匹配指定的鏈路模型。我 們采取和前面類似的操作。接下來你需要定義收發(fā)機模型屬性:(9)住shift鍵,依次以鼠標左鍵單擊收信機和發(fā)信機。注意不要選中包流。(10)在其中一個收信機或收發(fā)信機模塊上單擊鼠標右鍵,從彈出的菜單中選擇EditAttributes。(11)單擊channel屬性右邊的value欄,在彈出的

23、信道屬性表中將data rate設置為9600.(12)單擊packet formats欄,在彈出的對話框中單擊Supports All Packet Formats”和aSupports Unformatted Packets”復選框,關(guān)掉所有默認支持的格式,然后找到_pksw_format包格式,將它屬性改為supportedo單擊OK關(guān)閉對話框。%。如果每個設置都正確,需要刪掉所有的包流重新按照步驟(13)確定數(shù)據(jù)率和支持的包格式正確設置, 然后單擊OK關(guān)閉對話框。(14)需要將以上的設置改變對所有選中的對象起作用,單擊Apply changes to selectedobjects復選

24、框,然后單擊OK按鈕。接下來你需要定義節(jié)點模型的界面屬性:(15)Interfaces菜單中選擇Node Interfaces出現(xiàn)節(jié)點界面對話框。(16)找到支持的節(jié)點類型屬性表,除了fixed外的節(jié)點類型對應的Supported屬性設置為no,表明該節(jié)點只能作為固定節(jié)點。屬性重命名可以簡化復雜的屬性名稱,或者擴展過于簡化的名稱。當某個屬性是由底層提升得來的,它的名稱就會變得很冗長而且沒有意義,這時可能需要把它的名稱簡化。本例程將為包到達間隔屬性重新命名。(17)Node Interfaces對話框中選擇Rename/Merge,按鈕。(18)在Unmodified Attributes欄中找

25、到要更名的屬性src.Packet Interarrival Time ,然后單擊按鈕_2_。(19)在Promotion Name文本欄中中輸入新的名字source interarrival time,如圖1-18所示。Hadifid Attrilxattifromotion UameblSTC.Packet Inter arrival Timwsource interirnval time圖1-18原屬性名與重命名后的屬性名(20)單擊OK關(guān)閉重命名對話框。你可以指定一系列預定值給某個屬性,這樣屬性的設置可以通過界面來選擇,這將給用戶提供方便。為屬性指定預定值有下面幾個好處:%。限制屬性取

26、值的范圍。%。用戶可以直觀地根據(jù)預定值的名稱來選擇相應的參數(shù)。%o用戶不需要輸入具體值,從下拉列表中選擇即可。接下來為source interarrival time屬性指定預定值:(21)在Node Interfaces對話框中,選擇新命名的source interarrival time屬性,這時 左邊的EditProperties按鈕被激活,單擊它。這時出現(xiàn)Attribute:source interarrival time對話框。(22)在Symbol Map表中,將所有Symbol對應的Status變?yōu)閟uppress。(23)如圖1-19所示增加4個符號與值的映射項。Symbol

27、MapO.ilXEV ftluAiiiki Eormi.mzIL,rrESinn ormiUft in. ninti form_int (jniGUPPruni form_iat (hdwei bullsTippir esswei bulL(shape.圖1-19符號與屬性真實值的映射表tAdi 1STSjappT /ww CI ? p t. 4 d.tilAI4a.d.dconst. &jn.t(X)eeons lant戲如)SOaddconstantOSO?二1/ 出 H匠Tripieri tAddDel eteLoad publ i c隱藏屬性可以避免用戶看到不需要設置參數(shù)的屬性

28、項,從而能夠簡化用戶界面。這個操作不會影響仿真結(jié)果。周邊節(jié)點的許多屬性與仿真無關(guān)。為了避免混淆,需要隱藏這些屬性:(24)如圖1-20所示除了source interarrival time外的所有屬性的Status改為hidden。圖1-20屬性狀態(tài)表(25)單擊OK按鈕關(guān)閉節(jié)點界面對話框。(26)從File菜單中選擇Save As,,將節(jié)點模型命名為_pksw_node ,然后關(guān) 閉節(jié)點模型編輯器。接下來,需要創(chuàng)建周邊節(jié)點的處理模塊:周邊節(jié)點的處理模塊主要有兩個功能:(1)為包分配目的地址并且發(fā)送出去。(2)計算包的端對端延時。為了完成以上的任務,進程模型需要設置兩個狀態(tài):一個初試化ini

29、tial狀態(tài),一個idle狀態(tài)。創(chuàng)建進程模型:(1)從File菜單中選擇New,從彈出的菜單中選擇Process Model,單擊OK按鈕。(2)如圖1-22所示在編輯窗口中放置兩個狀態(tài):圖1-21進程模型包含兩個狀態(tài)(3)改變狀態(tài)的屬性:%o在第一個狀態(tài)上單擊鼠標右鍵,在彈出的菜單中選擇Set name將其改名為init,并且選擇Make State Unforced使其變?yōu)閺娭频?forced),這時狀態(tài)顏色變?yōu)榫G色。%0將第二個狀態(tài)更名為idle。(保持它為紅色的非強制unforced狀態(tài)),如圖1-22所示。圖1-22狀態(tài)命名后的進程模型在init狀態(tài)中,進程模型將加載一個從03的均勻

30、分布概率函數(shù)。下一步,需要為狀態(tài)創(chuàng)建轉(zhuǎn)移線。(1)如圖1-23所指定狀態(tài)轉(zhuǎn)移以及條件滿足所執(zhí)行的函數(shù)。xmt()轉(zhuǎn)移執(zhí)行函數(shù)產(chǎn)生將調(diào)用概率函數(shù)隨即產(chǎn)生目的地址,并將其分配給來自業(yè)務生 成模塊的包,然后再將它發(fā)送出去。rcv()轉(zhuǎn)移執(zhí)行函數(shù)作用是在接收到包是計算其端對端延時,并且將結(jié)果寫入全局統(tǒng)計 量。(2)單擊編輯頭塊按鈕定義轉(zhuǎn)移條件。(RCV_AftRVL)/rcvO圖1-23加入狀態(tài)轉(zhuǎn)移的進程模型(3)輸入以下代碼:/*包流定義*/#define RCV_IN_STRM 0#define SRC_IN_STRM 1#define XMT_OUT_STRM 0/*條件宏定義*/#define

31、 SRC_ARRVL (op_intrpt_type () = OPC_INTRPT_STRM & op_intrpt_strm()=SRC_IN_STRM)#define RCV_ARRVL (op_intrpt_type () = OPC_INTRPT_STRM & op_intrpt_strm()=RCV_IN_STRM)RCV_IN_STRM , SRC_IN_STRM對應數(shù)據(jù)包的輸入流索引號,而XMT_OUT_STRM為輸出流索引號,輸入輸出都是相對當前進程模塊(proc)而言,它們對應與proc模塊相連的某條包流,連接關(guān)系一旦確定,它們的索引號是常數(shù)。之所以要放在頭

32、文件中定義這些端口號,是為了修改方便而且避免混淆。(4)從File菜單中選擇Save保存文件。接下來,需要定義狀態(tài)變量和臨時變量。(1)單擊編輯狀態(tài)變量工具按鈕 。(2)在狀態(tài)變量對話框中輸入以下內(nèi)容,如圖1-24所示。TypeHameDistribution *address di stStathandleete_gsh圖1-24設置狀態(tài)變量(3)單擊OK關(guān)閉對話框。下一步,需要創(chuàng)建一個全局統(tǒng)計探針收集包的端對端延時結(jié)果。(1)在進程模型的Interfaces菜單中選擇Declare Global Statistics(申明全局統(tǒng)計量)(2)將Stat Name屬性命名為ETE Delay。

33、(3)在探針描述文本欄中輸入:Calculates ETE delay by subtracting packet creation time from current simulation time.(4)從File菜單中選擇Save保存描述文件。(5)檢查的設置是否完成。參考如圖1-25所示的對話框。StatModeCDescETE DelaySingleN/ACalculates ETE delay by subtr,.圖1-25申明全局統(tǒng)計量(6)單擊OK關(guān)閉Declare Global Statistics對話框。接下來,需要為進程模型中的每個狀態(tài)添加入口和出口執(zhí)行代碼。首先為ini

34、t狀態(tài)添加入口執(zhí)行代碼:(7)雙擊init狀態(tài)的上半部打開其入口執(zhí)行代碼編輯框,輸入以下代碼。address_dist = op_dist_load (uniform_int”, 0, 3);ete_gsh = op_stat_reg(ETE Delay”,OPC_STA T_INDEX_NONE, OPC_STA T_GLOBAL );(8)從File菜單中選擇Save保存代碼。xmt()轉(zhuǎn)移執(zhí)行函數(shù)當SRC_ARRVL條件滿足時(即包從業(yè)務生成模塊到達proc模塊)才執(zhí)行。該函數(shù)在將包發(fā)送之前要為它分配一個目的地址。(9)在函數(shù)塊中,輸入以下代碼:static void xmt (void

35、)Packet* pkptr;FIN (xmt();pkptr = op_pk_get (SRC_IN_STRM);op_pk_nfd_set_int32 (pkptr, dest_address ” , (int)op_dist_outcome(address_dist);op_pk_send (pkptr, XMT_OUT_STRM);FOUT;第一行代碼從包流的輸入流索引號(SRC_IN_STRM)獲取數(shù)據(jù)包。第二行代碼通過調(diào)用均勻概率分布函數(shù)指針(address_dist,它在init狀態(tài)中定義)而產(chǎn)生一個隨機值,將該值設置 為包的dest_address域(請參考前面的包格式定義 )

36、。最后一句從包流的輸出流索引號(XMT_OUT_STRM )將包發(fā)送出去。rcv()轉(zhuǎn)移執(zhí)行函數(shù)當RCV_ARRVL條件滿足(即包從收信機到達proc模塊)時執(zhí)行。主要目的是計算端對端延時并寫入全局統(tǒng)計探針。(10)在函數(shù)塊中輸入以下代碼:static void rcv (void)Packet* pkptr;double ete_delay;FIN (rcv();圖1-26對象模板pkptr = op_pk_get (RCV_IN_STRM);ete_delay = op_sim_time() - op_pk_creation_time_get (pkptr);op_stat_write (

37、ete_gsh, ete_delay);op_pk_destroy (pkptr);FOUT;第7行代碼獲取包指針(如前所述)。第二行代碼通過將當前仿真時間減去包的創(chuàng)建時間得到包的端對端延時。第9行代碼將計算的延時寫入矢量結(jié)果文件中,第10行代碼最后 銷毀包。(5)從File菜單中選擇Save關(guān)閉函數(shù)編輯器。還需要激活“仿真開始”中斷:(1)intrpt(2)1.8現(xiàn)在你已經(jīng)建好了底層的節(jié)點、進程和鏈路模型,依據(jù)層次化建模的思想,現(xiàn)在可以構(gòu)建網(wǎng)絡模型了?;叵胍幌?,我們開始的網(wǎng)絡拓撲結(jié)構(gòu)包括一個中心交換(hub)節(jié)點和四個周邊節(jié)點。(1)從OPNET Modeler主窗口中的File菜單中選擇N

38、ew.,從下拉列表中選擇Project,然后單擊OK。(2)Project Name命名為_pksw_net,將Scenario命名為baseline,單擊OK按鈕。(3)這時出現(xiàn)網(wǎng)絡建立向?qū)?,單擊Quit。將自己指定網(wǎng)絡規(guī)格,這時需要從一個對象模板中選擇。首先需要創(chuàng)建一個對象模板,它包含你需要用到的模塊。(1)(2)(3)(4)使其變?yōu)?5)在Configure Palette對話框中,單擊Link Models按鈕。(6)找到_pksw_link并包括include該鏈路模型。單擊OK。(7)在Configure Palette對話框中,單擊OK按鈕,將模板命名為_ pksw_palett

39、e,如圖1-26所示。在Interfaces菜單中選擇Process Interfaces,從Process Interfaces對話框中, 將begsim屬性變改為enabledo在comment文本框中加入進程描述。單擊OK關(guān)閉對話框。創(chuàng)建網(wǎng)絡模型單擊打開對象模板工具按鈕。在彈出的對話框中單擊配置模板按鈕(Configure Palette.)在Configure Palette對話框中,單擊Clear按鈕,然后單擊Node Models按鈕。找到_pksw_hub和_pksw_node節(jié)點模型并單擊右邊的Status欄included o然后單擊OK?,F(xiàn)在準備構(gòu)建網(wǎng)絡了。(1)在項目編輯

40、窗口中放置一個subnet模型 并命名為pkswl。(2)雙擊這個子網(wǎng)模塊進入它的內(nèi)部。(3)放置四個周邊節(jié)點對象_pksw_node。(4)放置一個中心節(jié)點對象_pksw_hub,并將該節(jié)點命名為hub。(5)單擊模板中的鏈路對象_pksw_link ,(1)單擊驗證連接工具按鈕。(2)選中Verify links,單擊OK按鈕,如圖1-28所示。(3)如果某個鏈路上出現(xiàn)紅色的叉,如圖1-29所示,則鏈路不通。I D Check LinksxJ(* Verifyl ChooselinksTransceiversfor selected links匚亟二_CancelHelp |圖1-28驗證

41、連接對話框圖1-29鏈路不通的情形在驗證連接對話框中單擊Choose transceivers for selected links,這時紅色的叉消失,但并不代表問題已經(jīng)解決,只不過把連通失敗鏈路的連接屬性置為空,如圖1-30所示。收發(fā)信機和鏈路屬性(包格式、數(shù)據(jù)率等)必須和鏈路的相應屬性匹配才能夠使鏈路連通。1.9收集統(tǒng)計量并分析結(jié)果已經(jīng)建好了所有模型,現(xiàn)在可以開始仿真網(wǎng)絡行為。對于這個例子,為了觀察不同包的產(chǎn)生速率對網(wǎng)絡性能的影響,需要在仿真編輯器中為 相應的仿真屬性配置多個值,這時一次會運行一系列仿真,每個 仿真結(jié)果對應屬性的一個取值。選擇要收集的結(jié)果:(1)在工程窗口的空白處(任意位置

42、)單擊鼠標右鍵,從彈出的菜單中選擇Individual DES Statistics。(2)打開Global Statistics列表,選中ETE Delay,單擊OK關(guān)閉對話框,如圖1-31所示。ETE Delay苜口Node Statistics此Link Statistics圖1-31選擇全局結(jié)果統(tǒng)計量這是在周邊節(jié)點中的處理模塊定義過的全局統(tǒng)計探針。(3)在node_0與hub間的鏈路上單擊鼠標右鍵,從彈出的菜單中選擇Choose IndividualDES Statistics。(4)打開point-to-point列表,選中上行和下行鏈路利用率,如圖 關(guān)閉對話框。(5)保存項目文件。

43、Choose|B3Choose Results1-32所示。單擊OKlow-level point-1 o-poinipoint-to-pointqueuing delay -一queuing delaythroughput (bits/sec)一throughput (pakels/sec) throughput (packets/sec) 1.10配置仿真對于這個例子,包的大小和收發(fā)機的速率都是恒定的,因此期望端對端延時也應該固定不變。然而,如果包的產(chǎn)生速率足夠快,就會導致部分包在發(fā)信機隊列中積壓,這時包 的端對端延時加大。如果包的產(chǎn)生速率不定,有可能造成業(yè)務突發(fā),因此端對端延時也會 受影

44、響。為了模擬這些行為,需要配置source interarrival time仿真屬性,將給它指定兩個值。(1)從Simulation菜單中選擇Configure Simulation(Advanced)這時仿真編輯器打開。(2)在仿真設置上單擊鼠標右鍵,從彈出的菜單中選擇Edit Attributeso回想前面我們已經(jīng)將業(yè)務生成模塊的interarrival time屬性提升為仿真屬性了,現(xiàn)在可以為它指定兩個不同的值(每個值運行一次仿真)。下面將配置當包產(chǎn)生間隔為“4”的仿真:(1)將仿真設置文件命名為_pksw_sim1。(2)將隨機種子Seed設置為21 ,仿真時間設為1000 seconds。(3)給source interarrival time屬性賦值: 單擊Add按鈕,然后選擇未引用的仿真屬性,單擊OK按鈕,如圖1-33所示。Unresolved Attributes圖1-33增加未引用的仿真屬性 在仿真設置對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論