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

下載本文檔

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

文檔簡介

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

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

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

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

5、編輯窗口中。現(xiàn)在我們來設(shè)置包域的屬性:(3)在包域上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributeo(4)從彈出的屬性設(shè)置對話框中,按圖1-5設(shè)置屬性值,然后單擊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、表中選擇LinkModel,單擊OK按鈕。這時打開鏈路模型編輯器,如圖1-7所示。圖1-7鏈路模型編輯器接下來設(shè)置支持的包格式:(2)找到鏈路類型支持屬性框,如圖6-8所示除了ptdup外的鏈路類型對應(yīng)的Supported屬性設(shè)置為no,表明該鏈路只支持點對點雙工連接。LinkTypes:LinkTyr電Pslitptsinpt_lh*5dup_p七bdwTLQbuz_lkbu工tapHObus_t即(3)在packetformats屬性右邊又中應(yīng)的InitialValue欄中單擊鼠標(biāo)左鍵。這時彈出選擇包格式支持對話框。(4)單擊SupportsAllPacketFormats和Support

7、sUnformattedPackets”復(fù)選框,關(guān)掉所有默認(rèn)支持的格式,然后找到_pksw_format包格式,將它屬性改為supported。(5)單擊OK按鈕關(guān)閉此對話框。接下來需要定義鏈路模型的其他屬性:(6)設(shè)置datarate屬性值為9600。(7)設(shè)置eccmodel(錯誤糾錯模式)屬性值為ecc_zero_err(取消鏈路的糾錯功能)(8)設(shè)置errormodel(鏈路干擾模式)屬性值為error_zero_err(鏈路無干擾)。(9)設(shè)置prodelmodel(傳播延時計算模式)屬性值為dpt_prodel(計算點對點傳播延時)。(10)設(shè)置txdelmodel(傳輸延時計算模

8、式)屬性值為dpt_txdel(計算點對點傳輸延時)。如果需要,還可以增加對該鏈路模型的描述。設(shè)置完屬性后,我們還需要增加link_delay外部函數(shù)。注意:這一步只針對OPNET9.0及其更高的版本,如果漏掉這一步編譯dpt_prodel時會因為找不到link_delay函數(shù)而出現(xiàn)unresolvedexternalerror錯誤。在OPNET8.0系列版本中由于默認(rèn)dpt_prodel管道程序沒有使用link_delay函數(shù),因此不存在這個問題。(11)從File菜單中選擇DeclareExternalFiles,。這時出現(xiàn)申明外部函數(shù)文件對話框。(12)找到link_delay并單擊其左

9、邊的復(fù)選框,這時出現(xiàn)綠色的勾。(13)單擊OK按鈕關(guān)閉對話框。最后命名鏈路模型:(14)File菜單中選擇Save,將鏈路模型命名為_pksw_link,然后單擊Save。(15)關(guān)閉鏈路模型編輯器。1.5創(chuàng)建中心交換節(jié)點模型創(chuàng)建節(jié)點模型需要定義節(jié)點模型和定義進(jìn)程模型兩個步驟。我們從定義節(jié)點模型開始,中心交換節(jié)點包含:四對發(fā)信機(jī)和收信機(jī)(每對收發(fā)信機(jī)對應(yīng)一個周邊節(jié)點),一個中心交換處理進(jìn)程(用來按地址轉(zhuǎn)交包)。要創(chuàng)建節(jié)點模型:(1)從File菜單中選擇New,然后從列表中選擇NodeModel,單擊OK按鈕。這時打開節(jié)點模型編輯器。(2)在編輯窗口中放置一個進(jìn)程模塊,四個點對點發(fā)信機(jī),和四個點

10、對點收信機(jī)。(3)如圖6-9所示給每個對象命名,并用包流將每個收信機(jī)和發(fā)信機(jī)和hub相連。圖1-9中心交換節(jié)點模型接下來查看包流的連接情況:(4)在hub進(jìn)程模塊上單擊右鍵,從彈出的菜單中選擇ShowConnectivity。這時出現(xiàn)一個包流指向列表,描述包流與hub連接情況(格式為:hub輸出流索引號一發(fā)信機(jī);收信機(jī)一hub輸入流索引號),如圖1-10所示。Module:hubstream:hubUJstream;hub1Jstream:hubstream:hubJJstream:rcvllL(JJstream:rcvlUJstream:rcx/廿UJstre&m:rcv3UJ-xm

11、tuUJ_|-xmtlUJ-xrn叱|_U-xmtJUJ-hubLUJhubnJ-hub展-hubL3J二j1圖1-10包流的連接關(guān)系(5)關(guān)閉該對話框。接下來你需要定義收發(fā)機(jī)模型屬性:(6)按住shift鍵,依次以鼠標(biāo)左鍵單擊所有的收信機(jī)和發(fā)信機(jī)。注意不要選中包流。(7)在其中一個收信機(jī)或收發(fā)信機(jī)模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes。(8)單擊channel屬性右邊的value欄,在彈出的信道屬性表中將datarate設(shè)置為9600。(9)單擊packetformats欄,在彈出的對t框中單擊“SupportsAllPacketFormats”和aSupport

12、sUnformattedPackets”復(fù)選框,關(guān)掉所有默認(rèn)支持的格式,然后找到_pksw_format包格式,將它屬性改為supportedo單擊OK關(guān)閉對話框。(10)確定數(shù)據(jù)率和支持的包格式正確設(shè)置,如圖1-11所示,然后單擊OK關(guān)閉對話框。圖1-11有線收發(fā)信機(jī)的屬性框(11)需要將以上的設(shè)置改變對所有選中的對象起作用,單擊Applychangestoselectedobjects復(fù)選框,然后單擊OK按鈕。接下來需要定義節(jié)點模型的界面屬性:(12)從Interfaces菜單選擇NodeInterfaceso出現(xiàn)節(jié)點界面對話框。(13)找到節(jié)點類型支持屬性表框,如圖1-12所示除了fix

13、ed外的節(jié)點類型對應(yīng)的Supported屬性設(shè)置為no,表明該節(jié)點只能作為固定節(jié)點。HodsTypeSupporteJ.HefaviltIconfixadyesmobilenosatelLit圖1-12節(jié)點類型支持屬性表框如果需要,還可以在Comments文本欄中加上對該節(jié)點的描述。現(xiàn)在節(jié)點模型就建立完了,將節(jié)點模型命名為_pksw_hub并保存,但是不要關(guān)閉節(jié)點模型編輯器,接下來我們來創(chuàng)建hub進(jìn)程模型。1.6創(chuàng)建hub進(jìn)程模型hub進(jìn)程模塊將接收到的包按照目的地址轉(zhuǎn)交給正確的發(fā)信機(jī),然后通過發(fā)信機(jī)將包發(fā)往目的節(jié)點。在節(jié)點模型中,hub進(jìn)程模塊通過包流與發(fā)信機(jī)和收信機(jī)相連。因為每個包的到達(dá)都

14、觸發(fā)hub進(jìn)程的一次中斷,hub進(jìn)程接收到中斷后將從休眠狀態(tài)(idle非強(qiáng)制狀態(tài))激活執(zhí)行代碼處理包(綠色的強(qiáng)制狀態(tài))。(1)從File菜單中選擇New,然后從列表中選擇ProcessModel,單擊OK按鈕。這時打開進(jìn)程模型編輯器。(2)單擊創(chuàng)建狀態(tài)按鈕,然后將光標(biāo)移到編輯窗口中,單擊鼠標(biāo)左鍵,放置一個狀態(tài),然后單擊鼠標(biāo)右鍵,命名該狀態(tài)為idle。當(dāng)包被收信機(jī)接收,即給進(jìn)程觸發(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)移線上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇Edi

15、tAttributes,然后將轉(zhuǎn)移的condition屬性改為PK_ARRVL,并且將executive屬性改為route_pk()。如圖1-13所示。PK_ARRVLVroutpk圖1-13hub進(jìn)程模型(5)單擊OK關(guān)閉轉(zhuǎn)移屬性對話框。接下來你需要定義PK_ARRVL條件的宏(6)單擊編輯頭塊按鈕(7)輸入以下定義宏P(guān)K_ARRVL的代碼#definePK_ARRVL(op_intrpt_type()=OPC_INTRPT_STRM)(8)從File菜單中選擇Save。PK_ARRVL條件判斷hub進(jìn)程接收的中斷類型是否是流中斷(在OPNET中以常量OPC_INTRPT_STRM表示),如

16、果進(jìn)程異常地接收到其他類型的中斷則狀態(tài)找不到轉(zhuǎn)移條件從而導(dǎo)致出錯,為以防萬一還需要為idle狀態(tài)創(chuàng)建一個指向自身default(其他條件不滿足則該條件滿足)的轉(zhuǎn)移線:(9)為idle狀態(tài)創(chuàng)建一個指向自身的轉(zhuǎn)移線。(10)在轉(zhuǎn)移線上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes,然后將轉(zhuǎn)移的condition屬性改為default,右擊鼠標(biāo)關(guān)閉對話框,如圖1-14所示。(ciefaLjlt)l一f(PK_AFIRVL/fouite_pk(圖1-14hub進(jìn)程模型接下來你需要編寫條件執(zhí)行代碼route_pk():(11)單擊編輯函數(shù)塊按鈕(12)輸入以下代碼:staticvoidro

17、ute_pk(void)intdest_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_pk()之后。第一句用來從合適的輸入流(輸入流索引通過核心函數(shù)op_intrpt_strm得到)中取得包(op_pk_get)。第二句代碼析取包中的目的域,它含有包的目的地址。前面提過,這里的目的地址實際上是輸出流索引

18、,它對應(yīng)發(fā)往目的節(jié)點的收信機(jī),而最后一句代碼將包發(fā)送給相應(yīng)的收信機(jī)。(13)從File菜單中選擇Save。然后,需要更改進(jìn)程的屬性:(14)從Interfaces菜單中選擇ProcessInterfaces。(15)把begsimintrpt屬性的初識值改為enabled(16)如果需要,在Comments文本欄增加模塊的說明。(17)單擊OK按鈕,保存更改。接下來,你需要編譯模塊:(18)單擊編譯進(jìn)程模型按鈕。(19)從File菜單中選擇Close,關(guān)閉進(jìn)程模型編輯器。最后,需要將編譯好的進(jìn)程模型指定給節(jié)點模型:(20)從Windows下拉菜單中選擇NodeEditors,然后找到_pksw

19、_hub。這時節(jié)點模型編輯器被激活。(21)在hub進(jìn)程上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes,將processmodel的屬性值改為_pksw_hub_proc。(22)單擊OK按鈕關(guān)閉屬性對話框。(23)保存節(jié)點模型。1.7創(chuàng)建周邊節(jié)點模型當(dāng)周邊節(jié)點生成一個包時,它必須給這個包指定一個目的地址,然后將它發(fā)往中心節(jié)點。如果周邊節(jié)點接收到一個包時,它必須計算該包的端對端延時。因此周邊節(jié)點必須包括一個業(yè)務(wù)生成模塊、一個進(jìn)程模塊和一對點對點收發(fā)信機(jī)來完成這些任務(wù)。要創(chuàng)建周邊節(jié)點模型:(1)在剛剛保存過hub節(jié)點模型編輯器中的Edit的菜單下選擇ClearModel。這時編輯

20、器工作空間被清空。(2)按圖1-15所示放置并命名模塊。圖1-15周邊節(jié)點模型包含的模塊(3)在src模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes,將processmodel屬性值改為simple_source,然后單擊OK關(guān)閉屬性對話框。(4)按下歹U方向建立包流:rcvfproc;procfxmt;src-proc。%o在proc進(jìn)程模塊上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇ShowConnectivity,查看包流分配表,如圖1-16所示。圖1-16proc進(jìn)程模塊的包流連接關(guān)系4)設(shè)置一遍。為了運行參數(shù)化仿真,需要將業(yè)務(wù)的PacketInterarrivalTime屬

21、性提升。當(dāng)提升了屬性后,就可以在仿真運行時很容易地改變了。(5)在src模塊上單擊鼠標(biāo)右鍵,從彈出地菜單中選擇EditAttributeo(6)在屬性表中,選中左邊一欄的PacketInterarrivalTime(這時該屬性變成藍(lán)色),然后單擊Promote按鈕。這樣就提升了屬性,可以在仿真屬性中設(shè)置它的值。同時希望業(yè)務(wù)生成模塊能夠產(chǎn)生前面定義的包格式:(7)單擊PacketFormat屬性對應(yīng)的右邊Value欄,將它更改為_pksw_format。(8)參考圖1-17,確定你的設(shè)置正確,然后單擊OK關(guān)閉屬性對話框。圖1-17src進(jìn)程模塊屬性接下來,需要改變收發(fā)信機(jī)的信道速率和支持的包格式

22、,以匹配指定的鏈路模型。我們采取和前面類似的操作。接下來你需要定義收發(fā)機(jī)模型屬性:(9)住shift鍵,依次以鼠標(biāo)左鍵單擊收信機(jī)和發(fā)信機(jī)。注意不要選中包流。(10)在其中一個收信機(jī)或收發(fā)信機(jī)模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes。(11)單擊channel屬性右邊的value欄,在彈出的信道屬性表中將datarate設(shè)置為9600.(12)單擊packetformats欄,在彈出的對t框中單擊“SupportsAllPacketFormats”和SupportsUnformattedPackets”復(fù)選框, 關(guān)掉所有默認(rèn)支持的格式, 然后找到_pksw_format

23、包格式,將它屬性改為supportedo單擊OK關(guān)閉對話框。(13)確定數(shù)據(jù)率和支持的包格式正確設(shè)置,然后單擊OK關(guān)閉對話框。(14)需要將以上的設(shè)置改變對所有選中的對象起作用,單擊Applychangestoselectedobjects復(fù)選框,然后單擊OK按鈕。接下來你需要定義節(jié)點模型的界面屬性:%。如果每個設(shè)置都正確,需要刪掉所有的包流重新按照步驟(15)Interfaces菜單中選擇NodeInterfaces出現(xiàn)節(jié)點界面對話框。(16)找到支持的節(jié)點類型屬性表,除了fixed外的節(jié)點類型對應(yīng)的Supported屬性設(shè)置為no,表明該節(jié)點只能作為固定節(jié)點。屬性重命名可以簡化復(fù)雜的屬性名

24、稱,或者擴(kuò)展過于簡化的名稱。當(dāng)某個屬性是由底層提升得來的,它的名稱就會變得很冗長而且沒有意義,這時可能需要把它的名稱簡化。本例程將為包到達(dá)間隔屬性重新命名。(17)NodeInterfaces對話框中選擇Rename/Merge,按鈕。(18)在UnmodifiedAttributes欄中找到要更名的屬性src.PacketInterarrivalTime,然后單擊按鈕(19)在PromotionName文本欄中中輸入新的名字sourceinterarrivaltime,如圖1-18所示。圖1-18原屬性名與重命名后的屬性名(20)單擊OK關(guān)閉重命名對話框。你可以指定一系列預(yù)定值給某個屬性,這

25、樣屬性的設(shè)置可以通過界面來選擇,這將給用戶提供方便。為屬性指定預(yù)定值有下面幾個好處:%。限制屬性取值的范圍。%。用戶可以直觀地根據(jù)預(yù)定值的名稱來選擇相應(yīng)的參數(shù)。%。用戶不需要輸入具體值,從下拉列表中選擇即可。接下來為sourceinterarrivaltime屬性指定預(yù)定值:(21)在NodeInterfaces對話框中,選擇新命名的sourceinterarrivaltime屬性,這時左邊的EditProperties按鈕被激活,單擊它。這時出現(xiàn)Attribute:sourceinterarrivaltime對話框。(22)在SymbolMap表中,將所有Symbol對應(yīng)的Status變?yōu)閟

26、uppress。(23)如圖1-19所示增加4個符號與值的映射項。SymbolMapO.111XEVftluAMiklEorHl51:1TlM(TEU.ppi-SinnormiUftin.niiDLiformalnt(m-iGUPPruniform_iat(hdweibull(stiiape口PPH1asisweibulL(shape.i-ptad(fi1S-Tsjappirasser5PtaatilAI4a.d.dconst.&jn.t( (X)ea*eonsl自nl胃口aiduannlwtsoaddconstantOSO?三1A*AiXJ.pv?口生皿.niPE斤libberitI

27、TswSyiribulAd.dIDeleteLoadpublic圖1-19符號與屬性真實值的映射表隱藏屬性可以避免用戶看到不需要設(shè)置參數(shù)的屬性項,從而能夠簡化用戶界ModiEiedAltrihatesPromotionHam電src.PacketInterarrivalTi桁府sourceinterirnvaltime面。這個操作不會影響仿真結(jié)果。周邊節(jié)點的許多屬性與仿真無關(guān)。為了避免混淆,需要隱藏這些屬性:(24)如圖1-20所示除了sourceinterarrivaltime外的所有屬性的Status改為hidden。圖1-20屬性狀態(tài)表(25)單擊OK按鈕關(guān)閉節(jié)點界面對話框。(26)從F

28、ile菜單中選擇SaveAs,將節(jié)點模型命名為_pksw_node,然后關(guān)閉節(jié)點模型編輯器。接下來,需要創(chuàng)建周邊節(jié)點的處理模塊:周邊節(jié)點的處理模塊主要有兩個功能:(1)為包分配目的地址并且發(fā)送出去。(2)計算包的端對端延時。為了完成以上的任務(wù),進(jìn)程模型需要設(shè)置兩個狀態(tài):一個初試化initial狀態(tài),一個idle狀態(tài)。創(chuàng)建進(jìn)程模型:(1)從File菜單中選擇New,從彈出的菜單中選擇ProcessModel,單擊OK按鈕。(2)如圖1-22所示在編輯窗口中放置兩個狀態(tài):圖1-21進(jìn)程模型包含兩個狀態(tài)(3)改變狀態(tài)的屬性:%o在第一個狀態(tài)上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇Setname將其改名為i

29、nit,并且選擇MakeStateUnforced使其變?yōu)楣?1制的(forced),這時狀態(tài)顏色變?yōu)榫G色。%。將第二個狀態(tài)更名為idle。(保持它為紅色的非強(qiáng)制unforced狀態(tài)),如圖1-22所示。圖1-22狀態(tài)命名后的進(jìn)程模型在init狀態(tài)中,進(jìn)程模型將加載一個從03的均勻分布概率函數(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è)務(wù)生成模塊的包,然后再將它發(fā)送出去。rcv()轉(zhuǎn)移執(zhí)行函數(shù)作用是在接收到包是計算其端對端延時,并且將結(jié)果寫入全局統(tǒng)計量。(2)單擊編輯頭塊按

30、鈕定義轉(zhuǎn)移條件。(SRC_ARRVL)/xmtO(RCV_AftRVL)/rcvO圖1-23加入狀態(tài)轉(zhuǎn)移的進(jìn)程模型(3)輸入以下代碼:/*包流定義*/# defineRCV_IN_STRM0# defineSRC_IN_STRM1# defineXMT_OUT_STRM0/*條件宏定義*/# defineSRC_ARRVL(op_intrpt_type()=OPC_INTRPT_STRM&op_intrpt_strm()=SRC_IN_STRM)# defineRCV_ARRVL(op_intrpt_type()=OPC_INTRPT_STRM&op_intrpt_strm()

31、=RCV_IN_STRM)RCV_IN_STRM,SRC_IN_STRM對應(yīng)數(shù)據(jù)包的輸入流索弓I號,而XMT_OUT_STRM為輸出流索引號,輸入輸出都是相對當(dāng)前進(jìn)程模塊(proc)而言,它們對應(yīng)與proc模塊相連的某條包流,連接關(guān)系一旦確定,它們的索引號是常數(shù)。之所以要放在頭文件中定義這些端口號,是為了修改方便而且避免混淆。(4)從File菜單中選擇Save保存文件。接下來,需要定義狀態(tài)變量和臨時變量。(1)單擊編輯狀態(tài)變量工具按鈕。(2)在狀態(tài)變量對話框中輸入以下內(nèi)容,如圖1-24所示。Type|NameDistribution*addressdistStathandle|ete_gsh圖

32、1-24設(shè)置狀態(tài)變量(3)單擊OK關(guān)閉對話框。下一步,需要創(chuàng)建一個全局統(tǒng)計探針收集包的端對端延時結(jié)果。(1)在進(jìn)程模型的Interfaces菜單中選擇DeclareGlobalStatistics(申明全局統(tǒng)計量)。(2)將StatName屬性命名為ETEDelay。(3)在探針描述文本欄中輸入:CalculatesETEdelaybysubtractingpacketcreationtimefromcurrentsimulationtime.(4)從File菜單中選擇Save保存描述文件。(5)檢查的設(shè)置是否完成。參考如圖1-25所示的對話框。ModeCDescETEDelaySingleN

33、/ACalculatesETEdelaybysubtr,.圖1-25申明全局統(tǒng)計量(6)單擊OK關(guān)閉DeclareGlobalStatistics對話框。接下來,需要為進(jìn)程模型中的每個狀態(tài)添加入口和出口執(zhí)行代碼。首先為init狀態(tài)添加入口執(zhí)行代碼:(7)雙擊init狀態(tài)的上半部打開其入口執(zhí)行代碼編輯框,輸入以下代碼。address_dist=op_dist_load(uniform_int,0,3);ete_gsh=op_stat_reg(ETEDelay,OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL);(8)從File菜單中選擇Save保存代碼。xmt()轉(zhuǎn)移執(zhí)行函

34、數(shù)當(dāng)SRC_ARRVL條件滿足時(即包從業(yè)務(wù)生成模塊到達(dá)proc模塊)才執(zhí)行。該函數(shù)在將包發(fā)送之前要為它分配一個目的地址。(9)在函數(shù)塊中,輸入以下代碼:staticvoidxmt(void)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ù)包。第二行代碼通過

35、調(diào)用均勻概率分布函數(shù)指針(address_dist,它在init狀態(tài)中定義)而產(chǎn)生一個隨機(jī)值,將該值設(shè)置為包的dest_address域(請參考前面的包格式定義)。最后一句從包流的輸出流索引號(XMT_OUT_STRM)將包發(fā)送出去。rcv()轉(zhuǎn)移執(zhí)行函數(shù)當(dāng)RCV_ARRVL條件滿足(即包從收信機(jī)到達(dá)proc模塊)時執(zhí)行。主要目的是計算端對端延時并寫入全局統(tǒng)計探針。(10)在函數(shù)塊中輸入以下代碼:staticvoidrcv(void)Packet*pkptr;doubleete_delay;FIN(rcv();pkptr=op_pk_get(RCV_IN_STRM);ete_delay=op_

36、sim_time()-op_pk_creation_time_get(pkptr);op_stat_write(ete_gsh,ete_delay);op_pk_destroy(pkptr);FOUT;第7行代碼獲取包指針(如前所述)。第二行代碼通過將當(dāng)前仿真時間減去包的創(chuàng)建時間得到包的端對端延時。第9行代碼將計算的延時寫入矢量結(jié)果文件中,第10行代碼最后銷毀包。(5)從File菜單中選擇Save關(guān)閉函數(shù)編輯器。還需要激活“仿真開始”中斷:(1)在Interfaces菜單中選擇ProcessInterfaces,從ProcessInterfaces對話框中, 將begsimintrpt屬性變改

37、為enabledo(2)在comment文本框中加入進(jìn)程描述。單擊OK關(guān)閉對話框。1.8創(chuàng)建網(wǎng)絡(luò)模型現(xiàn)在你已經(jīng)建好了底層的節(jié)點、進(jìn)程和鏈路模型,依據(jù)層次化建模的思想,現(xiàn)在可以構(gòu)建網(wǎng)絡(luò)模型了?;叵胍幌?,我們開始的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)包括一個中心交換(hub)節(jié)點和四個周邊節(jié)點。從OPNETModeler主窗口中的File菜單中選擇New.,從下拉列表中選擇Project,然后單擊OK。ProjectName命名為_pksw_net,將Scenario命名為baseline,單擊OK按鈕。(3)這時出現(xiàn)網(wǎng)絡(luò)建立向?qū)В瑔螕鬛uito將自己指定網(wǎng)絡(luò)規(guī)格,這時需要從一個對象模板中選擇。首先需要創(chuàng)建一個對象模板,

38、它包含你需要用到的模塊。(1)單擊打開對象模板工具按鈕。(2)在彈出的對話框中單擊配置模板按鈕(ConfigurePalette.)(3)在ConfigurePalette對話框中,單擊Clear按鈕,然后單擊NodeModels按鈕。(4)找到_pksw_hub和_pksw_node節(jié)點模型并單擊右邊的Status欄使其變?yōu)閕ncluded。然后單擊OK。(5)在ConfigurePalette對話框中,單擊LinkModels按鈕。(6)找到_pksw_link并包括include該鏈路模型。單擊OK。(7)在ConfigurePalette對話框中,單擊OK按鈕,將模板命名為_pksw_

39、palette,如圖1-26所示。subnetsubnet(noblle)subnet(satellLte)pksw_hubrefpksv_node_refpksv_Link_ref現(xiàn)在準(zhǔn)備構(gòu)建網(wǎng)絡(luò)了。(1)在項目編輯窗口中放置一個subnet模型并命名為pkswl。(2)雙擊這個子網(wǎng)模塊進(jìn)入它的內(nèi)部。(3)放置四個周邊節(jié)點對象_pksw_node。(4)放置一個中心節(jié)點對象_pksw_hub,并將該節(jié)點命名為hub。(5)單擊模板中的鏈路對象_pksw_link,(1)單擊驗證連接工具按鈕。(2)選中Verifylinks,單擊OK按鈕,如圖1-28所示。(3)如果某個鏈路上出現(xiàn)紅色的叉,如

40、圖1-29所示,則鏈路不通。ITCheckLinks( (*VerifylinksrChocexranscetversforselectedlinks匚二郎Cmsl|配心圖1-28驗證連接對話框圖1-29鏈路不通的情形在驗證連接對t框中單擊Choosetransceiversforselectedlinks,這時紅色的叉消失,但并不代表問題已經(jīng)解決,只不過把連通失敗鏈路的連接屬性置為空,如圖1-30所示。收發(fā)信機(jī)和鏈路屬性(包格式、數(shù)據(jù)率等)必須和鏈路的相應(yīng)屬性匹配才能夠使鏈路連通。1.9收集統(tǒng)計量并分析結(jié)果已經(jīng)建好了所有模型,現(xiàn)在可以開始仿真網(wǎng)絡(luò)行為。對于這個例子,為了觀察不同包的產(chǎn)生速率對

41、網(wǎng)絡(luò)性能的影響,需要在仿真編輯器中為相應(yīng)的仿真屬性配置多個值,這時一次會運行一系列仿真,每個仿真結(jié)果對應(yīng)屬性的一個取值。選擇要收集的結(jié)果:(1)在工程窗口的空白處(任意位置)單擊鼠標(biāo)右鍵,從彈出的菜單中選擇ChooseIndividualDESStatistics。圖1-32選擇鏈路結(jié)果統(tǒng)計量(5)保存項目文件。(2)打開所示。GlobalStatistics列表,選中ETEDelay,單擊OK關(guān)閉對話框,如圖1-31ChooseResultsETEDelayy口NodeStatisticsI1-LinkStatistics圖1-31選擇全局結(jié)果統(tǒng)計量這是在周邊節(jié)點中的處理模塊定義過的全局統(tǒng)計

42、探針。(3)在node_0與hub間的鏈路上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇ChooseIndividualDESStatistics。(4)打開point-to-point列表,選中上行和下行鏈路利用率,如圖1-32所示。單擊OK關(guān)閉對話框。ttJchoo&eResUtslow-levelpoint-1o-poini自point-to-point一.queuingdelay-r-Jqueuingdelay一-Mthroughput(bits/sec)一throughput(bits/sec)一throughput(pakels/sec)throughput(packets/sec)一

43、:utilization一1.10配置仿真對于這個例子,包的大小和收發(fā)機(jī)的速率都是恒定的,因此期望端對端延時也應(yīng)該固定不變。然而,如果包的產(chǎn)生速率足夠快,就會導(dǎo)致部分包在發(fā)信機(jī)隊列中積壓,這時包的端對端延時加大。如果包的產(chǎn)生速率不定,有可能造成業(yè)務(wù)突發(fā),因此端對端延時也會受影響。為了模擬這些行為,需要配置sourceinterarrivaltime仿真屬性,將給它指定兩個值。(1)從Simulation菜單中選擇ConfigureSimulation(Advanced)這時仿真編輯器打開。(2)在仿真設(shè)置上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributeso回想前面我們已經(jīng)將業(yè)務(wù)生成

44、模塊的interarrivaltime屬性提升為仿真屬性了,現(xiàn)在可以為它指定兩個不同的值(每個值運行一次仿真)。下面將配置當(dāng)包產(chǎn)生間隔為“4”的仿真:(1)將仿真設(shè)置文件命名為_pksw_sim1。(2)將隨機(jī)種子Seed設(shè)置為21,仿真時間設(shè)為1000seconds。ddaa2-Bulleted_2edf52d9-b0b6-4ad6-8a07-74a60ab47d99-Numbe 給sourceinterarrivaltime屬性賦值:單擊Add按鈕,然后選擇未引用的仿真屬性,單擊OK按鈕,如圖1-33所示。-*-|AddAttribute:scenarin圖1-33增加未引用的仿真屬性在仿真設(shè)置對t框中單擊Value欄,并從下拉列表中選擇4,如圖1-34所示(下拉列表的效果是因為前面給屬性指定了預(yù)定值)。|VolnopkzwL.SOUTC&Litterarr:14圖1-34設(shè)置仿真屬性的取值(4)將矢量結(jié)果文件Wctorfile命名為_pksw_sim1。(5)單擊OK

溫馨提示

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

最新文檔

評論

0/150

提交評論