Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
1) Yans
--------
So far, this code could be labeled as a prototype since it does not implement
all the features we want. We are open to outside contributions which would be
interested on working on some of these features or other network simulation
models.
2) Current features
-------------------
The current implementation features:
- a UDP/IPv4 stack without multicast
- a nice packet API
- a complete arp module
- an ethernet module which uses the arp module to perform address
translation between IPv4 addresses and MAC addresses.
- libpcap dump support at the network interface level
- a sample application with a simple udp source and sink pair.
- the framework to provide a POSIX environment (this is far from the
real thing for now).
- a port of the BSD4.4Lite TCP stack. This stack has been ported and
debugged but, due to licensing incompatibility reasons, we have not
included it in the simulator distribution.
- a set of python bindings.
- a packet logging/variable tracing framework.
3) Build instructions
---------------------
By default, only the core C++ library and a few C++ sample scenarios are
built. If you want to use the python bindings, you need:
- python (tested with 2.3 and 2.4) (see http://www.python.org)
- Boost (tested with 1.32.0 and 1.33.1) (see http://www.boost.org)
Otherwise, you need:
- gcc (tested with 3.4 and 4.0.2)
- GNU make (tested with 3.80)
All of these should be available on standard linux distributions. Make
sure you install the -devel packages associated to these packages. Fedora
Core 3 and 4 have been tested and work.
To build the yans library, you can just run the "make" command. In most cases,
it should be able to detect your system's configuration and build yans.
The detected configuration is stored in the config.mk file: you can edit it
if somethine went wrong. The following variables might be of some use to
you:
PYTHON_PREFIX_INC:=/usr/include/python2.3
PYTHON_PREFIX_LIB:=/usr/lib
PYTHON_BIN:=/usr/bin/python2.3
BOOST_PREFIX_LIB:=/usr/lib
BOOST_PREFIX_INC:=/usr/include
Change them to point where your dependencies are installed. If you do
not want to build the python bindings, you can disable them
by setting USE_PYTHON=n
To enable the TCP code, set USE_TCP=y (and make sure you have downloaded
and installed the tcp package properly).
3.1 x86 linux build
-------------------
make sure that the config.mk file contains a line like this:
PLATFORM:=i386-linux-gcc
Now, type "make". The yans library is build-dir/lib/libyans.so, and
the sample executables are placed in build-dir/bin
It is recommended that you put the yans/build-dir/lib directory into your
LD_LIBRARY_PATH, to pick up the libyans.so.
3.2 Darwin ppc (tiger) build
------------------------------
Tiger comes with python installed. You need to install boost
(tested with 1.33.1). gcc 4.0.2 (apple darwin tiger version)
has been used. Python 2.3 does not seem to work very well
on darwin so, we recommend you use only python 2.4.
make sure that the config.mk file contains a line like this:
PLATFORM:=ppc-darwin-gcc
On some Tiger systems, we have seen python 2.4 installed as follows:
PYTHON_PREFIX_INC:=/System/Library/Frameworks/Python.framework/Versions/2.4/include/python2.4
PYTHON_BIN:=/usr/bin/python2.4
Some users have reported that you can also install python 2.4
by following these instructions: download python 2.4
from http://undefined.org/python/#python, install it, and then set
your environment variables as follows:
PYTHON_PREFIX_INC:=/Library/Frameworks/Python.framework/Versions/2.4/include/python2.4
PYTHON_BIN:=/usr/local/bin/python2.4
build command: "make"
notes:
- make sure DYN_LIBRARY_PATH points to where libyans.dylib is
located
- make sure PYTHONPATH points to where _simulatormodule.so is
located
Please, note that this build should work on both ppc64 and ppc32
machines (i.e., G4s and G5s).
4) TODO
-------
In no particular order:
- emulation support
- complete python binding
- parallelisation support
- deployment for parallelisation through python
- 802.11 model
- port to other architectures/OSes:
- x86-64 linux
- x86 win32
- simulator performance statistics output. i.e.:
> The core should be instrumented to output statistics on its performance
> (wall time elapsed, number of events processed, max event queue length,
> etc.) Simulator should output this by default to stdout and if run in
> quiet mode should dump to some file like testname-output/testname.log
> or .stat
- A bunch of TODO items are also registered in the bug tracking system:
http://yans.inria.fr/bts/yans/
5) Contributing/Using
---------------------
If you are interested in:
- using this simulator
- reporting a bug
- contributing a new model
Please, consult our website:
http://spoutnik.inria.fr/yans