/nab

OCaml mobile network simulator I wrote in grad school. Vintage!

Primary LanguageOCaml

Warning: This was written eons ago and is not maintained, and has not been touched since! Only here for old times sake. 


	 
	      Network in a Box  (NAB) 

		http://nab.epfl.ch


**             
** PREREQUISITES
**             

To compile and run NAB, you must have ocaml installed. The latest version of
ocaml (3.08.3) is required. The official site to get ocaml is 
http://caml.inria.fr. 

You will also need gsl (http://www.gnu.org/software/gsl/), and the ocaml bindings 
to it (http://oandrieu.nerim.net/ocaml/gsl/).
 
If you want to to build and use the gui functionality, you must install
lablgtk 1.2. 
Lablgtk is available from http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html.

Another, probably simpler option to install ocaml and lablgtk, is to use GODI - 
see http://www.ocaml-programming.de/godi/.


**             
** DOCUMENTATION
**             

The html documentation and a tutorial are located under doc/ and can be 
browsed starting from doc/index.html.

More detailed documentation of the internals can be generated from the 
source code with the ocamldoc tool - see COMPILING below.

For pointers on getting started in ocaml, please see the documentation 
in doc/index.html

**             
** SOURCE LAYOUT                                              
**             

  sim/               -> simulator core
  sim/interfaces/    -> core class and module interfaces
  sim/base/          -> implementation of core functions
  sim/pkt/           -> packet representations and related functions
  sim/mob/           -> mobility and related functions
  sim/mac/           -> mac layers and related functions

  proto/             -> protocol agents
  proto/ler          -> last encounter routing (EASE/GREASE)
  proto/aodv         -> AODV
  proto/grep         -> GREP

  gui/               -> GUI-related code
				       
  lib/               -> Helper libs 
  lib/contrib        -> Helper libs from external sources (GPL-level licenses)

  doc		     -> Documentation (see above)


**
** COMPILING
**

To generate code documentation: (will be rooted at doc/gen/index.html)
[Note: don't worry about warnings when building doc!]

	make htmldoc

To compile an interactive toplevel:

	make nab-top

To compile an interactive toplevel with gui support linked in:
(requires lablgtk, see PREREQUISITES above)

	make nabviz-top

To compile NAB to run script foo.ml in batch mode:
(foo.ml is assumed to be in the scripts/ directory)

	make SCRIPT=foo.ml nab

If foo.ml uses gui libraries:

	make SCRIPT=foo.ml nabviz

To compile as native code (runs faster), pass OPT=y flag to make, as in

	make OPT=y SCRIPT=foo.ml nabviz

Note: interactive toplevels cannot be compiled to native code.


**
** CONTRIBUTING
**

If you have developed code (protocols, mac layers, mobility models, ..) 
that you would like to see integrated into the nab distribution, 
please contact henri.dubois-ferriere {AT} epfl.ch