ns-3 Overview
[Link]
ns-3 overview October 2009 1
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
[Link]
ns-3 overview October 2009 2
ns-3 project goal
Develop a preferred, open simulation
environment for networking research
1) a tool aligned with the simulation needs
of modern networking research
2) an open-source project that
encourages community contribution,
peer review, and validation of the
software
[Link]
ns-3 overview October 2009 3
Overview
This presentation is organized around the
goals stated above:
– “aligned with the needs of simulation
research”
– “community participation”
[Link]
ns-3 overview October 2009 4
ns-3 timeline and roadmap
ns-3.1: June 2008: ns-3.2: Sept. 2008:ns-3.3: Dec. 2008: ns-3.4: Apr 2009:ns-3.5: July 2009: ns-3.6: Oct 2009:
ns-3 first stable release - Python bindings - emulation - Tap Device - 802.11e MAC EDCA - Minstrel rate control
- simulator core - real-time scheduler- initial IPv6 support - Object names - 802.11n A-MSDU - WiFi Athstats and
- TCP/IPv4 - 802.1D learning - ICMP support - new Wifi models frame aggregation 5/10MHz channels
- point-to-point, CSMA, bridge - calendar queue - 802.11b PHY - IPv6 radvd, ICMP
WiFi device models - Network Simulation scheduler - Nakagami loss - 802.11s mesh
- mobility models Cradle (nsc) - allinone build - Gamma, Erlang, - Nix-vector routing
- statistics framework system Zipf random variables - Flow Monitor
ns-3.7 is planned for January 2010 timeframe;
please see [Link]
[Link]
ns-3 overview October 2009 5
New
2009)features of ns-3.6 release (Oct.
• WiFi enhancements (Minstrel rate control,
Athstats, 10 MHz and 5 MHz channels, channel
switching)
• IPv6 extensions (Ping6, Neighbor Discovery,
Router Advertisements)
• Qt-based animator (NetAnim) for point-to-point
links
• Flow Monitor statistics module
• Ported the Nix-Vector routing framework
• New test framework
[Link]
ns-3 overview October 2009
Part 1: Overview of ns-3 features
[Link]
ns-3 overview October 2009 7
Requirements
ns-3 responds to trends in how Internet
research is being conducted
1. extensible software core
2. attention to realism
3. software integration
4. support for virtualization and testbeds
5. flexible tracing and statistics
6. attribute system
7. new models
[Link]
ns-3 overview October 2009 8
1) Extensible software core
• Written in C++ with optional Python interface
– extensively documented API (doxygen):
– see also: [Link]
[Link]
ns-3 overview October 2009 9
Extensible software core (cont.)
• Project focus to date has been on setting
the long-term architecture
– rather than developing new models
• Trying to avoid some problems with ns-2,
such as
– interoperability and coupling between models
– lack of memory management
– debugging of split language objects
[Link]
ns-3 overview October 2009 10
Example: ns-3 object aggregation
Problem: coupling between models hinders
software reuse in different configurations
– must intrusively edit the base class for this
– or, leads to C++ downcasting, e.g.:
// Channels deal with Node pointers, but here I really want a
// MobileNode pointer, to access the MobileNode API
double
WirelessChannel::get_pdelay(Node* tnode, Node* rnode)
{
// Scheduler &s = Scheduler::instance();
MobileNode* tmnode = (MobileNode*)tnode;
MobileNode* rmnode = (MobileNode*)rnode;
– known as the C++ “weak base class” problem
[Link]
ns-3 overview October 2009 11
Example: ns-3 object aggregation
ns-3 solution: an object aggregation model
• objects can be aggregated to other objects at
run-time
• a “query interface” is provided to ask whether an
particular object is aggregated
• similar in spirit to COM or Bonobo objects
// aggregate an optional mobility object to a node:
node->AggregateObject (mobility);
...
// later, other users of node can query for the optional object:
senderMobility = i->first->GetNode ()->GetObject<MobilityModel> ();
// we did not have to edit class Node (base class), or downcast!
[Link]
ns-3 overview October 2009 12
2) attention to realism
Problem: Research often involves a mix of
simulations and testbed or live experiments
• If the simulator cannot be made to closely model a
real system:
– hard to compare results or validate the model
– hard to reuse software between the two domains
ns-3 solution:
– model nodes more like a real computer
– support key interfaces such as sockets API and
IP/device driver interface (in Linux)
– reuse of kernel and application code
[Link]
ns-3 overview October 2009 13
attention to realism (example)
An ns-3 Node is a husk of a computer to which
applications, stacks, and NICs are added
Application
Application
Application
“DTN”
[Link]
ns-3 overview October 2009 14
3) software integration
Problem: why reimplement models and tools for
which open-source implementations abound?
ns-3 solution:
• ns-3 conforms to standard input/output formats so
that other tools can be reused.
– e.g., pcap trace output, ns-2 mobility scripts
• ns-3 is adding support for running implementation
code
– Network Simulation Cradle (Jansen) integration has met
with success: Linux TCP code
– ns-3 “process” API
[Link]
ns-3 overview October 2009 15
software integration (cont.)
• Example: ns-3 trace viewed with Wireshark:
[Link]
ns-3 overview October 2009 16
4) support for virtualization and testbeds
Problem: need better support for the researcher
moving between simulation and testbeds or live
systems
ns-3 solution: Developing two modes of
integration with real systems:
1) virtual machines run on top of ns-3 devices and
channels
2) ns-3 stacks run in emulation mode and
emit/consume packets over real devices
[Link]
ns-3 overview October 2009 17
ns-3 goals for emulation
real machine
ns-3 ns-3
virtual virtual real real
machine machine machine machine
ns-3
Testbed
Testbed
1) ns-3 interconnects virtual 2) testbeds interconnect ns-3
machines stacks
Added in ns-3.5 Added in ns-3.3
[Link]
ns-3 overview October 2009 18
5) tracing and statistics
• Tracing is a structured form of simulation
output
• Example (from ns-2):
+ 1.84375 0 2 cbr 210 ------- 0 0.0 3.1 225 610
- 1.84375 0 2 cbr 210 ------- 0 0.0 3.1 225 610
r 1.84471 2 1 cbr 210 ------- 1 3.0 1.0 195 600
r 1.84566 2 0 ack 40 ------- 2 3.2 0.1 82 602
+ 1.84566 0 2 tcp 1000 ------- 2 0.1 3.2 102 611
Problem: Tracing needs vary widely
– would like to change tracing output without
editing the core
– would like to support multiple outputs
[Link]
ns-3 overview October 2009 19
ns-3 has a new tracing model
ns-3 solution: decouple trace sources from
trace sinks
Trace source
Trace source
Trace sink
Trace source
configurable by
unchanging user
Benefit: Customizable trace sinks
[Link]
ns-3 overview October 2009 20
ns-3 tracing
• various trace sources (e.g., packet receptions, state
machine transitions) are plumbed through the system
[Link]
ns-3 overview October 2009 21
statistics framework
• Tracing system supports a statistical and data
management framework
– (currently under development)
• Features:
– manage multiple independent runs of a scenario
– marshal data into several output formats
• including databases, with per-run metadata
– hook into ns-3 trace sources
– statistics objects can interact with simulator at run-time
• e.g. stop simulation when counter reaches a value
[Link]
ns-3 overview October 2009 22
statistics framework (cont.)
• Details at:
– [Link]
[Link]
ns-3 overview October 2009 23
6) ns-3 attribute system
Problem: Researchers want to know all of the values in
effect in their simulations
– and configure them easily
ns-3 solution: Each ns-3 object has a set of attributes:
– A name, help text
– A type
– An initial value
• Control all simulation parameters for static objects
• Dump and read them all in configuration files
• Visualize them in a GUI
• Makes it easy to verify the parameters of a simulation
[Link]
ns-3 overview October 2009 24
ns-3 attribute system
• Object attributes
are organized and
documented in the
Doxygen
• Enables the
construction of
graphical
configuration tools:
[Link]
ns-3 overview October 2009 25
7) ns-3 models
ns-3 includes a mix of new and ported models
[Link]
ns-3 overview October 2009 26
Example new model: Wifi NetDevice
• new model, written from 802.11 specification
• accurate model of the MAC
– DCF, beacon generation, probing, association
– a set of rate control algorithms
• not-so-slow models of the 802.11a PHY
• Technical details:
– [Link]
[Link]
ns-3 overview October 2009 27
summary of ns-3 features
• modular, documented core
• C++ programs or (optionally) Python scripting
• alignment with real systems (sockets, device
driver interfaces)
• emphasis on software integration
• virtualization and testbed integration are a
priority (emulation modes)
• well-documented attribute system
• updated models
[Link]
ns-3 overview October 2009 28
Part 2: Community participation
[Link]
ns-3 overview October 2009 29
ns-3 is an open-source project
• software is GNU GPLv2 licensed, or
otherwise GPL-compatible
• open mailing lists, development lists,
tracker, wiki
• open-source development model
[Link]
ns-3 overview October 2009 30
Challenges for ns-3
• ns-3 needs participation from the research
community
1) improving simulation credibility
2) contributed and supported models
3) maintainers
[Link]
ns-3 overview October 2009 31
1) improve simulation credibility
Problem: simulations, in general, often suffer from lack of
credibility
ns-3 solutions:
1) we will host ns-3 code and scripts for published work
(improve reproducibility)
2) flexible means to configure and record values (the ns-3
attribute system)
3) tutorials on how to do things right
4) support for ported code should make model validation
easier and more credible
[Link]
ns-3 overview October 2009 32
1) improve simulation credibility
ns-3 needs ways to certify models too
– capture level of community acceptance
– publication lists, cross-reference
– need to identify maintainers, or state the
absence of a maintainer
– validation techniques
These approaches still need to be developed
Incumbent upon users, ultimately, to produce
credible simulations-- we can only try to help
[Link]
ns-3 overview October 2009 33
2) contributed code
• one of ns-2’s strongest assets
[Link]
ns-3 overview October 2009 34
Contributed code (cont.)
• we want to replicate this success with ns-3
• we will host your code/scripts in a number of possible
ways
– Contribute your code to the ns-3 main tree
– Contribute code to a src/contrib directory
• policy is to accept all maintained code
– Contribute unmaintained code or user scripts to our repository
– Contributed Code page (wiki)
• we are already attracting initial ns-3 contributed code
[Link]
ns-3 overview October 2009 35
3) maintainers
• we need active maintainers for key models and parts of
the system
– respond to user questions
and bug reports
– help with testing and
validation
Current ns-3 maintainers:
• if you are a domain expert on a particular model, and a
user of ns-3, consider to help with model maintenance
[Link]
ns-3 overview October 2009 36
ns-3 project financial support
• ns-3 is open-source, backed by NSF CISE grant
(through 2006-10) and support from the French
government (INRIA)
• Additional funding would be welcome
– fund your own employee and contribute back to ns-3
– or, fund a project developer needing support
[Link]
ns-3 overview October 2009 37
Summary
ns-3 is an active open-source project
– several simulator features designed to aid current
Internet research
– community-based development and maintenance
model
ns-3 needs you!
[Link]
ns-3 overview October 2009 38
Resources
Web site:
[Link]
Mailing list:
[Link]
IRC: #ns-3 at [Link]
Tutorial:
[Link]
Code server:
[Link]
Wiki:
[Link]
[Link]
ns-3 overview October 2009 39