Implementación de Redes SDN con OpenDaylight
Implementación de Redes SDN con OpenDaylight
La convergencia de los recursos de red físicos y virtuales en una sola entidad administrativa
es lo que define la virtualización de redes. Su objetivo principal es proporcionar un entorno
compartido seguro y eficiente para que los usuarios y sistemas puedan utilizar recursos de
red. La virtualización de redes busca mejorar la productividad y eficiencia al automatizar
tareas y permitir la gestión centralizada de archivos, imágenes y programas desde un único
lugar físico.
En el entorno de virtualización de redes, se establecen varios objetivos de diseño:
1
TECNOLOGÍAS
Una VLAN (Red de área local virtual o LAN virtual) es un método para crear redes lógicas
independientes dentro de una misma red física.
Gracias a las redes virtuales (VLAN), es posible liberarse de las limitaciones de la
arquitectura física (geográficas, de direccionamiento, etc.), ya que se define una
segmentación lógica basada en el agrupamiento de equipos según determinados criterios
(direcciones MAC, número de puertos, protocolo, etc).
Existen varios tipos de VLAN que son:
Las VLANs están definidas por los estándares IEEE 802.1D, 802.1p, 802.1Q y 802.10.
2
Redes Virtuales Privadas (VPN)
Una red privada virtual VPN de las siglas en inglés de Virtual Private Network, es una
tecnología de red que permite una extensión segura de la red local (LAN) sobre una red
pública o no controlada como Internet. Permite que la computadora en la red envíe y reciba
datos sobre redes compartidas o públicas como si fuera una red privada con toda la
funcionalidad, seguridad y políticas de gestión de una red privada.
Básicamente existen cuatro arquitecturas de conexión VPN:
Las redes activas (Active Networking) orientadas hacia el control de la red, conceptualizando
una interfaz de programación (API) que expone los recursos (procesamiento,
almacenamiento, colas de paquetes, etc) en nodos de red individuales y soporta la
construcción de funcionalidades personalizadas para aplicar a un subconjunto de paquetes
que pasan a través del nodo.
3
REDES OVERLAY
Una red overlay es una red virtual de nodos enlazados lógicamente, que está construida sobre
una o más redes subyacentes. Su objetivo es implementar servicios de red que no están
disponibles en la red subyacente. Las redes superpuestas pueden apilarse de forma que
tengamos capas que proporcionen servicios a la capa superior.
REDES ACTUALES
• Complejidad: Para satisfacer las demandas cada vez más exigentes de los usuarios,
se han desarrollado numerosos protocolos de red que ofrecen mejor rendimiento,
confiabilidad y seguridad más estricta. Sin embargo, estos protocolos se han diseñado
de manera aislada, lo que significa que cada solución está destinada a abordar un
problema específico, lo que limita los beneficios de las soluciones generales. Esta
complejidad dificulta la adaptabilidad dinámica de las redes a los cambios en el tráfico
de las aplicaciones, lo que resulta en redes estáticas. La asignación de recursos se
vuelve manual, ya que es necesario configurar equipos de diferentes fabricantes y
ajustar parámetros según cada sesión o aplicación.
• Inconsistencias en las políticas: Implementar políticas que abarquen toda la red
requiere la configuración de miles de mecanismos y dispositivos, lo que puede
resultar en incumplimiento de regulaciones o configuraciones erróneas. Esto deja a la
red vulnerable y expuesta a riesgos de seguridad y calidad de servicio inconsistentes.
• Falta de escalabilidad: Con la incorporación de cientos o miles de dispositivos de
red, la gestión y configuración manual se vuelve cada vez más complicada. La red no
puede escalar de manera eficiente para adaptarse al crecimiento y los cambios en la
infraestructura.
• Dependencia de los fabricantes: La implementación de nuevas capacidades y
servicios en respuesta a las demandas de los usuarios se ve obstaculizada por los
ciclos de desarrollo de los fabricantes y la falta de interfaces estandarizadas. Esto
limita la capacidad de la red para adaptarse rápidamente a entornos específicos y
aprovechar las últimas innovaciones tecnológicas.
4
MININET
Es una plataforma de emulación de red, que crea redes definidas por software (Tipo
OpenFlow por ejemplo) totalmente escalables (cuyas dimensiones pueden ser de hasta
cientos de nodos, según la configuración deseada) que están contenidas en una PC que utiliza
procesamiento Linux.
Mininet permite crear, interactuar, personalizar y compartir de forma rápida un prototipo de
red definido mediante software al mismo tiempo proporcionar un camino fácilmente
adaptable para la migración a hardware.
Los atributos en los que se basa Mininet son los siguientes:
5
¿QUÉ ES OPENDAYLIGHT?
OpenDaylight ofrece una solución integral que centraliza el control de la red, posibilita la
programación y automatización, y facilita el desarrollo de aplicaciones SDN avanzadas sobre
una plataforma abierta y ampliamente adoptada en la industria.
MODELO DE SERVICIOS
6
OpenDaylight sigue un modelo de servicios que define diferentes capas y componentes para
organizar su arquitectura. Este modelo consta de las siguientes capas principales:
Capa de Infraestructura:
• Esta capa proporciona los servicios fundamentales y las abstracciones básicas para
interactuar con los dispositivos de red subyacentes.
• Incluye componentes como la interfaz de controlador del sur (Southbound plugins)
que implementan protocolos como OpenFlow, OVSDB, NETCONF, etc.
Capa de Plataforma:
• En esta capa se encuentran los servicios centrales y comunes que se basan en la capa
de infraestructura.
• Incluye servicios como el Modelo de Datos (MD-SAL), servicios de topología,
estadísticas, entre otros.
• El Modelo de Datos (MD-SAL) es un componente clave que proporciona una
representación coherente de los datos de red y una forma estandarizada de acceder y
manipular esos datos.
• Aquí se encuentran los servicios de red específicos que se construyen sobre los
servicios de la plataforma.
• Incluye servicios como gestión de flujos, ingeniería de tráfico, virtualización de redes,
entre otros.
• Esta capa superior alberga las aplicaciones de red y los componentes de orquestación.
• Las aplicaciones pueden consumir los servicios de red expuestos por las capas
inferiores y realizar tareas de orquestación y automatización de red.
Northbound APIs:
7
• OpenDaylight proporciona APIs abiertas (Northbound APIs) que permiten a
aplicaciones externas interactuar con el controlador y consumir sus servicios.
• Ejemplos de estas APIs son las APIs REST, YANG, entre otras.
COMPONENTES
OpenDaylight está compuesto por varios componentes clave que trabajan juntos para
proporcionar una plataforma de controlador SDN completa. Estos componentes son:
4. Servicios de Red:
• Son componentes que implementan funcionalidades específicas de red, como
gestión de flujos, ingeniería de tráfico, virtualización de redes, etc.
• Se basan en los servicios proporcionados por el MD-SAL.
•
8
5. Aplicaciones de Red:
• Son programas de alto nivel que consumen los servicios de red expuestos por
OpenDaylight.
• Permiten a los desarrolladores crear soluciones personalizadas para
automatización, monitoreo y gestión de redes.
9
ARQUITECTURA CONTROLADOR OPENDAYLIGHT
10
GUIA DE INSTALACIÓN
La máquina virtual es lo más importante de este laboratorio, por lo cual se ha decidió instalar
una de las más recomendadas, la cual es VirtualBox, una aplicación creada por la empresa de
Oracle, la cual nos ayudara a emular una maquina independiente en nuestra computadora.
Para instalar el VirtualBox, es necesario descargar el instalador de su página, el cual pueden
encontrar a continuación
$ [Link]
Una vez que pulsen el enlace y los redireccione a la página, descargaran el instalador que va
de acuerdo con su sistema operativo, en este caso el sistema operativo que se está usando es
el Windows 11, por lo cual el instalador que se necesita para ejecutar el sistema es el del
Windows, el cual se procede a descargar y arrojara un archivo de instalación.
11
Después de ingresar a la página oficial en el cual descargaran la imagen .ISO del apartado
que dice “Desktop Imagen”.
Este es el archivo que se utilizara para configurar nuestro entorno Linux, en la máquina virtual
de VirtualBox, ahora procederemos a dirigir a nuestra máquina virtual y en el apartado de
arriba, nos dirigimos al botón que dice “Nueva” y lo pulsamos:
12
Figura 3. Creación de Máquina Virtual
13
4. Pasamos al siguiente apartado en donde configuraremos la Memoria Base y el
Procesador en este caso asignaremos 5000 MB de memoria base y 6 CPUs, puede
dejarse por “default”, si gustan.
14
6. Por último, se nos mostrara en la siguiente ventana un breve resumen de cómo se
configuro toda la máquina virtual y le daremos al botón de “Terminar”.
Teniendo el archivo ISO descargado, se proceder a crear una máquina virtual en el VirtualBox
con él, obteniendo el siguiente resultado.
15
Figura 8. Entorno VirtualBox (Maquina Creada)
Posterior a la creación de la maquina es necesario abrirla para que se hagan todas las
configuraciones del sistema alojado dentro de ella, debido a que al ser un espacio virtual que
recrea un computador, se tiene que hacer las configuraciones de dicho sistema como si se
estuviera instalando en un computador normal.
Ahora, al entrar se arrojará al inicio del sistema operativo Ubuntu, aquí se encontrará que se
pide una contraseña para acceder, esto se debe a que VirtualBox al crear una máquina virtual
esta es generada con un usuario y contraseña definidos.
Para acceder al escritorio de trabajo, simplemente se escribirá la contraseña definida por uno
en el momento de crear la máquina virtual, en caso tal que al momento de la creación todo se
dejara por defecto, entonces la contraseña que tendrá asignada la maquina será “changeme”,
la cual permitirá posterior a la escritura de ella acceder al escritorio donde se le dará siguiente
a todo sin seleccionar nada para que el sistema trabaje en un entorno limpio.
16
Figura 10. Ubuntu Escritorio
En esta parte se hará unas ultimas configuraciones para que el sistema pueda correr las
utilidades necesarias para el funcionamiento de Opendaylight.
17
Figura 11. Consola del Sistema
Por último, se agregará un nuevo superusuario o usuario root dentro de las credenciales del
sistema, esto es necesario para poder hacer uso de varios comandos que se necesitaran en la
instalación de OpenStack.
El comando “su” se utiliza para cambiar al usuario superusuario (root) en un sistema Linux.
Al ejecutar este comando, se pedirá que se ingrese la contraseña del superusuario. Una vez
que se autentique, el prompt del sistema cambiará y se tendrá privilegios de superusuario, lo
que permite realizar operaciones que requieran permisos elevados.
Después, les pedirá escribir una contraseña la cual es la misma con la que se accede al
escritorio (changeme) y posteriormente se procederá a escribir el siguiente comando:
$ nano /etc/sudoers
Una vez aplicado el comando, esto los redireccionará a un apartado donde se buscará la
siguiente línea:
#User privilege specification
18
Aquí se encontrará el apartado donde se va a agregar el nuevo superusuario, para esto, se
hará un espacio debajo del superusuario ya existente y se agregará la siguiente línea:
vboxuser ALL=(ALL:ALL)ALL
Aquí cabe mencionar que se están usando parámetros que vienen por defecto en el
VirtualBox, en caso de que estos se encuentren diferentes, como por ejemplo el usuario no
sea “vboxuser”, sino cualquier otro diferente a este, es necesario cambiarlo por el que se
designó por ustedes. El resultado final sería el siguiente:
Después de efectuar todo, se procede a salir y guardar los cambios con la siguiente
combinación de teclas:
$ ctrl + x
$ Y (Para aceptar los cambios)
$ Tecla enter
19
PREPARACIÓN DEL AMBIENTE
Para esta parte es necesario hacer ciertos detalles, por el cual nos dirigiremos al apartado
principal de la máquina virtual y ahí le daremos “click derecho” a la maquina virtual creada
anteriormente y nos dirigiremos al apartado de “setting” o “configuración”.
20
Figura 14. Entorno de Configuración Máquina Virtual
Una vez aquí dentro nos dirigiremos al apartado de “network” o “red” como se muestra a
continuación:
21
Figura 15. Entorno de Configuración Máquina Virtual (General)
Estas opciones no serán iguales para todos y puede que aparezcan más de una, lo importante
es que una vez se despliegue las opciones, la opción de “Ethernet Connection” o “Conexión
por Ethernet” es para computadores conectados directamente por cable al router y la
“Conexión Wi-Fi” son para aquellos que están conectados de manera inalámbrica, es
importante elegir la opción en base a esto, después de haber explicado esto, se procederá a
elegir la primera opción ya que el computador donde se trabaja actualmente, está por
conexión directa.
Después de haberse hecho esto, se procederá a abrir nuevamente la máquina virtual, si tenían
la máquina virtual abierta cuando hicieron esta parte será necesario que la reinicien, posterior
a esto será necesario entrar a la consola, como se puede ver a continuación:
22
Figura 17. Consola del Sistema
Ahora bien, otro elemento que se usara en este laboratorio va a ser la herramienta PuTTY, la
cual nos ayudara a hacer las pruebas con el framework Opendaylight, para esto, nos
dirigiremos al siguiente enlace que nos redireccionara a la página donde se descargara el
aplicativo.
$ [Link]
23
Figura 18. Página web PuTTY
Esta opción nos redirigirá a la siguiente página donde se presionará el link de descarga con
el que instalaremos el PuTTY, como se muestra a continuación:
24
Figura 20. Entorno PuTTY
PREPARACIÓN DEL AMBIENTE.
Para correr Opendaylight, se deberá tener abierta la máquina virtual con el sistema operativo
instalado anteriormente y sobre todo debidamente configurado ya que esto ayudará a no tener
inconvenientes durante su instalación.
Este comando servirá para actualizar las listas de paquetes y luego mejorar todos los paquetes
a las últimas versiones sin pedir confirmación.
25
Figura 22. Consola del Sistema (Actualización de Paquetes)
Cabe destacar que en algunas ocasiones el sistema pedirá una verificación, ya que son
cambios y actualizaciones que se están haciendo a nivel sistemático, esta verificación es pedir
nuevamente la contraseña de acceso al sistema.
Todos estos cambios y actualizaciones que se hagan se pueden verificar con el comando:
$ sudo apt list --upgradeable
Si todos los cambios fueron efectuados de manera correcta, mostrara un “Listo” (Done) como
respuesta.
26
Figura 23. Consola del Sistema (Verificación de paquetes)
Este comando actualiza la lista de paquetes disponibles para instalar desde los repositorios
configurados en tu sistema.
27
Figura 24. Consola del Sistema (Actualización de paquetes 2)
Este comando se usa para instalar el servidor OpenSSH en sistemas Ubuntu, después de
ejecutar este comando e instalar OpenSSH, tu sistema estará configurado para aceptar
conexiones SSH entrantes, lo que te permitirá conectarte de forma segura a tu sistema desde
otra computadora a través de la red y realizar diversas tareas, como transferir archivos de
forma segura o ejecutar comandos en el sistema remoto
28
Figura 25. Consola del Sistema (Instalación de Openssh server)
Este comando se usa para proporcionar un conjunto de herramientas de red como “ifconfig”,
“netstat”, “route”, entre otros.
$ sudo apt install net-tools
29
Figura 26. Consola del Sistema (Instalación net-tools)
Después de esto, escribiremos el siguiente comando que será esencial para continuar con el
laboratorio:
$ sudo systemctl status ssh
Este comando se utiliza para verificar el estado del servicio SSH (Secure Shell) en sistemas
que utilizan el sistema de inicio systemd, como muchas distribuciones basadas en Linux.
30
Figura 27. Consola del Sistema (Verificación del estado de servicio ssh)
Para cerrar aquí simplemente apretamos la combinación de “control + c”, que nos devolverá
al apartado donde podemos seguir escribiendo el resto de los comandos.
Ahora, para continuar, procedemos a escribir el siguiente comando:
$ ip a
Este comando se utiliza para mostrar información detallada sobre las interfaces de red del
sistema.
Una vez escrito el comando, procedemos a buscar la interfaz de red que necesitamos, en este
caso se está usando una interfaz de red la cual en este caso para la red que se está usando es
la siguiente:
Esta va a variar de acuerdo con la red de cada uno. Una vez tengamos nuestra interfaz o
mascara de red, procedemos a abrir el programa PuTTY y ahí dentro se procede a escribir la
máscara de red que arrojo el comando anterior como se muestra a continuación:
31
Figura 29. Entorno PuTTY (Ingreso de IP)
Esto nos abrirá una ventana en donde si aparece un anuncio se procede a darle en “Aceptar”
y posterior a esto terminaremos en la siguiente ventana:
En esta ventana, se nos pedirá un “Login” y un “Password”, estos dos son los mismos con
los que accedemos al sistema operativo en la máquina virtual, los cuales, si se dejan por
default seria “vboxuser” y “changeme”, de lo contrario son los que le asignaron ustedes
mismos, una vez escrito esto les arrojara lo siguiente:
32
Figura 31. Entorno Remoto PuTTY (Escritorio)
Una vez aquí, procedemos a hacer prácticamente el mismo proceso que se hizo con el sistema
operativo anteriormente, para esto se empezara escribiendo primero el siguiente comando:
$ sudo apt-get update
Se nos pedirá de igual forma una contraseña la cual es la misma contraseña que se ha
utilizado, en este caso “changeme” y luego arrojara lo siguiente:
33
Figura 32. Actualización de Paquetes PuTTY
Este comando se utiliza para instalar varios paquetes en sistemas basados en Linux, Ubuntu,
los cuales son “unzip”, “vim” y “wget”.
Después de escribir el comando tiene que arrojar algo como lo que se muestra a continuación:
34
Posterior a esto, procedemos a escribir el siguiente comando:
$ sudo apt-get -y install openjdk-8-jre
Este comando se utiliza para instalar la versión 8 del entorno de ejecución de Java (JRE) de
OpenJDK en sistemas como Ubuntu.
35
Figura 34. Instalación de OpenJDK
Este comando se utiliza para seleccionar la versión de Java que deseas utilizar entre las
diferentes versiones instaladas en tu sistema.
36
Posterior a esto, procedemos a buscar el archivo modificado en nuestro sistema con el
siguiente comando:
$ source ~/.bashrc
Este comando se utiliza para imprimir en la terminal la ruta del directorio donde está instalado
el JDK.
Nos mostrara lo siguiente:
Ahora, después de haber hecho esto, se procede a descargar el archivo del framework
Opendaylight, para esto, se escribira el siguiente comando:
wget
[Link]
integration/karaf/0.8.4/[Link]
37
Figura 37. Descarga de Archivo Opendaylight
Este comando se utiliza para crear un nuevo directorio llamado "karaf" en la ruta /usr/local/
de tu sistema.
Después se escribe el siguiente comando:
$ sudo mv [Link] /usr/local/karaf
38
Figura 38. Descompresión del Archivo Karaf
Este comando nos ayudara a registrar una nueva alternativa para el comando "karaf" en el
sistema.
Después de ingresarlo nos mostrara lo siguiente:
Este comando se utiliza para seleccionar la alternativa de "karaf" que deseas utilizar entre las
disponibles en tu sistema.
39
Normalmente si no encuentra ninguna alternativa, nos arrojara algo como lo que se ve a
continuación:
Este comando se utiliza para encontrar la ubicación del ejecutable del comando "karaf" en tu
sistema.
Al escribir el comando y ejecutarlo nos mostrara lo siguiente:
Este comando, se utiliza para ejecutar el comando "karaf" con privilegios de super usuario
(sudo) y mantener las variables de entorno del usuario actual (opción -E)
Este comando nos deberá mostrar lo siguiente:
40
Figura 42. Ejecución del comando Karaf (Entorno Opendaylight)
Una vez teniendo esto ejecutado y arrojándonos dichos resultados, significa que se ha podido
encender él servidor de Opendaylight, a lo cual desde el navegador Mozilla Firefox,
podremos acceder a el y las propiedades que trae.
Antes de hacer esto, es posible que, aunque todo el proceso salió bien y se este ejecutando el
servidor de Opendaylight, al acceder a él servidor desde el navegador nos conlleve a que este
nos arroje un error, para esto desde la misma consola en donde se encendio previamente el
servidor Opendaylight, escribiremos el siguiente comando:
$ feature:install odl-restconf-all odl-l2switch-all odl-mdsal-all odlyangtools-common
odl-dlux-core odl-dluxapps-topology odl-openflowplugin-apptopology-manager
41
Figura 43. Ejecución del comando Karaf (Instalación de Features)
42
Figura 44. Entorno Opendaylight (Login)
43
Figura 46. Consola del Sistema
Este comando, instalará Mininet y todas sus dependencias desde los repositorios de paquetes
de Ubuntu.
Después de instalar el “Mininet” en el sistema procedemos a escribir el siguiente comando:
$ sudo mn
Este comando, se utiliza para iniciar Mininet, al ejecutar el comando este se inicia con
privilegios de super usuario para que pueda crear y configurar interfaces de red virtuales en
el sistema.
Al ejecutarse tendrá como mostrar lo siguiente:
44
Figura 37. Consola del Sistema (Ejecución mininet)
Indicando que esta funcionando correctamente. Ahora se procede a escribir el siguiente
comando:
$ sudo mn –-topo linear,3 –-mac –-controller=remote,ip=[Link],port=6633 – -
switch ovs,protocols=OpenFlow13
Este comando, le indica a Mininet que cree una topología lineal de 3 hosts, configurando la
dirección MAC, el controlador remoto y el switch Open vSwitch con el protocolo OpenFlow
13.
Cabe recalcar que en la parte de “ip”, tenemos que poner la ip de la mascara de red que
anteriormente averiguamos, de lo contrario arrojara error, después de hacer esto, nos mostrara
lo siguiente:
45
Figura 48. Ejecución de Topologia
Este comando se utiliza dentro del entorno de Mininet para enviar un paquete de ping desde
cada host a todos los demás hosts en la topología de red virtual.
Nos mostrara lo siguiente:
Una vez hecho todo esto, nos dirigimos de nuevo al navegador donde se tiene el Opendaylight
abierto y nos mostrara lo siguiente:
46
de cada uno. En caso de que no les aparezca nada es recomendable recargar el
navegador.
47