# Marionnet

Marionnet es un laboratorio de redes virtual. Permite a los usuarios definir, configurar y simular redes de computadores complejas sin la necesidad de equipos físicos como routers, switches o hubs. Solo un computador con sistema operativo GNU/Linux, aun así sin conexión a red, podrá simular toda una red Ethernet completa con computadores, routers, switches, hubs, cables y más. También hay soporte para integrar la red virtual con la red física a la que está conectado el computador.

## Historia

Marionnet nació en abril de 2005 como un simple programa con interfaz de texto a Netkit, escrito en OCaml por Jean-Vincent Loddo en Paris 13 University para su propio curso de redes de computadoras.
Desde ahí, el código fue completamente reescrito y rediseñado en septiembre de 2005 con el objetivo de eliminar la dependencia con Netkit y para facilitar la construcción de una Interfaz Gráfica, parcialmente construida en el lenguaje de programación DOT.
La arquitectura fue luego extendida y el sistema fue más general cuando Luca Saiu se unió el proyecto en 2007, contribuyendo particularmente a los aspectos de reconfiguración dinámica.
El sistema está en constante uso en varias universidades de Francia Metropolitana y otros países.

### Desarrollo Actual

Marionnet ha alcanzado un estado bastante estable y está siendo utilizado para enseñar redes en varias universidades alrededor del mundo. El desarrollo actual está centrado en hacer el sistema más fácil de utilizar por el usuario final promedio, con un énfasis particular en la documentación. La internacionalización de Marionnet ha sido hecha con GNU Gettext.
Marionnet ha sido presentado en dos conferencias internacionales de Ciencias de la Computación, muchos eventos en Francia y en FOSDEM.
Marionnet está punto de ser incluida como paquete de software en Debian GNU/Linux.

## Diseño

Por encima del computador con GNU/Linux, la emulación de las máquinas virtuales (también llamadas máquinas invitadas y el equipo que las contiene máquina anfitrión) se logra a través de la tecnología de User Mode Linux que permite ejecutar muchos kernels de Linux en espacio de usuario como procesos convencionales.
El proyecto VDE - Virtual Distributed Ethernet es responsable de interconectar las máquinas virtuales en una red virtual, cuyo propósito es emular los cables y dispositivos como hubs y switches, permitiendo también introducir perturbaciones en la comunicación.
Por encima de esta red emulada a bajo nivel, Marionnet actúa como un administrador coherente y como interfaz gráfica.
Marionnet es un ejemplo de una compleja aplicación concurrente escrita en un lenguaje funcional, usando técnicas relativamente avanzadas de programación.

## Características

* Reconfiguración dinámica de la red.
* Compatilibilidad binaria completa con software GNU/Linux a nivel de usuario. Esto significa que muchos programas instalables en un computador con GNU/Linux pueden ser instalados en una máquina virtual de Marionnet. Existen programas no instalables porque dependen de configuraciones específicas de hardware que no están disponibles en las máquinas virtuales tales como aceleradoras de video o tarjetas de sonido.
* Posibilidad de usar el servidor X para ejecutar aplicaciones gráficas como Firefox, Wireshark, etc.
* Sistemas de archivo Copy-on-write, permitiendo economizar espacio en disco.
* Dispositvo "gateway" para conectar las redes virtuales a la red "real" (física) a la que está conectado el equipo anfitrión o host.
* Interfaz gráfica de usuario (GUI) intuitiva con el diagrama de red de computadores dinámicamente actualizado.

## Rendimiento

Marionnet ha mostrado buen rendimiento en la simulación de redes complejas (~15 máquinas virtuales) incluso en máquinas relativamente antiguas, permaneciendo muy estable. El principal aspecto es el uso de disco por las máquinas virtuales, que depende de la distribución que se elija; Pinocchio es la distribución que se desarrolló para satisfacer las necesidades más generales del usuario final.

## Usos

El principal objetivo de Marionnet es la enseñanza de redes de computadoras en laboratorios universitarios, pero también podría ser una herramienta valiosa para la enseñanza en colegios.
A pesar de ser orientado a la enseñanza, Marionnet puede ser usada para emular redes para propósitos de prueba o desarrollo. Es fácil y rápido de configurar incluso con redes complicadas, teniendo la posibilidad de revertir los cambios hechos en los sistemas de archivo, hecho que hace a Marionnet muy flexible.