SDN
Las redes definidas por software (SDN) son un enfoque arquitectónico de la red que permite a la
red ser controlada de manera inteligente y central, o "programada", utilizando aplicaciones de
software. Esto ayuda a que los operadores gestionen toda la red de manera constante e integral,
independientemente de la tecnología de red subyacente.
Mininet es un emulador para el despliegue de rede sobre los limitados recursos de un ordenador
sencillo simple o máquina virtual [6]. Éste utiliza el kernel de Linux y otros recursos para emular
elementos de la SDN como el controlador, los switches OpenFlow y los hosts. A continuación se
describen las alternativas para instala y utilizar Mininet, las topologías disponibles, formas de
acceder a controladores remotos diferentes al que viene por defecto, entre otras pautas para la
utilización de esta herramienta.
2.- La instalaremos en VirtualBox como las maquinas que ya hemos instalado con anterioridad
Comandos:
Login: mininet
Password: mininet
Si ejecutamos
sudo mn -h | more
sudo mn
Se nos crea dos hosts, un controlador y un switch, que es una de las topologías más rápidas que se
crean:
sudo mn -c
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
Ingresamos a
sudo mn
help
Vamos a ver los nodos que están creados dentro de la red con
mininet> net
Con el siguiente comando, podremos visualizar los nodos son los que existen:
mininet> nodes
Dump no permite revisar la dirección ip que tiene el host, del swtch y el controlador:
mininet> dump
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
sudo mn
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
En la otra ventana colocaremos el comando, para poder revisar el switch que se acaba de crear,
conexión y el puerto:
mininet> h1 ifconfig
mininet> h1 pin -c 1 h2
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
Abriremos XmingLaunch
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
sudo -E mn
mininet> xterm h1 h2
7.- Se abrirán dos ventanas uno para cada host, donde podremos revisar sus direcciones ip
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
Descripción
La siguiente practica tiene como fin usar la VM de mininet conjuntamente con un el
controlador de red RYU basado en Python, para ello vamos a necesitar otra máquina virtual
corriendo el SO de Ubuntu Desktop 20.04 donde se instalará el controlador.
RYU
RYU es un controlador de redes definidas por software (SDN) que fue seleccionado por la
ESPE para ser evaluado en el proyecto. Provee componentes de software e interfaces API –
application program interfaces- que facilitan el desarrollo de la administración y control de
la SDN.
Desarrollo de la práctica
Preparación en Ubuntu Desktop
Para esta practica se recomiendo instalar GuestAdditions para poder compartir el portapapeles
entre la maquina anfitrión y la máquina virtual. Para más información puede hacer clic aquí.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
Para la instalación de RYU primero vamos a verificar que versión de Python tenemos instalado en
nuestra VM, se recomienda tener instalado la verion 3.6 o superior. En caso de tener un versión
inferior puede hacer clic aquí para actualizar la versión en caso de no tener instalado aun Python,
lo procederemos a instalar con los siguientes comandos:
python –version
A continuación vamos a descargar el repositorio donde se encuentra los scripts que vamos a usar,
para ello usaremos los siguientes comandos:
A continuación, ingresaremos en el directorio de /ryu/app/ una vez ahí vamos a correr el ejemplo
simple_switch_rest_13.py con el siguiente comando
ryu-manager simple_switch_rest_13.py
Preparación en Mininet
Primero ingresamos mediante Putty, una vez dentro de la terminar vamos a inicializar nuestra
topología especificando que vamos a utilizar un controlador remoto, donde especificaremos la IP
de nuestra VM de Ubuntu, para ello ingresaremos el siguiente comando:
sudo -E mn --controller=remote,ip=192.168.100.112
En mininet:
A continuación vamos hacer un ping del host 1 al host 2, observaremos las siguientes salidas:
En mininet:
En Ubuntu:
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
Ahora vamos a utilizar otro script con el cual utilizaremos el concepto ya aprendido sobre API-REST
para poder añadir reglase de firewall mediante métodos http. Para ello vamos a utilizar la app
rest_firewall.py.
Para ello pararemos la ejecución de la anterior aplicación con CTRL+C así mismo en mininet
debemos de borrar la topología con sudo mn -c
A continuación vamos a añadir las reglras utilizando métodos http, para ello vamos a utilizar la
herramienta curl de Linux, para instalarla basta con escribir el siguiente comando:
sudo apt install curl
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
Una vez hecho hesto lo primero que vamos hacer es habilitar el firewall mediante el método PUT,
para ello debemos fijarnos en el dpid que nuestro script de Python arroja:
Esta salida nos indica que nuestro firewall esta habilitado, ahora mediante el método POST vamos
a añadir reglas a nuestro firewall para que puede haber conexión entre el h1 y h2 de nuestra
topología en mininet. Primero debemos saber las ip de nuestro h1 y h2. Para ello en la consola de
mininet debemos escribir h1 ifconfig y lo mismo para h2.
Una vez que sepamos las IP de nuestros host, escribiremos los siguientes comandos
Teniendo en cuenta que usamos el protocolo ICMP para hacer ping y que este es bidireccional,
también debemos ingresar el siguiente comando:
Una vez hecho esto podemos comprobar que podemos hacer ping entre h1 y h2
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE TELECOMUNICACIONES- Modulo: Comunicaciones Avanzadas
Docente: Ing Santiago Manzano
Para más información se puede revisar la documentación de RYU puede visitarlo haciendo clic
aquí.