next up previous contents index
Next: 2.2 Use cases Up: 2. Software Architecture Previous: 2. Software Architecture   Contents   Index

2.1 Basics

ns-3 is a user-space program that runs on Unix- and Linux-based systems and on Windows (currently via Cygwin and possibly via native win32 APIs in the future). It is written in C++, with a planned Python scripting interface(s) for users. The focus is on IPv4 and IPv6-based networks, but other non-IP architectures such as sensors or DTNs are to be supported. ns-3 is meant to be modifiable and extendable by users; some users will be able to use example scripts that are provided, but it is expected that most (research) users will want to either write new scripts or modify or add to the simulator models in some way. Source code distributions are therefore expected to be the preferred means for distributing ns-3.

ns-3 contains support for the following:

ns-3 has a modular implementation containing a core library supporting generic aspects of the simulator (debugging objects, random number generators, smart pointers, callbacks, unit tests, reference list), and a simulator library defining simulation time objects, schedulers, and events. A common library defines objects that are independent of specific network architectures, such as generic packets and tracing objects. Finally, the node library defines abstract base classes for fundamental base objects in the simulator, such as nodes, channels, and network devices. Internet-related models (IP and transport protocols) are found in the internet-node library. Specific devices such as Ethernet are in device libraries. Users may write and link their own libraries. The modular implementation allows for smaller compilation units. ns-3 executable programs may be built to either statically or dynamically link the libraries.


next up previous contents index
Next: 2.2 Use cases Up: 2. Software Architecture Previous: 2. Software Architecture   Contents   Index
Tom Henderson 2007-06-17