ns-3 Training Computer and Communication Network Lab Department of Electrical Engineering National Sun Yat-Sen University 5/13/2013 Topics Getting Started ns-3 A First ns-3 Script What is ns-3? Installation Two tutorial examples A simple example for this project Complete the remaining parts 2 Getting Started ns-3 • Please read the following documents • ns-3 overview • • • ns-3 Tutorial • • http://www.nsnam.org/docs/ns-3-overview.ppt http://www.nsnam.org/docs/ns-3-overview.pdf http://www.nsnam.org/docs/release/3.13/tutorial/ns-3-tutorial.pdf ns-3 Manual • http://www.nsnam.org/docs/release/3.13/manual/ns-3-manual.pdf What is ns-3? ns-3 is a discrete-event network simulator for Internet systems ns-3 allows researchers to study Internet protocols and large-scale systems in a controlled environment ns-3 is a new simulator (not backwards-compatible with ns-2) ns-3 is a free, open source software project organized around research community development and maintenance the target user community is networking researchers and educators 4 Extensible Software Core Written in C++ with optional Python interface extensively documented API (doxygen): http://www.nsnam.org/doxygen-release/index.html 5 Node Basics An ns-3 Node is a husk of a computer to which applications, stacks, and NICs are added 6 Tracing and Statistics Tracing is a structured form of simulation output Example (from ns-2): Problem: Tracing needs vary widely would like to change tracing output without editing the core would like to support multiple outputs 7 ns-3 Has A New Tracing Model ns-3 solution: decouple trace sources from trace sinks Benefit: Customizable trace sinks 8 Downloading ns-3 http://www.nsnam.org/ Latest release: ns-3.16 (2012/12/21) 9 Problems under Windows Cygwin or MinGW If you do use Cygwin or MinGW and use Logitech products it can cause Cygwin or MinGW DLLs to die in mysterious way Note that NSC is not supported on OSX or Cygwin. Network Simulation Cradle 10 Building ns-3 (1/5) # ./build.py 11 Building ns-3 (2/5) # ./waf -d optimized configure ns-3 uses the waf build system 12 Building ns-3 (3/5) # ./waf -d debug configure 13 Building ns-3 (4/5) # ./test.py -c core 14 Building ns-3 (5/5) 15 Running a Script ./waf --run hello-simulator 16 Building Your Script # cp examples/tutorial/first.cc scratch/myfirst.cc ./waf 17 Building Your Script # ./waf --run scratch/myfirst 18 A First ns-3 Script • /ns-allinone-3.10/ns-3.10/examples/tutorial • • first.cc third.cc Boilerplate The first line in the file is an emacs mode line. The ns-3 simulator is licensed using the GNU General Public License. 20 Module Includes The code proper starts with a number of include statements. ../../build/debug/ns3 21 Ns3 Namespace The next line in the first.cc script is a namespace declaration. Logging 22 Main Functions The next lines of the script you will find are, ns3 提供的 log 訊息分成了以下幾個等級: 1.NS_LOG_ERROR — Log error messages; 2.NS_LOG_WARN — Log warning messages; 3.NS_LOG_DEBUG — Log relatively rare, ad-hoc debugging messages; 4.NS_LOG_INFO — Log informational messages about program progress; 5.NS_LOG_FUNCTION — Log a message describing each function called; 6.NS_LOG_LOGIC – Log messages describing logical flow within a function; 7.NS_LOG_ALL — Log everything. 8.NS_LOG_UNCOND – Log the associated message unconditionally. 23 Topology Helpers Create the ns-3 Node objects that will represent the computers in the simulation. We are constructing a point to point link 24 Topology Helpers We will need to have a list of all of the NetDevice objects that are created 25 Internet Stack Helper Protocol stacks installed on our nodes TCP, UDP, IP, etc. Ipv4AddressHelper make the association between an IP address and a device 26 Applications Two specializations of the core ns-3 class Application called UdpEchoServerApplication UdpEchoClientApplication UdpEchoServerHelper 27 Applications UdpEchoClientHelper 28 Simulator What we need to do at this point is to actually run the simulation. scheduled events in the simulator at 1.0 seconds, 2.0 seconds and two events at 10.0 seconds 29 Building Your Script Drop your script into the scratch directory Now build your first example script using waf 30 Building Your Script You can now run the example 31 Building a Wireless Network Topology Add the Wifi and the mobility modules The network topology illustration follows: 32 Building a Wireless Network Topology For enabling or disabling logging components and for changing the number of devices created 33 Building a Wireless Network Topology Part of the Wifi network Configure the PHY and channel helpers Yet Another Network Simulator M. Lacage and T. R. Henderson, “Yet Another Network Simulator,” WNS2 ns-2: The IP Network Simulator, Italy, 2006. 34 http://cutebugs.net/files/wns2-yans.pdf Building a Wireless Network Topology Create a channel object and associate it to our PHY layer object manager NqosWifiMacHelper object to set MAC parameters rate control algorithm AARF (Adaptive Auto-Rate Fallback ) algorithm 35 Building a Wireless Network Topology The SSID of the infrastructure network Create the wifi devices of these stations 36 Building a Wireless Network Topology Configure the AP (access point) node Shares the same set of PHY-level Attributes (and channel) as the stations 37 Building a Wireless Network Topology Set some Attributes controlling the “position allocator” functionality The number of objects layed out on a line. 38 Building a Wireless Network Topology Need to tell them how to move RandomWalk2dMobilityModel random direction random speed Rectangle (double _xMin, double _xMax, double _yMin, double _yMax) 39 Building a Wireless Network Topology Want the access point to remain in a fixed position during the simulation Protocol stacks 40 Building a Wireless Network Topology assign IP addresses to the device interfaces 41 Building a Wireless Network Topology Enable internetwork routing Create just enough tracing to cover all three networks 42 Building a Wireless Network Topology Run the simulation, clean up and then exit the program Output 43 Read the pcap files 44 Plot figures 45 An Example of MANET • Reference • /ns-allinone-3.10/ns-3.10/examples/wireless/wifihidden-terminal.cc Codes (1/7) 47 Codes (2/7) 48 Codes (3/7) 49 Codes (4/7) 50 Codes (5/7) 51 Codes (6/7) 52 Codes (7/7) 53 Result 54 Need to do…… (1/3) Transmission range of a node ns3::RangePropagationLossModel Node moving speed ns3::RandomWaypointMobilityModel MaxRange Speed Pause Node data rate ns3::ConstantRateWifiManager 55 Need to do…… (2/3) RTS retry limit ns3::UanMacRc Buffer size ns3::TcpSocket RetryRate SndBufSize AODV hello periods ns3::aodv::RoutingProtocol HelloInterval 56 Need to do…… (3/3) Uniform distribution in a square with 500 meters ns3::RandomRectanglePositionAllocator ns3::UniformVariable 57 Q&A 58