




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、創(chuàng)建一個(gè)包交換網(wǎng)絡(luò)1概述該例程將仿真一個(gè)簡(jiǎn)單的包交換網(wǎng)絡(luò)。它包括2個(gè)周邊節(jié)點(diǎn)和1個(gè)集線器。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1-1構(gòu)建該網(wǎng)絡(luò)模型的同時(shí),我們還將接觸到一些新的核心函數(shù),學(xué)會(huì)如何使用包和鏈路編輯器,以及如何自定義統(tǒng)計(jì)結(jié)果。最后通過(guò)觀察網(wǎng)絡(luò)的包交換行為,我們將更加熟悉節(jié)點(diǎn)和進(jìn)程模型及其如何在網(wǎng)絡(luò)模型中運(yùn)作。實(shí)驗(yàn)完畢,將得到業(yè)務(wù)的端對(duì)端延時(shí)結(jié)果,進(jìn)而評(píng)估網(wǎng)絡(luò)的性能。2開(kāi)始建立在開(kāi)始構(gòu)建該網(wǎng)絡(luò)之前,我們先熟悉它的物理通信機(jī)制和各個(gè)節(jié)點(diǎn)的功能:。網(wǎng)絡(luò)的物理通信機(jī)制一一如圖1-2所示,每個(gè)節(jié)點(diǎn)至少包含一對(duì)點(diǎn)對(duì)點(diǎn)收發(fā)機(jī),并且通過(guò)一條有線雙工鏈路和另一對(duì)點(diǎn)對(duì)點(diǎn)收發(fā)機(jī)構(gòu)成一個(gè)收發(fā)機(jī)組。每個(gè)這樣的收發(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)包含兩種類(lèi)型節(jié)點(diǎn)模型,它們分別是周邊節(jié)點(diǎn)和中心交換節(jié)點(diǎn)。本例程的目的是仿真一個(gè)周邊節(jié)點(diǎn)發(fā)出的業(yè)務(wù)能夠通過(guò)中心交換節(jié)點(diǎn)路由至另一個(gè)目的周邊節(jié)點(diǎn)。從中心交換節(jié)點(diǎn)中看,我們假設(shè),包是以隨機(jī)的方式來(lái)自四個(gè)周邊節(jié)點(diǎn),每個(gè)包包含目的地址,目的地址可以用一個(gè)整數(shù)來(lái)表示不同的目的周邊節(jié)點(diǎn),中心節(jié)點(diǎn)接收到包后通過(guò)對(duì)目的地址的解析最后選擇一個(gè)合適的發(fā)信機(jī)將包送往目的地。中心交換節(jié)點(diǎn)如何實(shí)現(xiàn)尋址和包交換一一每個(gè)有向包流(以某個(gè)進(jìn)程模型為參考,某個(gè)包流或者進(jìn)入該進(jìn)程或者離開(kāi)該進(jìn)程,因此稱(chēng)之為有向包流)有一個(gè)惟一的索引號(hào)。這個(gè)索引號(hào)總是和
3、某個(gè)收信機(jī)(對(duì)應(yīng)進(jìn)入包流)或者某個(gè)發(fā)信機(jī)(對(duì)應(yīng)離開(kāi)包流)惟一對(duì)應(yīng), 而收信機(jī)和發(fā)信機(jī)又和某個(gè)周邊節(jié)點(diǎn)惟一對(duì)應(yīng), 因此可以直接用流索引號(hào)作為交換包的依據(jù)。當(dāng)然為了增強(qiáng)網(wǎng)絡(luò)的穩(wěn)健性,我們也可以建立一個(gè)目的地址和流索引(可以看作是物理地址)的映射表。為了簡(jiǎn)單起見(jiàn),采用前一種方法實(shí)現(xiàn)尋址和包交換,如圖所示。周邊節(jié)點(diǎn)的功能一一作為網(wǎng)絡(luò)的業(yè)務(wù)源,周邊節(jié)點(diǎn)產(chǎn)生包(用標(biāo)準(zhǔn)的業(yè)務(wù)生成模塊實(shí)現(xiàn)),然后為每個(gè)包分配一個(gè)目的地址并且通過(guò)點(diǎn)對(duì)點(diǎn)發(fā)信機(jī)傳輸出去(自定義模塊實(shí)現(xiàn))同時(shí)作為網(wǎng)絡(luò)的業(yè)務(wù)終端,周邊節(jié)點(diǎn)接收包并且統(tǒng)計(jì)其端對(duì)端延時(shí)(在同上的自定義模塊中實(shí)現(xiàn)),如圖6-4所示。圖1-4周邊節(jié)點(diǎn)結(jié)構(gòu)OPNETModele
4、r的精髓之一為層次化建模的思想,在構(gòu)建本網(wǎng)絡(luò)中,采用如下的層次化的步驟:定義包格式一定義鏈路模型一創(chuàng)建中心交換節(jié)點(diǎn)模型一創(chuàng)建周邊節(jié)點(diǎn)模型一建立網(wǎng)絡(luò)模型OPNET的包格式編輯器可以創(chuàng)建包含任意數(shù)量子域的數(shù)據(jù)包,包的大小由兩部分組成:(1)所有子域大小的疊加。(2)校驗(yàn)值(bulksize)。3創(chuàng)建新的包格式要?jiǎng)?chuàng)建一個(gè)新的包模型:6-3圖1-3中心交換節(jié)點(diǎn)結(jié)構(gòu)Kmt(1)從File菜單中選擇New,然后從列表中選擇PacketFormat,單擊OK按鈕。這時(shí)打開(kāi)包格式編輯器。(2)單擊CreateNewField工具按鈕,然后將光標(biāo)移到編輯窗口中,單擊鼠標(biāo)左鍵,接著單擊右鍵。這時(shí)一個(gè)新的包域出現(xiàn)在
5、編輯窗口中?,F(xiàn)在我們來(lái)設(shè)置包域的屬性:(3)在包域上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributeo(4)從彈出的屬性設(shè)置對(duì)話框中,按圖1-5設(shè)置屬性值,然后單擊OK按鈕。圖1-5包域的屬性這時(shí)定義好的包域名稱(chēng)和大小會(huì)在編輯窗口中顯示,如圖1-6所示。圖1-6定義好的包域(5)從File菜單中選擇Save,將包格式命名為_(kāi)pksw_format。initials為文件名的前綴,可以任意取一個(gè)合適的前綴名。(6)關(guān)閉包格式編輯器。4創(chuàng)建新的鏈路模型使用鏈路模型編輯器創(chuàng)建自定義鏈路。要?jiǎng)?chuàng)建連接中心和周邊節(jié)點(diǎn)的雙工鏈路模型,并且能支持已定義的包:(1)從File菜單中選擇New,然后從列
6、表中選擇LinkModel,單擊OK按鈕。這時(shí)打開(kāi)鏈路模型編輯器,如圖1-7所示。圖1-7鏈路模型編輯器接下來(lái)設(shè)置支持的包格式:(2)找到鏈路類(lèi)型支持屬性框,如圖6-8所示除了ptdup外的鏈路類(lèi)型對(duì)應(yīng)的Supported屬性設(shè)置為no,表明該鏈路只支持點(diǎn)對(duì)點(diǎn)雙工連接。LinkTypes:LinkTyr電Pslitptsinpt_lh*5dup_p七bdwTLQbuz_lkbu工tapHObus_t即(3)在packetformats屬性右邊又中應(yīng)的InitialValue欄中單擊鼠標(biāo)左鍵。這時(shí)彈出選擇包格式支持對(duì)話框。(4)單擊SupportsAllPacketFormats和Support
7、sUnformattedPackets”復(fù)選框,關(guān)掉所有默認(rèn)支持的格式,然后找到_pksw_format包格式,將它屬性改為supported。(5)單擊OK按鈕關(guān)閉此對(duì)話框。接下來(lái)需要定義鏈路模型的其他屬性:(6)設(shè)置datarate屬性值為9600。(7)設(shè)置eccmodel(錯(cuò)誤糾錯(cuò)模式)屬性值為ecc_zero_err(取消鏈路的糾錯(cuò)功能)(8)設(shè)置errormodel(鏈路干擾模式)屬性值為error_zero_err(鏈路無(wú)干擾)。(9)設(shè)置prodelmodel(傳播延時(shí)計(jì)算模式)屬性值為dpt_prodel(計(jì)算點(diǎn)對(duì)點(diǎn)傳播延時(shí))。(10)設(shè)置txdelmodel(傳輸延時(shí)計(jì)算模
8、式)屬性值為dpt_txdel(計(jì)算點(diǎn)對(duì)點(diǎn)傳輸延時(shí))。如果需要,還可以增加對(duì)該鏈路模型的描述。設(shè)置完屬性后,我們還需要增加link_delay外部函數(shù)。注意:這一步只針對(duì)OPNET9.0及其更高的版本,如果漏掉這一步編譯dpt_prodel時(shí)會(huì)因?yàn)檎也坏絣ink_delay函數(shù)而出現(xiàn)unresolvedexternalerror錯(cuò)誤。在OPNET8.0系列版本中由于默認(rèn)dpt_prodel管道程序沒(méi)有使用link_delay函數(shù),因此不存在這個(gè)問(wèn)題。(11)從File菜單中選擇DeclareExternalFiles,。這時(shí)出現(xiàn)申明外部函數(shù)文件對(duì)話框。(12)找到link_delay并單擊其左
9、邊的復(fù)選框,這時(shí)出現(xiàn)綠色的勾。(13)單擊OK按鈕關(guān)閉對(duì)話框。最后命名鏈路模型:(14)File菜單中選擇Save,將鏈路模型命名為_(kāi)pksw_link,然后單擊Save。(15)關(guān)閉鏈路模型編輯器。1.5創(chuàng)建中心交換節(jié)點(diǎn)模型創(chuàng)建節(jié)點(diǎn)模型需要定義節(jié)點(diǎn)模型和定義進(jìn)程模型兩個(gè)步驟。我們從定義節(jié)點(diǎn)模型開(kāi)始,中心交換節(jié)點(diǎn)包含:四對(duì)發(fā)信機(jī)和收信機(jī)(每對(duì)收發(fā)信機(jī)對(duì)應(yīng)一個(gè)周邊節(jié)點(diǎn)),一個(gè)中心交換處理進(jìn)程(用來(lái)按地址轉(zhuǎn)交包)。要?jiǎng)?chuàng)建節(jié)點(diǎn)模型:(1)從File菜單中選擇New,然后從列表中選擇NodeModel,單擊OK按鈕。這時(shí)打開(kāi)節(jié)點(diǎn)模型編輯器。(2)在編輯窗口中放置一個(gè)進(jìn)程模塊,四個(gè)點(diǎn)對(duì)點(diǎn)發(fā)信機(jī),和四個(gè)點(diǎn)
10、對(duì)點(diǎn)收信機(jī)。(3)如圖6-9所示給每個(gè)對(duì)象命名,并用包流將每個(gè)收信機(jī)和發(fā)信機(jī)和hub相連。圖1-9中心交換節(jié)點(diǎn)模型接下來(lái)查看包流的連接情況:(4)在hub進(jìn)程模塊上單擊右鍵,從彈出的菜單中選擇ShowConnectivity。這時(shí)出現(xiàn)一個(gè)包流指向列表,描述包流與hub連接情況(格式為:hub輸出流索引號(hào)一發(fā)信機(jī);收信機(jī)一hub輸入流索引號(hào)),如圖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)閉該對(duì)話框。接下來(lái)你需要定義收發(fā)機(jī)模型屬性:(6)按住shift鍵,依次以鼠標(biāo)左鍵單擊所有的收信機(jī)和發(fā)信機(jī)。注意不要選中包流。(7)在其中一個(gè)收信機(jī)或收發(fā)信機(jī)模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes。(8)單擊channel屬性右邊的value欄,在彈出的信道屬性表中將datarate設(shè)置為9600。(9)單擊packetformats欄,在彈出的對(duì)t框中單擊“SupportsAllPacketFormats”和aSupport
12、sUnformattedPackets”復(fù)選框,關(guān)掉所有默認(rèn)支持的格式,然后找到_pksw_format包格式,將它屬性改為supportedo單擊OK關(guān)閉對(duì)話框。(10)確定數(shù)據(jù)率和支持的包格式正確設(shè)置,如圖1-11所示,然后單擊OK關(guān)閉對(duì)話框。圖1-11有線收發(fā)信機(jī)的屬性框(11)需要將以上的設(shè)置改變對(duì)所有選中的對(duì)象起作用,單擊Applychangestoselectedobjects復(fù)選框,然后單擊OK按鈕。接下來(lái)需要定義節(jié)點(diǎn)模型的界面屬性:(12)從Interfaces菜單選擇NodeInterfaceso出現(xiàn)節(jié)點(diǎn)界面對(duì)話框。(13)找到節(jié)點(diǎn)類(lèi)型支持屬性表框,如圖1-12所示除了fix
13、ed外的節(jié)點(diǎn)類(lèi)型對(duì)應(yīng)的Supported屬性設(shè)置為no,表明該節(jié)點(diǎn)只能作為固定節(jié)點(diǎn)。HodsTypeSupporteJ.HefaviltIconfixadyesmobilenosatelLit圖1-12節(jié)點(diǎn)類(lèi)型支持屬性表框如果需要,還可以在Comments文本欄中加上對(duì)該節(jié)點(diǎn)的描述?,F(xiàn)在節(jié)點(diǎn)模型就建立完了,將節(jié)點(diǎn)模型命名為_(kāi)pksw_hub并保存,但是不要關(guān)閉節(jié)點(diǎn)模型編輯器,接下來(lái)我們來(lái)創(chuàng)建hub進(jìn)程模型。1.6創(chuàng)建hub進(jìn)程模型hub進(jìn)程模塊將接收到的包按照目的地址轉(zhuǎn)交給正確的發(fā)信機(jī),然后通過(guò)發(fā)信機(jī)將包發(fā)往目的節(jié)點(diǎn)。在節(jié)點(diǎn)模型中,hub進(jìn)程模塊通過(guò)包流與發(fā)信機(jī)和收信機(jī)相連。因?yàn)槊總€(gè)包的到達(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按鈕。這時(shí)打開(kāi)進(jìn)程模型編輯器。(2)單擊創(chuàng)建狀態(tài)按鈕,然后將光標(biāo)移到編輯窗口中,單擊鼠標(biāo)左鍵,放置一個(gè)狀態(tài),然后單擊鼠標(biāo)右鍵,命名該狀態(tài)為idle。當(dāng)包被收信機(jī)接收,即給進(jìn)程觸發(fā)一個(gè)流中斷,因此狀態(tài)必須能夠判斷出這個(gè)條件并做出正確的狀態(tài)轉(zhuǎn)移。接著我們來(lái)建立狀態(tài)轉(zhuǎn)移:(3)單擊創(chuàng)建狀態(tài)轉(zhuǎn)移按鈕,單擊idle狀態(tài),創(chuàng)建一個(gè)回到該狀態(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)移屬性對(duì)話框。接下來(lái)你需要定義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)程接收的中斷類(lèi)型是否是流中斷(在OPNET中以常量OPC_INTRPT_STRM表示),如
16、果進(jìn)程異常地接收到其他類(lèi)型的中斷則狀態(tài)找不到轉(zhuǎn)移條件從而導(dǎo)致出錯(cuò),為以防萬(wàn)一還需要為idle狀態(tài)創(chuàng)建一個(gè)指向自身default(其他條件不滿足則該條件滿足)的轉(zhuǎn)移線:(9)為idle狀態(tài)創(chuàng)建一個(gè)指向自身的轉(zhuǎn)移線。(10)在轉(zhuǎn)移線上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes,然后將轉(zhuǎn)移的condition屬性改為default,右擊鼠標(biāo)關(guān)閉對(duì)話框,如圖1-14所示。(ciefaLjlt)l一f(PK_AFIRVL/fouite_pk(圖1-14hub進(jìn)程模型接下來(lái)你需要編寫(xiě)條件執(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()之后。第一句用來(lái)從合適的輸入流(輸入流索引通過(guò)核心函數(shù)op_intrpt_strm得到)中取得包(op_pk_get)。第二句代碼析取包中的目的域,它含有包的目的地址。前面提過(guò),這里的目的地址實(shí)際上是輸出流索引
18、,它對(duì)應(yīng)發(fā)往目的節(jié)點(diǎn)的收信機(jī),而最后一句代碼將包發(fā)送給相應(yīng)的收信機(jī)。(13)從File菜單中選擇Save。然后,需要更改進(jìn)程的屬性:(14)從Interfaces菜單中選擇ProcessInterfaces。(15)把begsimintrpt屬性的初識(shí)值改為enabled(16)如果需要,在Comments文本欄增加模塊的說(shuō)明。(17)單擊OK按鈕,保存更改。接下來(lái),你需要編譯模塊:(18)單擊編譯進(jìn)程模型按鈕。(19)從File菜單中選擇Close,關(guān)閉進(jìn)程模型編輯器。最后,需要將編譯好的進(jìn)程模型指定給節(jié)點(diǎn)模型:(20)從Windows下拉菜單中選擇NodeEditors,然后找到_pksw
19、_hub。這時(shí)節(jié)點(diǎn)模型編輯器被激活。(21)在hub進(jìn)程上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes,將processmodel的屬性值改為_(kāi)pksw_hub_proc。(22)單擊OK按鈕關(guān)閉屬性對(duì)話框。(23)保存節(jié)點(diǎn)模型。1.7創(chuàng)建周邊節(jié)點(diǎn)模型當(dāng)周邊節(jié)點(diǎn)生成一個(gè)包時(shí),它必須給這個(gè)包指定一個(gè)目的地址,然后將它發(fā)往中心節(jié)點(diǎn)。如果周邊節(jié)點(diǎn)接收到一個(gè)包時(shí),它必須計(jì)算該包的端對(duì)端延時(shí)。因此周邊節(jié)點(diǎn)必須包括一個(gè)業(yè)務(wù)生成模塊、一個(gè)進(jìn)程模塊和一對(duì)點(diǎn)對(duì)點(diǎn)收發(fā)信機(jī)來(lái)完成這些任務(wù)。要?jiǎng)?chuàng)建周邊節(jié)點(diǎn)模型:(1)在剛剛保存過(guò)hub節(jié)點(diǎn)模型編輯器中的Edit的菜單下選擇ClearModel。這時(shí)編輯
20、器工作空間被清空。(2)按圖1-15所示放置并命名模塊。圖1-15周邊節(jié)點(diǎn)模型包含的模塊(3)在src模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes,將processmodel屬性值改為simple_source,然后單擊OK關(guān)閉屬性對(duì)話框。(4)按下歹U方向建立包流:rcvfproc;procfxmt;src-proc。%o在proc進(jìn)程模塊上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇ShowConnectivity,查看包流分配表,如圖1-16所示。圖1-16proc進(jìn)程模塊的包流連接關(guān)系4)設(shè)置一遍。為了運(yùn)行參數(shù)化仿真,需要將業(yè)務(wù)的PacketInterarrivalTime屬
21、性提升。當(dāng)提升了屬性后,就可以在仿真運(yùn)行時(shí)很容易地改變了。(5)在src模塊上單擊鼠標(biāo)右鍵,從彈出地菜單中選擇EditAttributeo(6)在屬性表中,選中左邊一欄的PacketInterarrivalTime(這時(shí)該屬性變成藍(lán)色),然后單擊Promote按鈕。這樣就提升了屬性,可以在仿真屬性中設(shè)置它的值。同時(shí)希望業(yè)務(wù)生成模塊能夠產(chǎn)生前面定義的包格式:(7)單擊PacketFormat屬性對(duì)應(yīng)的右邊Value欄,將它更改為_(kāi)pksw_format。(8)參考圖1-17,確定你的設(shè)置正確,然后單擊OK關(guān)閉屬性對(duì)話框。圖1-17src進(jìn)程模塊屬性接下來(lái),需要改變收發(fā)信機(jī)的信道速率和支持的包格式
22、,以匹配指定的鏈路模型。我們采取和前面類(lèi)似的操作。接下來(lái)你需要定義收發(fā)機(jī)模型屬性:(9)住shift鍵,依次以鼠標(biāo)左鍵單擊收信機(jī)和發(fā)信機(jī)。注意不要選中包流。(10)在其中一個(gè)收信機(jī)或收發(fā)信機(jī)模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes。(11)單擊channel屬性右邊的value欄,在彈出的信道屬性表中將datarate設(shè)置為9600.(12)單擊packetformats欄,在彈出的對(duì)t框中單擊“SupportsAllPacketFormats”和SupportsUnformattedPackets”復(fù)選框, 關(guān)掉所有默認(rèn)支持的格式, 然后找到_pksw_format
23、包格式,將它屬性改為supportedo單擊OK關(guān)閉對(duì)話框。(13)確定數(shù)據(jù)率和支持的包格式正確設(shè)置,然后單擊OK關(guān)閉對(duì)話框。(14)需要將以上的設(shè)置改變對(duì)所有選中的對(duì)象起作用,單擊Applychangestoselectedobjects復(fù)選框,然后單擊OK按鈕。接下來(lái)你需要定義節(jié)點(diǎn)模型的界面屬性:%。如果每個(gè)設(shè)置都正確,需要?jiǎng)h掉所有的包流重新按照步驟(15)Interfaces菜單中選擇NodeInterfaces出現(xiàn)節(jié)點(diǎn)界面對(duì)話框。(16)找到支持的節(jié)點(diǎn)類(lèi)型屬性表,除了fixed外的節(jié)點(diǎn)類(lèi)型對(duì)應(yīng)的Supported屬性設(shè)置為no,表明該節(jié)點(diǎn)只能作為固定節(jié)點(diǎn)。屬性重命名可以簡(jiǎn)化復(fù)雜的屬性名
24、稱(chēng),或者擴(kuò)展過(guò)于簡(jiǎn)化的名稱(chēng)。當(dāng)某個(gè)屬性是由底層提升得來(lái)的,它的名稱(chēng)就會(huì)變得很冗長(zhǎng)而且沒(méi)有意義,這時(shí)可能需要把它的名稱(chēng)簡(jiǎn)化。本例程將為包到達(dá)間隔屬性重新命名。(17)NodeInterfaces對(duì)話框中選擇Rename/Merge,按鈕。(18)在UnmodifiedAttributes欄中找到要更名的屬性src.PacketInterarrivalTime,然后單擊按鈕(19)在PromotionName文本欄中中輸入新的名字sourceinterarrivaltime,如圖1-18所示。圖1-18原屬性名與重命名后的屬性名(20)單擊OK關(guān)閉重命名對(duì)話框。你可以指定一系列預(yù)定值給某個(gè)屬性,這
25、樣屬性的設(shè)置可以通過(guò)界面來(lái)選擇,這將給用戶提供方便。為屬性指定預(yù)定值有下面幾個(gè)好處:%。限制屬性取值的范圍。%。用戶可以直觀地根據(jù)預(yù)定值的名稱(chēng)來(lái)選擇相應(yīng)的參數(shù)。%。用戶不需要輸入具體值,從下拉列表中選擇即可。接下來(lái)為sourceinterarrivaltime屬性指定預(yù)定值:(21)在NodeInterfaces對(duì)話框中,選擇新命名的sourceinterarrivaltime屬性,這時(shí)左邊的EditProperties按鈕被激活,單擊它。這時(shí)出現(xiàn)Attribute:sourceinterarrivaltime對(duì)話框。(22)在SymbolMap表中,將所有Symbol對(duì)應(yīng)的Status變?yōu)閟
26、uppress。(23)如圖1-19所示增加4個(gè)符號(hào)與值的映射項(xiàng)。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符號(hào)與屬性真實(shí)值的映射表隱藏屬性可以避免用戶看到不需要設(shè)置參數(shù)的屬性項(xiàng),從而能夠簡(jiǎn)化用戶界ModiEiedAltrihatesPromotionHam電src.PacketInterarrivalTi桁府sourceinterirnvaltime面。這個(gè)操作不會(huì)影響仿真結(jié)果。周邊節(jié)點(diǎn)的許多屬性與仿真無(wú)關(guān)。為了避免混淆,需要隱藏這些屬性:(24)如圖1-20所示除了sourceinterarrivaltime外的所有屬性的Status改為hidden。圖1-20屬性狀態(tài)表(25)單擊OK按鈕關(guān)閉節(jié)點(diǎn)界面對(duì)話框。(26)從F
28、ile菜單中選擇SaveAs,將節(jié)點(diǎn)模型命名為_(kāi)pksw_node,然后關(guān)閉節(jié)點(diǎn)模型編輯器。接下來(lái),需要?jiǎng)?chuàng)建周邊節(jié)點(diǎn)的處理模塊:周邊節(jié)點(diǎn)的處理模塊主要有兩個(gè)功能:(1)為包分配目的地址并且發(fā)送出去。(2)計(jì)算包的端對(duì)端延時(shí)。為了完成以上的任務(wù),進(jìn)程模型需要設(shè)置兩個(gè)狀態(tài):一個(gè)初試化initial狀態(tài),一個(gè)idle狀態(tài)。創(chuàng)建進(jìn)程模型:(1)從File菜單中選擇New,從彈出的菜單中選擇ProcessModel,單擊OK按鈕。(2)如圖1-22所示在編輯窗口中放置兩個(gè)狀態(tài):圖1-21進(jìn)程模型包含兩個(gè)狀態(tài)(3)改變狀態(tài)的屬性:%o在第一個(gè)狀態(tài)上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇Setname將其改名為i
29、nit,并且選擇MakeStateUnforced使其變?yōu)楣?1制的(forced),這時(shí)狀態(tài)顏色變?yōu)榫G色。%。將第二個(gè)狀態(tài)更名為idle。(保持它為紅色的非強(qiáng)制unforced狀態(tài)),如圖1-22所示。圖1-22狀態(tài)命名后的進(jìn)程模型在init狀態(tài)中,進(jìn)程模型將加載一個(gè)從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)生目的地址,并將其分配給來(lái)自業(yè)務(wù)生成模塊的包,然后再將它發(fā)送出去。rcv()轉(zhuǎn)移執(zhí)行函數(shù)作用是在接收到包是計(jì)算其端對(duì)端延時(shí),并且將結(jié)果寫(xiě)入全局統(tǒng)計(jì)量。(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對(duì)應(yīng)數(shù)據(jù)包的輸入流索弓I號(hào),而XMT_OUT_STRM為輸出流索引號(hào),輸入輸出都是相對(duì)當(dāng)前進(jìn)程模塊(proc)而言,它們對(duì)應(yīng)與proc模塊相連的某條包流,連接關(guān)系一旦確定,它們的索引號(hào)是常數(shù)。之所以要放在頭文件中定義這些端口號(hào),是為了修改方便而且避免混淆。(4)從File菜單中選擇Save保存文件。接下來(lái),需要定義狀態(tài)變量和臨時(shí)變量。(1)單擊編輯狀態(tài)變量工具按鈕。(2)在狀態(tài)變量對(duì)話框中輸入以下內(nèi)容,如圖1-24所示。Type|NameDistribution*addressdistStathandle|ete_gsh圖
32、1-24設(shè)置狀態(tài)變量(3)單擊OK關(guān)閉對(duì)話框。下一步,需要?jiǎng)?chuàng)建一個(gè)全局統(tǒng)計(jì)探針收集包的端對(duì)端延時(shí)結(jié)果。(1)在進(jìn)程模型的Interfaces菜單中選擇DeclareGlobalStatistics(申明全局統(tǒng)計(jì)量)。(2)將StatName屬性命名為ETEDelay。(3)在探針描述文本欄中輸入:CalculatesETEdelaybysubtractingpacketcreationtimefromcurrentsimulationtime.(4)從File菜單中選擇Save保存描述文件。(5)檢查的設(shè)置是否完成。參考如圖1-25所示的對(duì)話框。ModeCDescETEDelaySingleN
33、/ACalculatesETEdelaybysubtr,.圖1-25申明全局統(tǒng)計(jì)量(6)單擊OK關(guān)閉DeclareGlobalStatistics對(duì)話框。接下來(lái),需要為進(jìn)程模型中的每個(gè)狀態(tài)添加入口和出口執(zhí)行代碼。首先為init狀態(tài)添加入口執(zhí)行代碼:(7)雙擊init狀態(tài)的上半部打開(kā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條件滿足時(shí)(即包從業(yè)務(wù)生成模塊到達(dá)proc模塊)才執(zhí)行。該函數(shù)在將包發(fā)送之前要為它分配一個(gè)目的地址。(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;第一行代碼從包流的輸入流索引號(hào)(SRC_IN_STRM)獲取數(shù)據(jù)包。第二行代碼通過(guò)
35、調(diào)用均勻概率分布函數(shù)指針(address_dist,它在init狀態(tài)中定義)而產(chǎn)生一個(gè)隨機(jī)值,將該值設(shè)置為包的dest_address域(請(qǐng)參考前面的包格式定義)。最后一句從包流的輸出流索引號(hào)(XMT_OUT_STRM)將包發(fā)送出去。rcv()轉(zhuǎn)移執(zhí)行函數(shù)當(dāng)RCV_ARRVL條件滿足(即包從收信機(jī)到達(dá)proc模塊)時(shí)執(zhí)行。主要目的是計(jì)算端對(duì)端延時(shí)并寫(xiě)入全局統(tǒng)計(jì)探針。(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行代碼獲取包指針(如前所述)。第二行代碼通過(guò)將當(dāng)前仿真時(shí)間減去包的創(chuàng)建時(shí)間得到包的端對(duì)端延時(shí)。第9行代碼將計(jì)算的延時(shí)寫(xiě)入矢量結(jié)果文件中,第10行代碼最后銷(xiāo)毀包。(5)從File菜單中選擇Save關(guān)閉函數(shù)編輯器。還需要激活“仿真開(kāi)始”中斷:(1)在Interfaces菜單中選擇ProcessInterfaces,從ProcessInterfaces對(duì)話框中, 將begsimintrpt屬性變改
37、為enabledo(2)在comment文本框中加入進(jìn)程描述。單擊OK關(guān)閉對(duì)話框。1.8創(chuàng)建網(wǎng)絡(luò)模型現(xiàn)在你已經(jīng)建好了底層的節(jié)點(diǎn)、進(jìn)程和鏈路模型,依據(jù)層次化建模的思想,現(xiàn)在可以構(gòu)建網(wǎng)絡(luò)模型了。回想一下,我們開(kāi)始的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)包括一個(gè)中心交換(hub)節(jié)點(diǎn)和四個(gè)周邊節(jié)點(diǎn)。從OPNETModeler主窗口中的File菜單中選擇New.,從下拉列表中選擇Project,然后單擊OK。ProjectName命名為_(kāi)pksw_net,將Scenario命名為baseline,單擊OK按鈕。(3)這時(shí)出現(xiàn)網(wǎng)絡(luò)建立向?qū)В瑔螕鬛uito將自己指定網(wǎng)絡(luò)規(guī)格,這時(shí)需要從一個(gè)對(duì)象模板中選擇。首先需要?jiǎng)?chuàng)建一個(gè)對(duì)象模板,
38、它包含你需要用到的模塊。(1)單擊打開(kāi)對(duì)象模板工具按鈕。(2)在彈出的對(duì)話框中單擊配置模板按鈕(ConfigurePalette.)(3)在ConfigurePalette對(duì)話框中,單擊Clear按鈕,然后單擊NodeModels按鈕。(4)找到_pksw_hub和_pksw_node節(jié)點(diǎn)模型并單擊右邊的Status欄使其變?yōu)閕ncluded。然后單擊OK。(5)在ConfigurePalette對(duì)話框中,單擊LinkModels按鈕。(6)找到_pksw_link并包括include該鏈路模型。單擊OK。(7)在ConfigurePalette對(duì)話框中,單擊OK按鈕,將模板命名為_(kāi)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)在項(xiàng)目編輯窗口中放置一個(gè)subnet模型并命名為pkswl。(2)雙擊這個(gè)子網(wǎng)模塊進(jìn)入它的內(nèi)部。(3)放置四個(gè)周邊節(jié)點(diǎn)對(duì)象_pksw_node。(4)放置一個(gè)中心節(jié)點(diǎn)對(duì)象_pksw_hub,并將該節(jié)點(diǎn)命名為hub。(5)單擊模板中的鏈路對(duì)象_pksw_link,(1)單擊驗(yàn)證連接工具按鈕。(2)選中Verifylinks,單擊OK按鈕,如圖1-28所示。(3)如果某個(gè)鏈路上出現(xiàn)紅色的叉,如
40、圖1-29所示,則鏈路不通。ITCheckLinks( (*VerifylinksrChocexranscetversforselectedlinks匚二郎Cmsl|配心圖1-28驗(yàn)證連接對(duì)話框圖1-29鏈路不通的情形在驗(yàn)證連接對(duì)t框中單擊Choosetransceiversforselectedlinks,這時(shí)紅色的叉消失,但并不代表問(wèn)題已經(jīng)解決,只不過(guò)把連通失敗鏈路的連接屬性置為空,如圖1-30所示。收發(fā)信機(jī)和鏈路屬性(包格式、數(shù)據(jù)率等)必須和鏈路的相應(yīng)屬性匹配才能夠使鏈路連通。1.9收集統(tǒng)計(jì)量并分析結(jié)果已經(jīng)建好了所有模型,現(xiàn)在可以開(kāi)始仿真網(wǎng)絡(luò)行為。對(duì)于這個(gè)例子,為了觀察不同包的產(chǎn)生速率對(duì)
41、網(wǎng)絡(luò)性能的影響,需要在仿真編輯器中為相應(yīng)的仿真屬性配置多個(gè)值,這時(shí)一次會(huì)運(yùn)行一系列仿真,每個(gè)仿真結(jié)果對(duì)應(yīng)屬性的一個(gè)取值。選擇要收集的結(jié)果:(1)在工程窗口的空白處(任意位置)單擊鼠標(biāo)右鍵,從彈出的菜單中選擇ChooseIndividualDESStatistics。圖1-32選擇鏈路結(jié)果統(tǒng)計(jì)量(5)保存項(xiàng)目文件。(2)打開(kāi)所示。GlobalStatistics列表,選中ETEDelay,單擊OK關(guān)閉對(duì)話框,如圖1-31ChooseResultsETEDelayy口NodeStatisticsI1-LinkStatistics圖1-31選擇全局結(jié)果統(tǒng)計(jì)量這是在周邊節(jié)點(diǎn)中的處理模塊定義過(guò)的全局統(tǒng)計(jì)
42、探針。(3)在node_0與hub間的鏈路上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇ChooseIndividualDESStatistics。(4)打開(kāi)point-to-point列表,選中上行和下行鏈路利用率,如圖1-32所示。單擊OK關(guān)閉對(duì)話框。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配置仿真對(duì)于這個(gè)例子,包的大小和收發(fā)機(jī)的速率都是恒定的,因此期望端對(duì)端延時(shí)也應(yīng)該固定不變。然而,如果包的產(chǎn)生速率足夠快,就會(huì)導(dǎo)致部分包在發(fā)信機(jī)隊(duì)列中積壓,這時(shí)包的端對(duì)端延時(shí)加大。如果包的產(chǎn)生速率不定,有可能造成業(yè)務(wù)突發(fā),因此端對(duì)端延時(shí)也會(huì)受影響。為了模擬這些行為,需要配置sourceinterarrivaltime仿真屬性,將給它指定兩個(gè)值。(1)從Simulation菜單中選擇ConfigureSimulation(Advanced)這時(shí)仿真編輯器打開(kāi)。(2)在仿真設(shè)置上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributeso回想前面我們已經(jīng)將業(yè)務(wù)生成
44、模塊的interarrivaltime屬性提升為仿真屬性了,現(xiàn)在可以為它指定兩個(gè)不同的值(每個(gè)值運(yùn)行一次仿真)。下面將配置當(dāng)包產(chǎn)生間隔為“4”的仿真:(1)將仿真設(shè)置文件命名為_(kāi)pksw_sim1。(2)將隨機(jī)種子Seed設(shè)置為21,仿真時(shí)間設(shè)為1000seconds。ddaa2-Bulleted_2edf52d9-b0b6-4ad6-8a07-74a60ab47d99-Numbe 給sourceinterarrivaltime屬性賦值:?jiǎn)螕鬉dd按鈕,然后選擇未引用的仿真屬性,單擊OK按鈕,如圖1-33所示。-*-|AddAttribute:scenarin圖1-33增加未引用的仿真屬性在仿真設(shè)置對(duì)t框中單擊Value欄,并從下拉列表中選擇4,如圖1-34所示(下拉列表的效果是因?yàn)榍懊娼o屬性指定了預(yù)定值)。|VolnopkzwL.SOUTC&Litterarr:14圖1-34設(shè)置仿真屬性的取值(4)將矢量結(jié)果文件Wctorfile命名為_(kāi)pksw_sim1。(5)單擊OK
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年五年級(jí)下冊(cè)數(shù)學(xué)《露在外面的面》(教案)
- 《定風(fēng)波 莫聽(tīng)穿林打葉聲》歷年中考古詩(shī)欣賞試題匯編(截至2022年)
- 2024年作物收獲機(jī)械項(xiàng)目資金籌措計(jì)劃書(shū)代可行性研究報(bào)告
- 2024年歌舞廳娛樂(lè)服務(wù)項(xiàng)目資金需求報(bào)告
- 2025年湖南工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案
- 2024年注射用骨肽投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 深圳高級(jí)中學(xué)(集團(tuán))2025屆高三第三次診斷考數(shù)學(xué)試題+答案
- 2025年鶴壁職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)完美版
- 二零二五年度精裝修公寓轉(zhuǎn)租合同電子版
- 2025年度工傷事故責(zé)任劃分與賠償方案合同
- 溫州市甌海旅游投資集團(tuán)有限公司下屬子公司招聘筆試題庫(kù)2024
- 英文黑衣人電影介紹課件
- 房屋買(mǎi)賣(mài)合同預(yù)交定金協(xié)議
- Altium-Designer-電路設(shè)計(jì)與制作教案
- 小米創(chuàng)業(yè)思考(商業(yè)思考)
- 供應(yīng)商評(píng)估與篩選管理制度
- DB4409-T 44-2023 地理標(biāo)志產(chǎn)品 化橘紅質(zhì)量等級(jí)
- JTG F40-2004 公路瀝青路面施工技術(shù)規(guī)范
- 黃龍溪古鎮(zhèn)文化旅游發(fā)展現(xiàn)狀與對(duì)策研究
- JT-T-1045-2016道路運(yùn)輸企業(yè)車(chē)輛技術(shù)管理規(guī)范
- 2024年事業(yè)單位衛(wèi)生系統(tǒng)(護(hù)理學(xué))招聘考試題庫(kù)與答案
評(píng)論
0/150
提交評(píng)論