NS2學習筆記1 NS開發架構與C 的開發方法

2021-07-23 08:46:57 字數 1125 閱讀 5309

新手,學習ns2,爭取把原理搞懂。目前還只能做知識的搬運工,加工整理,盡量做到每乙個問題的清晰溯源。

1.為什麼採用兩種語言來編寫?

以下一段**[譯] ns2中otcl 和c++ 的連線 (一),看來還是老外寫的書比較深入透徹。三種方式來開發c++程式,這才是真正的答案好不好,至於c++執行快,tcl解釋語言修改快只是更表層的原因。

理論上說,我們有三種方式來開發c++程式。第一種稱為「basicc++」,是三種方法中最簡單的一種,只包括基本的c++結構。這種方式存在靈活性問題,因為系統中任何引數的改變都需要重新編譯。著眼於靈活性問題,第二種方法稱為「c++coding with inputarguments」帶有輸入引數的c++程式。當系統引數發生變化,我們只需簡單的改變輸入引數而不需要重新編譯。但是,第二種方式的重要問題是:當輸入引數很多時,呼叫命令會相當長且複雜。第三種方式稱為「c++coding with configuration files「-把所有的系統引數寫入配置檔案。這種方式解決了靈活性問題和複雜的呼叫問題。需要改變系統引數時,只需簡單的改變配置檔案。事實上,ns2正式基於這種方式開發的。

2.ns2概述

這些在大部分書籍和ns2相關部落格(包括上面那個轉的部落格)裡都能看到,我用自己的理解總結了下。

ns是乙個物件導向的離散事件驅動的網路模擬器,所有構件已編寫成相應的c++類和octl物件。

c++被稱為編譯類物件,是演算法和協議的具體實現**,otcl物件又被稱為解釋物件,在模擬時使用者編寫模擬指令碼主要就是建立octl物件,設定其屬性,然後通過事件排程器排程網路模擬事件的發生。

ns網路構件的層次結構還是比較複雜的,時間排程器和網路元件主要是用c++來完成,網路模擬常用的網路構件有節點、鏈路、**、應用、佇列、跟蹤物件等,這些編譯過的物件,通過在otcl中為每個c++物件建立相應的octl有物件來一一對應,同時建立c++的控制函式和配置變數作為對應的otcl物件中的成員函式和成員變數。用這種方法c++物件的控制就交給了otcl。可以通過增加c++物件的成員函式和變數來和otcl進行連線,那些不需要在模擬器中控制的c++的物件或者有內部另乙個物件呼叫的c++物件是不需要和otcl連線的。

當乙個模擬完成之後ns二產生乙個後或者多個文字輸出檔案,這些檔案中包括詳細的模擬資料這些資料可以用模擬分析工具或者圖形化顯示工具來進行分析。

NS2學習筆記

國慶假期用來研究ns2,基於socket的網路程式設計和演算法 現在看的差不多了,每天陸續寫些筆記,用來複習,也用來交流 本人也是初學者,如果有什麼錯誤,希望也可以指出 讀完了這個再去讀ns2的手冊,這個對於高階式相當重要的,而且因為有中文版的,需要的也可以留郵箱。ns2的安裝,建議安裝在linux...

NS2學習 看懂trace檔案(2)

ns use newtrace 使用新格式。語句在 ns trace all tracefd 之前 new trace格式定義 n node property i ip level packet information h next hop information m mac level packe...

NS2學習筆記2 octl與c 物件的關聯

以下總結的內容基本上來自於ns2筆記 之 otcl與c 和 譯 ns2中otcl 和c 的連線 一 沒有基礎可以先看下這兩篇文章。首先我們要清楚在ns2的設計中,連線tcl和c 架構的是tclcl類,這個tclcl類,包括六種主要的類,tcl tclobject tclclass instvar t...