¿Como emular una red completa con qemu?

Inicio de sesión desde local en OpenDomoEn este manual explicaremos como simular una red completa con qEmu; de este modo podremos comprobar el comportamiento de un sistema multi-agente funcional en nuestro propio PC sin necesidad de configurar equipos reales, ahorrando mucho tiempo.

Como pre-requisito, es necesario haber realizado satisfactoriamente una emulación individual, tal como es explica en el manual "como probar OpenDomo". Para llevar a cabo la emulación hemos creado un script que facilita en gran manera esta tarea, y realiza las verificaciones necesarias, llamado net_start.sh. Si has descargado el código fuente de OpenDomo desde el repositorio, lo encontrarás en el directorio opendomo-distro. Si no, puedes descargarlo aquí.

 

Funcionamiento del script

El script emplea un directorio llamado "platforms" para guardar toda la información relacionada con la red a simular. El script lanzará un simulador por cada archivo ISO encontrado, por orden alfabético, identificando cada uno de ellos con un número,  empezando por 10.

Para crear un nuevo equipo en esta red deberemos copiar un archivo ISO dentro (o crear un enlace simbólico a él). Es recomendable emplear prefijos numéricos para determinar el orden de forma clara, y también nombres descriptivos para los enlaces simbólicos, para así poder identificar cada equipo una vez tengamos varios funcionando.

Ejemplo 1: Red virtual de dos nodos

En el siguiente ejemplo lanzaremos una red con dos nodos OpenDomo, uno con la versión 0.7.8 publicada y otro con la versión que estamos probando en nuestro equipo:

$ mkdir platforms
$ ln -s opendomo-unlabeled-486.iso platforms/S10opendomo-test.iso
$ ln -s opendomo-0.7.8-486.iso platforms/S11opendomo-0.7.8.iso
$ ./net_start.sh

$ ./net_start.sh kill

Si queremos configurar nuestra red, vamos a necesitar almacenaje en por lo menos uno de los nodos. Si queremos añadir un disco duro a nuestro primer nodo (código 10) simplemente tendremos que crear el archivo imagen con el nombre drive10.hdb, del tamaño deseado y adecuadamente formateado.

Ejemplo 2: Conectar un disco

En el siguiente ejemplo partimos del sistema de dos nodos creado en el ejemplo anterior, añadiendo un disco duro de 5MB al primer nodo.

$ dd if=/dev/zero of=platforms/drive10.hdb count=10000
$ mkfs.ext2 platforms/drive10.hdb
$ ./net_start.sh

$ ./net_start.sh kill

Una forma alternativa de hacer lo mismo:

$ ./net_start.sh adddisk 10 5

El script no soporta únicamente la emulación de discos internos, sino que también permite añadir discos flexibles y pendrives, empleando las extensiones fda y usb respectivamente.

Ejemplo 3: Configuración de disco

En el siguiente ejemplo configuraremos el disco del primer agente como unidad de configuración, de modo que disponga de persistencia; también le asignaremos una etiqueta al disco para reconocerlo.

$ ./net_start.sh cfgdisk platforms/drive10.hdb
CONF_DEVICE yes
LABEL agent10disk

NOTA: Deberemos pulsar Ctrl+D para finalizar la entrada de texto.

 

Casos prácticos

La simulación de una red completa entraña cierta complejidad, pero nos permite conseguir interesantes resultados que, de otro modo, nos obligarían a montar una red física, con todo su coste y tiempo de instalación. Una vez conocido el funcionamiento del script net_start.sh, los ejemplos serán más entendedores:

  1. Crear una red virtual OpenDomo de dos nodos, en un minuto!
  2. Haciendo amigos - FreeNAS entra en la red