210 likes | 347 Views
Ns(network simulator)-3. 2014/5/20 報告者 : 蘇宏仁. Programming languages: C++, Python Manage: Mercurial Compile: Waf Project started around mid 2006. Mercurial. 分散式控制系統 以 PYTHON 實作 - 容易擴充 有免費的線上資料庫可以使用 Bitbucket.org. Key Abstractions. Node Application Channel Net Device
E N D
Ns(network simulator)-3 2014/5/20 報告者:蘇宏仁
Programming languages: C++, Python • Manage: Mercurial • Compile: Waf • Project started around mid 2006
Mercurial • 分散式控制系統 • 以PYTHON實作-容易擴充 • 有免費的線上資料庫可以使用 • Bitbucket.org
Key Abstractions • Node • Application • Channel • Net Device • Topology Helpers
標準寫法 • http://www.nsnam.org/developers/contributing-code/coding-style/
First.cc • #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"
using namespace ns3; • NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
Main Function • Time::SetResolution (Time::NS); • LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); • LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
NodeContainer • NodeContainer nodes; • nodes.Create (2);
PointToPointHelper • PointToPointHelper pointToPoint; • pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); • pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
NetDeviceContainer • NetDeviceContainer devices; • devices = pointToPoint.Install (nodes);
InternetStackHelper • InternetStackHelper stack; • stack.Install (nodes);
Ipv4AddressHelper • Ipv4AddressHelper address; • address.SetBase ("10.1.1.0", "255.255.255.0"); • Ipv4InterfaceContainer interfaces = address.Assign (devices);
UdpEchoServerHelper • UdpEchoServerHelper echoServer (9); • ApplicationContainer serverApps = echoServer.Install (nodes.Get (1)); • serverApps.Start (Seconds (1.0)); • serverApps.Stop (Seconds (10.0));
UdpEchoClientHelper-1 • UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9); • echoClient.SetAttribute ("MaxPackets", UintegerValue (1)); • echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
UdpEchoClientHelper-2 • echoClient.SetAttribute ("PacketSize", UintegerValue (1024)); • ApplicationContainer clientApps = echoClient.Install (nodes.Get (0)); • clientApps.Start (Seconds (2.0)); • clientApps.Stop (Seconds (10.0));
Simulator • Simulator::Run (); • Simulator::Destroy (); • return 0;
result • 執行範例之後,會產生.pcap的檔案 • Tcpdump 可觀看.pcap檔案內容 • 代表真實封包的樣子