NePSing - Network Protocol Simulator next generation

Introduction

A discrete event (DE) simulator simulates some physical system in which events happen at discrete times.

NePSing (Network Protocol Simulator next generation) is a framework that gives you a set of C++ classes useful to develop a DE simulator.

As an example, in case of a wireless network protocol simulation there will be a set of device classes, representing the base station and the mobile terminals, contained in a system class which is the cellular system. Each device will generate events for other devices or to themselves, as well as receive events from other devices. These events can be the generation of a packet at a mobile terminal, the beginning or the end of its transmission to the base station, the reception of an acknowledgement, and so on.

In NePSing, events are represented by classes which contain information on when the event occurs (the time stamp), which device generated the event (the sender), which device will handle it (the receiver) and optionally any other information to be transmitted from the sender to the receiver.

Device classes have a method (the event handler) for each different event they are going to handle, and this method is called (by the NePSing scheduler) whenever the event occur. Inside the event handler, the device can do whatever processing is useful to it, and generate new events addressed to other devices or to itself.

To make all this work, NePSing uses a scheduler which is in charge of sorting events by their time stamp, queuing them in a buffer, extracting the first and calling every time the right handler for that event. After the handler ends, the control returns to the scheduler which will process the following event.

In order to avoid problems with finite numerical precision of the floating point representation of real numbers, in NePSing the time is represented with the special class DETime which uses only integer numbers, and provides a large set of methods to deal with synchronous systems like time division multiple access (TDMA) transmission systems, where the time axis is divided into frames and slots.

A DEDebug class is defined to help the developer of the simulation in the hard task of verifying that the simulation behaves correctly.

Features

Download and installation

NePSing only requires an ANSI compliant C++ compiler. GNU GCC compiler is a wisely choice, but any ANSI C++ compiler should work.

The only library used by NeSPing is the GSL - GNU Scientific Library, used for random number generation (see Random number generators). You can download and install it from the above link. Note that GSL library must be installed before NePSing, and that in case of Linux-like systems where packages are available (e.g., Fedora, Debian, etc.), the development package must be used.

A special note about MacOSX and Xcode. To use Xcode you should create a new 'GNU make' project. This by default will create a 'build' directory to store Xcode internals. This, however, will break NePSing Makefile rules, preventing a correct compiling. The solution is to use a different name for that directory.

Beside this, installing NePSing is quite simple.

  1. download it in a local directory
  2. modify the main 'Makefile' file so the NEPSI macro points to the current NePSing location and INSTALLDIR to the desired install directory
  3. launch the make program
  4. do a make install . This last point might require a superuser (administration) password. You can skip it or set INSTALLDIR to a private location (e.g., your user space).

On a MacOSX, a last step is required. You must issue the ranlib command to the NePSing libraries, as the ar tool is not perfectly working. After a normal installation the libraries are found in /usr/local/nepsing/lib/.

Copyright

Copyright (C) 2004 Tommaso Pecorella <tpecorella@mac.com>

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

The GNU Lesser General Public License can be found in the docs folder or at the GNU web site here.


Generated on Wed Dec 22 23:23:47 2004 for NePSing by doxygen 1.3.9.1 ---- Hosted by SourceForge.net Logo