The Enhanced Network Simulator (TeNs), is an extension of
the existing popular networking simulation tool - Network Simulator (See
NS homepage for details, tutorials and
downloads). TeNs is an attempt to address the deficiencies of ns in the modeling
of IEEE 802.11 MAC layer protocol, which is highly simplified in the original ns
. Apart from a more realistic implementation of this, it also incorporates
additional features like multiple interfaces support for mobile nodes, a static
routing protocol for wireless scenarios, and also features inclusion of simple
directional antennas (see the section
Enhancements
and Modifications to NS for details).
Note : Currently
the enhancements supported are for original Network Simulator version
2.1b9a only. Support for later versions (like Ns 2.26) will be considered in
future. Also note that the Ns package meant for Linux platform are only
being considered.We have tested it only on Red Hat Linux 8.0.
Contents
- Instructions for
Installing and Running
- Enhancements
and Modifications to NS
- Tutorial
- Bugs
- Future
Work
- Downloads
- Credits
- Disclaimer
- Related
Work
Instructions for Installing and Running
This section describes the instructions for incorporating the
changes (discussed in next section) in the Network Simulator.
There are
two ways to get started with the TeNs.
- This method is the simpler one. Download the
entire NS package from this site. It contains all the changes made to various
files as well as other additions. Follow the instructions contained in
the README of the package (its the same as available in the original NS
package from NS homepage). After
"./install", execute the following steps to modify the "Makefile"
(..ns-allinone-2.1b9a/ns-2.1b9a/Makefile), which will ensure that the
modifications and additions added, are properly incorporated.
-- First of all check the Makefile and
replace any alien path existing in it, with what you think should
be for your installation. This may not be required if " ./install " has
properly created the Makefile or not.
-- change variable CPP in the Makefile to " CPP = g++
"
-- change variable NSE
in the Makefile to " NSE = nse "
-- make variable BUILD_NSE empty, i.e., "
BUILD_NSE = "
-- Search for the line
containing " mobile/antenna.o mobile/omni-antenna.o \ " and replace it by
" mobile/antenna.o mobile/omni-antenna.o mobile/dir-antenna.o\
"
-- Search for the lines "
aodv/aodv_logs.o aodv/aodv.o \ aodv/aodv_rtable.o
aodv/aodv_rqueue.o \ " and add the lines " wlstatic/wlstatic_logs.o
wlstatic/wlstatic.o \
wlstatic/wlstatic_rtable.o wlstatic/wlstatic_rqueue.o \ "
before it.
Now, do " make clean "
and "make depend"
Then execute make and you are done. In the end export an additional
environment variable - "ANTENNA_RADIATION_FILE" with its value being the
path where the antenna radiation file is being stored.
$export
ANTENNA_RADIATION_FILE=...../ns-allinone-2.1b9a/ns-2.1b9a/mobile/antenna.txt
That's
it.
- This method is for those who already have Ns 2.1b9a package, and don't
want to download the entire bulky package once again. In this method you do
not need to download the entire bulky Ns package from here. Rather it will
modify the existing Ns (version. 2.1b9a) package that can be obtained from NS homepage. From the Download
section, download the file Ns_to_TeNs.tar.gz . Unzip this file in
"..ns-allinone-2.1b9a/ns-2.1b9a/" directory structure of your Ns package. This
will create a directory called TeNs_changes. Execute the script
"copyscript.sh" contained in TeNs_changes directory and then
make the changes in "Makefile" as mentioned above. In addition export the
environment variable as mentioned above. Don't forget to execute "
make clean " and "make depend".
Enhancements and Modifications to NS
Here we briefly describe the
additional features that we have added to NS. Note that our main focus was to
improve modeling of 802.11 MAC layer protocol. So here is the list .
- Addition of support for channel interference. Off-the-shelf version
of Ns has features only one channel. We have added support for 11 channels
, as per specification of 2.4 GHz DSSS PHY in IEEE802.11 protocol, and
also added features for random bit error rate, and errors due to channel
interference.
- Addition of support for directional antenna, in addition to omni-antenna
present in off-the-shelf Ns. Currently we are providing support for some
typical directional antenna radiation patterns, using an input file (see
different radiation patterns included). We also provide support for
limiting directional antenna, in which you can just limit the angular
width for spread of signal by specifying the degree of spread (see next
section for details).
- Support for multiple interfaces on a mobile node (maximum 10).
- Support for adaptive data-rate transitions (as specified in 802.11b
specification). Rates supported are 11 Mbps, 5.5 Mbps, 2 Mbps, 1 Mbps.
- Support for gray region in Ns ( Earlier there was simple 2 state
transition of signal from full to zero, without any sort of decay.)
- Random temporal variations in signal strength (to model a real life
scenario).
- Static routing protocol for wireless implemented (called " wlstatic
") which also has support for mulithop propagation.
Tutorial
We currently do not have an extensive tutorial, but the
user can get complete picture through this sufficiently commented
Tcl simulation
script, regarding how to make use of its features.
Here is another
simulation script for a larger
multihop mesh
network.
Bugs
Some of the Mobile Ad-hoc Routing Protocols (like TORA, DSDV)
may not work, due to changes made in process of creation of mobile nodes (now
the
node and
interfaces are not tightly coupled). Currently only
AODV, and the wireless static protocol - WLSTATIC, are confirmed to be fully
working.
Report bugs, comments, and questions to the
following email address :
Future Work
- Support for additional modulation schemes like DBPSK. Also to implement
changes in modulation schemes together with adaptive data-rate transitions.
Currently only BPSK modulation is supported.
- Support for using user-specified antenna radiation file (of course, there
has to be a standard format). Currently we are taking inputs from our own
input file, that has support for only 8 basic directional antenna radiation
patterns.
- Support for later versions of Ns (like Ns-2.26).
- Naturally, to remove the above bugs mentioned in previous section.
Download
- Download the entire TeNs (all modifications and additions to modules done)
here.
Please follow the instructions mentioned in section on Installing and
Running.
- Download the necessary items for modifying the Ns-2.1b9a to TeNs here.
Credits
This entire work was done as Bachelor's Project (BTech.
Project) by Ashwini Kumar, and Sabyasachi Roy, Dept. of Computer Science &
Enginnering (CSE), IIT Kanpur, India. Initial groundwork was done by Siddharth
Saha and Ankur Khandelwal, Bachelors pass-out of the same department and
institute. The work was completed under the guidance of Dr. Bhaskaran Raman,
Assistant Professor, and Dr. Dheeraj Sanghi, Professor, both Dept.
of CSE, IIT Kanpur, India.
Disclaimer
This work comes with no guarantees. While its
provided for public use as result of efforts on research and development, users
are themselves responsible for any consequences of its use, and ensuring that
simulations are not invalidated by bugs.
Related Work
The need for multiple interfaces in mobile nodes and
directional antennas was being increasingly felt in Ns. An independent effort in
this direction was made at IISc, Bangalore, India (see
wireless hosts with multiple
interfaces and directional antenna ). Currently we are using the
directional antenna radiation pattern file provided at the above mentioned site.
The page's Web Counter says that you are visitor no.