Está en la página 1de 15

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

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.

1.- Empezaron a descargar Mininet en el siguiente enlace: http://mininet.org/download/

2.- La instalaremos en VirtualBox como las maquinas que ya hemos instalado con anterioridad

Comandos:

Para poder iniciar sesión tendremos como login y contraseña

Login: mininet

Password: mininet

Si ejecutamos

sudo mn -h | more

Podremos revisar los comandos que tenemos en mininet:


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

Con el siguiente comando:

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:

Si deseamos eliminar la topología que hemos creado anteriormente, utilizaremos el comando:

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

veremos los comandos principales que tiene:

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

Ahora ingresaremos a putty con dos ventanas abiertas:

Crearemos la topología en una con

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:

sudo ovs-vsctl show

En la ventana uno podremos revisar la configuración con el siguiente comando

mininet> h1 ifconfig

Para poder realizar un ping, para revisar la conexión:

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

Abrir dos ventanas externas para cada host:

1.- Descargaremos un programa llamado xming putty

2.- Luego de la instalación:

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

3.- Le daremos siguiente en todas las ventanas y verficamos en la barra de inicio

4.- Ingresaremos a Putty y colocaremos la siguiente configuración en X11:

5.- Una vez dentro ingresaremos el siguiente comando:

sudo -E mn

6.- Ingresaremos el comando:

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

8.- Podremos realizar un ping de una maquina a la otra:


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

PRACTICA MININET CON CONTROLADOR RYU

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

Instalación de RYU Controller

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:

sudo apt update

sudo apt install software-properties-common

sudo add-apt-repository ppa:deadsnakes/ppa

sudo apt install python3.8

Si todo ha salido bien, al ingresar el siguiente comando

python –version

deberemos tener la siguiente salida:

Una vez instalado Python vamos a proceder a instalar nuestro controlador

Instalación de RYU Controller

Primero vamos a instalar la librería mediante

pip3 install ryu

A continuación vamos a descargar el repositorio donde se encuentra los scripts que vamos a usar,
para ello usaremos los siguientes comandos:

git clone git clone https://github.com/faucetsdn/ryu

Ahora ingresaremos en la carpeta y haremos un ls para ver su contenido, deberemos observar la


siguiente salida
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

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

Si todo ha salido bien deberemos tener la salida siguiente

En caso de presentar algún error, puede probar los siguientes comandos:

pip install gunicorn==20.1.0 eventlet==0.30.2


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

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

Si todo ha salido correctamente deberemos tener las siguientes salidas:

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

Vamos a poder ver que ahora no podremos hacer ping entre h1 y h2

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:

A continuación en otra terminal escribimos el siguiente comando para acceder al recurso

curl -X PUT http://192.168.100.113:8080/firewall/module/enable/0000000000000001

Nótese que la IP debe ser la de nuestra maquina en mininet

La salida debería ser la siguiente:

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

curl -X POST -d '{"nw_src": "10.0.0.1/32", "nw_dst": "10.0.0.2/32", "nw_proto": "ICMP"}'


http://localhost:8080/firewall/rules/0000000000000001

Teniendo en cuenta que usamos el protocolo ICMP para hacer ping y que este es bidireccional,
también debemos ingresar el siguiente comando:

curl -X POST -d '{"nw_src": "10.0.0.2/32", "nw_dst": "10.0.0.1/32", "nw_proto": "ICMP"}'


http://localhost:8080/firewall/rules/0000000000000001

Para ambos casos deberemos tener la siguiente salida:

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í.

También podría gustarte