# ns - UCB/LBNL Network Simulator

## Contents

- Overview
- Installation
- Acknowledgments
- Feedback to authors

Other links:

- Source Code
- C++ Class Hierarchy Diagram (v1)
- Browse the change history
- Simulator Tests document
- Ns Simulator Tests for Class-Based Queueing
- Research done with ns

### Overview

The UCB/LNBL Network Simulator, "ns", is a simulation tool originally developed by Steven McCanne previously with the Network Research Group at the Lawrence Berkeley National Laboratory. He and his group have continued working XXX. and now is part VINT Project. ns is an extensible, easily configured and programmed event-driven simulation engine, with support for several flavors of TCP and router scheduling algorithms. This work derives from S. Keshav's REAL simulator.

The ns simulation description language is an extension of the Tool Command Language, Tcl. A simulation is defined by a Tcl program. Using the ns command, a network topology is defined, traffic sources and sinks are configured, statistics are collected, and the simulation is invoked. By building upon a general-purpose language, arbitrary actions can be programmed into the configuration.

### Installation

To build ns from source, simply run the ./configure script in the top-level of the distribution directory. Then run 'make'. You'll need to have Tcl (v7.5) installed (or built in the directory above the ns tree). If you use gcc for the compiler, you should use gcc version 2.7.2 or later; ns does not run correctly with older versions of gcc and with some other compilers. ns is also not compatible with Tcl older than version 7.5. ns should compile and run an any unix system that Tcl runs on.

To build ns from source to enable debugging, simply run ``./configure --enable-debug''.

If you have to make changes in order to compile ns, please send in your patches. Likewise, if you encounter bugs or unexpected behavior, please contact ns@magnet.cs.berkeley.edu (this list includes only the developers and is not distributed beyond our site). Finally, if you implement ns extensions that others can benefit from, please (if possible) send them in for inclusion in a future release.

You might run the following command as a quick test to verify that ns built correctly:

% ./ns tcl/ex/test-suite.tcl tahoe1

You should see some debugging output on stdout, then an xgraph window will pop-up with a sequence plot of the connection. For this script to work properly, the ``animated'' version of xgraph and awk must both be in your path. See test-suite.tcl and example.tcl for more examples. A note describing the test suite is in ftp://ftp.ee.lbl.gov/papers/simtests.ps.Z. If you make changes to the simulator, you might want to make sure you haven't introduced bugs by running Matt Mathis' (mathis@psc.edu) test-all script, which is included in the distribution.

The (still rough) man page, in this directory, is the only other source of documentation.

### Acknowledgments

Funding for this work was provided by the Office of Energy Research, Mathematical, Information, and Computational Sciences Division, of the U.S. Department of Energy under Contract No. DE-AC03-76SF00098, and an AT&T Graduate Fellowship. Equipment grants and support were provided by Sun Microsystems, Digital Equipment Corporation, and Silicon Graphics Inc.

### Feedback

As always, we very much want to hear about bugs and problems. Please don't hesitate to offer suggestions or other feedback. Send all ns related correspondence to ns@magnet.cs.berkeley.edu (this list includes only the developers and is not distributed beyond our site).

Steve McCanne (mccanne@eecs.berkeley.edu)
Sally Floyd (floyd@ee.lbl.gov)