OPNET學習心得(1): OPNET結構

來源:互聯網
上載者:User
OPNET學習心得(1): OPNET結構OPNET結構 (OPNET Architecture)
(註:此部分可參考OPNET Documentation: Main Menu->Modeling Concepts->Modeling Overview->OPNET Architecture)
OPNET為通訊網路和分布式系統的效能評估提供了一個全面的開發環境。由許多工具組成,這些工具暗中建模和模擬的步驟分為三個門類:定製(Specification),資料收集和模擬(Data Collection and Simulation),分析(Analysis)。  1.模型定製(Model Specification) 1.1定製編輯器(Specification Editors)
    a)Project Editor:定義網路模型(network models),network models由子網(subnets)和節點模型(node models)。Project editor具有基本的模擬和分析能力(還包括統計)。
    b)Node Editor:定義節點模型(node models),node models是network models中的一部分。Node models由一系列模組(modules)組成,這些模組內部含有進程模型(Process models)。模組還有可能包含參數模型(?! parameter models)。
    c)Process Editor:定義進程模型。進程模型控制module的行為,也有可能會涉及parameter models(?!)。
    d)Link Model Editor:建立,編輯,查看鏈路模型(link models)。
    e)Packet Format Editor:定義包格式模型(packet formats models)。packet format指明packet所儲存的資訊的結構和順序。
    f)ICI Editor:建立,編輯,查看介面控制資訊(interface control information ICI)格式。ICI用來進程間交流量控制資訊。
    g)Antenna Pattern Editor:建立,編輯,查看發送器和接收器的天線類型。(for radio)
    h)Modulation Cure Editor:建立,編輯,查看發送器的模型曲線。(for radio)
    i)PDF Editor:建立,編輯,查看機率密度函數。PDFs用來控制一些事情,比如源模組的發送頻率。 1.2模型域
    OPNET分為三個模型域:網路域(network domain)、節點域(node domain)和進程域(process domain),也是整個模型的主要層次。
1.2.1網路域(network domain)
    network domain定義了通訊網的拓撲結構。通訊的實體是nodes。
    OPNET提供單向和全雙工系統的點到點鏈路,也提供匯流排鏈路用以允許對任意大小的節點群組盡心廣播通訊。
1.2.2節點域(node domain)
    node domain用來對通訊裝置進行建模,諸如路由器、橋接器、工作站、終端等等。Node model是通過Node Editor產生,通過一些更小的模組(module)來表現。一些模組具有一定的功能,這些功能已經定義好了,只用通過配置一組內部參數(built-in parameters)就可以了。它們包括各種各樣用來在network domain串連通訊連路的發送器和接收器。還有一些模組:處理器(processors)和隊列(queues),也是高度可程式化的,它們的動作通過進程(Process model)來描述。
    node model中的各個module通過三種連結互連,分別是:packet streams,statistic wires,logical associations。Packet streams傳送格式化的訊息,我們稱為packet。Statistic wire傳送簡單的數字訊號和控制資訊,一般用於一個module用來監測其他module的效能和狀態。Statistic wire和Packet stream都有參數用來配置它們的行為。Logical associations用來確認module之間的綁定。目前,它們只被用在發送器和接收器之間,用來表明它們在接入到Network domain上的鏈路時,應當被當作一對module來使用。
1.2.3進程域(process domain)
    一個進程(process)可以被認為近似於一個執行程式。OPNET中的Process是基於Process model,他們是在Process Editor中定義的。
    進程組(process group)由許多process組成,這些process都是在同一個processor或者queue中執行。當模擬開始的時候,每個module只能有一個process,稱之為root process。這個process之後能夠建立新的process,他們之後也能再建立其他的process。在模擬中被建立的process稱之為動態進程(dynamic process)。
    任何時刻只能有一個process處於執行狀態。當一個Process開始執行後,我們說這個process被調用(invoked)了。
    當一個process調用另一個process時,調用(invoking)process被暫時掛起直到被調用(invoked)process被阻止(block)。一個process如果完成了它當前調用的處理就將被阻止。當invoked process被阻止時,invoking process就將從它掛起的地方繼續執行。
    OPNET中的Process能夠對中斷(interrupt)或者調用(invocation)產生響應。Interrupt可能產生自process group之外的源,或者process group中的其他成員,或者這個process自己。Interrupt一般對應於一些事件,包括訊息到達、計時器到時、資源釋放或者其他模組的狀態改變等等。
    OPNET的process editor使用Proto-C的語言來描述process model。Proto-C基於狀態轉移圖(State Transition Diagrams STD)、一個進階指令庫(kernel Procedures)和C或C++的通用組件。STD定義了模型的各個process所處的狀態,以及使進程在狀態之間轉移的條件。這種條件稱之為transition。Kernel Procedures主要一系列的函數包組成,這些包詳見參考文檔。
    STD在Process Editor中產生。STD除了一些傳統的STD具有的能力外,還有一系列擴充:
    a)狀態變數(State Variables)。process可以擁有一些私人state variables,這些state variables可以是任意的資料類型,包括OPNET專有的、通用的C/C++、使用者定義型別等等。這種能力使得process能夠靈活的控制counter、routing tables、與效能相關的statistics、需要轉寄的message。任意組合的statevariable可以在一個process所有的動作和決定中使用。
    b)狀態執行(State Executives)。通過C/C++語言描述了process進入和離開狀態時的操作,典型的操作包括:修改狀態資訊,建立或接收訊息,更新發送訊息的內容,更新統計資料,設定計時器以及對計時器作出響應。
    c)轉移條件(Transition Conditions)。通過C/C++語言描述布爾變數,要涉及interrupt的屬性以及state variables的組合。
    d)轉移執行(Transition Executives)。轉移時可能會定義一些通用的操作。 1.3模型,對象,屬性(Models,Object,Attributes)
1.3.1對象(Object)
    Object是Model的一部分,其可以在model中扮演下面的功能:
    a)定義行為
    b)建立資訊
    c)儲存和管理資訊
    d)處理、修改、轉寄資訊
    e)對事件作出響應
    f)包含其他的object
1.3.2屬性(Attribute)
    object的Attribute和一些允許訪問Attribute或者使Attribute生效的程式組成了object的介面。這些程式可以是OPNET自動產生的,也可以是使用者編寫的。包含有子object的object稱之為綜合物件(compound object)。
1.3.3模型(Model)
1.3.4模型屬性(Model Attribute)和屬性提升(Attribute Promotion)
    Attribute除了可以描述object外,還可以用在model上用來表示model的參數。model的attributes機制可以提高model的可重用性。具體地說,model的attribute被定義為model的一部分,但同時,他們也出現在object裡,他們是在object的model被規定後被object獲得的。這是object的本能操作。
    類似這種model attribute機制,object attribute也可以被向上傳給model,這種機制就是所謂的attribute promotion。Promotion導致object attribute不再有值,而是作為model的attribute出現在上層屬性中。對於一路promote到所有model之上的attribute,我們可以把它看作是simulation的attribute。從而把研究的系統看成是這些attributes的函數。
1.3.5衍生模型(Derived Models)
    有的時候,我們想只改變一個model的一些attributes就可以得到一個新的model。這種機制稱為模型的衍生(model derivation)。衍生出的model稱為derived model,被衍生的model稱為parent model,沒有parent model的model稱為base model。 2.包通訊建模(Modeling Communications with Packets)
    OPNET中的一種基本通訊結構是packet。packet主要由三個儲存域組成。第一個域是packet field,是一組使用者定義的值。第二個域pre-defined field由一組預定義的值組成,用來跟蹤和統計。第三個域是transmission data field,用來支援可定製的通訊鏈路模型。
    Packet分為兩類:格式化的(formatted)和非格式化的(unformatted)。formatted packet的各個域都是按照所謂的packet format的模版定義的。Packet format是在Packet Format Editor中建立的,在那裡定製了一組網域名稱、資料類型、大小(按bit)和預設值。unformatted packet在剛建立時沒有任何域,這些域都是後來一次一個加上去的,而且只能通過數字編號指示,而不是通過名字。
    Packet可以在OPNET模型中通過幾種通訊機制傳輸。在node level,是通過packet stream;在network level是通過links;還有第三種傳送機制,稱為packet delivery,支援各個module之間的packet發送,不管這些module在網路中的位置以及他們之間有沒有物理串連。 3.資料擷取和模擬(Data Collection and Simulation)
    建模的主要目的是為了擷取對系統效能的測量或者對系統的一些行為作觀察。OPNET通過在這個系統裡建立一個可執行檔model支援這個功能。有幾種機制用來在一個或者更多的系統中收集所需的資料。 3.1模擬輸出的資料類型(Simulation Output Data Types)
    OPNET提供了許多輸出類型,主要有output vectors、output scalars、animation。當然,使用者也可以自己定義所要的輸出類型,但是一般情況下都直接使用OPNET提供的資料類型。
3.1.1輸出向量(output vectors)
    output vector是輸出資料中最常見的輸出結果,它實際上是一組資料對(pairs of real value)的集合,被稱之為條目(entry)。一個vector可以包含了任意數量的條目,這些條目采自單個模擬。條目的第一個值可以看作是獨立變數(independent variable),第二個值則是依賴變數(dependent variable)。在OPNET中,這也被稱做橫座標(abscissa)和縱座標(ordinate)。在絕大多數情況下,independent variable都是模擬時間(simulation time),它隨著模擬的進行單調的增加。換句話說,大多數情況下,vector代表了我們所關心的量值隨時間的變化。當然也有隨著別的東西變化的:)
3.1.2輸出標量(output scalar)
    相比起vecotr,scalar則是一個值。一般來說,標量都是採集的測量資料的函數,比如:平均值,機率,或者峰值之類的。scalar更為有用的地方在於多次模擬後作出隨系統參數變化的曲線。OPNET模擬在output scalar檔案中記錄scalar statistics。與output vector不同的是,output scalar包含的不僅是一個模擬的結果,而是多個模擬的結果。原因之前已經提到過了。
3.1.3特定應用的統計(Application-Specific Statistics)
    scalar和vector都可以被自動地計算和記錄一些預定義的統計。這些預定義的統計一般都和模型中一些特定的對象的測量值有關,比如:queue sizes、link throughputs、error rates和queuing delays。而且,在模擬中記錄對一些特定應用統計的計算也很常見, 這些統計也被放在了scalar和vector輸出檔案中。
    定製統計可以在process model中聲明,在這種情況下,OPNET把他們加入到使用這個process的module的內建統計中去。定製統計按範圍劃分為本地的(local)和(global)。
    local statistic只由聲明它的processors和queue單獨維護。它適合記錄那些只跟本地相關的事件,比如CPU利用率等等。
    global statistic由很多模型中的實體共用。它適合記錄那些關係到整個系統效能和行為的資訊。比如忽略源和目的的端到端延遲。 3.2採集資料選擇(Selecting Data for Collection)
    OPNET資料擷取機制的預設設定是關閉的,所以要顯式地啟用特定的統計,從而讓結果能夠輸出到合適的輸出檔案中去。這通過在模擬時設定一系列的探針(probe)實現。這些probe可以指向scalar、vector等等。這些probe通過Project Editor下的Chose Result(?!我的ms是Project Editor下Simulation->Choose Statistics)操作定義。更多的進階probe要在Probe Editor中定義。
    為了使統計更簡單,指標還可以選擇一些選項,比如通過選擇時間窗來減少資料量等等。 4.分析(Analysis)
    模擬的第三階段包括檢查收集的資料。一般來說,絕大部分的資料都放在output scalar和output vector檔案中。OPNET在Project Editor中提供了對這些資料的基本訪問能力,在Analysis Tool中提供了更進階的映像和數值處理能力。4.1數值資料分析
    Project Editor和Analysis Tool都可以選擇output vector檔案,並且匯入單個或多個vector,並將他們的軌跡(traces)顯示出來。多條traces可以顯示在一張圖上,我們稱這張圖為分析面板(analysis panel)。analysis panel的展示方式可以通過analysis configuration來配置。
    Analysis panels提供了許多數值處理的操作,用來對traces或者vector進行操作,從而產生新的資料做圖。這些操作詳見參考文檔。
    Analysis Tools連結到了Filter Editor上,Filter Editor能夠使用數學過濾器(mathematical filter)來處理vector和trace。這裡不詳述。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.