Actividad n° 8: Manejo de Trunk de VLANs sobre OpenWRT

1) Armar una topología similar a la que se muestra adjunta sobre entorno de simulación. Pueden usar Mininet y/o GNS3 para armar la topología. Les aconsejo correr el controlador en una máquina virtual, lo que les servirá tanto para el caso de Mininet como para el de GNS3. Pueden usar como controladores OpenDaylight y/o Ryu/Faucet.

2) Realizar pruebas de conectividad usando la herramienta “Ping” desde la PC1 hacia las demás. Verificar el comportamiento y anotar conclusiones.

3) Obtener la versión del OpenVSwitch que están utilizando y verificar si soporta Trunk de VLAN’s (Protocolo IEEE 802.1Q)

4) Buscar script y/o aplicación que corra sobre los controladores y permita trabajar sobre el switch con Trunk de VLAN’s.

5) Crear VLAN n° 10 y asignarla a los puertos de las PC1 y PC3. Crear VLAN n° 20 y asignarla a las PC2 y PC4.

6) Probar conectividad desde PC1 hacia las demás. Probar conectividad desde PC2 hacia las demás. Anotar conclusiones.

7) Replicar la topología simulada en hardware real. Utilizar los switches TP-Link con OpenWRT y el OpenVSwitch; previamente verificar que la versión compilada del OVS soporte VLAN’s.

8) Realizar posteos en la Web del CIDI con el avance de la actividad (al menos un posteo semanal, puede ser grupal ó individual — Por favor, titulen los posteos como ” Actividad n° 8 — XXXXXXXXX”, así podemos vincular los posteos a la actividad.

9) Armar un informe escrito en modo tutorial, incluyendo topologías, descripción de las pruebas / escenarios, capturas de pantalla, resultados y conclusiones.

 

Actividad n° 7: Manejo de VLANs sobre OpenWRT

1) Armar una topología similar a la que se muestra adjunta sobre entorno de simulación. Pueden usar Mininet y/o GNS3 para armar la topología. Les aconsejo correr el controlador en una máquina virtual, lo que les servirá tanto para el caso de Mininet como para el de GNS3. Pueden usar como controladores OpenDaylight y/o Ryu/Faucet.

2) Realizar pruebas de conectividad usando la herramienta “Ping” desde la PC1 hacia las demás. Verificar el comportamiento y anotar conclusiones.

3) Obtener la versión del OpenVSwitch que están utilizando y verificar si soporta VLAN’s (Protocolo IEEE 802.1Q)

4) Buscar script y/o aplicación que corra sobre los controladores y permita trabajar sobre el switch con VLAN’s.

5) Crear VLAN n° 10 y asignarla a los puertos de las PC1 y PC2. Crear VLAN n° 20 y asignarla a las PC3 y PC4.

6) Probar conectividad desde PC1 hacia las demás. Probar conectividad desde PC3 hacia las demás. Anotar conclusiones.

7) Replicar la topología simulada en hardware real. Utilizar los switches TP-Link con OpenWRT y el OpenVSwitch; previamente verificar que la versión compilada del OVS soporte VLAN’s.

8) Realizar posteos en la Web del CIDI con el avance de la actividad (al menos un posteo semanal, puede ser grupal ó individual — Por favor, titulen los posteos como ” Actividad n° 7 — XXXXXXXXX”, así podemos vincular los posteos a la actividad.

9) Armar un informe escrito en modo tutorial, incluyendo topologías, descripción de las pruebas / escenarios, capturas de pantalla, resultados y conclusiones.

https://cidi.unsam.edu.ar/wp-content/uploads/2018/04/Actividad_n_7.png

 

Uso de OpenWRT

¡¡Buenas a tod@s nuevamente!! Como lo anuncia el título, vamos a incorporar al laboratorio dos routers TP-Link TL-WR1043ND (Ver 3.0) — Les adjunto Link oficial para referencia y características del equipo.

https://www.tp-link.com/ar/products/details/cat-9_TL-WR1043ND.html#overview

La idea con estos equipos va a ser cambiarles el firmware a OpenWRT, con lo cual vamos a lograr tener varias funcionalidades adicionales, entre ellas poder correr OpenVSwitch. Por lo tanto, lo iremos incorporando a los diversos escenarios que se vayan proponiendo.
La primer tarea consistirá en lograr instalar el nuevo firmware OpenWRT en el router — SIN VOLVERLO INUTILIZABLE!!
Bueno, para que vayan viendo un poco de qué se trata, les dejo el link de la página oficial de OpenWRT y lo referente al router en cuestión.

https://openwrt.org/

Uso de Python

¡¡Buenas a tod@s!! Durante algunas de las reuniones que mantuvimos el año pasado, varios sugirieron comenzar formalmente con el uso de este lenguaje. Por lo tanto, la idea es comenzar a utilizarlo, haciendo foco principalmente en el uso orientado a programabilidad de redes.
Dado que muchos utilizan sistemas operativos basados en linux, vamos a utilizar con mayor frecuencia la versión 2.7 de Python.
Bueno, para dar el paso inicial, lo que les sugiero realizar es lo siguiente:

1 – Realizar los tutoriales de introducción al lenguaje en https://www.learnpython.org/en/ (También hay una versión en español en https://www.learnpython.org/es/) — Lo mejor de estos tutoriales es que no tienen que instalar nada, el laboratorio está montado sobre la misma plataforma.

2 – Les agrego algunos videos de David Bombal, quien brinda cursos de Python orientado a redes, y en este caso utiliza también GNS3.

https://www.youtube.com/watch?v=-1Z6ygHO–8

 

Link adicional con tutoriales de python en castellano –> http://www.python.org.ar/aprendiendo-python/

Uso de GNS3

Uso de GNS3

¡¡Buenas a todos!! Este año vamos a incorporar el uso de esta nueva herramienta dentro del grupo. GNS3 es un simulador avanzado que permite, al día de hoy, integrar en un mismo proyecto varias de las cosas que venimos usando por separado (Ej: Máquinas virtuales, controladores, switches, etc)

Como para empezar a ejercitar las neuronas nuevamente, les propongo seguir el siguiente camino:
1 – Registrarse en la página oficial (Es un requisito para poder descargar software y participar en las comunidades).
2 – Instalarse en sus PC el GNS3 GUI + Máquina Virtual GNS3 — Pueden buscar las guías tutoriales para instalar bajo el sistema operativo que usen.
3 – Buscar algún tutorial para empezar a utilizarlo. Les recomiendo una serie de videos de David Bombal que están disponibles en Youtube (Ver Link – Los videos están explicados en idioma inglés)

Links:

https://www.gns3.com/

https://www.youtube.com/watch?v=x9pGYyEqLYs

https://www.youtube.com/watch?v=HdntvE0Nn-c

 

Instalacion OpenWRT en Tp-Link TL-WR1043ND Ver:3.0

Flasheo de OpenWRT Chaos Claimer (15.05) en TL-WR1043ND revision v3 via tftp.

1- Descargar v2 15.05 factory image v2 15.05

2- Cambiar el numero de versión en el header del archivo de 02 a 03:
echo -e "\003" | dd seek=67 bs=1 count=1 conv=notrunc of=firmware_file.bin
Reemplazar firmware_file.bin por el nombre del archivo descargado.

3- Cambiar el nombre del archivo a wr1043v3_tp_recovery.bin

4- Instalar servidor tftp, en ubuntu 16.04:
sudo apt-get install tftpd-hpa

5- Confirmar el funcionamiento del servidor
sudo service tftpd-hpa status

6- Mover el archivo de firmware al directorio tftpboot:
mv wr1043v3_tp_recovery.bin /var/lib/tftpboot/

7- Cambiar la ip del host a 192.168.0.66

8- Enchufar el router mientras presionamos el botón de reinicio por unos segundos. Todos LEDs del router se encienden indicando que el se esta subiendo el archivo.

9- Cambiamos las ip del host a 192.168.1.10. Abrimos sesión telnet a 192.168.1.1

Instalacion de Chaos Clamer 15.05.1

1- En OpenWRT asignar un password con el comando passwd para habilitar ssh

root@OpenWrt:/# passwd
Changing password for root
New password:
Retype password:
Password for root changed by root
root@OpenWrt:/#

2- Descargar Chaos Calmer 15.05.1 stable for v2

3- Copiar el firmware descargado a /tmp/ del router mediante scp.
scp openwrt-15.05.1-ar71xx-generic-tl-wr1043nd-v2-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/

5- En el router ejecutamos sysupgrade para el flasheo de la nueva imagen:
sysupgrade -n -F /tmp/openwrt-15.05.1-ar71xx-generic-tl-wr1043nd-v2-squashfs-sysupgrade.bin

6- Esperamos unos segundos. Luego del reinicio abrimos sesion telnet y observamos el cambio a 15.05.1.

Reuniones SDN – Febrero 2018 – 2da Reunión

En la reunión de la fecha se hizo una puesta en común de los siguientes temas:

1. Se comunicó al grupo la solicitud de presupuestos para adquirir el servidor de apoyo para el laboratorio 3.

2. Se establecieron y discutrieron los deadlines correspondientes a la entrega de informes, presentación de borradores de papers CACIDI 2018 y se establecieron las comisiones responsables para la redacción y presentación de los mismos.

3. Se analizaron los comentarios realizados por el ingeniero Luis Marrone(UNLP) sobre la secuencia de investigación apropiada sobre los distintos tópicos de este grupo.

4. Se analizaron las presentaciones a realizar para el CACIDI 2018.

5. Se evaluaron materiales y presupuestos necesarios para los próximos pasos a seguir sobre el tema en cuestión.

Reuniones SDN – Enero 2018

Hasta el momento en el mes de enero nos juntamos en dos fechas los integrantes del grupo de SDN: Matías Damico (representando a José Cahuana), Deolindo Zanuttini, Daniel Priano, María Claudia Abeledo (representando a Joaquin Gonzalez), Aldana Lacapmesure, Christian Andres, Matías Marsicano, Alejandro Dini y Pedro Iriso.

Se llego a lo siguiente:

  1. Se define realizar y documentar un marco teórico apropiado con bibliografía y documentos en línea de sitios académicos reconocidos (IEEE, Stanford University, entre otros).
  2. Se establece la fecha del 30-04 para la entrega del informe.
  3. Se planificó realizar un escenario en el laboratorio de redes de la UNSAM, sobre los servidores con los que se cuenta y eventualmente, otro de mayor capacidad que pueda adquirirse con fondos de UNSAM. En este escenario se analizarán sobre redes instaladas en las diferentes VM, los elementos que definen una SDN.
  4. Fechas de reunión: 04-01-18, 06-01-2018,09-01-2018

Reuniones SDN – Febrero 2018

En la primer reunión del mes de Febrero, nos juntamos los integrantes del grupo de SDN: Matías Damico, José Cahuana, Deolindo Zanuttini, Daniel Priano, María Claudia Abeledo, Joaquin Gonzalez, Aldana Lacapmesure, Christian Andres, Matías Marsicano, Alejandro Dini y Pedro Iriso.

Estuvimos trabajando en lo siguiente:

  1. Se repasaron contenidos y se investigó nuevos conceptos discutidos entre los integrantes del equipo.
  2. Se propuso una idea en común para investigar acerca de la comunicación por flujos y poder llevarla a la practica para obtener resultados.
  3. Se propuso la compra de un servidor para los laboratorios ante las autoridades de la UNSAM.
  4. Se intercambió información en videos y libros para profundizar los conocimientos que ya se habían obtenido y así poder fortalecerlos.
  5. Se analizaron los conceptos, licencias de software libre OpenFlow y OpenDaylight y CORP.

Introducción a Openstack

Estructura

Compute (Nova)

Provee servicios para soportar la administración de instancias de máquinas virtuales.

Object Storage (Swift)

Provee soporte para almacenar y cargar datos arbitrariamente en la nube.

Block Storage (Cinder)

Provee de almacenamiento por bloques para instancias de computo.

Networking (Neutron)

Antiguamente llamado Quantum, provee varios servicios de networking a los usuarios de la nube, como dirección IP de administración, DNS, DHCP, balanceo de carga, y grupos de seguridad ( reglas de acceso a la red, como políticas de firewall).

Dashboard (Horizon)

Provee una interfaz web para usuarios y administradores de la nube. Usando esta interfaz, usuarios y administradores pueden aprovisionar, administrar, y monitorizar los recursos de la nube.

Identity service (Keystone)

Es un servicio compartido que provee servicios de autenticación y autorización hacia toda la infraestructura de la nube.

Image service (Glance)

Provee el servicio de administración imágenes de disco, incluyendo descubrimiento de imágenes, registración, y servicios de entrega al servicio de computo, como se necesite.

Actividad n° 6: Manejo de VLANs (Virtual LAN)

Objetivo: Desarrollar una aplicación que, mediante el uso de VLANs, permita crear sub-redes virtuales para distintos servicios que se definirán entre un host origen y un host destino. La topología de red sobre la cual se crearán las sub-redes virtuales, deberá considerar la existencia de al menos 2 switches en el recorrido desde el host origen al host destino (uso de VLAN en acceso + trunk de VLAN)

Etapas:
1) Entender el principio de funcionamiento y aplicación de las VLANs, escribir una breve descripción.
2) Consensuar, definir y publicar cuál sería la maqueta de pruebas.
3) Describir en un diagrama de flujo del funcionamiento que se desea obtener de las VLANs.
4) Investigar si existe código existente para dicha funcionalidad, entender y describir su funcionamiento.
5) Proponer un código para la aplicación solicitada.
6) Integrar la aplicación con lo desarrollado por los demás grupos.
7) Definir métricas para evaluar el desempeño de la aplicación desarrollada y realizar prueba de desempeño (performance).
8) Recopilar información y elaborar informes finales.

Actividad n° 5: Access Control Lists (ACL)

Objetivo: Desarrollar una aplicación que permita construír listas de control de acceso a recursos mediante filtrado.
>> Método de filtrado 1: Por dirección MAC

Etapas:
1) Entender el principio de funcionamiento y aplicación de las ACL, escribir una breve descripción.
2) Consensuar, definir y publicar cuál sería la maqueta de pruebas.
3) Describir en un diagrama de flujo el funcionamiento que se desea obtener de las ACL.
4) Investigar si existe código existente para dicha funcionalidad, entender y describir su funcionamiento.
5) Proponer un código para la aplicación solicitada.
6) Integrar la aplicación con lo desarrollado por los demás grupos.
7) Definir métricas para evaluar el desempeño de la aplicación desarrollada y realizar prueba de desempeño (performance).
8) Recopilar información y elaborar informes finales.

Informe N2

Pruebas con OVS y Linux namespaces

Pruebas con OVS y Linux namespaces

Inspeccionamos el funcionamiento de Mininet al ejecutar sus tareas de forma manual.
Creamos los network namespaces que simulan los hosts.
Usando virtual ethernet conectamos los hosts a un switch OVS.


# crear namespaces
ip netns add red
ip netns add green


# crear switch
ovs-vsctl add-br OVS1


# crear interface virtual ethernet
ip link add eth0-r type veth peer name veth-r
# conectamos un extremo al namspace
ip link set eth0-r netns red
# conectamos el otro extremo al switch
ovs-vsctl add-port OVS1 veth-r


# repetimos para el otro namespace
ip link add eth0-g type veth peer name veth-g
ip link set eth0-g netns green
ovs-vsctl add-port OVS1 veth-g


# Levantar interfaces y asignar direcciones
ip link set veth-r up
ip netns exec red ip link set dev lo up
ip netns exec red ip link set dev eth0-r up
ip netns exec red ip address add 10.0.0.1/24 dev eth0-r
ip link set dev veth-g up
ip netns exec green ip link set dev lo up
ip netns exec green ip link set dev eth0-g up
ip netns exec green ip address add 10.0.0.2/24 dev eth0-g

Primeros pasos con Switch OVS

Luego de una lectura a la documentación de Open vSwitch y a diferentes tutoriales que explican su funcionamiento, se pueden seguir los pasos para virtualizar diferentes interfaces de red que se interconectarán entre sí a través de un switch (de forma similar a Mininet, pero directamente a través de Open vSwitch).

Siguiendo los pasos en el archivo antes mencionado, se puede obtener una topología como la siguiente y lograr conectividad entre los namespace rojo y verde.

Switch OVS
Switch OVS

 

El siguiente paso es implementar reglas de filtrado por MAC en el Switch OVS

 

EDIT: se publicó un script que ejecuta paso a paso el desarrollo de este experimento aquí

Resumen de primeros avances

Dado el retraso en publicar los informes de avance, sirva este primero como resumen del progreso hasta ahora.

Comenzamos junto con todo el grupo instalando el entorno en máquinas virtuales con Ubuntu 16.04 a través de VirtualBox. A lo largo de distintos ensayos fuimos conociendo las herramientas y familiarizándonos, lo que concluyó con la confección del informe Nº1, donde a través de Mininet y RYU especificamos una topología y configuramos los switches bajo distintos comportamientos.

Luego nos dividimos en diferentes grupos, y a partir de eso nos concentraremos en Open vSwitch.

Grupos de trabajo y áreas de desarrollo SDN & NFV

Quedaron definidas los siguientes grupos de trabajo y desarrollo hasta el momento:

> Grupo A
>> Area de desarrollo: Gestión y virtualización de infraestructura
>> Herramientas a utilizar: OpenStack
>> Funciones: Conocer al detalle las funcionalidades de las herramientas / Participar en las comunidades de desarrollo / Interactuar con los demás grupos para lograr el objetivo final propuesto / Postear los avances semanalmente
>> Referente Grupo: Christian Andrés
>> Integrantes: Christian Andrés

> Grupo B
>> Area de desarrollo: Plano de Control / Controladores
>> Herramientas a utilizar: Ryu (Python) / OpenDaylight (Java)
>> Funciones: Conocer al detalle las funcionalidades de las herramientas / Participar en las comunidades de desarrollo / Interactuar con los demás grupos para lograr el objetivo final propuesto / Postear los avances semanalmente
>> Referente Grupo: Matías D’amico
>> Integrantes: Matías D’amico / José Cahuana / Aldana Lacapmesure

> Grupo C
>> Area de desarrollo: Protocolos de control / Plano de datos (Switch virtual)
>> Herramientas a utilizar: OpenvSwitch
>> Funciones: Conocer al detalle las funcionalidades de las herramientas / Participar en las comunidades de desarrollo / Interactuar con los demás grupos para lograr el objetivo final propuesto / Postear los avances semanalmente
>> Referente Grupo: Nicolás Pucci
>> Integrantes: Nicolás Pucci / Alejandro Dini

> Colaboradores
>> Función: Recopilación y documentación / Armado de informes
>> Integrantes: Jonathan Rómbola / Ana Gisel Padilla / Leonardo Galarza

Propuestas y objetivos de trabajo para SDN & NFV

Líneas de trabajo para ciencia aplicada:
1) Desarrollo de aplicaciones que hagan uso de plataformas existentes
>> Objetivo 1: Integrar aplicaciones sobre el controlador mediante el uso de API
>> Objetivo 2: Integrar aplicaciones sobre el gestor de infraestructura virtual mediante el uso de API
Posibles aplicaciones que se pueden desarrollar:
> Firewall
> Balanceador de carga
> NAT
> Control de sesiones
> Auto-provisioning
> Reutilización de ancho de banda
> Restauración de servicios por redes alternativas

2) Integración de plataformas de software existentes (Switch/Router + Controlador + Cloud)
>> Plano de datos –> Switches/Router: OpenvSwitch
>> Plano de control –> Controladores: OpenDaylight, Ryu, ONOS, Floodlight
>> Gestión de infraestructura virtual –> OpenStack
>>> Objetivo 1: Integrar Mininet + OpenDaylight
>>> Objetivo 2: Integrar OpenDaylight + OpenStack
>>> Objetivo 3: Integrar Mininet + OpenDaylight + OpenStack
>>> Objetivo 4: Integrar Dispositivos embebidos (TP-LINK + OpenWRT + OpenvSwitch) + Mininet + OpenDaylight + OpenStack

3) Desarrollo de hardware para SDN (CPE, switch, router)

Líneas de trabajo para investigación:
1) Adaptación de protocolos para que trabajen sobre SDN
2) Mejora de métodos de trabajo/algoritmos para las aplicaciones que se desarrollen
3) Proponer arquitecturas para extender el uso de SDN a otros tipos de estructura de redes
4) Participación activa en foros de desarrollo existente

Routeo dinámico en SDN

Luego de realizar diversas pruebas con las implementaciones RouteFlow(https://github.com/CPqD/RouteFlow/wiki/Tutorial-2:-rftest2) y pwospf (https://github.com/mininet/mininet/wiki/Pee-Wee-OSPF-(PWOSPF)), las cuales se encuentran deprecadas y no se ha logrado resultados satisfactorios. Hemos logrado realizar la prueba que funciono tal cual lo esperado utilizando el protocolo OSPF en un lado de la red y BGP en otro lado de la red (https://github.com/edwinsc/mininet_ospf_bgp), el diagrama de red es el siguiente :