ns-3 solution

advertisement
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
Download