Marionnet Network Simulator

Marionnet: Marionnet is a virtual network laboratory: it allows users to define, configure and run complex computer networks without any need for physical setup. Only a single, possibly even non-networked GNU/Linux host machine is required to simulate a whole Ethernet network complete with computers, routers, hubs, switches, cables, and more. Support is also provided for integrating the virtual network with the physical host network. It seems like Marionnet would make an effective patch for the TKL Client. I've used the build notes/script below to install on top of Backtrack 5, which seems to make sense to me for training future network engineers.


#!/bin/bash -ex
#Script by Rik Goldman
# Set Hostname
echo "$HOSTNAME" > /etc/hostname
sed -i "s| \(.*\)| $HOSTNAME|" /etc/hosts

# install Dependencies and Applications
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y \
    -o DPkg::Options::=--force-confdef \
    -o DPkg::Options::=--force-confold \
    install wireshark \
        zenmap \
        irssi \
	xrdp \
	pastebinit \
	chromium \
	aptitude \
	flex \
	libtool \
	bison \
	xterm \
	gawk \
	aptitude \
	graphviz \
	uml-utilities \
	libgtk2.0-dev \
	libglade2-dev \
	bridge-utils \
	uml-utilities \
	x11-xserver-utils \
	rlfe \
	tightvncserver \
	sudo \
        ocaml-native-compilers \
	camlp4\* \
	liblablgtk2-gnome-ocaml-dev \
	graphviz uml-utilities \
	bridge-utils \
	vde2 \
	gcc \
	xserver-xephyr \
	make \
	gettext \
	xterm \
	bzr \
mkdir ~/tmp
cd ~/tmp
bzr get --verbose lp:ocamlbricks/0.90.x ocamlbricks
cd ~/tmp/ocamlbricks
make && make install

cd ~/tmp
bzr get --verbose lp:marionnet/0.90.x marionnet
cd ~/tmp/marionnet
make && make install

mkdir -p /usr/local/share/marionnet/
cd /usr/local/share/marionnet/
tar xfv filesystems-most-recent.tar.bz2
rm -f filesystems-most-recent.tar.bz2

cd /usr/local/share/marionnet/
tar xfv uml-kernel-binaries-most-recent.tar.bz2
rm -f uml-kernel-binaries-most-recent.tar.bz2

echo "chmod a+rw /dev/net/tun" >> /etc/rc.local
echo "/usr/local/sbin/marionnet-daemon.byte &> /dev/null &" >> /etc/rc.local

How does Marionnet look compared to Gini? Or are they not comparable?

GINI (GINI is not Internet) is a toolkit for creating virtual micro Internets for teaching and learning computer networks. It provides an easy to use graphical user interface (GUI) called gBuilder for creating network instances. Using gBuilder, the user can create small to moderate sized networks. Once the network is built, parameters such as subnet addresses are assigned by the user to different components of the network. gBuilder provides support by automatically computing routing tables and automatically assigning IP and MAC addresses.

Using the gBuilder interface, the user can start the network. The starting process creates virtual instancess of each network element and connects them as specified in the network. For example, User-Mode Linux instances are started for machines and custom user-level routing programs are started for routers. By default, all elements of a network run within the machine from where gBuilder was started. However, gBuilder provides facilities to run the elements on a remote server.

Jeremiah's picture

I'm not familiar with either Gini or Marionnet but I was interested so I looked at both projects' websites.  I was able to get a lot better feel of Marionnet than I was of Gini.  Marionnet seems very well thought out from the start and is very focused on the needs of an educational setting.  I'm not sure the same can be said of Gini.  Marionnet topologies are able to be modified while they are running including unplugging "cables" and removing "routers" whereas some other similar projects only allow you to create a topology without realtime modifications.  I'm not sure if Gini can do that.  Marionnet also gives the ability to inject defects into cables or ports.  Overall I'm impressed by what Marionnet can do as well as how it was developed.  More can be read here about that.

I'm curious.  Is there any reason you wouldn't use the marionnet_from_scratch script for installation?  Not that you're method is particularly complicated.  Your method seems to be drawn partially from Marionnet's "Compiling Marionnet from sources" page.

Jeremy Davis's picture

GINI looks ok too. But without actually using them, first impressions from their websites Marionette looks like the gear! In other words: What Jeremiah said! :)

laure's picture


I have a problem when I want to create a configure file and load it in the switch vde.
In fact, I have to create a file a.conf in the real machine where I put the commands vde to create two vlans. I saved it on /etc/marionnet. Then, in marionnet, on vde I use the command load /etc/marionnet/a.conf. It gives me the following line: "1002 No such file or directory", while in vde I can see the file!!
Anyone has a solution please.


Post new comment