Lisp Educational Network Simulator (LENS)

LENS provides a Common Lisp environment for network simulations. It includes a set of packages, classes and libraries to represent network elements and protocols. Simulations may be configured and run interactively in the :lens-user package which also includes a number of interfaces to assist in setting up simulations and analysing the results.

The architecture is based on that of the Georgia Tech Network Simulator (GTNetS) which was written in C++ and NS-2 written in C++ and Tcl, however, where possible, advantage has been taken of the features of Common Lisp to simplify and provide higher level abstractions. Typically the LISP version requires about a fifth or less of the amount of code to achieve the same results. Additionally Common Lisp provides an interactive environment with complete object introspection and access to the programming language itself making it easier to do explorative simulations and simulation development without the need of the complexity of mixing langages (as per NS2). In LENS the simulations are run in a separate thread to the normal Common Lisp read-eval loop so the user can probe or modify the simulation even while it is running.

It is hoped that LENS will be easier to develop for than other network simulators and will be more suitable as a tool for teaching network principles.

LENS is still in early stages of development and contributions are welcome. The main framework exists with sufficient implementation to do network simulations using UDP and point-to-point links with static or manual routing. It is available as a tar archive or the latest development version may be retrieved using the GIT Version control system using

git clone http://www.jarw.org.uk/lisp/lens.git

It is dependant on the following additional Common Lisp libraries: