節點
基本裝置被抽象為節點,用C++的node類來描述。
NodeContainer類用于追蹤一組節點指針,特别是在裝置助手一次在多個節點安裝裝置,需要在大量的相同節點上安裝裝置。
// 建立兩個節點對象
NodeContainer nodes;
nodes.Create (2);
應用
需要被仿真的使用者程式被抽象為應用,用C++的Aapplication類來描述。
UdpEchoClientApplication:回顯伺服器端所回複的分組,同時記錄時間
UdpEchoServerApplication:由UdpEchoServerHelper管理
信道
把節點連接配接到代表資料交換信道的對象上,用C++的channel類來描述。
信道模型例子:
CsmaChannel : 模拟一個可以用于實作載波監聽多路通路通信子網中的媒介。
PointToPointChannel : 這個類代表簡單的點對點信道,無多點通信能力,最多可以由2個點至點連接配接的網絡裝置。在通道中有兩種”線“。第一個連接配接的裝置擷取0号線上的傳輸,第二個裝置得到1号線上的傳輸。
WiFiChannel
網絡裝置
網絡裝置:硬體裝置和軟體裝置的總和,用C++的NetDevice類來描述。
網絡裝置安裝在節點上,使得節點通過信道和其他節點通信。NetDevice類提供類管理連接配接節點和信道對象的各種方法,并且允許開發者以面向對象的方法來定義。
CsmaNetDevice
PointToPointNetDevice
WiFiNetDevice
拓撲幫助
在節點、網絡裝置、信道之間部署許多連接配接,用Helper類。
建立一個網絡裝置,配置一個MAC位址,把此網絡裝置裝載到節點上,設定節點中的協定棧以及連接配接網絡裝置到一個信道上,需要許多分立的NS3核心操作。
TopologyReaderHelper : 這個類使得更容易配置和使用通用的TopolgyReader
InternetStackHelper : 是一個安裝PointToPointHelper對象和點到點網絡裝置的網絡協定棧的拓撲生成器類,為每一個節點容器中的節點安裝一個網絡協定棧(如TCP、IP、UDP)
優化技術
資料跟蹤與采集的方法分成兩類:
Logging系統 : 直接将執行過程顯示在指令行中,調試仿真腳本。
Tracing系統 : 将采集到的資料直接存放在一個檔案中,以便後期的處理與分析。
Logging系統提供7個等級,由高至低:
- LOG_ERROR 記錄錯誤資訊
- LOG_WARN 記錄警告資訊
- LOG_DEBUG 調試資訊
- LOG_INFO 程式相關資訊
- LOG_FUNCTION 當有函數被調用時,該調用資訊就被記錄
- LOG_LOGIC 對于整體邏輯的描述
- LOG_ALL 包含上述的所有資訊
例子:
LogComponentEnable("UdpEchoClientApplication",LOG_LEVEL_INFO);
LogComponentEnable("UdpEchoServerApplication",LOG_LEVEL_INFO);
Tracing系統:
包含Tracing Sources、Tracing Sink以及兩者合一
Tracing系統常用的Helper類:
-
ASCII Tracing 以ASCII格式的資訊輸出
例子:使用EnableAsciiAll函數,通知所有helper将所有的關于point to point裝置的仿真資訊都列印成Ascii格式
AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("Asciifirst.tr"));
- PCAP Tracing 生成以pcap為字尾的格式檔案,使用wireshark檔案打開并分析