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

 

INTELIGENCIA ARTIFICIAL – Simulación del modelo de Crime

Continuamos con foco sobre el segundo trabajo analizado “Crime and punishment: Does it pay to punish?” debido a que tiene potencial para su extensión a la Teoría de Juegos. En principio se intenta replicar el modelo para efectuar algunas modificaciones y presentar eventualmente un nuevo modelo.

La herramienta utilizada es el notebook Jupyter en python que permite incorporar anotaciones junto con la configuración del modelo, su simulación y análisis.

Simulacion+Crime++Punishment

El próximo paso es agregar diferentes variables o reemplazarlas para otorgar mayor complejidad y riqueza al mismo.

Cambios propuestos:

  • La riqueza (wealth) puede generar ingresos mensuales (wage) a través de inversiones
    Se nota que una persona de bajos ingresos (random de inicializacion) siempre es
    propenso a delinquir, por lo cual si consideramos la riqueza acumulada para generar
    ingresos el modelo sería más apropiado.
  • Modificador de honestidad: agregar dependencia sobre la multa y el tiempo de castigo

INTELIGENCIA ARTIFICIAL – Análisis preliminar de trabajos

A partir de la lectura del trabajo de Kumacheva surge la siguiente duda:

La idea seria respetar el esquema de jerarquia de 3 niveles? Porque se había hablado sólo de gobierno-ciudadano y no recuerdo si se incorporó al inspector. Me parecio interesante como relaciona los 3 jugadores pero desconozco si se complica llevarlo asi a n jugadas.

Se debate en el equipo y se pacta continuar con el esquema de 2 jugadores. A partir de ello se plantean los siguientes puntos a continuar:

– Un primer punto (que no es estrictamente necesario) podría ser un pequeño relevamiento de los datos reales en Argentina (o en otra región), a ver si en plazos largos como dice el paper (20 años) se cumplen en algo estos pronósticos. No tengo claro de dónde sacar esos datos, pero deben existir. En el caso en que el castigo siga las normas del paper, ver si tendió o no a bajar la tasa de delito. Si no siguiera esas normas, o si aquella no bajara… se justificaría un cambio en el modelo.

– Ver si en U = [(1 − pi )(S + tau Wi) − pi (1 + fD)S] − Hi − tau Wi (f. 4, pág 4) se puede prescindir de Hi es decir que no dependa de la honestidad, o dependiera de ella de otra manera, o bien indirectamente. (Este cambio podría ser trivial.)

– Ver (a más largo plazo) si Ucrime de un agente pudiera depender directamente de las Hi de los otros agentes, o bien de los Wi de los otros. Esto representaría una de las maneras en que los agentes puedan interactuar (lo que estuvimos hablando un poco).
O quizá que tan sólo Hi dependa de los otros Hj (parece razonable, ya que la honestidad, o la falta de ella, suelen ser contagiosas). Pero también importará si esto será o no una consecuencia de la actualización de las Hi (pág 5, arriba). En última instancia compararía una y otra situación.

– Hacer una simulación más general, con algunas de estas consideraciones, para obtener gráficos como los dados. Es esencialmente un ciclo principal que calcula unos valores (en un ciclo interno), y actualiza otros “mensuales” por así llamarlos.

– Buscar un resultado teórico. (Para discutir primero…) A la vez, buscar la relación con los equilibrios; de eso no habla nada el paper, y podría ser lo más interesante.

INTELIGENCIA ARTIFICIAL – Reunión inicial

Durante la primera reunión del equipo se debatieron diversos temas a tratar, preferentemente en el campo de la Inteligencia Artificial. Debido a la especialidad del tutor asignado (Dr Ariel Arbiser) se plantearon los siguientes proyectos a investigar relacionados con la Teoría de Juegos y luego explorar la posibilidad de extender los trabajos analizados e incorporar técnicas de exploración de datos sobre modelos simulados.

Trabajos existentes a analizar:

  • The Strategy of Tax Control in Conditions of Possible Mistakes and Corruption of Inspectors (Suriya Sh. Kumacheva)

Presenta un modelo compuesto por dos jugadores (agente de retención y población) donde se intenta encontrar un equilibrio que permita fijar el nivel de presión impositiva en relación a la evasión de la población, logrando así una solución óptima para ambos.

  • Crime and punishment: Does it pay to punish? (J.R.Iglesias, V.Semeshenko, E.M.Schneider, M.B.Gordon)

Este modelo se basa en presentar una descripción de cómo afecta la probabilidad de captura de un crimen en cada persona que percibe cierto nivel de ingresos. Incorpora variables que representan la honestidad y el tiempo de prisión con su multa según el nivel del crimen cometido. Siempre aplicado a casos de crímenes económico.

Se pacta comenzar la lectura e incorporar los siguientes textos de apoyo:

  • Marcus Pivato, “Voting, Arbitration, and Fair Division”
  • Anna R. Karlin and Yuval Peres, “Game Theory, Alive”

Configuración SDN en router TP-LINK WR1043NDv3

Conectamos al switch por ssh
ssh root@192.168.1.1

Instalamos openvswitch
opkg update && opkg install openvswitch

Confirmamos que ovsdb-server en funcionamiento
ps | grep openvswitch

Modificamos las configuración de red editando el archivo /etc/config/network

config interface 'loopback'  
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'  
    option ula_prefix 'fd9e:ad02:4a25::/48'

# dhcp wan for management
config interface 'wan'  
    option ifname 'eth0'
    option proto 'static'
    option ipaddr '192.168.0.10' 
    option netmask '255.255.255.0'

config interface 'wan6'  
    option ifname 'eth0'
    option proto 'dhcpv6'

config switch  
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'
    option enable_learning '0'

# Wan en vlan 2
# las demas interfaces en vlan 1
config switch_vlan  
    option device 'switch0'
    option vlan '2'
    option ports '5 6'

config switch_vlan  
    option device 'switch0'
    option vlan '3'
    option ports '1 0t' # 0t indica etiquetar paquetes en la interfaz 0

config switch_vlan  
    option device 'switch0'
    option vlan '4'
    option ports '2 0t'

config switch_vlan  
    option device 'switch0'
    option vlan '5'
    option ports '3 0t'

config switch_vlan  
    option device 'switch0'
    option vlan '6'
    option ports '4 0t'

# eth1.* estática y controlada por el controlador
config interface 'lan1'  
    option ifname 'eth1.3'
    option proto 'static'

config interface 'lan2'  
    option ifname 'eth1.4'
    option proto 'static'

config interface 'lan3'  
    option ifname 'eth1.5'
    option proto 'static'

config interface 'lan4'  
    option ifname 'eth1.6'
    option proto 'static'

Modificamos el archivo /etc/config/firewall para permitir todo el tráfico en la wan que usamos para la conexión con el controlador

config defaults  
    option syn_flood        1
    option input            ACCEPT
    option output           ACCEPT
    option forward          ACCEPT

Reiniciamos firewall y red.

/etc/init.d/firewall restart && /etc/init.d/network restart 

Conectamos a la wan del router ssh root@192.168.0.10

Configuramos ovs

ovs-vsctl add-br br-lan \
    -- set bridge br-lan other-config:hwaddr=00:00:aa:bb:cc:dd \
    -- set bridge br-lan protocols=OpenFlow10,OpenFlow13 \
    -- set-controller br-lan tcp:192.168.0.1:6633 \
    -- add-port br-lan eth1.3 \
    -- add-port br-lan eth1.4 \
    -- add-port br-lan eth1.5 \
    -- add-port br-lan eth1.6

 

En el controlador creamos el archivo de configuración /etc/ryu/faucet/faucet.yaml

vlans:
 1:
  vid: 1

dps:
 switch-1:
  dp_id: 0xaabbccdd
  timeout: 3600
  arp_neighbor_timeout: 3600
  proactive_learn: True

  interfaces:
   1:
    name: "eth1.3"
    native_vlan: 1
   2:
    name: "eth1.4"
    native_vlan: 1
   3:
    name: "eth1.5"
    native_vlan: 1
   4:
    name: "eth1.6"
    native_vlan: 1

Comandos útiles:

# Reiniciar faucet
pkill -HUP -f faucet.faucet

# Mostrar puerto-interfaz en Open vSwitch
ovs-vsctl -- --columns=name,ofport list Interface

# Mostrar flujos en switch, dump_flows br-lan
dump_flows () {
  ovs-ofctl -OOpenFlow13 --names --no-stat dump-flows "$@" \
    | sed 's/cookie=0x5adc15c0, //'
}

# Configurar datapath (16 dígitos hexa) en Open vSwitch
ovs-vsctl set bridge $BRIDGE other-config:datapath-id=$DATAPATHID

Blockchain: el Big Bang

Bienvenidos a nuestro blog, es un orgullo y un privilegio poder compartir nuestro conocimiento con la comunidad.

Nuestro motivador es ayudar a difundir y mejorar el entendimiento de la comunidad sobre Blockchain, el conjunto de las tecnologías que la hacen posible, sus diferentes implementaciones, así como sus potenciales aplicaciones a la solución de problemas actuales y futuros.
Para esto iremos compartiendo con ustedes información de distinto nivel para ayudarlos y guiarlos en este campo tan novedoso.

Para comenzar nos gustaría comentar con uds los inicios de esta tecnología y algunos términos para que se familiaricen con los mismos.
En su paper original publicado en 2008 Satoshi Nakamoto propone por primera vez Bitcoin, un sistema de dinero electrónico entre pares (P2P: Peer to Peer) y simultáneamente define (implícitamente) blockchain, como la tecnología subyacente que la sostiene.

En este documento se describe como Satoshi hace uso de técnicas preexistentes, las cuales combinó para obtener una solución al problema de los intermediarios de confianza.

Entre las principales técnicas encontramos Hashcash: una medida contra el DDoS propuesta por Adam Back. Esta técnica fue propuesta originalmente en 1997 (aunque el paper fue publicado en 2002) como un mecanismo para reducir el abuso sistemático de recursos a través de internet. Su aplicación más conocida es la prevención del SPAM.

El mecanismo define cost-functions como funciones que son eficientemente verificables, pero parametrizablemente difíciles de calcular. Esto significa que son computacionalmente fáciles de verificar pero de difícil cálculo. Esto obliga a quien quiera hacer uso del recurso pasar por este mecanismo de validación que para una persona que quiere, por ejemplo, enviar un correo no implica problema, pero si otra quiere enviar millones de correos como en el caso del spam si supondría un costo demasiado alto de afrontar.

Este mecanismo es utilizado en el ecosistema blockchain como parte del esquema llamado PoW (Proof of Work) para que por ejemplo los mineros de tokens, como el bitcoin entre los más populares, tengan que efectuar millones de operaciones para poder encontrar un bloque válido que pueda ser incorporado a la cadena y que el resto de los nodos puedan aprobar como un bloque válido para agregar a la cadena.

Hasta aqui la primera entrega del blog. En este primer acercamiento hemos mencionado varios temas y palabras claves que son piezas claves de la tecnología en cuestión. Hagamos un repaso por estos términos y palabras claves:

  • Satoshi Nakamoto
  • Hashcash
  • cost-functions
  • Proof of Work (PoW)
  • Token
  • Cadena
  • Bloque
  • Nodo
  • Mineros
  • P2P (Peer to Peer)

Los animamos a buscar por uds mismos estos conceptos y los esperamos en el próximo post.

Recursos Relacionados:

https://bitcoin.org/bitcoin.pdf

http://www.hashcash.org/papers/hashcash.pdf