[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Organization

This manual is organized into several parts with several chapters per part. This chapter describes the overall software organization and the corresponding organization of this manual.

ns-3 is a discrete-event network simulator in which the simulation core and models are implemented in C++. ns-3 is built as a library which may be statically or dynamically linked to a C++ main program that defines the simulation topology and starts the simulator. ns-3 also exports nearly all of its API to Python, allowing Python programs to import an "ns3" module in much the same way as in C++.

figures/software-organization

Figure 1.1: Software organization of ns-3

The source code for ns-3 is mostly organized in the src/ directory and can be described by the diagram in fig:organization. We will work our way from the bottom up; in general, modules only have dependencies on modules beneath them in the figure.

We first describe Part 1 of the manual. The simulation core is implemented in src/core, and the core is used to build the simulation engine src/simulator. Packets are fundamental objects in a network simulator and are implemented in src/packet. These three simulation modules by themselves are intended to comprise a generic simulation core that can be used by different kinds of networks, not just Internet-based networks. The above modules of ns-3 are independent of specific network and device models, which are covered in later parts of this manual.

In addition to the above ns-3 core, we describe also in Part 1 two other modules that supplement the core C++-based API. ns-3 programs may access all of the API directly or may make use of a so-called “helper API” that provides convenient wrappers or encapsulation of low-level API calls. The fact that ns-3 programs can be written to two APIs (or a combination thereof) is a fundamental aspect of the simulator and is also covered in Part 1. We also describe how Python is supported in ns-3 as the last chapter of Part 1.

The remainder of the manual is focused on documenting the models and supporting capabilities. Part 2 focuses on two fundamental objects in ns-3: the Node and NetDevice. Two special NetDevice types are designed to support network emulation use cases, and emulation is described in Part 3. Part 4 is devoted to Internet-related models, including the sockets API used by Internet applications. Part 5 covers applications, and Part 6 describes additional support for simulation, such as animators.

The project maintains a separate manual devoted to testing and validation of ns-3 code (see the ns-3 Testing and Validation manual).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated on August 20, 2010 using texi2html 1.82.