Redes Definidas Por Software en IPV6
Redes Definidas Por Software en IPV6
MININET
1
PROTOTIPO DE REDES IPV6 DEFINIDAS POR SOFTWARE MEDIANTE
MININET
Directora:
Ing. Line Yasmín Becerra Sánchez
2
A Dios, por hacer tangible este nuevo logro
y permitirnos día a día hacer de
nuestras vidas caminos de felicidad.
3
AGRADECIMIENTOS
También agradecemos a todas las personas alrededor del mundo que en las
diferentes comunidades colaborativas hicieron su aporte y estuvieron dispuestos a
resolver nuestros interrogantes, en especial a Eder Leâo Fernandes.
Y por último, gracias a cada uno de los compañeros y amigos que hicieron que
nuestro recorrido por la universidad fuera una aventura inolvidable.
4
TABLA DE CONTENIDOS
Pág.
TABLA DE CONTENIDOS ....................................................................................... 5
LISTA DE TABLAS .................................................................................................. 7
LISTA DE FIGURAS ................................................................................................ 8
LISTA DE ANEXOS ................................................................................................. 9
LISTA DE ACRÓNIMOS Y ABREVIACIONES ...................................................... 10
RESUMEN ............................................................................................................. 12
INTRODUCCIÓN ................................................................................................... 14
1. OBJETIVOS.................................................................................................... 16
1.1. OBJETIVO GENERAL .............................................................................. 16
1.2. OBJETIVOS ESPECÍFICOS ..................................................................... 16
2. METODOLOGÍA ............................................................................................. 17
2.1. DISEÑO METODOLÓGICO ..................................................................... 17
2.2. RECOLECCIÓN DE DATOS .................................................................... 18
3. MARCO TEÓRICO ......................................................................................... 20
3.1. ANTECEDENTES ..................................................................................... 20
3.2. REDES DEFINIDAS POR SOFTWARE (SDN) ........................................ 24
3.2.1. Arquitectura ........................................................................................ 24
3.3. OPENFLOW ............................................................................................. 26
3.4. MININET ................................................................................................... 29
3.5. IPv4 e IPv6 ............................................................................................... 30
3.5.1. Encabezado IPv4 e IPv6 .................................................................... 31
3.5.2. Tipos de direcciones IPv6 .................................................................. 34
3.5.3. Representación de una dirección IPv6 ............................................... 34
3.5.4. Estructura de direccionamiento IPv6 .................................................. 35
4. DESARROLLO DEL PROYECTO .................................................................. 40
4.1. Capacidades de la herramienta Mininet.................................................... 40
4.2. Selección de la versión de OpenFlow ....................................................... 41
4.3. Pruebas con diferentes controladores ...................................................... 42
4.3.1. NOX13OFLIB ..................................................................................... 42
5
4.3.2. RYU .................................................................................................... 44
4.3.2.1. Prueba de enrutamiento usando RYU e IPv4 .............................. 44
4.4. Pruebas en IPv4 ....................................................................................... 48
4.4.1. Prueba usando iperf ........................................................................... 48
4.4.2. Prueba de tráfico con servidor HTTP ................................................. 49
4.5. Emulación de Redes Definidas por Software con IPv6 ............................. 49
4.5.1. Prototipo No. 1 ................................................................................... 49
4.5.2. Prototipo No. 2 ................................................................................... 51
5. PRESENTACIÓN Y ANÁLISIS DE LOS RESULTADOS ................................ 56
5.1. Pruebas de conectividad con ping6 .......................................................... 56
5.2. Pruebas con IPERF e IPv6 ....................................................................... 58
5.2.1. Prueba IPERF en Prototipo No. 1 ...................................................... 59
5.2.2. Prueba IPERF en Prototipo No. 2 ...................................................... 60
5.3. Comparativa entre IPv4 e IPv6 en diferentes controladores ..................... 61
5.4. Análisis de resultados y observaciones generales ................................... 63
6. RECOMENDACIONES Y CONCLUSIONES .................................................. 66
LISTA DE REFERENCIAS..................................................................................... 68
ANEXOS ................................................................................................................ 71
6
LISTA DE TABLAS
Pág.
Tabla 1. Descripción de los campos de la cabecera básica de IPv6 ..................... 33
Tabla 2. Formatos comprimidos de direcciones IPv6. ........................................... 35
Tabla 3. Protocolos y campos soportados por las diferentes versiones de
OpenFlow .............................................................................................................. 42
Tabla 4. Direcciones IPv6 del prototipo No. 2 ........................................................ 53
Tabla 5. Direcciones IPv4 e IPv6 utilizadas para prueba comparativa .................. 61
Tabla 6. Resultados de prueba comparativa entre IPv4 e IPv6 ............................. 62
Tabla 7. Campos de IPv6 soportados por OpenFlow 1.3. ..................................... 64
7
LISTA DE FIGURAS
Pág.
Figura 1. Diseño de la investigación ...................................................................... 17
Figura 2. Arquitectura de una SDN. ....................................................................... 25
Figura 3. Ejemplo de un conjunto de instrucciones OpenFlow. ............................. 27
Figura 4. Comunicación entre el controlador y el switch a través de OpenFlow. ... 28
Figura 5. Emulación de red en MiniNet .................................................................. 29
Figura 6. Encabezado IPv4 .................................................................................... 32
Figura 7. Encabezado IPv6 .................................................................................... 32
Figura 8. Formato de direcciones unicast global.................................................... 36
Figura 9. Estructura de Dirección Local Única ....................................................... 37
Figura 10. Formato de dirección de enlace local ................................................... 37
Figura 11. Estructura de Dirección anycast ........................................................... 38
Figura 12. Formato de dirección multicast IPv6 ..................................................... 39
Figura 13. Comando para iniciar el controlador nox13oflib. ................................... 43
Figura 14. Utilización de controlador remoto. ........................................................ 43
Figura 15. Topología emulada con OpenFlow 1.3 y el controlador RYU. .............. 45
Figura 16. Eliminación y asignación de IP a host 1 en MiniNet ............................. 46
Figura 17. Ejecución del controlador RYU ............................................................. 47
Figura 18. Ajuste de direcciones mediante la API REST de RYU.......................... 48
Figura 19. Prueba con Iperf de SDN con OpenFlow 1.3 ........................................ 48
Figura 20. Creación y uso de un servidor HTTP en una red emulada con RYU. ... 49
Figura 21. Topología IPv6 No. 1 ............................................................................ 50
Figura 22. PING IPv6 entre dos host usando Nox13oflib y ofsoftswitch13 ............ 51
Figura 23. Topología IPv6 No. 2 ............................................................................ 52
Figura 24. Ejecución en Mininet de topología IPv6 No. 2 ...................................... 54
Figura 25. Ejecución RYU con la aplicación simple_switch_13.py. ....................... 54
Figura 26. Asignación de direcciones IPv6 en Mininet. .......................................... 55
Figura 27. Comprobación de conexiones entre dispositivos con función “links” .... 55
Figura 28. Ping IPv6 en Topología No. 2 ............................................................... 56
Figura 29. Análisis de paquetes de datos para OpenFlow 1.3. .............................. 57
Figura 30. ICMPv6 en emulación de SDN. ............................................................ 58
Figura 31. Prueba IPERF en Prototipo No. 1 ......................................................... 59
Figura 32. Prueba IPERF en Prototipo No. 2 ......................................................... 60
8
LISTA DE ANEXOS
Pág.
Anexo A. Comandos utilizados en Mininet ............................................................. 71
Anexo B. Tutorial para la instalación Ubuntu, Mininet y OpenFlow 1.3 con
NOX13OFLIB. ........................................................................................................ 74
Anexo C. Instalación del controlador RYU ............................................................. 88
Anexo D. Utilización de aplicación para el controlador RYU que da
comportamiento de routers a los switches. ............................................................ 91
Anexo E. Emulación de una topología simple configurada con IPv6 con el
controlador Nox13oflib ........................................................................................... 98
Anexo F. Creación y utilización de servidor HTTP en una Red Definida por
Software usando RYU. ........................................................................................ 101
9
LISTA DE ACRÓNIMOS Y ABREVIACIONES
10
NETCONF Protocolo de Configuración de Red Network Configuration
Protocol
11
RESUMEN
Las Redes Definidas por Software (SDN, Software Defined Network) son un nuevo
paradigma que permite separar el plano de datos y el plano de control, esto
significa, entre otras cosas, que las redes pueden ser programadas a través de
aplicaciones software que se ejecutan en un elemento llamado controlador y éste
de manera centralizada comunica las reglas de enrutamiento, seguridad y demás
a los dispositivos de la red. Por otro lado en las redes convencionales se está
migrando del protocolo IPv4 a IPv6 lo que muestra la importancia de probar e
investigar el uso de nuevos protocolos, tecnologías y herramientas en las Redes
Definidas por Software, en este caso específico, el funcionamiento de IPv6.
ABSTRACT
Software Defined Networks (SDN) are a new paradigm that separates the data
plane and the control plane, this means, among other things, that networks can be
programmed via software applications running in an element called controller and
this centrally communicates routing and security rules to devices on the network. In
addition to conventional networking is migrating from IPv4 to IPv6 which shows the
importance of testing and research using new protocols, technologies and tools in
software-defined networking, in this specific case, the operation of IPv6.
12
and, in general, all the tests carried out for the development of this prototype in
SDN is also provided.
13
INTRODUCCIÓN
Actualmente la gran cantidad de datos que circula por las redes está causando
problemáticas muy serias en el mundo de las telecomunicaciones, esto se debe,
entre otras razones, por la falta de una administración y control adecuados, las
bajas velocidades de transferencia, las congestiones y los inconvenientes en el
envío de información. Uno de los obstáculos que genera estas dificultades
obedece al hecho de que los equipos de enrutamiento no permiten ser
configurados por el administrador de la red. Estos dispositivos contienen en su
firmware las configuraciones de enrutamiento predefinidas por el fabricante, lo que
imposibilita acciones como la distribución de cargas, los privilegios de transmisión,
cambios de métricas en los protocolos de enrutamiento, etc.
Por esta razón en el presente proyecto se pretende dar aportes importantes para
la integración del protocolo IPv6 y las Redes Definidas por Software. Para esto se
exponen las características de IPv6 y se realiza una descripción detallada de los
aspectos más relevantes en este nuevo paradigma como los protocolos,
controladores y herramientas de simulación y emulación más utilizados.
14
Además se desarrolla un prototipo de una red definida por software que
implementa el protocolo IPv6 y se describen los procedimientos de construcción y
evaluación realizados mediante la herramienta Mininet, la utilización de varios
controladores e instrumentos como Iperf, servidores HTTP y demás, para la
realización de diferentes pruebas. Al final se anexan todos los documentos que
fueron producto de los procesos realizados para la instalación de protocolos,
controladores y software en general necesarios para el desarrollo del proyecto.
Estos anexos son presentados y organizados de tal manera que puedan ser
seguidos y entendidos por cualquier persona interesada en continuar o seguir los
procesos realizados.
Para finalizar el trabajo en los capítulos cinco y seis se presentan y analizan los
resultados obtenidos y se plantean algunas conclusiones, reflexiones y
recomendaciones finales producto de la actividad investigativa.
15
1. OBJETIVOS
Diseñar y emular una Red Definida por Software mediante la herramienta Mininet
con el fin de evaluar el funcionamiento del protocolo IPv6 en este tipo de redes.
16
2. METODOLOGÍA
Para ser más específico, el propósito del presente estudio es destacar los
aspectos fundamentales de la implementación de IPv6 en SDN, y su enfoque es
principalmente cualitativo.
17
Como ilustra la Figura 1, el presente trabajo está compuesto por tres fases
principales:
1. INICIACIÓN
En la etapa de iniciación se da comienzo al proyecto. Aquí se definen el
tema, los problemas a tratar y los objetivos de la investigación, se realiza
una planeación del resto de la investigación definiendo actividades,
tiempos, recursos y en general haciendo un cronograma. Además se
buscan y analizan algunos antecedentes del trabajo en exploraciones
bibliográficas y revisiones documentales.
Para finalizar esta etapa, se crea un marco teórico que permita exponer los
temas y definiciones necesarias para el entendimiento y desarrollo de la
investigación.
2. EJECUCIÓN
Se elabora el diseño del escenario a emular, que incluye la selección de red
con una topología básica que sea pertinente para realizar el prototipo y
establecer protocolos y controladores que permitan realizar procesos de
evaluación. Después, en la herramienta Mininet, se hace la emulación de la
red diseñada y al final, con ayuda de lo obtenido con la emulación, se
procesan, analizan e interpretan estos resultados.
3. CULMINACIÓN
Durante todo el desarrollo del proyecto, se construirá la documentación
pertinente para la creación de un informe que exponga claramente el
proceso y los resultados de la investigación, pero en la etapa de
culminación debe corregirse y finalizarse.
Además, en esta etapa, se elabora un artículo académico con el objetivo de
publicarse en una revista y que permita divulgar el proceso y/o los
resultados del trabajo, y por último el trabajo pasa a una evaluación externa
18
discuss mailing list)1, en la comunidad de ayuda de la ONF y se ha tenido contacto
con personas capacitadas en el tema de otras universidades y organizaciones.
1Sistema implementado por la comunidad de ayuda de Mininet similar a un foro, con la diferencia
que las preguntas y respuestas se realizan a través de correos electrónicos.
19
3. MARCO TEÓRICO
3.1. ANTECEDENTES
Las Redes Definidas por Software y el protocolo OpenFlow son un importante foco
de investigación debido a sus características particulares y renovadoras para
configurar y personalizar las redes, esto ha llevado a que se cataloguen como el
paradigma y el protocolo del futuro (Blandón, 2013).
SOFTNET
Alrededor de los años 80s surgió un proyecto llamado SOFTNET, una red
multisalto, semejante a las a las actuales WSN (Wireless Sensor Networks) cuya
innovación fue que en el campo de datos de cada paquete se incluían comandos
que los nodos iban ejecutando a medida que los iban recibiendo. Fue un intento
de definir una red auto-organizable destinada a permitir la experimentación y la
innovación con diferentes protocolos (Roncero, 2014).
Active Networks
No hubo desarrollo posterior a SOFTNET, pero su idea fue el embrión de las
posteriores Redes Activas. Las Redes Activas (Active Networks) presentaban una
arquitectura consistente en llevar embebido en los paquetes pequeños programas
que podían ser ejecutados por los nodos que éstos atraviesan. Esto hacía posible
que los switches y routers de la red procesaran los paquetes de datos,
haciéndoles partícipes de los mensajes y no únicamente espectadores que se
limitaban a enviar mensajes de un puerto a otro, de una forma “pasiva”. De ahí el
nombre de Active Networks (Tennenhouse & Wetherall, 1996).
DCAN
Otra iniciativa que tuvo lugar a mediados de la década de 1990 es el “Devolved
Control of ATM Networks” (DCAN). El objetivo de este proyecto era diseñar y
desarrollar la infraestructura necesaria para el control y gestión escalable de
redes de cajeros automáticos. La premisa es que las funciones de control y
gestión de los muchos dispositivos (switches ATM en el caso de DCAN) deben ser
desacopladas de los propios dispositivos y delegadas a entidades externas
dedicadas a tal fin, que es básicamente el concepto detrás de SDN. DCAN asume
un protocolo minimalista entre el gestor y de la red, en la línea de lo que sucede
hoy en día en propuestas como OpenFlow (Nunes, Mendonca, Nguyen, Obraczka,
& Turletti, 2014).
20
NETCONF
En 2006, el Grupo de Trabajo de Ingeniería de Internet IETF propuso NETCONF
como un protocolo de gestión para modificar la configuración de dispositivos de
red. El protocolo permitía a los dispositivos de red exponer una API a través del
cual los datos de configuración extensibles podían ser enviados y recuperados.
NETCONF, en el momento en que fue propuesto por el IETF, fue visto por muchos
como un nuevo enfoque para la gestión de red que solucionaba las deficiencias
mencionadas en SNMP. Aunque el protocolo NETCONF cumple con el objetivo de
simplificar la reconfiguración del dispositivo y actúa como un bloque de
construcción para la gestión, no permite la separación entre los planos de datos y
de control. Lo mismo puede afirmarse acerca de SNMP. Una red con NETCONF
no debe ser considerada como totalmente programable; además, está diseñado
principalmente para ayudar a la configuración automatizada y no para activar el
control directo del Estado ni permite un rápido despliegue de servicios y
aplicaciones innovadoras. Sin embargo, tanto NETCONF y SNMP son
herramientas útiles de administración que se pueden utilizar en paralelo en
conmutadores híbridos soportan otras soluciones que permiten la creación de
redes programables (Nunes, Mendonca, Nguyen, Obraczka, & Turletti, 2014).
Ethane:
El antecedente inmediato de OpenFlow fue el proyecto SANE / Ethane, que, en
2006, definió una nueva arquitectura para redes empresariales. El enfoque de
Ethane fue sobre el uso de un controlador centralizado para gestionar la política y
la seguridad en una red. Un ejemplo notable es proporcionar control de acceso
basado en la identidad. Similar a la SDN, Ethane emplea dos componentes: un
controlador para decidir si un paquete debe ser enviado, y un switch Ethane que
consiste en una tabla de flujo y un canal seguro al controlador. Ethane sentó las
bases para lo que se convertiría en Redes Definidas por Software (Nunes,
Mendonca, Nguyen, Obraczka, & Turletti, 2014).
21
Teniendo en cuenta que la primera versión de OpenFlow fue lanzada en el 2011,
no existen gran cantidad de estudios que aborden el tema, y menos aún el tema
específico de las particularidades de la emulación de SDN con IPv6. A pesar de
esto, se hallan varias investigaciones y trabajos alrededor del mundo relacionados
con la utilización del emulador MiniNet, el protocolo OpenFlow y los primeros
acercamientos de la implementación de IPv6 en Redes Definidas por Software.
Estas investigaciones se llevan a cabo no sólo dentro de instituciones académicas
sino también en organizaciones y empresas fabricantes de dispositivos
mundialmente reconocidas que han visto en este nuevo modelo el futuro de las
redes de datos.
OpenFlow empezó a desarrollarse en 2007 con la colaboración de los sectores
académico y empresarial. Fueron las universidades de Stanford y California en
Berkeley quienes llevaron las riendas en primera instancia y que junto con un
grupo de empresas crearon la ONF (Open Networking Fuondation).
HP (Hewlett-Packard) ha sido una de las empresas pioneras en apoyar la
evolución del protocolo OpenFlow desde sus inicios, además es miembro fundador
de la ONF y el primer proveedor de switches que soportan esta tecnología. Por su
liderazgo en el desarrollo de este nuevo protocolo la tecnología de HP OpenFlow
ha sido la opción preferida de investigadores de todo el mundo desde 2008
(Hewlett-Packard, 2014).
Así como HP, otras empresas que conforman la ONF, como Alcatel, BTI, Cisco,
DCN, Google, Facebook, Hitachi, Huawei, IBM, Intel, Microsoft, Nokia, Oracle,
Samsung, Yahoo y ZTE realizan investigaciones y se apropian paulatinamente de
esta nueva arquitectura tanto en la fabricación de dispositivos como en su
implementación.
22
Engineering” en el sistema OJS (Open Journal System) de la universidad
mencionada (Hegr, Bohac, Uhlir, & Chlumsky, 2013).
23
3.2. REDES DEFINIDAS POR SOFTWARE (SDN)
Las Redes Definidas por Software (SDN) son un paradigma de redes emergentes
que da la esperanza de cambiar las limitaciones de las infraestructuras de red
actuales. En primer lugar, se rompe la integración vertical mediante la separación
de la lógica de control de la red (el plano de control) de los routers y switches
subyacentes que reenvían el tráfico (el plano de datos). En segundo lugar, con la
separación de los planos de control y de datos, los conmutadores de red se
convierten en dispositivos de reenvío simples y la lógica de control se implementa
en un controlador de lógica centralizado (o un sistema operativo de red),
simplificando la aplicación de políticas y la reconfiguración (Kreutz et al., 2015).
Esencialmente las redes definidas por software buscan separar el plano de control
del plano de datos, favoreciendo así la creación de redes más programables,
automatizables y flexibles dependiendo de su prioridad gracias a la toma de
decisiones por parte del servidor (Open Networking Foundation, 2015).
3.2.1. Arquitectura
Como se muestra en la Figura 2 la arquitectura de SDN consta conceptualmente
de tres capas: capa de infraestructura, capa lógica y capa de aplicación.
24
Figura 2. Arquitectura de una SDN.
Fuente: Open Networking Foundation. (2012). Software-Defined Networking: The New Norm for
Networks. Recuperado el 08 de mayo de 2015, de
https://www.opennetworking.org/images/stories/downloads/sdn-resources/white-papers/wp-sdn-
newnorm.pdf
La capa intermedia la forma el controlador, quien tiene una visión global de la red
e incorpora el sistema operativo de red (NOS). Es el encargado de tomar las
decisiones y programar las tablas de flujo de los elementos de la capa inferior para
controlar, entre otras cosas, el desvío y el enrutamiento de paquetes.
25
instruido por el controlador - comportarse como un router, switch, firewall, o llevar
a cabo otras funciones (Kreutz et al., 2015).
Por otra parte la Open Networking Foundation (2012) presenta como ventajas de
SDN las siguientes:
3.3. OPENFLOW
26
Figura 3. Ejemplo de un conjunto de instrucciones OpenFlow.
Fuente: Open Networking Foundation. (2012). Software-Defined Networking: The New Norm for
Networks. Recuperado el 08 de mayo de 2015, de
https://www.opennetworking.org/images/stories/downloads/sdn-resources/white-papers/wp-sdn-
newnorm.pdf
Las entradas de flujo suelen consistir en: (1) los campos coincidentes, o reglas de
concordancia, que se utilizan para igualarse con los paquetes entrantes; los
campos coincidentes pueden contener la información que se encuentra en la
27
cabecera del paquete, puerto de entrada, y metadatos; (2) contadores, utilizados
para recoger las estadísticas de un flujo particular, como por ejemplo: el número
de paquetes recibidos, el número de bytes y la duración del flujo; y (3) un conjunto
de instrucciones o acciones, que se aplicarán a una coincidencia; dictan cómo
manejar los paquetes que concuerden.
28
10. Puerto TCP/UDP destino
3.4. MININET
Con el fin de crear una plataforma para probar y experimentar las características
de las Redes Definidas por Software, desarrollar aplicaciones y fomentar su uso,
un grupo de profesores de la Universidad de Stanford crearon el entorno MiniNet.
29
conocimiento en Python. Por lo tanto se puede deducir que MiniNet se crea
usando código y no usando hardware (Pal, Veena, Rustagi, & Murthy, 2014).
1. Es rápido: poner en marcha una red simple toma sólo unos segundos. Esto
significa que el bucle de gestión de edición de depuración puede ser muy
rápido.
2. Creación topologías personalizadas: un solo switch, grandes topologías
en Internet, un centro de datos, o cualquier otra cosa.
3. Ejecución de programas reales: cualquier cosa que se ejecute en Linux
está disponible, desde servidores web, ventanas de herramientas de
monitoreo TCP hasta Wireshark.
4. Personalización del reenvío de paquetes: los switches de MiniNet son
programables mediante el protocolo OpenFlow. Los diseños personalizados
de Redes Definidas por Software que se ejecutan en MiniNet se pueden
transferir fácilmente al hardware de switches OpenFlow reales para el
reenvío de paquetes.
5. Es posible ejecutar MiniNet en su computadora portátil, en un servidor,
en una máquina virtual, en una máquina Linux nativo (MiniNet se incluye
con Ubuntu 12.10+!), o en la nube (por ejemplo, Amazon EC2.)
6. Es posible compartir y replicar los resultados: cualquier persona con
una computadora puede ejecutar el código hecho por otra persona una vez
ésta lo haya compartido.
7. Es de fácil utilización: se puede crear y ejecutar experimentos MiniNet
escribiendo simples (o complejas si es necesario) scripts de Python.
8. MiniNet es un proyecto de código abierto, por lo que existe la posibilidad
de examinar su código fuente en https://github.com/mininet, modificarlo,
corregir los errores, problemas, hacer peticiones, etc.
9. MiniNet está en constante desarrollo. Así que si no funciona por alguna
razón, puede informase a MiniNet-Discuss y la comunidad de usuarios y
desarrolladores MiniNet puede tratar de explicarlo, arreglarlo, o ayudar a
solucionarlo.
30
decimal de cada octeto está comprendido en el rango de 0 a 255, y están
separados con un carácter único ".". Por ejemplo: 192.168.153.11 (Casero,
Clemente, & Ruiz, 2011).
IPv6 tiene direcciones más grandes que el IPv4, son de 128 bits en oposición a los
32 bits respectivamente, lo que permite que existan muchas más direcciones
asignables. Además de resolver el problema de la cantidad de direcciones, IPv6
simplifica el encabezado, que solo contiene 7 campos, a diferencia de IPv4 que
contiene 13, esto permite que los enrutadores procesen mucho más rápido los
paquetes y por tanto mejorar la velocidad de transporte (Tanenbaum, 2003).
31
Figura 6. Encabezado IPv4
Fuente: Tanenbaum, A. (2003). Redes de computadoras (Cuarta ed.). México: Pearson Educación.
32
Los campos IHL, Identificación, Banderas: DF - MF, Desplazamiento del fragmento
y suma de verificación de la cabecera del paquete IPv4 no están incluidos en la
cabecera del paquete IPv6.
El campo “IHL” de IPv4 es irrelevante para IPv6 porque todas las cabeceras IPv6
son de la misma longitud. IPv4 requiere este campo porque sus cabeceras pueden
ser tan cortas como de 20 bytes y tan largas como de 60 bytes para acomodar las
Opciones IP.
Límite de saltos Igual que el campo Tiempo de Vida en la cabecera del paquete
IPv4. El valor del campo Límite de Salto especifica el número
máximo de dispositivos a través de los cuales un paquete IPv6
33
puede pasar antes de que el paquete se considera no válido.
Cada dispositivo disminuye el valor por uno. Debido a que
ninguna suma de control se encuentra en la cabecera IPv6, el
dispositivo puede reducir el valor sin necesidad de volver a
calcular la suma de control, lo que ahorra recursos de
procesamiento.
Fuente: Cisco Systems, Inc. (2012). IPv6 Configuration Guide, Cisco IOS. Release 15.2MT.
Recuperado el 2015 de mayo de 14, de http://www.cisco.com/c/en/us/td/docs/ios-
xml/ios/ipv6/configuration/15-2mt/ipv6-15-2mt-book.pdf
34
Ejemplo:
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
El uso de “:” indica uno más grupos de 16 bits de ceros. Los “::” pueden aparecer
solamente una vez en una dirección y pueden utilizarse para comprimir ceros
iniciales o finales en una dirección. Además los ceros a la izquierda de cada
hexteto2 pueden suprimirse.
Unspecified 0:0:0:0:0:0:0:0 ::
Fuente: Cisco Systems, Inc. (2012). IPv6 Configuration Guide, Cisco IOS. Release 15.2MT.
Recuperado el 2015 de mayo de 14, de http://www.cisco.com/c/en/us/td/docs/ios-
xml/ios/ipv6/configuration/15-2mt/ipv6-15-2mt-book.pdf
Direcciones Unicast
35
Existen 3 tipos de direcciones Unicast (Cisco Systems, Inc., 2012):
A excepción de las direcciones que comienzan con el binario 000, todas las
direcciones unicast globales tienen un ID de interfaz de 64 bits. La asignación de
la dirección unidifusión global IPv6 utiliza el rango de direcciones que comienzan
con valor binario 001 (2000 :: / 3). La Figura 8 muestra la estructura de una
dirección unicast global.
Un campo de subred de 16 bits llamado el ID de subred podría ser utilizado por las
organizaciones individuales para crear su propia jerarquía de direccionamiento
local y para identificar las subredes. Un ID de subred es similar a una subred en
IPv4, excepto que una organización con una subred ID IPv6 puede soportar hasta
65.535 subredes individuales.
Una dirección única local es una dirección unicast IPv6 que es única a nivel
mundial y está destinado para las comunicaciones locales, o sea que provee
direcciones IP enrutables y asignables dentro de un sitio. No se espera que sean
usadas para ser enrutadas en la Internet global, es enrutable dentro de un área
limitada.
36
Figura 9. Estructura de Dirección Local Única
Fuente: Cisco Systems, Inc. (2012). IPv6 Configuration Guide, Cisco IOS. Release 15.2MT.
Recuperado el 2015 de mayo de 14, de http://www.cisco.com/c/en/us/td/docs/ios-
xml/ios/ipv6/configuration/15-2mt/ipv6-15-2mt-book.pdf
Una dirección de enlace local es una dirección unicast IPv6 que se puede
configurar de forma automática en cualquier interfaz usando el prefijo de enlace
local FE80 :: / 10 (1111 1110 10) y el identificador de interfaz en el formato EUI-64
modificado.
37
Direcciones Anycast
Las direcciones anycast son sintaxis indistinguibles de las direcciones unicast,
porque las direcciones anycast son asignadas desde el espacio de las direcciones
unicast. La asignación de una dirección unicast a más de un interfaz hace que una
dirección unicast sea una dirección anycast. Los nodos a los que se asigna la
dirección anycast se deben configurar explícitamente para reconocer que la
dirección es una dirección anycast.
Direcciones Multicast
Una dirección multicast IPv6 es una dirección que tiene un prefijo de FF00 :: / 8
(1111 1111). Una dirección IPv6 multicast es un identificador para un conjunto de
interfaces que normalmente pertenecen a diferentes nodos. Un paquete enviado a
una dirección multicast se entrega a todas las interfaces identificadas por la
dirección multicast. El segundo octeto que sigue al prefijo define el tiempo de vida
y el alcance de la dirección multicast.
38
Figura 12. Formato de dirección multicast IPv6
Fuente: Cisco Systems, Inc. (2012). IPv6 Configuration Guide, Cisco IOS. Release 15.2MT.
Recuperado el 2015 de mayo de 14, de http://www.cisco.com/c/en/us/td/docs/ios-
xml/ios/ipv6/configuration/15-2mt/ipv6-15-2mt-book.pdf
39
4. DESARROLLO DEL PROYECTO
40
La siguiente es una línea de comando base para el uso de un controlador remoto,
donde [controller IP], es la dirección IP donde está corriendo el controlador remoto
y [controller listening port] es el puerto en el que este controlador está
escuchando.
Mininet también admite el uso de Wireshark para inspeccionar el tráfico entre los
diferentes elementos emulados en una red, entre éstos revisar el uso de
OpenFlow y las versiones de IP, como IPv6.
41
además porque, como se muestra en la Tabla 3, a partir de OpenFlow 1.3 existe
soporte completo para IPv6.
4.3.1. NOX13OFLIB
42
controladores para Redes Definidas por Software, pero solamente soporta la
versión 1.0 de OpenFlow. Para enmendar este problema la institución CPqD creó
una versión de este controlador que soporta muchas de las nuevas características
de OpenFlow 1.3 a la que llamó nox13oflib (nox13oflib, s.f.).
43
En el Anexo B puede consultarse un tutorial con el proceso completo de
instalación de Ubuntu, Mininet y la emulación de una topología con este
controlador.
A pesar de lograr comunicación en una topología emulada con ayuda del soporte
completo de la versión 1.3 de OpenFlow con el controlador Nox13oflib y
ofsoftswitch13, existen otras herramientas con muy buena documentación y
comunidades de ayuda en línea que permiten ir un poco más allá en el uso de
SDN e IPv6, una de éstas es el controlador RYU.
4.3.2. RYU
RYU es un framework para Redes Definidas por Software basado en
componentes y escrito completamente en Python. RYU ofrece elementos software
con una API bien definida que hace fácil a los desarrolladores crear nuevas
aplicaciones de control y gestión de red. RYU soporta varios controladores y
dispositivos de gestión de red como OpenFlow, Netconf, OF-config, entre otros.
RYU también admite completamente las versiones 1.0, 1.1, 1.2, 1.3, 1.4 y 1.5 de
OpenFlow (RYU, 2015).
Al ser una herramienta de código libre, cuenta con diferentes comunidades de
ayuda como el Mailing List, manejo del repositorio de código fuente libre GitHub y
además varios libros con muy buena información no solo para el desarrollo de
aplicaciones, sino también para el uso de las que ya trae por defecto este
controlador.
En este sitio web http://osrg.github.io/ryu-book/en/Ryubook.pdf, está disponible
uno de los documentos creados por el equipo RYU para el uso de aplicaciones y
otros elementos de este Framework específicamente con OpenFlow 1.3.
Entre los ejercicios expuestos en este libro pueden resaltarse la implementación
de un Firewall, elementos de Calidad de Servicio (QoS), VLANs y algunos
relacionados con procesos de enrutamiento en SDN, en los que se prestó especial
atención.
En el Anexo C pueden consultarse los pasos para la instalación de este
controlador.
4.3.2.1. Prueba de enrutamiento usando RYU e IPv4
Una de las topologías utilizadas para los ejercicios de enrutamiento está
representada por la Figura 15, que hace uso de una aplicación llamada
rest_router, cuyo código completo está en el siguiente enlace
https://github.com/osrg/ryu/blob/master/ryu/app/rest_router.py.
44
Como se expuso anteriormente, las Redes Definidas por Software por lo general
hacen uso de un controlador, una interfaz para la comunicación entre éste y la
capa de datos (en este caso OpenFlow), una aplicación que se ejecuta en la capa
de control y una interfaz norte para la comunicación entre las aplicaciones y el
controlador.
Ryu usa como interfaz norte REST para sus operaciones de OpenFlow. Además
usa WSGI (un framework para conectar aplicaciones web y servidores web en
Python), lo que permite introducir fácilmente nuevas REST APIs en una aplicación.
REST está basado en una combinación de HTTP, JSON y XML (Roa, 2014).
Como se observa en la Figura 15, la topología de prueba está compuesta por 3
host y cada uno de ellos está conectado a un switch diferente, los cuales están
conectados a su vez al controlador. Las interfaces están configuradas con IPv4.
45
Para llevar a cabo esta prueba se utilizó Open vSwitch que es un switch virtual
multicapa que está bajo la licencia de código abierto Apache 2.0. Está diseñado
para permitir la automatización de red masiva a través de extensiones
programáticas que soportan interfaces de gestión estándar y protocolos como
NetFlow, sFlow, IPFIX, RSPAN, CLI, LACP, entre otros. Además, está diseñado
para soportar múltiples servidores físicos similares a VMware’s vNetwork o Cisco’s
Nexus 1000V (Open vSwitch, 2010).
Los pasos completos de la ejecución de este ejercicio de enrutamiento están en el
Anexo D.
El primer paso fue, entonces, iniciar Open vSwitch, posteriormente correr MiniNet
con una topología linear que hace uso de un controlador remoto y el switch virtual
mencionado, mediante el siguiente comando:
sudo mn --topo linear,3 --mac --switch ovsk --controller remote.
Consecutivamente es necesario configurar cada switch para que éstos utilicen la
versión OpenFlow 1.3. Para lograrlo se utilizó el emulador de terminal xterm para
cada uno de los 3 switches de la topología y el comando: ovs-vsctl set Bridge
<nombreSwitch> protocols=OpenFlow13.
Por defecto, Mininet asigna direcciones en el rango de 10.0.0.X a cada host; pero
para lograr la emulación de la red mostrada en la Figura 15, fue necesario la
asignación de direcciones IP diferentes, que se realiza eliminando la IP original y
adhiriendo una nueva. La Figura 16 muestra un ejemplo de esta asignación en el
host 1.
46
Aquí entra en juego la interfaz norte, que es lo que permitió configurar los
elementos necesarios para esta aplicación, entre éstos la asignación de
direcciones a los routers, los gateways y rutas por defecto. Esta configuración se
llevó a cabo a través de la API Rest que para este fin proporciona RYU.
Cada configuración genera como respuesta un JSON con los resultados del
proceso y algunos datos adicionales, que pueden verse en el ejemplo de la Figura
18.
De esta manera se pudo, finalmente, comprobar la conexión entre los nodos y
host de la red.
47
Figura 18. Ajuste de direcciones mediante la API REST de RYU.
4.4. Pruebas en IPv4
48
especie de informe con los datos registrados, en el que puede verse que el ancho
de banda fue de alrededor 9.44 Gbits/sec.
Figura 20. Creación y uso de un servidor HTTP en una red emulada con RYU.
49
Figura 21. Topología IPv6 No. 1
50
Figura 22. PING IPv6 entre dos host usando Nox13oflib y ofsoftswitch13
51
Figura 23. Topología IPv6 No. 2
Como puede notarse, esta no es una topología de las que Mininet tiene por
defecto para realizar pruebas. El diseño de esta red se realizó mediante un script
de Python que permite la creación de topologías personalizadas. El Script es el
siguiente:
# Initialize topology
Topo.__init__( self )
52
# Add links
self.addLink( h1, s1 )
self.addLink( s1, s4 )
self.addLink( h1, s2 )
self.addLink( h3, s2 )
self.addLink( h3, s3 )
self.addLink( s4, h2 )
self.addLink( s2, h2 )
self.addLink( s3, h2 )
self.addLink( s2, s4 )
El controlador utilizado para esta segunda prueba fue RYU, en el que se corrió
una aplicación denominada simple_switch_13.py. Esta aplicación hace que los
switches actúen como un switch clásico. OpenFlow ha denominado a este
comportamiento Learning Switch. Con esta aplicación el switch examinará cada
paquete y aprenderá el puerto origen que le corresponde. A partir de este
momento, la dirección MAC origen será asociada con ese puerto. Si el destino de
un paquete ya está asociado a algún puerto, el paquete será enviado al puerto
dado, de lo contrario se inundarán todos los puertos del switch con éste (Create a
Learning Switch, 2015).
53
En la Figura 24 puede observarse la ejecución de la topología personalizada que
se diseñó para el despliegue de una red SDN con IPv6. Como puede notarse, se
añadieron 3 hosts y 4 switches, como también los enlaces entre estos elementos
correspondientes al diseño presentado previamente.
54
Luego de iniciar la topología, se procedió con la asignación de las direcciones IPv6
a cada una de las interfaces de red de los host. Las direcciones asignadas fueron
las direcciones expuestas en la Tabla 4. El procedimiento llevado a cabo para este
fin es mostrado en la Figura 26.
55
5. PRESENTACIÓN Y ANÁLISIS DE LOS RESULTADOS
56
lo haría un voltímetro para examinar lo que está pasando por un cable eléctrico
(Wireshark, 2014).
Al ser Mininet un emulador, utiliza la tarjeta de red del equipo físico para, por
decirlo de alguna manera, darle vida a los dispositivos de la topología que está
recreando, por lo tanto inicialmente se eligió la interfaz loopback para analizar la
comunicación entre los switches y el controlador y comprobar que se estaba
utilizando OpenFlow en su versión 1.3.
57
Figura 30. ICMPv6 en emulación de SDN.
iperf –V –s –u –B fc00::2,
donde “-V” indica la utilización del protocolo IPv6, “-s” configura el host como
servidor, “-u” permite especificar que el tipo de paquetes a enviar son UDP y “-B”
establece la interfaz entrante. Esto sólo es útil en hosts múltiples, que tienen
varias interfaces de red (iPerf).
Por su parte en el host2, que hace las veces de cliente, se ejecuta el siguiente
comando:
iperf –u –t 10 –i 1 –V –c fc00::2,
donde “-u” indica el envío de paquetes UDP, “-t 10” señala los segundos de
duración, “-i 1” establece el intervalo de tiempo en segundos entre cada reporte
periódico de ancho de banda, jitter y pérdida, “-V” indica la utilización de IPv6, “-c”
configura el host como cliente.
58
5.2.1. Prueba IPERF en Prototipo No. 1
Los resultados de esta prueba en el prototipo de red No. 1 pueden evidenciarse en
la ¡Error! No se encuentra el origen de la referencia..
59
En la prueba con IPERF en el primer Prototipo hubo una transferencia de
aproximadamente 5802 datagramas, hubo un jitter de 0.237 ms y los rangos de
ancho de banda en cada uno de los 13 intervalos en los que se tomó una muestra
fue de alrededor de los 5Mbits/s como se configuró inicialmente.
60
En la prueba con IPERF en el segundo Prototipo hubo una transferencia de
aproximadamente 4249 datagramas, hubo un jitter de 0.103 ms y los rangos de
ancho de banda en cada uno de los 10 intervalos en los que se tomó una muestra
fue de alrededor de los 5Mbits/s como se configuró inicialmente.
La Tabla 5, muestra las direcciones utilizadas en cada interfaz para la prueba con
IPv4 e IPv6.
61
H3 h3-eth0 176.168.16.6 2000::6/64
H3 h3-eth1 176.168.16.7 2000::7/64
Para el caso específico de estas muestras, IPERF se configuró para utilizar UDP
con un ancho de banda de 10 Mbits/s y con un total de muestras en 10 intervalos.
Los resultados de estas pruebas se pueden ver en la Tabla 6.
En el primer intento (cuando los switches no tenían completas sus tablas de flujo)
hubo una pérdida de datagramas de 13% y un Jitter 2234.239 ms en la prueba
IPv4 en RYU y en NOX13OFLIB se perdieron 26% de datagramas y hubo un Jitter
de 7.268ms. En el caso de IPv6, con RYU hubo un 26% de datagramas perdidos y
un Jitter de 1432.044ms. Con NOX13OFLIB se perdieron el 35% de datagramas y
el Jitter fue de 13.671 ms.
62
En el segundo intento (después de que se completaron las tablas de flujo) con
RYU no hubo pérdida de paquetes ni con IPv4 ni con IPv6 y el Jitter no es superior
en ninguna prueba a 0.1ms. Por su parte con NOX13OFLIB hubo una reducción
considerable en la pérdida de paquetes pasó del 26% al 18% en IPv4 y en IPv6
del 35% al 25%. El Jitter con este último controlador fue de 7.212 ms para IPv4 y
3.820 ms para IPv6.
De las pruebas comparativas entre IPv4 e IPv6 se evidenció que cuando los
dispositivos de red no tienen aún llenas sus tablas de flujo y deben inundar con
paquetes la red para conocer la ruta para enviar los datos, se genera una pérdida
de datagramas considerable y un aumento del Jitter con las dos versiones de IP.
En relación con IPv4 e IPv6 en el caso del controlador RYU los parámetros
evaluados no arrojaron diferencias significativas cuando las tablas de flujo ya
están completas, pero sí es muy notable una diferencia en la pérdida de
datagramas cuando las rutas no están determinadas en los dispositivos de red ya
que con IPv6 la pérdida de paquetes fue el doble (26%) en comparación con IPv4
(13%).
Hay una diferencia también en pérdida de paquetes entre IPv4 e IPv6 con el uso
de NOX13OFLIB ya que en las pruebas tanto con las tablas de flujo incompletas
como completas es mayor la pérdida de paquetes con el uso de IPv6.
Este primer acercamiento es una de las muchas opciones que pueden ser
probadas en emulaciones e incluso en dispositivos reales para iniciar con la
experimentación e investigación de la utilización de IPv6 en SDN.
A la fecha existen muy pocas aplicaciones para SDN que hagan uso de IPv6,
inclusive no existe ninguna publicada que permita dar comportamiento de router a
los dispositivos de red, lo que significa que crear tablas de enrutamiento con el
protocolo IPv6 desde el controlador aún no es posible.
63
A pesar de que Mininet es una herramienta completa y muy útil, no tiene hasta el
momento instrumentos para hacer pruebas más específicas como la inyección de
diferentes tipos de tráfico, que es de vital importancia para evaluar el
funcionamiento de una red y comprobar sus capacidades antes de instalarla en
equipos reales.
Por otra parte, del proceso y del reconocimiento de las capacidades de los
controladores expuestos y, en general, de lo ofrecido por las Redes Definidas por
Software, la personalización no sólo del enrutamiento, sino de las políticas de
seguridad, rendimiento, ingeniería de tráfico, etc., es realmente posible pero
dependerá de la construcción de aplicaciones propias y ajustadas a las
necesidades de una organización o a procesos de investigación.
La Tabla 7 muestra los campos concretos del protocolo IPv6 soportados por
OpenFlow 1.3. El reconocimiento de estos elementos y otros, presentes en la
documentación oficial de la Open Networking Foundation, hacen posible la
creación de aplicaciones que innoven y generen diferentes comportamientos de
una red a partir de las características nuevas ofrecidas por IPv6.
Estos elementos hacen parte de la API de OpenFlow que son necesarios para la
creación de aplicaciones que sean entendidas por el controlador y que puedan dar
instrucciones a los dispositivos de la red.
64
OXM_OF_ICMPV6_CODE 8 1 Código de ICMPv6
La dirección objetivo en un
OXM_OF_IPV6_ND_TARGET 128 16 mensaje de descubrimiento de
vecinos en IPv6.
La opción de dirección de capa de
OXM_OF_IPV6_ND_SLL 48 6 enlace del origen en un mensaje de
descubrimiento de vecinos en IPv6.
La opción de dirección de capa de
enlace de destino en un mensaje
OXM_OF_IPV6_ND_TLL 48 6
de descubrimiento de vecinos en
IPv6.
Pseudo-campo de cabecera de
OXM_OF_IPV6_EXTHDR 9 2
extensión IPv6.
Fuente: Open Networking Foundation. (2013). OpenFlow Switch Specification. Recuperado el 9 de
noviembre de 2015, de https://www.opennetworking.org/images/stories/downloads/sdn-
resources/onf-specifications/openflow/openflow-spec-v1.4.0.pdf
65
6. RECOMENDACIONES Y CONCLUSIONES
Con esta aplicación que acaba de mencionarse y utilizando IPERF para realizar
algunas pruebas y análisis comparativos entre IPv4 e IPv6 se evidenció que en el
momento de completar las tablas de flujo en los switch hay una diferencia en la
pérdida de datagramas considerable, ya que en IPv6 se presentaron porcentajes
mayores de pérdidas que con IPv4.
66
incluso en dispositivos reales en redes de nueva generación tales como redes
MPLS, protocolos de enrutamiento y señalización como OSPF-TE y RSVP-TE
para realizar ingeniería de tráfico en Internet, con IPv6 móvil para el soporte de
movilidad IP, podrían ser trabajos futuros de interés para investigadores que
trabajen alrededor del tema, permitiendo proveer soluciones versátiles y eficientes
en este nuevo paradigma.
67
LISTA DE REFERENCIAS
68
nox13oflib. (s.f.). Recuperado el 31 de mayo de 2015, de
https://github.com/CPqD/nox13oflib
Nunes, B. A., Mendonca, M., Nguyen, X.-N., Obraczka, K., & Turletti, T. (2014). A
Survey of Software-Defined Networking: Past, Present, and Future of
Programmable Networks. Communications Surveys and Tutorials, IEEE
Communications., 2(4), 1617-1634.
Open Networking Foundation. (2012). Software-Defined Networking: The New
Norm for Networks. Recuperado el 08 de mayo de 2015, de
https://www.opennetworking.org/images/stories/downloads/sdn-
resources/white-papers/wp-sdn-newnorm.pdf
Open Networking Foundation. (2013). OpenFlow Switch Specification. Recuperado
el 9 de noviembre de 2015, de
https://www.opennetworking.org/images/stories/downloads/sdn-
resources/onf-specifications/openflow/openflow-spec-v1.4.0.pdf
Open Networking Foundation. (2015). Open Networking Foundation. Recuperado
el 08 de mayo de 2015, de Open Networking Foundation:
https://www.opennetworking.org/sdn-resources/sdn-definition
Open vSwitch. (2010). Recuperado el 27 de agosto de 2015, de
http://openvswitch.org/
Pal, C., Veena, S., Rustagi, R., & Murthy, k. (2014). Implementatation of Simplified
Custom Topology Framework in MiniNet. En Z. Chaczko, F. Lumban, F.
Pichler, & C. Chiu, 2014 Asia-Pasific Conference on Computer Aided
System Engeneering (APCASE) (págs. 48-53). Bali: IEEE.
Park, R., & Baack, E. (2012). Despliegue y evaluación de desempeño de una red
OpenFlow. Recuperado el 08 de 05 de 2015, de Instituto Tecnológico
Autónomo de México:
http://www.lrav.itam.mx/publicacion/RepTecYus2012.pdf
Roa, S. (2014). SDN Series Part Four: Ryu, a Rich-Featured Open Source SDN
Controller Supported by NTT Labs. Recuperado el 25 de agosto de 2015,
de http://thenewstack.io/sdn-series-part-iv-ryu-a-rich-featured-open-source-
sdn-controller-supported-by-ntt-labs/
Rodrigues, L. (2013). OpenFlow e o Paradigma de Redes Definidas por Software.
Recuperado el 08 de mayo de 2015, de
http://monografias.cic.unb.br/dspace/bitstream/123456789/391/1/Monografi
a_Vesao_Leitura_em_PC.pdf
Roncero, Ó. (2014). Software Defined Networking. Recuperado el 2015 de mayo
de 08, de
http://upcommons.upc.edu/pfc/bitstream/2099.1/21633/4/Memoria.pdf
RYU. (25 de agosto de 2015). RYU. Recuperado el 25 de agosto de 2015, de
http://osrg.github.io/ryu/
Santos, R., Schweitzer, C., Shinoda, A., & Rodrigues, L. (2014). Using MiniNet for
Emulation and Prototuping Software-Defined Networks. En Y. Rodríguez,
69
2014 IEEE Colombian Conference on Communications and Computing
(COLCOM) (págs. 1-6). Bogotá: IEEE.
Sezer, S., Scott, S., Chouhan, P., Fraser, B., Lake, D., Finnegan, J., . . . Rao, N.
(2013). Are We Ready for SDN? Implementation Challenges for Software-
Defined Networks. IEEE Communications Magazine, 36-43.
Tanenbaum, A. (2003). Redes de computadoras (Cuarta ed.). México: Pearson
Educación.
Tennenhouse, D., & Wetherall, D. (1996). Towards an Active Network Architecture.
Recuperado el 08 de mayo de 2015, de
http://ccr.sigcomm.org/archive/1996/apr96/ccr-9604-tennenhouse.pdf
Wireshark. (2014). Wireshark User’s Guide. Recuperado el 20 de octubre de 2015,
de https://www.wireshark.org/docs/wsug_html_chunked/index.html
70
ANEXOS
- Help: este comando muestra una lista con todos los comandos disponibles
de Mininet.
71
- Net: Despliega los enlaces de la topología de la red
72
- PingAll: Esto se utiliza para comprobar la conectividad entre todos los
nodos.
73
Anexo B. Tutorial para la instalación Ubuntu, Mininet y OpenFlow 1.3 con
NOX13OFLIB.
Versión de 12.04
Ubuntu
Herramientas - Virtual Box
utilizadas - Ububntu
- Mininet
- NOX13OFLIB
- Wireshark
Objetivos - Explicar de manera detallada la forma como se instalan y
se ejecutan los siguientes programas (Ubuntu, Mininet,
NOX13OFLIB y Wireshark.)
- Configurar las herramientas con OpenFlow 1.3.
- Ejecutar una topología en Mininet utilizando el controlador
NOX13OFLIB.
74
● Una conexión a Internet
PROCESO DE DESCARGA:
El mecanismo más fácil para descargar Ubuntu 12.04 es a través de una imagen
ISO, está puede descargarse de la siguiente página
http://releases.ubuntu.com/12.04/
75
Figura 2. Descarga del VirtualBox
76
Figura 4. Instalación del software y los permisos de dispositivo de
VirtualBox
77
3. Una vez ha finalizado la instalación del programa se ejecuta el programa
instalado “VirtualBox”, después de iniciar el programa se selecciona la
opción “Nueva” que se encuentra en la parte superior izquierda de la
ventana, como se observa en la Figura 5.
4. Después de haber dado clic en dicho botón aparecerá una nueva ventana,
ahí se debe ingresar un nombre, el tipo de sistema operativo a instalar y la
versión, en este caso se debe seleccionar el sistema operativo de Linux e
inmediatamente aparecerá por defecto la versión de Ubuntu como se
observa en la figura 6.
78
5. A continuación se selecciona el tipo de memoria (RAM) que va a hacer
utilizada en la máquina virtual, para ello se recomienda emplear un tamaño
mínimo de 1GB (1024MB). Una vez se ha seleccionado el tipo de memoria
RAM y ejecutado el botón Next, aparcerá una ventana nueva, en ella se
debe seleccionar el tipo de sistema, a su vez se debe elegir la opción VDI,
posteriormente se asigna el tipo de almacenamiento del disco ya sea de
manera estática o dinámica.
79
8. Después de ejecutar el terminal de Ubuntu, aparecerá una nueva ventana,
es ahí donde se realiza la instalación del complemento git, para ello se
debe escribir el siguiente comando: sudo apt-get install git. Una vez ha
culminado el proceso de instalación se procede con la ejecución de los
siguientes comandos como se observa en la figura 9.
El mecanismo más fácil para descargar Mininet y los paquetes necesarios para
instalar OpenFlow 1.3, se describen en la siguiente página
https://github.com/CPqD/ofsoftswitch13/wiki/OpenFlow-1.3-Tutorial como se
observa en la figura 10.
80
La instalación de Mininet y OpenFlow 1.3 se realiza de la siguiente manera:
PROCESO DE INSTALACIÓN
- Abrir el “terminal”
- Con el siguiente comando se instalan los siguientes elementos:
Mininet, Switch del software, Nox13oflib y Wireshark.
cd $HOME/
git clone git://github.com/Mininet/Mininet
Mininet/util/install.sh -n3fxw
81
Figura 12. Plugin de Wireshark
82
Figura 14. Solución al problema del scons.
83
Figura 15-2. Detección del error
cd ofdissector
cd src
export WIRESHARK=/usr/include/wireshark
scons install
84
Nota: Al finalizar este tutorial, el usuario ya podrá disponer de todas las
herramientas necesarias para la utilización de OpenFlow 1.3.
1. Abrir un terminal
2. Ejecutar el controlador NOX13OFLIB, para ello se debe ejecutar el
siguiente comando estando en el directorio home:
cd nox13oflib
ls
cd build
ls
cd src
./nox_core -v -i ptcp:6633 switch
85
TOPOLOGÍAS DE MININET
Nota: Cada vez que se vaya a ingresar una topología debe cerciorarse que el
controlador NOX13OFLIB esté activo, además es indispensable poner
controller remote como se pudo observar en las dos topologías vistas
anteriormente.
86
los host a través del comando ping como se observa en la figura 19
conectividad.
87
Anexo C. Instalación del controlador RYU
Versión de 12.04
Ubuntu
Herramientas - Terminal
utilizadas
Objetivo - Realizar una explicación detallada de la forma como se
instala el controlador RYU en Ubuntu.
1. Abrir el terminal
2. Ejecutar el comando sudo apt-get install -y python-pip.
88
5. Ejecutar el comando sudo apt-get install -y python-ecdsa.
89
- Posteriormente, se procede a descargar el controlador RYU, para ello es
necesario ejecutar el siguiente comando.
90
Anexo D. Utilización de aplicación para el controlador RYU que da
comportamiento de routers a los switches.
Versión de 12.04
Ubuntu
Herramientas - Mininet
utilizadas - RYU
Objetivo - Dar comportamiento de routers a los switch de una Red
Definida por Software emulada con el controlador RYU a
través de una aplicación codificada en Python.
1. Abrir el terminal.
2. Ejecutar el comando sudo service openvswitch-switch restart,
para iniciar los servicios de Open vSwitch como se observa en la figura 2.
91
Figura 2. Inicialización de los servicios de Open vSwitch
.
3. Después de haber inicializado el servicio de Openvswitch, se
procede a la ejecución de la topología como se observa en la figura 3, para
ello basta ejecutar el siguiente comando.
92
Mininet> xterm s1 (switch al que desea ingresar en este caso
ingresamos al switch 1)
93
● Host1 (H1) ip addr del 10.0.0.1/8 dev h1-eth0
ip addr add 172.16.20.10/24 dev h1-eth0
cd ryu
./bin/ryu-manager --verbose ryu/app/rest_router.py
94
Figura 6. Ejecución del controlador RYU
95
- En la figura 8 se observa todas las configuraciones necesarias, las cuales
deben de ser asignadas dentro del controlador c0 cómo se realizó en el
paso anterior.
96
- Una vez ha terminado de ajustar las rutas por defecto en cada Host, se
puede deducir que la configuración ha sido exitosa, para verificar esto, es
necesario realizar una prueba de conectividad como se observa en las
figura 12 y 13.
97
Anexo E. Emulación de una topología simple configurada con IPv6 con el
controlador Nox13oflib
Versión de 12.04
Ubuntu
Herramientas - Mininet
utilizadas - NOX13OFLIB
- Wireshark
cd nox13oflib
cd build
98
cd src
./nox_core -v -i ptcp:6633 switch
sudo mn –mac
99
- Una vez el usuario ha ejecutado la topología, se procede a la asignación de
las direcciones IPv6 a los host a través de los siguientes comandos:
100
Anexo F. Creación y utilización de servidor HTTP en una Red Definida por
Software usando RYU.
Versión de 12.04
Ubuntu
Herramientas - Mininet
utilizadas - RYU
- Servidor HTTP
Objetivos - Explicar de manera detallada la forma como se instala un
servidor HTTP.
- Explicar la forma como se ejecuta un servidor HTTP en el
emulador Mininet.
101
Posterior a la instalación de los elementos anteriores, puede procederse así para
la ejecución del servidor y la emulación de la SDN:
1. Abrir el terminal.
2. Ejecutar el controlador RYU, para ello solo basta ingresar el siguiente
comando (Figura 2).
cd RYU
./bin/ryu-manager --verbose ryu/app/simple_switch_13.py
- xterm h1
- xterm h2
102
5. Después de visualizar los xterm, se selecciona uno de los dos host para
configurarlo como servidor, en este caso se selecciona el host 1 como el
servidor, el comando que se utiliza para adaptar al host 1 como servidor es
el siguiente: python –m SimpleHTTPServer; Una vez realizado este
procedimiento debe ingresarse al host 2 para realizar la configuración del
cliente y la transferencia del archivo, la estructura del comando para
realizar este tipo de peticiones al servidor HTTP es el siguiente:
Nota: es importante aclarar que la carpeta “home” fue la carpeta raíz donde
se ejecutó el servidor y donde se encontraba el archivo “1.jpg”
transferido en la petición del cliente.
103
AUTORIZACIÓN
Yo, Bryan Valencia Suárez mayor de edad, vecino de Pereira, identificado con la
Cédula de Ciudadanía N° 1087491950 de Belén de Umbría actuando en nombre
propio, en mi calidad de autor del trabajo de tesis___, monografía ____, trabajo de
grado__x__, informe de práctica empresarial ____, denominado: Prototipo de Redes
IPv6 Definidas por Software Mediante Mininet. Presentado como requisito para
optar el título de Ingeniero de Sistemas y Telecomunicaciones, en el año 2016,
hago entrega del ejemplar respectivo y de sus anexos de ser el caso, en formato
digital o electrónico (CD-ROM) y autorizo a LA UNIVERSIDAD CATÓLICA DE PEREIRA,
para que en los términos establecidos en la Ley 23 de 1982, Ley 44 de 1993, Decisión
Andina 351 de 1993, Decreto 460 de 1995 y demás normas sobre la materia, utilice y
use en todas sus formas, los derechos patrimoniales de reproducción, comunicación
pública, transformación y distribución (alquiler, préstamo público e importación) y los
demás derechos comprendidos en aquellos, que me corresponden como creador de la
obra objeto del presente documento. También autorizo a que dicha obra sea incluida
en bases de datos. Esta autorización la hago siempre que mediante la correspondiente
cita bibliográfica se le de crédito a mi trabajo como autor.
Con todo, en mi condición de autor me reservo los derechos morales de la obra antes
citada con arreglo al artículo 30 de la Ley 23 de 1982. PARÁGRAFO: La presente
autorización se hace extensiva no sólo a las facultades y derechos de uso sobre la obra
en formato o soporte material, sino también para formato virtual, electrónico, digital,
óptico, usos en red, internet, extranet, intranet, etc., y en general para cualquier
formato conocido o por conocer.
Firma (s),
_____________________
CC. 1087491950
104
105