Skip to content

mathieu-lacage/yans

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