版權(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)構(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ù)據(jù)的
2、雙向傳輸。圖1-2網(wǎng)絡(luò)的物理通信拓?fù)浣Y(jié)構(gòu)網(wǎng)絡(luò)功能概述一一拓?fù)浣Y(jié)構(gòu)包含兩種類型節(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)程,因此稱之為有向包流)有一個(gè)惟一的索引號(hào)。這個(gè)索引號(hào)總是和某個(gè)收信
3、機(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)尋址和包交換,如圖6-3所示。周邊節(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-3中心交換節(jié)點(diǎn)結(jié)構(gòu)Kmt圖1-4周邊節(jié)
4、點(diǎn)結(jié)構(gòu)OPNET Modeler的精髓之一為層次化建模的思想,在構(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)值(bulk size)。3創(chuàng)建新的包格式要?jiǎng)?chuàng)建一個(gè)新的包模型:(1)從File菜單中選擇New,然后從列表中選擇Packet Format,單擊OK按鈕。 這時(shí)打開(kāi)包格式編輯器。(2)單擊Create New Field工具按鈕,然后將光標(biāo)移到編輯窗口中,單擊鼠標(biāo)左鍵,接著單擊右鍵。這時(shí)一個(gè)新的包域
5、出現(xiàn)在編輯窗口中。現(xiàn)在我們來(lái)設(shè)置包域的屬性:(3)在包域上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇Edit Attributeo(4)從彈出的屬性設(shè)置對(duì)話框中,按圖1-5設(shè)置屬性值,然后單擊OK按鈕。圖1-5包域的屬性這時(shí)定義好的包域名稱和大小會(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、然后從列表中選擇Link Model,單擊OK按鈕。這時(shí)打開(kāi)鏈路模型編輯器,如圖1-7所示。圖1-7鏈路模型編輯器接下來(lái)設(shè)置支持的包格式:(2)找到鏈路類型支持屬性框,如圖6-8所示除了ptdup外的鏈路類型對(duì)應(yīng)的Supported屬性設(shè)置為no,表明該鏈路只支持點(diǎn)對(duì)點(diǎn)雙工連接。Link Types:Link Tyr*PalitXIQSLFipn t_lhyesdup_pbswnobuz_lkbug t apnobus_t(3)在packet formats屬性右邊對(duì)應(yīng)的Initial Value欄中單擊鼠標(biāo)左鍵。這時(shí)彈出選擇包格式支持對(duì)話框。(4)單擊“Supports All Packet
7、 Formats”和“Supports Unformatted Packets”復(fù)選框,關(guān)掉所有默認(rèn)支持的格式,然后找到_pksw_format包格式,將它屬性改為supported。(5)單擊OK按鈕關(guān)閉此對(duì)話框。接下來(lái)需要定義鏈路模型的其他屬性:(6)設(shè)置data rate屬性值為9600。(7)設(shè)置ecc model(錯(cuò)誤糾錯(cuò)模式)屬性值為ecc_zero_err(取消鏈路的糾錯(cuò)功能)(8)設(shè)置error model(鏈路干擾模式)屬性值為error_zero_err(鏈路無(wú)干擾)。(9)設(shè)置prodel model(傳播延時(shí)計(jì)算模式)屬性值為dpt_prodel(計(jì)算點(diǎn)對(duì)點(diǎn)傳播延 時(shí))
8、。(10)設(shè)置txdel model(傳輸延時(shí)計(jì)算模式)屬性值為dpt_txdel(計(jì)算點(diǎn)對(duì)點(diǎn)傳輸延 時(shí))。如果需要,還可以增加對(duì)該鏈路模型的描述。設(shè)置完屬性后,我們還需要增加link_delay外部函數(shù)。注意:這一步只針對(duì)OPNET 9.0及其更高的版本,如果漏掉這一步編譯dpt_prodel時(shí)會(huì)因?yàn)檎也坏絣ink_delay函數(shù)而出現(xiàn)unresolved external error錯(cuò)誤。 在OPNET 8.0系列版本中由于默認(rèn)dpt_prodel管道程序沒(méi)有使用link_delay函數(shù),因此不存在這個(gè)問(wèn)題。(11)從File菜單中選擇Declare External Files,。這時(shí)出
9、現(xiàn)申明外部函數(shù)文件對(duì)話框。(12)找到link_delay并單擊其左邊的復(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,然后從列表中選擇Node Model,單擊OK按鈕。這 時(shí)打開(kāi)節(jié)點(diǎn)
10、模型編輯器。(2)在編輯窗口中放置一個(gè)進(jìn)程模塊,四個(gè)點(diǎn)對(duì)點(diǎn)發(fā)信機(jī) ,和四個(gè)點(diǎn)對(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)程模塊上單擊右鍵,從彈出的菜單中選擇Show Connectivity。這時(shí)出現(xiàn)一個(gè)包流指向列表,描述包流與hub連接情況(格式為:hub輸出流索引號(hào)發(fā)信機(jī);收信機(jī)hub輸入流索引號(hào)),如圖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)閉該對(duì)話框。接下來(lái)你需要定義收發(fā)機(jī)模型屬性:(6)按住shift鍵,依次以鼠標(biāo)左鍵單擊所有的收信機(jī)和發(fā)信機(jī)。注意不要選中包流。(7)在其中一個(gè)收信機(jī)或收發(fā)信機(jī)模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes。(8)單擊channel屬性右邊的value欄, 在彈出的信道屬性表中將data rate設(shè)置為9600。(9
12、)單擊packet formats欄,在彈出的對(duì)話框中單擊Supports All Packet Formats”和Supports UnformattedPackets”復(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ì)象起作用,單擊Apply changes to selected objects復(fù)選框,然后單擊OK按鈕。接下來(lái)需要定義節(jié)點(diǎn)模型的界面屬性:(12
13、)從Interfaces菜單選擇Node Interfaceso出現(xiàn)節(jié)點(diǎn)界面對(duì)話框。(13)找到節(jié)點(diǎn)類型支持屬性表框,如圖1-12所示除了fixed外的節(jié)點(diǎn)類型對(duì)應(yīng)的Supported屬性設(shè)置為no,表明該節(jié)點(diǎn)只能作為固定節(jié)點(diǎn)。Hods TypeSupporteJ.He favilt Iconfixadyesmobilano34槌LLi t冬冬圖1-12節(jié)點(diǎn)類型支持屬性表框如果需要,還可以在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)程模
14、塊將接收到的包按照目的地址轉(zhuǎn)交給正確的發(fā)信機(jī),機(jī)將包發(fā)往目的節(jié)點(diǎn)。在節(jié)點(diǎn)模型中,hub進(jìn)程模塊通過(guò)包流與發(fā)信機(jī)和收信機(jī)相連。因?yàn)槊總€(gè)包的到達(dá)都觸發(fā)hub進(jìn)程的一次中斷,hub進(jìn)程接收到中斷后將從休眠狀態(tài)(idle非強(qiáng)制狀態(tài))激活執(zhí)行代碼處理包(綠色的強(qiáng)制狀態(tài))(1)從File菜單中選擇這時(shí)打開(kāi)進(jìn)程模型編輯器。(2)單擊創(chuàng)建狀態(tài)按鈕狀態(tài),然后單擊鼠標(biāo)右鍵,當(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)右鍵,從彈出的菜單中選擇E
15、dit Attributes ,然后將轉(zhuǎn)移的condition屬性改為PK_ARRVL ,并且將executive屬性改為route_pk()。如圖1-13所示。圖1 -13 hub進(jìn)程模型(5)單擊OK關(guān)閉轉(zhuǎn)移屬性對(duì)話框。接下來(lái)你需要定義PK_ARRVL條件的宏然后通過(guò)發(fā)信ONew,然后從列表中選擇Process Model,單擊OK按鈕。,然后將光標(biāo)移到編輯窗口中,單擊鼠標(biāo)左鍵,放置一個(gè) 命名該狀態(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進(jìn)程接收的中斷類型是否是流中斷(在OPNET中以常量OPC_INTRPT_STRM表示),如果進(jìn)程異常地接收到其他類型的中斷則狀態(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)右鍵,從彈出的菜單中選擇Edit Attributes ,然后將轉(zhuǎn)移的condition屬性改為default,右擊鼠標(biāo)關(guān)閉對(duì)話框,如圖1-14所示。(ciefaLjlt)l.-|2
17、(PK_AFIRVL/fouite_pk(圖1-14 hub進(jìn)程模型接下來(lái)你需要編寫條件執(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()之后。第一句用來(lái)從合適的輸入流(輸入流索引通過(guò)核心函數(shù)op_intrpt_strm得到)中取得包(op_pk_get)。第二句代碼析取包中的目的 域,它含有包的目的地址。前面提過(guò),這里的目的地址實(shí)際上是輸出流索引,它對(duì)應(yīng)發(fā)往目的節(jié)點(diǎn)的收信機(jī),而最后一句代碼將包發(fā)送給相應(yīng)的收信機(jī)。(13)從File菜單中選擇Save。然后,需要更改進(jìn)程的屬性:(14)從Interfaces菜單中選擇Process Interfaces。(15)把begsim intrpt屬性的初識(shí)值改為enabled(16)如果需要,在Comments文本欄增加模塊的說(shuō)明。(17)單擊OK按鈕,保存更改。接下來(lái),你需
19、要編譯模塊:(18)單擊編譯進(jìn)程模型按鈕。(19)從File菜單中選擇Close,關(guān)閉進(jìn)程模型編輯器。最后,需要將編譯好的進(jìn)程模型指定給節(jié)點(diǎn)模型:(20)從Windows下拉菜單中選擇Node Editors,然后找到_pksw_hub。這時(shí)節(jié)點(diǎn)模型編輯器被激活。(21)在hub進(jìn)程上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes ,將process model的屬性值改為_(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è)
20、包時(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í)編輯器工作空間被清空。(2)按圖1-15所示放置并命名模塊。Esrcprocrnt圖1-15周邊節(jié)點(diǎn)模型包含的模塊(3)在src模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇Edit Attributes ,將process model屬性值改為simple_source,然后單擊OK關(guān)閉屬性對(duì)話框。(4)按下歹U方向建立包流:rcvproc; procxmt; srL pro
21、c。%o在proc進(jìn)程模塊上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇Show Connectivity ,查看 包流分配表,如圖1-16所示。圖1-16 proc進(jìn)程模塊的包流連接關(guān)系4)設(shè)置一遍。為了運(yùn)行參數(shù)化仿真,需要將業(yè)務(wù)的Packet Interarrival Time屬性提升。當(dāng)提升了屬性后,就可以在仿真運(yùn)行時(shí)很容易地改變了。(5)在src模塊上單擊鼠標(biāo)右鍵,從彈出地菜單中選擇Edit Attributeo(6)在屬性表中,選中左邊一欄的PacketInterarrival Time(這時(shí)該屬性變成藍(lán)色),然后單擊Promote按鈕。這樣就提升了屬性,可以在仿真屬性中設(shè)置它的值。同時(shí)希望業(yè)務(wù)
22、生成模塊能夠產(chǎn)生前面定義的包格式:(7)單擊Packet Format屬性對(duì)應(yīng)的右邊Va lue欄,將它更改為_(kāi)pksw_format。(8)參考圖1-17,確定你的設(shè)置正確,然后單擊OK關(guān)閉屬性對(duì)話框。圖1-17 src進(jìn)程模塊屬性接下來(lái),需要改變收發(fā)信機(jī)的信道速率和支持的包格式,以匹配指定的鏈路模型。我 們采取和前面類似的操作。接下來(lái)你需要定義收發(fā)機(jī)模型屬性:(9)住shift鍵,依次以鼠標(biāo)左鍵單擊收信機(jī)和發(fā)信機(jī)。注意不要選中包流。(10)在其中一個(gè)收信機(jī)或收發(fā)信機(jī)模塊上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇EditAttributes。(11)單擊channel屬性右邊的value欄,在彈出的
23、信道屬性表中將data rate設(shè)置為9600.(12)單擊packet formats欄,在彈出的對(duì)話框中單擊Supports All Packet Formats”和aSupports Unformatted Packets”復(fù)選框,關(guān)掉所有默認(rèn)支持的格式,然后找到_pksw_format包格式,將它屬性改為supportedo單擊OK關(guān)閉對(duì)話框。%。如果每個(gè)設(shè)置都正確,需要?jiǎng)h掉所有的包流重新按照步驟(13)確定數(shù)據(jù)率和支持的包格式正確設(shè)置, 然后單擊OK關(guān)閉對(duì)話框。(14)需要將以上的設(shè)置改變對(duì)所有選中的對(duì)象起作用,單擊Apply changes to selectedobjects復(fù)選
24、框,然后單擊OK按鈕。接下來(lái)你需要定義節(jié)點(diǎn)模型的界面屬性:(15)Interfaces菜單中選擇Node Interfaces出現(xiàn)節(jié)點(diǎn)界面對(duì)話框。(16)找到支持的節(jié)點(diǎn)類型屬性表,除了fixed外的節(jié)點(diǎn)類型對(duì)應(yīng)的Supported屬性設(shè)置為no,表明該節(jié)點(diǎn)只能作為固定節(jié)點(diǎn)。屬性重命名可以簡(jiǎn)化復(fù)雜的屬性名稱,或者擴(kuò)展過(guò)于簡(jiǎn)化的名稱。當(dāng)某個(gè)屬性是由底層提升得來(lái)的,它的名稱就會(huì)變得很冗長(zhǎng)而且沒(méi)有意義,這時(shí)可能需要把它的名稱簡(jiǎn)化。本例程將為包到達(dá)間隔屬性重新命名。(17)Node Interfaces對(duì)話框中選擇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)閉重命名對(duì)話框。你可以指定一系列預(yù)定值給某個(gè)屬性,這樣屬性的設(shè)置可以通過(guò)界面來(lái)選擇,這將給用戶提供方便。為屬性指定預(yù)定值有下面幾個(gè)好處:%。限制屬性取
26、值的范圍。%。用戶可以直觀地根據(jù)預(yù)定值的名稱來(lái)選擇相應(yīng)的參數(shù)。%o用戶不需要輸入具體值,從下拉列表中選擇即可。接下來(lái)為source interarrival time屬性指定預(yù)定值:(21)在Node Interfaces對(duì)話框中,選擇新命名的source interarrival time屬性,這時(shí) 左邊的EditProperties按鈕被激活,單擊它。這時(shí)出現(xiàn)Attribute:source interarrival time對(duì)話框。(22)在Symbol Map表中,將所有Symbol對(duì)應(yīng)的Status變?yōu)閟uppress。(23)如圖1-19所示增加4個(gè)符號(hào)與值的映射項(xiàng)。Symbol
27、MapO.ilXEV ftluAiiiki Eormi.mzIL,rrESinn ormiUft in. ninti form_int (jniGUPPruni form_iat (hdwei bullsTippir esswei bulL(shape.圖1-19符號(hào)與屬性真實(shí)值的映射表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è)置參數(shù)的屬性
28、項(xiàng),從而能夠簡(jiǎn)化用戶界面。這個(gè)操作不會(huì)影響仿真結(jié)果。周邊節(jié)點(diǎn)的許多屬性與仿真無(wú)關(guān)。為了避免混淆,需要隱藏這些屬性:(24)如圖1-20所示除了source interarrival time外的所有屬性的Status改為hidden。圖1-20屬性狀態(tài)表(25)單擊OK按鈕關(guān)閉節(jié)點(diǎn)界面對(duì)話框。(26)從File菜單中選擇Save As,,將節(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è)初試化ini
29、tial狀態(tài),一個(gè)idle狀態(tài)。創(chuàng)建進(jìn)程模型:(1)從File菜單中選擇New,從彈出的菜單中選擇Process Model,單擊OK按鈕。(2)如圖1-22所示在編輯窗口中放置兩個(gè)狀態(tài):圖1-21進(jìn)程模型包含兩個(gè)狀態(tài)(3)改變狀態(tài)的屬性:%o在第一個(gè)狀態(tài)上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇Set name將其改名為init,并且選擇Make State Unforced使其變?yōu)閺?qiáng)制的(forced),這時(shí)狀態(tài)顏色變?yōu)榫G色。%0將第二個(gè)狀態(tài)更名為idle。(保持它為紅色的非強(qiáng)制unforced狀態(tài)),如圖1-22所示。圖1-22狀態(tài)命名后的進(jìn)程模型在init狀態(tài)中,進(jìn)程模型將加載一個(gè)從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)生目的地址,并將其分配給來(lái)自業(yè)務(wù)生 成模塊的包,然后再將它發(fā)送出去。rcv()轉(zhuǎn)移執(zhí)行函數(shù)作用是在接收到包是計(jì)算其端對(duì)端延時(shí),并且將結(jié)果寫入全局統(tǒng)計(jì) 量。(2)單擊編輯頭塊按鈕定義轉(zhuǎn)移條件。(RCV_AftRVL)/rcvO圖1-23加入狀態(tài)轉(zhuǎn)移的進(jì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對(duì)應(yīng)數(shù)據(jù)包的輸入流索引號(hào),而XMT_OUT_STRM為輸出流索引號(hào),輸入輸出都是相對(duì)當(dāng)前進(jìn)程模塊(proc)而言,它們對(duì)應(yīng)與proc模塊相連的某條包流,連接關(guān)系一旦確定,它們的索引號(hào)是常數(shù)。之所以要放在頭
32、文件中定義這些端口號(hào),是為了修改方便而且避免混淆。(4)從File菜單中選擇Save保存文件。接下來(lái),需要定義狀態(tài)變量和臨時(shí)變量。(1)單擊編輯狀態(tài)變量工具按鈕 。(2)在狀態(tài)變量對(duì)話框中輸入以下內(nèi)容,如圖1-24所示。TypeHameDistribution *address di stStathandleete_gsh圖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菜單中選擇Declare Global Statistics(申明全局統(tǒng)計(jì)量)(2)將Stat Name屬性命名為ETE Delay。
33、(3)在探針描述文本欄中輸入:Calculates ETE delay by subtracting packet creation time from current simulation time.(4)從File菜單中選擇Save保存描述文件。(5)檢查的設(shè)置是否完成。參考如圖1-25所示的對(duì)話框。StatModeCDescETE DelaySingleN/ACalculates ETE delay by subtr,.圖1-25申明全局統(tǒng)計(jì)量(6)單擊OK關(guān)閉Declare Global Statistics對(duì)話框。接下來(lái),需要為進(jìn)程模型中的每個(gè)狀態(tài)添加入口和出口執(zhí)行代碼。首先為ini
34、t狀態(tài)添加入口執(zhí)行代碼:(7)雙擊init狀態(tài)的上半部打開(kā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ù)當(dāng)SRC_ARRVL條件滿足時(shí)(即包從業(yè)務(wù)生成模塊到達(dá)proc模塊)才執(zhí)行。該函數(shù)在將包發(fā)送之前要為它分配一個(gè)目的地址。(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;第一行代碼從包流的輸入流索引號(hào)(SRC_IN_STRM)獲取數(shù)據(jù)包。第二行代碼通過(guò)調(diào)用均勻概率分布函數(shù)指針(address_dist,它在init狀態(tài)中定義)而產(chǎn)生一個(gè)隨機(jī)值,將該值設(shè)置 為包的dest_address域(請(qǐng)參考前面的包格式定義 )
36、。最后一句從包流的輸出流索引號(hào)(XMT_OUT_STRM )將包發(fā)送出去。rcv()轉(zhuǎn)移執(zhí)行函數(shù)當(dāng)RCV_ARRVL條件滿足(即包從收信機(jī)到達(dá)proc模塊)時(shí)執(zhí)行。主要目的是計(jì)算端對(duì)端延時(shí)并寫入全局統(tǒng)計(jì)探針。(10)在函數(shù)塊中輸入以下代碼:static void rcv (void)Packet* pkptr;double ete_delay;FIN (rcv();圖1-26對(duì)象模板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行代碼獲取包指針(如前所述)。第二行代碼通過(guò)將當(dāng)前仿真時(shí)間減去包的創(chuàng)建時(shí)間得到包的端對(duì)端延時(shí)。第9行代碼將計(jì)算的延時(shí)寫入矢量結(jié)果文件中,第10行代碼最后 銷毀包。(5)從File菜單中選擇Save關(guān)閉函數(shù)編輯器。還需要激活“仿真開(kāi)始”中斷:(1)intrpt(2)1.8現(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)。(1)從OPNET Modeler主窗口中的File菜單中選擇N
38、ew.,從下拉列表中選擇Project,然后單擊OK。(2)Project Name命名為_(kāi)pksw_net,將Scenario命名為baseline,單擊OK按鈕。(3)這時(shí)出現(xiàn)網(wǎng)絡(luò)建立向?qū)?,單擊Quit。將自己指定網(wǎng)絡(luò)規(guī)格,這時(shí)需要從一個(gè)對(duì)象模板中選擇。首先需要?jiǎng)?chuàng)建一個(gè)對(duì)象模板,它包含你需要用到的模塊。(1)(2)(3)(4)使其變?yōu)?5)在Configure Palette對(duì)話框中,單擊Link Models按鈕。(6)找到_pksw_link并包括include該鏈路模型。單擊OK。(7)在Configure Palette對(duì)話框中,單擊OK按鈕,將模板命名為_(kāi) pksw_palett
39、e,如圖1-26所示。在Interfaces菜單中選擇Process Interfaces,從Process Interfaces對(duì)話框中, 將begsim屬性變改為enabledo在comment文本框中加入進(jìn)程描述。單擊OK關(guān)閉對(duì)話框。創(chuàng)建網(wǎng)絡(luò)模型單擊打開(kāi)對(duì)象模板工具按鈕。在彈出的對(duì)話框中單擊配置模板按鈕(Configure Palette.)在Configure Palette對(duì)話框中,單擊Clear按鈕,然后單擊Node Models按鈕。找到_pksw_hub和_pksw_node節(jié)點(diǎn)模型并單擊右邊的Status欄included o然后單擊OK?,F(xiàn)在準(zhǔn)備構(gòu)建網(wǎng)絡(luò)了。(1)在項(xiàng)目編輯
40、窗口中放置一個(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)選中Verify links,單擊OK按鈕,如圖1-28所示。(3)如果某個(gè)鏈路上出現(xiàn)紅色的叉,如圖1-29所示,則鏈路不通。I D Check LinksxJ(* Verifyl ChooselinksTransceiversfor selected links匚亟二_CancelHelp |圖1-28驗(yàn)證
41、連接對(duì)話框圖1-29鏈路不通的情形在驗(yàn)證連接對(duì)話框中單擊Choose transceivers for selected links,這時(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ì)網(wǎng)絡(luò)性能的影響,需要在仿真編輯器中為 相應(yīng)的仿真屬性配置多個(gè)值,這時(shí)一次會(huì)運(yùn)行一系列仿真,每個(gè) 仿真結(jié)果對(duì)應(yīng)屬性的一個(gè)取值。選擇要收集的結(jié)果:(1)在工程窗口的空白處(任意位置
42、)單擊鼠標(biāo)右鍵,從彈出的菜單中選擇Individual DES Statistics。(2)打開(kāi)Global Statistics列表,選中ETE Delay,單擊OK關(guān)閉對(duì)話框,如圖1-31所示。ETE Delay苜口Node Statistics此Link Statistics圖1-31選擇全局結(jié)果統(tǒng)計(jì)量這是在周邊節(jié)點(diǎn)中的處理模塊定義過(guò)的全局統(tǒng)計(jì)探針。(3)在node_0與hub間的鏈路上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇Choose IndividualDES Statistics。(4)打開(kāi)point-to-point列表,選中上行和下行鏈路利用率,如圖 關(guān)閉對(duì)話框。(5)保存項(xiàng)目文件。
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配置仿真對(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ì) 受影
44、響。為了模擬這些行為,需要配置source interarrival time仿真屬性,將給它指定兩個(gè)值。(1)從Simulation菜單中選擇Configure Simulation(Advanced)這時(shí)仿真編輯器打開(kāi)。(2)在仿真設(shè)置上單擊鼠標(biāo)右鍵,從彈出的菜單中選擇Edit Attributeso回想前面我們已經(jīng)將業(yè)務(wù)生成模塊的interarrival time屬性提升為仿真屬性了,現(xiàn)在可以為它指定兩個(gè)不同的值(每個(gè)值運(yùn)行一次仿真)。下面將配置當(dāng)包產(chǎn)生間隔為“4”的仿真:(1)將仿真設(shè)置文件命名為_(kāi)pksw_sim1。(2)將隨機(jī)種子Seed設(shè)置為21 ,仿真時(shí)間設(shè)為1000 seconds。(3)給source interarrival time屬性賦值: 單擊Add按鈕,然后選擇未引用的仿真屬性,單擊OK按鈕,如圖1-33所示。Unresolved Attributes圖1-33增加未引用的仿真屬性 在仿真設(shè)置對(duì)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保設(shè)備出口貿(mào)易合同
- 車輛融資租賃合同
- 信息技術(shù)咨詢合同
- 2024年京津冀地區(qū)半導(dǎo)體項(xiàng)目投資合同
- 進(jìn)出口貨物運(yùn)輸代理合同與進(jìn)出口貿(mào)易合同
- 技術(shù)研發(fā)與市場(chǎng)推廣投資合同
- 土方車運(yùn)輸合同與土方運(yùn)輸合同
- 進(jìn)出口代理合同糾紛意向書
- 商住房買賣合同常見(jiàn)問(wèn)題解答
- 勞務(wù)派遣合同在物流行業(yè)的應(yīng)用
- 新建二級(jí)加油站項(xiàng)目投資立項(xiàng)可行性分析報(bào)告
- 湖北省荊門市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版質(zhì)量測(cè)試(上學(xué)期)試卷及答案
- 2025版國(guó)家開(kāi)放大學(xué)法學(xué)本科《知識(shí)產(chǎn)權(quán)法》期末紙質(zhì)考試總題庫(kù)
- 剪輯師的職業(yè)規(guī)劃
- 存貨管理制度完整版
- 《東阿阿膠企業(yè)核心競(jìng)爭(zhēng)力問(wèn)題、原因及提升策略(開(kāi)題報(bào)告有提綱)》
- 第七單元長(zhǎng)方形和正方形 單元測(cè)試(含答案)2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 配電室維護(hù)協(xié)議書
- 2024年大學(xué)試題(管理類)-應(yīng)急管理考試近5年真題集錦(頻考類試題)帶答案
- 春望(微教學(xué)設(shè)計(jì)) 蘇教版
- 2024年吉林省吉林市豐滿區(qū)數(shù)學(xué)四年級(jí)第一學(xué)期期末預(yù)測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論