天天看點

NS-3基礎

節點

基本裝置被抽象為節點,用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個等級,由高至低:

  1. LOG_ERROR 記錄錯誤資訊
  2. LOG_WARN 記錄警告資訊
  3. LOG_DEBUG 調試資訊
  4. LOG_INFO 程式相關資訊
  5. LOG_FUNCTION 當有函數被調用時,該調用資訊就被記錄
  6. LOG_LOGIC 對于整體邏輯的描述
  7. LOG_ALL 包含上述的所有資訊

例子:

LogComponentEnable("UdpEchoClientApplication",LOG_LEVEL_INFO);
LogComponentEnable("UdpEchoServerApplication",LOG_LEVEL_INFO);
           

Tracing系統:

包含Tracing Sources、Tracing Sink以及兩者合一

Tracing系統常用的Helper類:

  1. ASCII Tracing 以ASCII格式的資訊輸出

    例子:使用EnableAsciiAll函數,通知所有helper将所有的關于point to point裝置的仿真資訊都列印成Ascii格式

AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("Asciifirst.tr"));
           
  1. PCAP Tracing 生成以pcap為字尾的格式檔案,使用wireshark檔案打開并分析