Sie sind auf Seite 1von 30

MANUAL DE MININET

Creacin de topologas SDN


Por Bruno Crdenas

CONTENIDO
1. INTRODUCCIN
1.1.- VIRTUALIZACIN
1.2.- SOFTWARE DEFINED NETWORKS
2. OBJETIVOS DEL MANUAL
2.1.- DESCARGA DE LA IMAGEN VM-MININET
2.2.- INSTALACIN DE VIRTUALBOX
2.3.- CONFIGURACIN DE LA MQUINA VIRTUAL
2.4.- USO DEL WIRESHARK
3. CREACIN DE TOPOLOGAS CON CLI
3.1. TOPOLOGA BSICA CON CLI
3.2- DESCRIPCIN DE LAS LNEAS DE COMANDO
3.3.- TOPOLOGA TIPO RBOL CON CLI
4. CREACIN DE TOPOLOGAS CON PYTHON
4.1- TOPOLOGA LINEAL CON PYTHON
4.2- ESCENARIO NAT CON PYTHON

1.- INTRODUCCIN
Conceptos
1.1.- VIRTUALIZACIN (MiniNet)
Virtualizacin es la creacin -a travs de software- de una versin
virtual de algn recurso tecnolgico. Esto puede ser hardware
virtualization, platform virtualization, server virtualization o network
virtualization. MiniNet es un banco de pruebas de red virtual que
ayuda a los investigadores que deseen innovar y estudiantes que le
gustara entender el funcionamiento de las redes informticas.
MiniNet principalmente gana importancia en el estudio e
implementacin de Software Defined Network.

1.2.- SOFTWARE DEFINED NETWORKS (SDN)


SDN es una de las ms emergentes y prometedoras tecnologas de
red en los ltimos aos. Se refiere a una infraestructura de red en la
que el plano de control es desacoplado del plano que enva los
paquetes de datos.
Esta separacin permite la aplicacin del plano de control en un
software externo, entidad llamada controlador, y la implementacin
del plano de datos en el Switch.
El Switch simplemente se centra en la tarea de reenvo. Este enfoque
ayuda en la prueba rpida y implementacin de nuevas ideas.
Tambin aumenta la flexibilidad y agilidad, facilita una mayor tasa de
innovacin, y reduce complejidad, as como el costo de los elementos
de conmutacin.

2.- OBJETIVOS DEL MANUAL


Descarga de imagen de mquina virtual mininet (mininet vm image).
Instalacin de VirtualBox.
Configuracin de la mquina virtual.
Uso del wireshark en la vm (mquina virtual).
Uso de lineas de comandos (CLI) para crear topologas de una manera simple.
Manejo de python para crear topologas ms personalizadas.
*IMPORTANTE
De ahora en adelante vamos a desarrollar los pasos detallados suponiendo que
estamos trabajando sobre un S.O. de Windows ya que es el ms usado
actualmente, de este modo el manual ser ms prctico.
Empecemos ingresando a la siguiente pgina http://mininet.org
En esa pgina encontraremos en la toda la informacin acerca de mininet y todas
las posibilidades que nos deparan con el SDN. Por el momento nos
concentraremos en la instalacin de mininet-VM y el aprendizaje bsico de
topologas de red.
MiniNet es un emulador de red que crea una red de hosts virtuales,
conmutadores, reguladores, y enlaces por lo tanto requiere ser ejecutado sobre
una PC o laptop de media a alta gama para gozar de una mejor performance.

2.1.- DESCARGA DE LA IMAGEN VM-MININET


Paso 1: Nos dirigimos al siguiente enlace:
https://github.com/mininet/mininet/wiki/Mininet-VM-Images
Paso 2: Elegimos la siguiente opcin:

As de simple, una vez descargada la imagen la descomprimimos y seguimos con


el paso de instalacin del VirtualBox.

2.2.- INSTALACIN DE VIRTUALBOX


Paso 1: Ahora nos dirigimos al siguiente enlace:
https://www.virtualbox.org
Paso 2: Descargamos la ltima versin y realizamos una instalacin Tpica.
Paso 3: Una vez instalada la VirtualBox procederemos a configurar la VM descargada
previamente y al abrir el programa se ver la siguiente ventana:

2.3.- CONFIGURACIN DE LA MQUINA VIRTUAL


Paso 1: Una vez ejecutndose VM VirtualBox damos click en el botn Nueva para crear
una mquina virtual, luego procedemos a introducir el nombre que deseemos para
nuestra nueva VM, tipo Linux y versin Ubuntu (32 bit) y le damos en Next.

Paso 2: Cambiamos el tamao de la memoria a 1024 (recomendable para los


requerimientos de trabajo) y luego clickeamos Next.

Paso 3: Elegimos la tercera opcin y buscamos archivo descomprimido previamente


para abrirlo, por ltimo le damos Click en Crear.

Paso 4: Ahora ya tenemos la VM creada:

Paso 5: Es hora de configurar las redes de la VM creada, nos vamos a la pestaa


Archivo donde seleccionamos Preferencias para luego ubicarnos en la opcin
Red:

Paso 6: Ya que estamos en la pestaa de Redes Nat vamos a eliminar NatNetwork


seleccionando la opcin (-).
Paso 7: Ahora volvemos a crear una nueva seleccionando la opcin (+) y luego Aceptar.

Paso 8: Seguidamente regresamos a la ventana principal y seleccionamos el botn


Configuracin y nos vamos a Redes, ya ah nos vamos a la pestaa Adaptador 2
donde habilitamos el Adaptador de Red y seleccionamos Adaptador slo-anfitrin, por
ltimo le damos a OK.

Paso 9: Ahora que ya tenemos lista la VM procedemos a encenderla dndole doble


click y nos logeamos escribiendo mininet para el login y password:

Paso 10: Procedemos a digitar el comando ifconfig para visualizar el informacin de las
interfaces:

Paso 11: A simple vista nos damos cuenta de la ausencia de la interface eth1, para
visualizarla habr que ejecutar el comando inconfig a:

Paso 12: Para asignarle una direccin ip automticamente a eth1 introducimos el


comando sudo dhclient eth1, luego verificamos que su ip es 192.168.56.101:

Paso 13: Para fijar permanentemente sta ip haremos una configuracin en las
interfaces tipo nano (editor) introduciendo la siguiente linea:

A continuacin nos trasladaremos al editor nano y veremos lo siguiente:

Paso 14: Ahora procederemos a editar de la siguiente manera y para guardar los cambios
presionar Ctrl + O, doble Enter y para salir Ctrl + X:

Paso 15: Ahora vamos a instalar una interface grfica para la VM, su importancia es
crucial para usar Wireshark, para ello necesitamos descargar un servidor X Xming del
siguiente Link: http://sourceforge.net/projects/xming/
Paso 16: Realizamos una instalacin tpica y ejecutamos el programa.

Aparentemente no se observar algn indicio de que se est ejecutando Xming,


para verificar esto nos vamos al lado del reloj de Windows y desplegamos los
programas para verificar:

Paso 17: Ahora descargamos PuTTY de la siguiente pgina:


http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
Paso 18: Ejecutamos PuTTY, desplegamos SSH y nos ubicamos en X11 para marcar el
cuadro Enable X11 forwarding.

Paso 19: Ahora nos vamos a la Categora Session e introducimos la ip de eth1 que
obtuvimos en la diapostiva #18, finalmente le damos click a Open:

Paso 20: Se abrir la ventana de PuTTY donde nos logearemos del mismo modo que en
la VM (mininet/mininet):

Paso 21: Una vez logeados procederemos a ejecutar la lnea xterm para abrir la
interfaz grfica donde trabajaremos de ahora en adelante por comodidad:

2.4.- USO DEL WIRESHARK


Paso 1: Para poder visualizar los paquetes OpenFlow que pasan entre los dispositivos
que crearemos pronto es necesario ejecutar el Wireshark, lo haremos escribiendo el
siguiente comando:

Paso 2: Ahora que tenemos abierto el Wireshark nos ubicamos en filtros Filter y
escribimos of, esto permitir visualizar nicamente los paquetes OpenFlow, seguido
de ello hacemos click en Apply:

Paso 3: Nos ubicamos en el botn de Lista de Captura para seleccionar las interfaces
de las que analizaremos el flujo, se abrir una ventana donde marcaremos eth1 y
any, finalmente presionamos Start:

Paso 4: Ahora nos encontraremos en una ventana que capturar los paquetes
OpenFlow, ahora sale vaca pues no hemos empezado a crear flujos an:

3.- CREACIN DE TOPOLOGAS CON CLI


3.1. Topologa bsica con CLI

Paso 1: Ya tenemos todo listo! Empezaremos usando lneas de comandos (CLI) ya que
es la manera ms sencilla de crear topologas en mininet. Ejecutando sudo mn

creamos una topologa muy simple que consta de un Controlador c1, un Switch s1 y dos
hosts h1 y h2.

Paso 2: Ahora vamos a la ventana del Wireshark y podemos observar que aparecen
varios flujos OpenFlow, el anlisis de stos mensajes escapa del manual, ahora
simplemente usaremos el Wireshark para verificar el flujo:

Paso 3: Haremos un ping general para verificar el estado de nuestra topologa, con el
comando pingall, como podemos observar hemos hecho un ping entre cada host, 0%
dropped indica que el total de paquetes llegaron a su destino:

Paso 4: Vamos a la ventana del Wireshark y podemos observar que un flujo nuevo de
paquetes, podemos identificar el ip del controlador c1 127.0.0.1 y de los hosts h1
10.0.0.1y h2 10.0.0.2, estos se generan por defecto:

Es hora de probar una topologa ms complicada, los comandos CLI nos permiten
especificar las caractersticas de la topologa que crearemos, el nmero de
switches, el nmero de host, los ip de cada dispositivo, el ancho de banda de
enlace, etc.

3.2- Descripcin de las Lneas de Comando


Aqu les dejo una lista de las opciones ms importantes para creacin de
topologas en mininet:
--topo=TOPO representa a la topologa de la red virtual, donde TOPO puede
ser:
minimal esta es la topologa por defecto con 1 switch y 2 host.
single,X 1 switch con X host enlazados a l.
lienar,X crea switches conectados de forma linealm cada sw con un
host ligado.
tree,X - crea una topo tipo rbol donde X es el nmero de ramas.
--switch=SWITCH crea diferentes tipos de switches, como:
ovsk este es el switch por defecto Open vSwitch que viene instalado
en la VM.
user es el switch que se ejecuta en el espacio de nombres de software
(es ms lento).
--controller=CONTROLLER donde el controlador puede ser:
ovsc crea un controlador OVS Controller por defecto que viene
instalado en el VM.
nox crea al bien conocido NOX Controller.
remote NO crea un controlador sino que escucha para las conexiones
de controladores externos.
--mac configura direcciones MAC fciles de leer para los dispositivos.
Para ver los nodos de la topologa se ejecuta el comando dump.
Para ver enlaces entre los nodos se ejecuta el comando net.

Ahora vamos a poner en prctica los comandos vistos previamente, pero primero
para salir de la topologa ejecutamos exit y luego para borrarla escribimos el
comando sudo mn c:

3.3. Topologa tipo rbol con CLI

Paso 1: Una vez borrada la topologa anterior, procedemos a crear otra ms compleja
ejecutando la siguiente lnea de comando:

sudo mn --topo tree,depth=2,fanout=3 --mac --switch ovsk --controller ovsc

La novedad aqu es que hemos especificado una topologa tipo rbol (tree), que al
ponerle 2 al valor de depth indicamos que tenga 2 niveles de switches y al ponerle 3 al
valor de fanout indicamos que de cada nodo se abrirn 3 ramas.

De inmediato se crean los dispositivos de la red, los links se muestran entre parntesis
los cuales enlazan switches con switches y switches con hosts.

Paso 2: Luego hacemos un pingall y observamos en el wireshark que efectivamente


hay un flujo de mensajes entre cada host con su respectivo ip:

4.- CREACIN DE TOPOLOGAS CON PYTHON


Hay una forma alternativa de crear topologas en mininet, y es usando Python.
Python es un lenguaje de programacin multiparadigma que nos va a ser de gran
ayuda a la hora de crear las topologas ya que cuenta con libreras especiales
para trabajar con mininet.
En ste manual aprenderemos cmo usar estas libreras que nos permitirn crear
enlaces, dispositivos de red, definir ips, etc.
Antes de empezar les dejo una lista de las principales Clases, Mtodos, Funciones
y Variables que usaremos en nuestra programacin en Python orientada a
Mininet:
Topo: La clase base para las topologas Mininet.
build(): El mtodo para anular en su clase de topologa. Parmetros contructores
(n) sern pasados a travs automticamente por Topo.__init__().
addSwitch(): Agrega un Switch a una topologa y retorna el nombre del Switch
addHost(): Agrega un Host a una topologa y retorna el Hostname
addLink(): Agrega un Link bidireccional a una topologa. Los Links en Mininet son
bidireccionales al menos que se especifique lo contrario.
Mininet: Clase principal para crear y administrar una red.
start(): Inicia tu Red.
pingAll(): Hace un ping entre todos los nodos.
stop(): Detiene tu Red.
net.hosts: Todos los hosts en una red.
dumpNodeConnections(): Deshace conexiones a/de un set de nodos.
setLogLevel( 'info' | 'debug' | 'output' ): establece el nivel de salida por defecto
de MiniNet; Se recomienda 'info' para proveer informacin til.

4.1- Topologa Lineal con Python


Paso 1: Para empezar nos ubicamos dentro de la carpeta examples usando la siguiente
ruta:

Paso 2: Ahora vamos a crear una topologa entrando al editor nano y nombrndola como
gustemos: sudo nano lineal.py.

Este comando nos llevar a un editor de python donde empezaremos a escribir


nuestro cdigo.

Como podemos apreciar el editor de python tiene una lista de opciones en la parte
inferior las cuales se activan presionando la letra indicada al mismo tiempo que el botn
CTRL del teclado.

Paso 2: Vamos a utilizar las libreras mininet.net y mininet.topo de las cuales


importaremos las funciones Mininet y Linear Topo.
Paso 3: Igualamos la variable Linear a la funcin LinearTopo de k=4 la cual nos indica el
nmero de switches lineales que crear dicha funcin.
Paso 4: Igualamos la variable net a la funcin Mininet especificando que la topologa va
a ser igual a la variable Linear previamente definida.
Paso 5: Por ltimo llamamos a las funciones net.start() para iniciar la red, net.pingAll()
para hacer un ping general y net.stop() para finalizar la red.

Paso 6: Luego de escribir este cdigo en el editor procedemos a guardarlo con Ctrl+O,
doble Enter y Ctrl+X.

Paso 7: Regresaremos a la ventana de la VM donde probaremos nuestra topologa


escribiendo el siguiente comando: sudo python lineal.py

Si capturamos los paquetes con Wireshark podremos verificar que


efectivamente se ha realizado un ping general entre los 4 hosts creados con el
python:

4.2- Escenario NAT con Python

Tenemos un escenario que nos indica hacer un NAT para 2 redes de host pares e
impares.

Paso 1: Usaremos el editor de Python para lograr crear el escenario, nos ubicamos en el
editor escribiendo lo siguiente:

Paso 2: Una vez en el editor procederemos a importar las libreras necesarias para el
escenario, son las siguientes:
-mininet.topo
-mininet.net
-mininet.nodelib
-mininet.log
-mininet.cli

Paso 4: Copiamos el siguiente cdigo (la explicacin est en las mismas lneas de
cdigos):

Paso 5: Guardamos todo con CTRL+O y salimos con CTRL+X.


Es hora de probar nuestro escenario.

Paso 6: Ejecutamos nuestra topologa con el siguiente comando:

sudo python BRUNOnateo.py

Paso 7: Ahora vamos a mostrar los nodos y los enlaces con los comandos ya aprendidos:
dump y net

Paso 8: Vamos a comprobar si efectivamente se configur el NAT haciendo ping entre


los hosts de la misma LAN y entre LANs distintas:

Paso 9: Como era de esperarse, h1 y h3 estn en la misma LAN (de los host impares),
pero veamos lo que ocurre cuando hacemos ping entre los host de la LAN de host
impares y pares:

Das könnte Ihnen auch gefallen