ns3入门案例1 first.cc
1、目錄結構
example:1、根文件下自帶示例結構,作為良好的參考資源
? ? ? ? ? ? ? ? ? 2、src環境下中各模塊中example作為資源
build: 編譯后文件以及可執行文件
src:各模塊源代碼
2、新代碼運行
將新腳本放在scratch文件夾中,該目錄默認在waf編譯環境內。可以通過直接編譯./waf運行
first代碼解析
拓撲:點對點網絡---最簡單
1 頭文件
腳本通過各個模塊提供的API進行網絡模擬,每個模塊的API放在“模塊名-module.h”下。其中core與network為必須模塊。另外,腳本中使用非ns3庫中函數,也需要在這一步添加
#include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/internet-module.h" #include "ns3/point-to-point-module.h" #include "ns3/applications-module.h"2 名字空間
將ns3項目與非ns3項目分離。使用標準庫函數需要添加std名字空間,如
using namespace ns3;3?NS_LOG_COMPONENT_DEFINE?
腳本使用宏定義打印輔助信息
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");4 int main()函數
讀取命令行參數、設置模擬單元、開啟log組件
Time::SetResolution (Time::NS);LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);5、網絡拓撲創建
基本設置節點:Node
ns3中節點、信道、與節點中連接信道的網絡設備分別對應于Node、Channel、NetDevice三個類(英文名字可以看出)。其中,信道與網絡設備有著與之對應的多個子類。該網絡中使用助手類構建網絡(--Helper)。代碼設置節點。設置PPP【點對點】的屬性,并通過Install()在節點中安裝設備。Install()返回NetDevice對象。
NodeContainer nodes;nodes.Create (2);PointToPointHelper pointToPoint;pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));NetDeviceContainer devices;devices = pointToPoint.Install (nodes);6、安裝TCP/IP協議族
安裝協議,其中包括:TCP和UDP。網絡層的IP與路由協議
InternetStackHelper stack;stack.Install (nodes);Ipv4AddressHelper address;address.SetBase ("10.1.1.0", "255.255.255.0");Ipv4InterfaceContainer interfaces = address.Assign (devices);通過InternetStackHelper助手安裝協議棧stack,并通過Intall(nodes)安裝在節點中
IP地址通過AddressHelper設置并通過Assign()函數安裝在節點中設備中。
7 安裝應用程序
可以有不同的應用程序協議分發模塊,first采用UdpEcho應用程序。
利用服務器助手,初始化監聽9號端口。利用服務器助手將其安裝在其中的一個節點中,編號為1,同樣使用Install()函數,并設置在1s后啟動,10s后結束。
UdpEchoServerHelper echoServer (9); ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));serverApps.Start (Seconds (1.0));serverApps.Stop (Seconds (10.0));?客戶端助手接收來自1編號的IP地址,并從9號端口接收。MaxPackets、Interval、PacketSize分別對應echoClient的三個屬性。為最大發送分組數、發送間隔與發送包裹大小(負載)??蛻舳税惭b在結點0中,在2s時開始,10s時結束。
UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);echoClient.SetAttribute ("MaxPackets", UintegerValue (1));echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));echoClient.SetAttribute ("PacketSize", UintegerValue (1024));ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));clientApps.Start (Seconds (2.0));clientApps.Stop (Seconds (10.0));?8、數據生成
first未涉及
9、啟動與結束
Simulator::Run ();Simulator::Destroy ();return 0;執行之前定義的操作。Run()按順序執行;Destroy()執行清除操作。
?
以上為first中所有操作,對于整體ns3把握還不完善。需要理解過程后進一步通過案例分析。
總結
以上是生活随笔為你收集整理的ns3入门案例1 first.cc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sublime Text提示Unable
- 下一篇: 财务会计U8-出纳管理-日记账导入