Redes Definidas por Software:
Un nuevo enfoque en la Red
Javier Richard Quinto A.
javierquinto@opennetsoft.com
jquinto@inictel-uni.edu.pe
INICTEL-UNI
Quien soy yo ?
- Magister en Ing. de la Computación.
- Investigador del INICTEL-UNI (10’)
- Forma parte del grupo de investigación
GIRA (PUCP) e INTRIG (UNICAMP)
- Lidero el proyecto: Nuevas tecnologías
en SDN/Openflow y P4, INICTEL-UNI
- Miembro del proyecto de despliegue y
documentación de nuevos servicios para
eduroam Latino América, RNP e
INICTEL-UNI
-Mis fortalezas: SDN, P4, NFV, Cloud,
Seguridad IPv4/IPv6, AAA/802.1x
@opennetsoft
fb.com/
opennetsoft
Sigueme a:
Problematica y Estrategias de
Solución en las Redes
Convencionales
Equipamiento de Redes Propietarias
Verticalmente integrado, complejo, cerrado y propietario!
Custom
Silicon
Switches de
redes
Componentes
No recomendable para propietarios de redes ni para
usuarios
Problematicas en las Redes Actuales
Source: Tutorial SDN & NFV LACNIC26 by Whitestack
Las redes como lo aprendiste en la
escuela
Source: Martin Casado CS244 Spring 2013, Lecture 6, SDN
Redes en la Práctica
Estado enlace
distribuido
Estado de
configuración estática
Source: Martin Casado CS244 Spring 2013, Lecture 6, SDN
Redes en la Práctica
Teoria y práctica son lo mismos, pero en la práctica son muy
diferentes!
Camino a la Evolución
Adapted from: Transforming the Network with OpenSDN by Big Switch Network
Camino a la Evolución
Source: Introduction to OpenFlow, SDN and NFV, Kingston Smiler
Camino a la Evolución
Custom
Silicon
Merchant
Silicon
Facebook
Camino a la Evolución
Existentes
- CLIs
- Código cerrado
- Proporcionado por el
proveedor
- Aplicaciones conocidas
Nuevas
- APIs
- Código abierto
- Proporcionado por el
cliente
- Funciones de Redes
Virtuales (NFV)
Adapted from: Kyle Mestery, Next Generation Network Developer Skills
La Tendencia en Computación
- Cambios en los
patrones de tráfico.
- El consumismo de IT
- El aumento de los
servicios en la nube
- Big Data significa
más ancho de banda
La Tendencia en Computación
Verticalmente integrado
Cerrado, propietario
Innovación lenta
Horizontal
Interfaces abiertas
Rápida inovación
Rediseñar la Red!
Plano de Datos:
Streaming de paquetes
Forward, Filter, Buffer, Mark, rate-limit, and
measure packets
Source: Adapted from J. Rexford
Rediseñar la Red!
Plano de Control:
Algoritmos Distribuidos
Seguimientos en los cambios de la topología, rutas
computarizadas, instalación de nuevas reglas
Source: Adapted from J. Rexford
Rediseñar la Red!
Recoger mediciones y configurar equipamientos
Plano de Gestión:
Escala de tiempo
Source: Adapted from J. Rexford
Rediseñar la Red!
● Gestión más simple
No necesita invertir más en el plano de gestión
● Ritmo más rápido de inovación
Menos dependencia con los Vendors y Estándares
● Interoperabilidad más fácil
Compatibilidad solamente en los protocolos wired
● Equipamientos más simple y más fácil
Más uso de software
Arquitectura SDN y NFV
Origen del Termino SDN
Redes Definidas por Software (SDN)
Plano logicamente centralizado
API al Plano de Datos
(e.g., OpenFlow)
Inteligente
& Lento
Tonto &
Rápido
Source: Adapted from J. Rexford
Redes Definidas por Software (SDN)
Source: https://www.opennetworking.com
Directamente Programable
Agilidad y Flexibilidad
Centralmente gestionado
Estándares abiertos y
neutral al vendor
Redes Definidas por Software (SDN)
Nuevas habilidades y
oportunidades
Herramientas
sofisticadas
Reduce CapEx/OpEx
Redes Definidas por Software (SDN)
Redes Definidas por Software (SDN)
Source: N. Mckeown et al.
Redes Definidas por Software (SDN)
Funciones de Redes Virtuales (NFV)
- Hardware commodity
Source: https://www.opennetworking.com , Network Function Virtualization: Perspectivas, Realidades e Desafios
- Ahorro en espacio y
energía
- Innovación más rápida
- Asignación flexible de
recursos
- Multiplicidad de usuarios
- Mayor rentabilidad
Open Networking
Source: Porqué los Tier-1 están adoptando las SDN y nFV?, whitestack
Certificaciones ONF: SDN/Openflow
SDN vs NFV
Sources: Ahmad Rostami, Ericsson Research (Kista):
http://www.itc26.org/fileadmin/ITC26_files/ITC26-Tutorial-Rostami.pdf and Uwe Michel, T-Systems
Flexibilidad y Programabilidad en la Red
(SDN & NFV)
Diferentes Modelos de SDN
Modelo: Open SDN
- Estándard abiertos
- Software de código
abierto
- APIs and SDKs
- Hardware abierto
Modelo: Hybrid SDN
- Conviven con redes
tradicionales
- Soportan Openflow 1.3
- Más adecuado para
migraciones en SDN
Modelo: Overlay SDN
- Método de despliegue
para virtualización de
redes
- Ejecutado sobre una
red separada
logicamente
- Big Switch Network y
Vmware usan overlay
Protocolo OpenFlow y su Evolución
Historia de Openflow, ACM SIGCOMM2008
● Openflow se originó en
la Univ. de Stanford en
2008.
● Openflow spec. V1.0 fue
lanzado en dic. 2009.
● Desde sus inicios
Openflow es gestionado
por la ONF.
OpenFlow y SDN
Inteligencia de las redes es movida desde el Switch hacia
un controlador externo
OpenFlow y SDN
OpenFlow y SDN
Entradas de tabla de flujos
Source: https://www.sdxcentral.com/sdn/definitions/what-is-openflow/
A Quick Jump Into SDN
SDN no es OpenFlow
pero ...
OpenFlow si es SDN
The physical separation of the network control
plane from the forwarding plane, and where a
control plane controls several devices.
Definición según la ONF:
Openflow y SDN
Aquí es en donde Openflow
si encajaría sobre SDN
Beneficios de
Openflow
- Programabilidad
- Inteligencia
centralizada
- Abstracción
OpenFlow y SDN
Interface Programable
Permite el acceso directo y manipulación del
plano de forwarding de los dispositivos de redes
tales como switches y routers, ambos físicos o
virtuales (basado en hypervisor).
Las primitivas básicas que pueden ser usadas
por una app. de software externa para
programar el plano de forwarding puede ser
comparada al conjunto de intrucción de un
CPU.
Versions OpenFlow
La más reciente versión de
OpenFlow es la 1.5.1
Cada nueva versión mejora el
protocolo y adiciona nuevas
características
Desafortunadamente los
dispositivos hardware con soporte
Openflow usan, en su mayoria, la
versión 1.0
Version Release
0.8.0 May, 5, 2008
0.8.1 May, 20, 2008
0.8.2 Oct, 17, 2008
0.8.9 Dec, 2, 2008
0.9.0 Jul, 20, 2009
1.0 Dec, 31, 2009
1.1 Feb, 28, 2011
1.2 Dec 2011
1.3 Jun, 25, 2012
1.3.1 Sep, 6. 2012
1.3.2 Apr, 25, 2013
1.4.0 Oct, 14, 2013
1.5.0 Dec, 19, 2014
1.5.1 Mar, 26, 2015
¿Qué versión usar?
1.0 vs 1.3
Los mismos conceptos
Forwarding basados en flujo.
Información acerca del control de eventos en la red y
modifcación del estado del equipamiento
Diferentes Capacidades
OpenFlow 1.3 tiene más características y cubre más aspectos que
faltan en OpenFlow 1.0
->Multiple Tables, Groups, Rate Limiting, Controller Role
OpenFlow 1.0 es más simple y más fácil de implementar que 1.3. La
mayor parte de los campos son opcionales. Removiendo éstas
características nosotros tendríamos casi la versión 1.0
Switch OpenFlow
Componentes principales
Group Table
Opciones adicionales para reenviar
paquetes Disponible desde OpenFlow 1.1
Flow Table
Lookup y forwarding
OpenFlow Channel
Comunicación entre el SW y el
controlador
Meter Table
Mecanismo simple QoS.
Disponible desde OpenFlow 1.3
Tabla de Flujos
Contiene entrada de flujo
OpenFlow 1.0 Flow entry
OpenFlow 1.3 Flow entry
Analogía de la tabla de flujo vs la tabla de enrutamientoable analogy
OpenFlow 1.0 Pipeline
OpenFlow 1.0 does not have multiple tables!
OpenFlow 1.3 Pipeline
OpenFlow 1.3 Pipeline
Instrucciones OpenFlow 1.3
Meter
Apply-Actions
Clear-Actions
Write-Actions
Write-Metadata
Goto-Table
OpenFlow 1.0 vs OpenFlow 1.3
Actions
Output
Drop
Set VLAN ID
Set VLAN priority
Strip VLAN header
Modify Ethernet, IPv4.
transport src/dst address
Enqueue
Output
Set-Queue
Drop
Group
Push-Tag/Pop-Tag
Set-Field
Change-TTL
OpenFlow 1.0 OpenFlow 1.3
Tabla: Group
Disponible desde OpenFlow 1.1
Groups permiten nuevas opciones de forwarding
Type Function
All Broadcast, Multicast
Select Algorithm chooses the bucket
Indirect Only one bucket
Fast Failover Executes first live bucket
Meter Table
Mediciones y control de la tasa de paquetes que hace match
de las entradas de flujos asignados al meter id
Canal OpenFlow
Canal de comunicación entre el SW
openflow y el Controlador
Conexión encriptada: TCP or TLS
IANA ha asignado un puerto para
la conexión entre OpenFlow
Switch-Controller: 6653
Handshake
Switch Controller
Hello Message
Después de establecer la conexión del TCP/TLS, ambos lados envian
mensajes “Hello Message”
Solves the OpenFlow
version
Solves the Hello. If
the version is not
supported sends an
Error message
Features Request
Features Reply
OpenFlow Connection
Established
Controlador OpenFlow
OpenFlow
I want to talk with
the Desktop!
Controlador OpenFlow
OpenFlow
Oh God! What
I’m gonna do?
Controlador OpenFlow
OpenFlow
THE almighty
OpenFlow Controller
OpenFlow Channel
I’m here for you! Take
the power of the
Learning Switch!
Network OS
El controlador puede ser visto como un sistema operativo de red
en donde las aplicaciones pueden ser construidas sobre el TOP
de éste sistema operativo.
Proactive vs Reactive Flows
Reactive
Los flujos que no se encuentran en la tabla de entrada de
flujos del switch son enviados al controlador, que instala
estos flujos basados sobre los campos del paquete. El
paquete es luego enviado nuevamente al switch para su
debido procesamiento.
Ejemplo de aplicación: Learning Switch
Proactive
El controlador instala los flujos antes que el tráfico de
paquetes llegue al switch. Éste modelo es usado
cuando nosotros ya sabemos el tráfico que queremos
manejar.
Ejemplo de aplicación: Packet Monitor
Arquitectura de Controladores
Centralized Distributed
Popular Open Source controllers
Phyton
Phyton
Java Java
C/Ruby
Problematica de OpenFlow
Configuración Run-Time
Capa Independiente del Protocolo
Lo nuevo: Programación en Plano
de Datos (P4)
Lo nuevo: Programación en Plano
de Datos (P4)
Open SDN Migration Use Cases
Casos de Uso (Open Source)
1. 6.4% of all Internet
Traffic (ATLAS, 2010)
2. Google has two large
Backbones networks:
Internet facing (user traffic)
Datacenter Traffic (Internal)
3. Google WAN intensive
applications:
Youtube, Websearch, Google+,
Hangouts, Maps, AppEngine,
Android and Chrome updates.
Casos de Uso (Ciberseguridad)
Hands On:
Mininet con
Openflow1.0 y 1.3
Herramientas instaladas en Ubuntu
16.04
Mininet (version 2.3)
Será usado para simular los switches, hosts y enlaces de la red
Open vSwitch (version 2.5)
Switch virtual Open vSwitch usado por mininet.
Ofsoftswitch13
CPqD y Ericsson OpenFlow 1.3 software switch, basado sobre el switch de
referencia de Stanford
Ryu controller
Ryu y OpenDayLight son uno de nuestros controladores elegidos
debido a su soporte a OpenFlow 1.0 y OpenFlow 1.3
Mininet
Mininet iniciará casi todo lo que necesitas. Mininet emularía
una completa red de hosts, enlaces, y switches sobre una
simple maquina. Para crear un ejemplo de dos hosts, una red
con un switch, solo sería ejecutar: ‘sudo mn’ .
Switch S1
Host H1 Host H2
Eth0 Eth1
Eth0 Eth1
Mininet
El controlador de referencia local (ref) usa OpenFlow 1.0 por
defecto. Para usar OpenFlow 1.3, indicar el parametro
“protocols=OpenFlow13”. Por ejemplo:
$ sudo mn --mac --switch ovsk,protocols=OpenFlow13 --controller ref
mininet> dpctl show -O OpenFlow13
mininet> dpctl dump-flows -O OpenFlow13
mininet> h1 ping -c 3 h2
Adicionando reglas estáticas usando dpctl
mininet> dpctl add-flow "in_port=1,actions=output:2" -O OpenFlow13
mininet> dpctl add-flow "in_port=2,actions=output:1" -O OpenFlow13
mininet > h1 ping -c 3 h2
Notas algún cambio cuando tipeas “h1 ping h2” en el prompt del
mininet?
OVS-OFCTL
Comandos para enviar mensajes directamente al Open vSwitch
Switch Capabilities
mininet> sh ovs-ofctl show s1 -O OpenFlow 13
Switch Description
mininet> sh ovs-ofctl dump-desc s1 -O OpenFlow13
Add Flow
mininet> sh ovs-ofctl -O OpenFlow13 add-flow s1
priority=100,in_port=1,actions=output:2
Flow Table state
mininet> sh ovs-ofctl dump-flows s1 -O OpenFlow13
Port statistics
mininet> sh ovs-ofctl dump-ports s1 -O OpenFlow13
Dpctl con switch “user”
El switch software OpenFlow 1.3 tiene una similar herramienta
al ovs-ofctl: “sudo mn --switch user --controller ref”
Capacidades del switch
$ sudo dpctl unix:/tmp/s1 features
Descripción del switch
$ sudo dpctl unix:/tmp/s1 stats-desc
Adicionar flujos
$ sh dpctl unix:/tmp/s1 flow-mod cmd=add,table=0 in_port=1 apply:output=2
$ sh dpctl unix:/tmp/s1 flow-mod cmd=add,table=0 in_port=2 apply:output=1
Estado de la tabla de flujos
$ sudo dpctl unix:/tmp/s1 stats-flow
TCP bandwith
Testing TCP bandwidth entre hosts con Iperf
$ sudo mn --switch user --test iperf
Results: [‘54.9 Mbits/sec', '60.6 Mbits/sec']
$ sudo mn --switch ovsk --test iperf
Results: ['7.06 Gbits/sec', '7.06 Gbits/sec']
Note que en el primer caso se consigue un BW en Iperf TCP mucho
menor que comparado a la vista en el segundo caso usando el
switch kernel
Ejecución de controladores Ryu y
ODL
# Open DayLigth (https://www.opendaylight.org/downloads)
Acceso al directorio ODL y ejecución de Karaf
cd ~/distribution-karaf-0.4.4-Beryllium-SR4
sudo ./bin/karaf
# Ryu Controller (https://github.com/osrg/ryu)
Acceso al directorio Ryu y ejecución del controlador
cd ~/ryu
sudo ./bin/ryu-manager --verbose ryu/app/simple_switch_13.py
Controlador Ryu
Components:
Proporciona interface para
control y estado y genera
eventos.
Libraries:
Funciones llamadas por los
componentes:
Ex: OF-Config, Netflow,
sFlow,
Netconf, OVSDB
Controlador Open DayLight
Ryu Controller con OpenFlow 1.3
El comando debajo inicia el controlador mediante la llamada al
Handler del protocolo Openflow y la aplicación Simple Switch 1.3
cd /home/ubuntu/ryu
./bin/ryu-manager --verbose ryu/app/simple_switch_13.py
Creamos la topología del mininet. Para controladores remotos, por
defecto OpenFlow 1.3 esta configurado
sudo mn --topo single,3 --mac --controller remote --switch ovsk
Comando para listar los flujos en memoria del Open vSwitch
sudo ovs-ofctl dump-flows s1
OpenDayLight con OpenFlow 1.3
Hacemos lo mismo, pero usando el controlador Open DayLight
cd ~/distribution-karaf-0.4.4-Beryllium-SR4
sudo ./bin/karaf
Creamos la topología del mininet. Para controladores remotos, por
defecto OpenFlow 1.3 esta configurado
sudo mn --topo single,3 --mac --controller remote --switch ovsk
Comando para listar los flujos en memoria del Open vSwitch
sudo ovs-ofctl dump-flows s1
Wireshark
Mediante el uso de otro terminal, iniciar Wireshark y escoger la interface
Loopback. Escoger tipo de filtro: “openflow_v4”
Simple Learning Switch
● Un “Learning switch” es un equipo un poco más
inteligente en capa 2.
● El switch aprende la MAC y el puerto desde los
paquetes que llegan a sus interfaces.
● Si el switch no sabe el destino MAC, éste inunda el
paquete a todas las interfaces y luego aprende la
MAC y el puerto. De otra manera, éste reenvia al
puerto asociado con la MAC destino.
OpenFlow Learning Switch
● La aplicación “learning-switch” en OpenFlow hace lo
siguiente:
○ Cuando el switch no tiene un flujo que mapee una MAC a un
puerto, éste enviaría el paquete (packet_in) al controlador. Por
defecto, OpenFlow 1.0 envia el packet-in al controlador, el
OpenFlow 1.3 pierde dicho flujo si una entrada de flujo
explicitamente no indica esto.
○ El controlador aprenderá la MAC source y el puerto en donde
el paquete llegó, instala flujo con éstos campos y envia el
paquete de retorno (Packet Out) con una acción de salida del
tipo Flood.
○ Paquetes subsecuentes con destino igual a la MAC aprendida
son reenviadas directamente al destino.
Hands On:
Mininet con Openflow
1.3 y Open DayLight
Setup Configuration
Para el presente tuorial, nosotros vamos a convertir un HUB a un switch de
aprendizaje MAC que programa flujos.
1. Start the ODL controller in debug mode # Terminal 1
cd $control
./karaf debug
2. Verify if the feature “sdnhub-tutorial-learning-switch” is installed
> feature:list -i |grep sdnhub-tutorial-learning-switch
If it is not installed, install it
> feature:install sdnhub-tutorial-learning-switch
Wait 30 seconds until the Learning-Switch program is installed and active
> bundle:list -s |grep learning-switch
189 | Active | 80 | 1.0.0.SNAPSHOT org.sdnhub.odl.tutorial.learning-switch.impl
Setup Configuration
3. Start mininet topology # Change to a second terminal (Terminal 2)
sudo mn --topo single,3 --mac --switch ovsk,protocols=OpenFlow13
--controller remote
* We wait until the controller is connected to the mininet topology:
is_connected: true
4. Try to do ping between “host1” and “host2”
mininet> h1 ping h2
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
Porqué el Ping falla?
5. Add the next rule and verify the ping
mininet> s1 ovs-ofctl add-flow tcp:127.0.0.1:6654 -OOpenFlow13
priority=1,action=output:controller
mininet> h1 ping -c 10 h2
Setup Configuration
6. Open the learning-switch program ($learn/TutorialL2Forwarding.java) and
pay attention in the lines #79 and #143
In the line #79 you may note that the default function of the code is in “hub
mode”. This means that our program (learning-switch) will act as hub, thus ping
between hosts would have a high RTT value, as you can see above. In the line
#143 you may note the code block related to the behavior of the program.
7. In the same file TutorialL2Forwarding.java, change the default function of the
program from “hub” to “switch”.
private String function = "hub"; # Line 79
to
private String function = "switch";
Setup Configuration
8. Update maven from the path of the program and copy the “JAR” generated
by maven to the folder “deploy” of our controller
cd $program1 # Path of the learning-switch program
mvn install -nsu
cp $target/learning-switch-impl-1.0.0-SNAPSHOT.jar $deploy/
9. Restart “mininet” and the “controller” and do ping between h1 and h2 again:
> logout # Logout to the controller
./karaf debug # Start the controller again
mininet > exit # Exit to the mininet
$ mn -c # Clean mininet
$ sudo mn --topo single,3 --mac --switch ovsk,protocols=OpenFlow13
--controller remote
mininet > h1 ping -c 10 h2
Notas cambios en el RTT obtenido en el paso 5 y 9? Que sucedió?
Preguntas?

Capacitación de SDN para COMSOC UNI

  • 1.
    Redes Definidas porSoftware: Un nuevo enfoque en la Red Javier Richard Quinto A. javierquinto@opennetsoft.com jquinto@inictel-uni.edu.pe INICTEL-UNI
  • 2.
    Quien soy yo? - Magister en Ing. de la Computación. - Investigador del INICTEL-UNI (10’) - Forma parte del grupo de investigación GIRA (PUCP) e INTRIG (UNICAMP) - Lidero el proyecto: Nuevas tecnologías en SDN/Openflow y P4, INICTEL-UNI - Miembro del proyecto de despliegue y documentación de nuevos servicios para eduroam Latino América, RNP e INICTEL-UNI -Mis fortalezas: SDN, P4, NFV, Cloud, Seguridad IPv4/IPv6, AAA/802.1x @opennetsoft fb.com/ opennetsoft Sigueme a:
  • 3.
    Problematica y Estrategiasde Solución en las Redes Convencionales
  • 4.
    Equipamiento de RedesPropietarias Verticalmente integrado, complejo, cerrado y propietario! Custom Silicon Switches de redes Componentes No recomendable para propietarios de redes ni para usuarios
  • 5.
    Problematicas en lasRedes Actuales Source: Tutorial SDN & NFV LACNIC26 by Whitestack
  • 6.
    Las redes comolo aprendiste en la escuela Source: Martin Casado CS244 Spring 2013, Lecture 6, SDN
  • 7.
    Redes en laPráctica Estado enlace distribuido Estado de configuración estática Source: Martin Casado CS244 Spring 2013, Lecture 6, SDN
  • 8.
    Redes en laPráctica Teoria y práctica son lo mismos, pero en la práctica son muy diferentes!
  • 9.
    Camino a laEvolución Adapted from: Transforming the Network with OpenSDN by Big Switch Network
  • 10.
    Camino a laEvolución Source: Introduction to OpenFlow, SDN and NFV, Kingston Smiler
  • 11.
    Camino a laEvolución Custom Silicon Merchant Silicon Facebook
  • 12.
    Camino a laEvolución Existentes - CLIs - Código cerrado - Proporcionado por el proveedor - Aplicaciones conocidas Nuevas - APIs - Código abierto - Proporcionado por el cliente - Funciones de Redes Virtuales (NFV) Adapted from: Kyle Mestery, Next Generation Network Developer Skills
  • 13.
    La Tendencia enComputación - Cambios en los patrones de tráfico. - El consumismo de IT - El aumento de los servicios en la nube - Big Data significa más ancho de banda
  • 14.
    La Tendencia enComputación Verticalmente integrado Cerrado, propietario Innovación lenta Horizontal Interfaces abiertas Rápida inovación
  • 15.
    Rediseñar la Red! Planode Datos: Streaming de paquetes Forward, Filter, Buffer, Mark, rate-limit, and measure packets Source: Adapted from J. Rexford
  • 16.
    Rediseñar la Red! Planode Control: Algoritmos Distribuidos Seguimientos en los cambios de la topología, rutas computarizadas, instalación de nuevas reglas Source: Adapted from J. Rexford
  • 17.
    Rediseñar la Red! Recogermediciones y configurar equipamientos Plano de Gestión: Escala de tiempo Source: Adapted from J. Rexford
  • 18.
    Rediseñar la Red! ●Gestión más simple No necesita invertir más en el plano de gestión ● Ritmo más rápido de inovación Menos dependencia con los Vendors y Estándares ● Interoperabilidad más fácil Compatibilidad solamente en los protocolos wired ● Equipamientos más simple y más fácil Más uso de software
  • 19.
  • 20.
  • 21.
    Redes Definidas porSoftware (SDN) Plano logicamente centralizado API al Plano de Datos (e.g., OpenFlow) Inteligente & Lento Tonto & Rápido Source: Adapted from J. Rexford
  • 22.
    Redes Definidas porSoftware (SDN) Source: https://www.opennetworking.com Directamente Programable Agilidad y Flexibilidad Centralmente gestionado Estándares abiertos y neutral al vendor
  • 23.
    Redes Definidas porSoftware (SDN) Nuevas habilidades y oportunidades Herramientas sofisticadas Reduce CapEx/OpEx
  • 24.
    Redes Definidas porSoftware (SDN)
  • 25.
    Redes Definidas porSoftware (SDN) Source: N. Mckeown et al.
  • 26.
    Redes Definidas porSoftware (SDN)
  • 27.
    Funciones de RedesVirtuales (NFV) - Hardware commodity Source: https://www.opennetworking.com , Network Function Virtualization: Perspectivas, Realidades e Desafios - Ahorro en espacio y energía - Innovación más rápida - Asignación flexible de recursos - Multiplicidad de usuarios - Mayor rentabilidad
  • 28.
    Open Networking Source: Porquélos Tier-1 están adoptando las SDN y nFV?, whitestack
  • 29.
  • 30.
  • 31.
    Sources: Ahmad Rostami,Ericsson Research (Kista): http://www.itc26.org/fileadmin/ITC26_files/ITC26-Tutorial-Rostami.pdf and Uwe Michel, T-Systems Flexibilidad y Programabilidad en la Red (SDN & NFV)
  • 32.
  • 33.
    Modelo: Open SDN -Estándard abiertos - Software de código abierto - APIs and SDKs - Hardware abierto
  • 34.
    Modelo: Hybrid SDN -Conviven con redes tradicionales - Soportan Openflow 1.3 - Más adecuado para migraciones en SDN
  • 35.
    Modelo: Overlay SDN -Método de despliegue para virtualización de redes - Ejecutado sobre una red separada logicamente - Big Switch Network y Vmware usan overlay
  • 36.
    Protocolo OpenFlow ysu Evolución
  • 37.
    Historia de Openflow,ACM SIGCOMM2008 ● Openflow se originó en la Univ. de Stanford en 2008. ● Openflow spec. V1.0 fue lanzado en dic. 2009. ● Desde sus inicios Openflow es gestionado por la ONF.
  • 38.
    OpenFlow y SDN Inteligenciade las redes es movida desde el Switch hacia un controlador externo
  • 39.
  • 40.
  • 41.
    Entradas de tablade flujos Source: https://www.sdxcentral.com/sdn/definitions/what-is-openflow/
  • 42.
    A Quick JumpInto SDN SDN no es OpenFlow pero ... OpenFlow si es SDN The physical separation of the network control plane from the forwarding plane, and where a control plane controls several devices. Definición según la ONF:
  • 43.
    Openflow y SDN Aquíes en donde Openflow si encajaría sobre SDN Beneficios de Openflow - Programabilidad - Inteligencia centralizada - Abstracción
  • 44.
    OpenFlow y SDN InterfaceProgramable Permite el acceso directo y manipulación del plano de forwarding de los dispositivos de redes tales como switches y routers, ambos físicos o virtuales (basado en hypervisor). Las primitivas básicas que pueden ser usadas por una app. de software externa para programar el plano de forwarding puede ser comparada al conjunto de intrucción de un CPU.
  • 45.
    Versions OpenFlow La másreciente versión de OpenFlow es la 1.5.1 Cada nueva versión mejora el protocolo y adiciona nuevas características Desafortunadamente los dispositivos hardware con soporte Openflow usan, en su mayoria, la versión 1.0 Version Release 0.8.0 May, 5, 2008 0.8.1 May, 20, 2008 0.8.2 Oct, 17, 2008 0.8.9 Dec, 2, 2008 0.9.0 Jul, 20, 2009 1.0 Dec, 31, 2009 1.1 Feb, 28, 2011 1.2 Dec 2011 1.3 Jun, 25, 2012 1.3.1 Sep, 6. 2012 1.3.2 Apr, 25, 2013 1.4.0 Oct, 14, 2013 1.5.0 Dec, 19, 2014 1.5.1 Mar, 26, 2015
  • 46.
    ¿Qué versión usar? 1.0vs 1.3 Los mismos conceptos Forwarding basados en flujo. Información acerca del control de eventos en la red y modifcación del estado del equipamiento Diferentes Capacidades OpenFlow 1.3 tiene más características y cubre más aspectos que faltan en OpenFlow 1.0 ->Multiple Tables, Groups, Rate Limiting, Controller Role OpenFlow 1.0 es más simple y más fácil de implementar que 1.3. La mayor parte de los campos son opcionales. Removiendo éstas características nosotros tendríamos casi la versión 1.0
  • 47.
    Switch OpenFlow Componentes principales GroupTable Opciones adicionales para reenviar paquetes Disponible desde OpenFlow 1.1 Flow Table Lookup y forwarding OpenFlow Channel Comunicación entre el SW y el controlador Meter Table Mecanismo simple QoS. Disponible desde OpenFlow 1.3
  • 48.
    Tabla de Flujos Contieneentrada de flujo OpenFlow 1.0 Flow entry OpenFlow 1.3 Flow entry Analogía de la tabla de flujo vs la tabla de enrutamientoable analogy
  • 49.
    OpenFlow 1.0 Pipeline OpenFlow1.0 does not have multiple tables!
  • 50.
  • 51.
  • 52.
  • 53.
    OpenFlow 1.0 vsOpenFlow 1.3 Actions Output Drop Set VLAN ID Set VLAN priority Strip VLAN header Modify Ethernet, IPv4. transport src/dst address Enqueue Output Set-Queue Drop Group Push-Tag/Pop-Tag Set-Field Change-TTL OpenFlow 1.0 OpenFlow 1.3
  • 54.
    Tabla: Group Disponible desdeOpenFlow 1.1 Groups permiten nuevas opciones de forwarding Type Function All Broadcast, Multicast Select Algorithm chooses the bucket Indirect Only one bucket Fast Failover Executes first live bucket
  • 55.
    Meter Table Mediciones ycontrol de la tasa de paquetes que hace match de las entradas de flujos asignados al meter id
  • 56.
    Canal OpenFlow Canal decomunicación entre el SW openflow y el Controlador Conexión encriptada: TCP or TLS IANA ha asignado un puerto para la conexión entre OpenFlow Switch-Controller: 6653
  • 57.
    Handshake Switch Controller Hello Message Despuésde establecer la conexión del TCP/TLS, ambos lados envian mensajes “Hello Message” Solves the OpenFlow version Solves the Hello. If the version is not supported sends an Error message Features Request Features Reply OpenFlow Connection Established
  • 58.
    Controlador OpenFlow OpenFlow I wantto talk with the Desktop!
  • 59.
  • 60.
    Controlador OpenFlow OpenFlow THE almighty OpenFlowController OpenFlow Channel I’m here for you! Take the power of the Learning Switch!
  • 61.
    Network OS El controladorpuede ser visto como un sistema operativo de red en donde las aplicaciones pueden ser construidas sobre el TOP de éste sistema operativo.
  • 62.
    Proactive vs ReactiveFlows Reactive Los flujos que no se encuentran en la tabla de entrada de flujos del switch son enviados al controlador, que instala estos flujos basados sobre los campos del paquete. El paquete es luego enviado nuevamente al switch para su debido procesamiento. Ejemplo de aplicación: Learning Switch Proactive El controlador instala los flujos antes que el tráfico de paquetes llegue al switch. Éste modelo es usado cuando nosotros ya sabemos el tráfico que queremos manejar. Ejemplo de aplicación: Packet Monitor
  • 63.
  • 64.
    Popular Open Sourcecontrollers Phyton Phyton Java Java C/Ruby
  • 65.
  • 66.
  • 67.
    Lo nuevo: Programaciónen Plano de Datos (P4)
  • 68.
    Lo nuevo: Programaciónen Plano de Datos (P4)
  • 69.
  • 70.
    Casos de Uso(Open Source) 1. 6.4% of all Internet Traffic (ATLAS, 2010) 2. Google has two large Backbones networks: Internet facing (user traffic) Datacenter Traffic (Internal) 3. Google WAN intensive applications: Youtube, Websearch, Google+, Hangouts, Maps, AppEngine, Android and Chrome updates.
  • 71.
    Casos de Uso(Ciberseguridad)
  • 72.
  • 73.
    Herramientas instaladas enUbuntu 16.04 Mininet (version 2.3) Será usado para simular los switches, hosts y enlaces de la red Open vSwitch (version 2.5) Switch virtual Open vSwitch usado por mininet. Ofsoftswitch13 CPqD y Ericsson OpenFlow 1.3 software switch, basado sobre el switch de referencia de Stanford Ryu controller Ryu y OpenDayLight son uno de nuestros controladores elegidos debido a su soporte a OpenFlow 1.0 y OpenFlow 1.3
  • 74.
    Mininet Mininet iniciará casitodo lo que necesitas. Mininet emularía una completa red de hosts, enlaces, y switches sobre una simple maquina. Para crear un ejemplo de dos hosts, una red con un switch, solo sería ejecutar: ‘sudo mn’ . Switch S1 Host H1 Host H2 Eth0 Eth1 Eth0 Eth1
  • 75.
    Mininet El controlador dereferencia local (ref) usa OpenFlow 1.0 por defecto. Para usar OpenFlow 1.3, indicar el parametro “protocols=OpenFlow13”. Por ejemplo: $ sudo mn --mac --switch ovsk,protocols=OpenFlow13 --controller ref mininet> dpctl show -O OpenFlow13 mininet> dpctl dump-flows -O OpenFlow13 mininet> h1 ping -c 3 h2 Adicionando reglas estáticas usando dpctl mininet> dpctl add-flow "in_port=1,actions=output:2" -O OpenFlow13 mininet> dpctl add-flow "in_port=2,actions=output:1" -O OpenFlow13 mininet > h1 ping -c 3 h2 Notas algún cambio cuando tipeas “h1 ping h2” en el prompt del mininet?
  • 76.
    OVS-OFCTL Comandos para enviarmensajes directamente al Open vSwitch Switch Capabilities mininet> sh ovs-ofctl show s1 -O OpenFlow 13 Switch Description mininet> sh ovs-ofctl dump-desc s1 -O OpenFlow13 Add Flow mininet> sh ovs-ofctl -O OpenFlow13 add-flow s1 priority=100,in_port=1,actions=output:2 Flow Table state mininet> sh ovs-ofctl dump-flows s1 -O OpenFlow13 Port statistics mininet> sh ovs-ofctl dump-ports s1 -O OpenFlow13
  • 77.
    Dpctl con switch“user” El switch software OpenFlow 1.3 tiene una similar herramienta al ovs-ofctl: “sudo mn --switch user --controller ref” Capacidades del switch $ sudo dpctl unix:/tmp/s1 features Descripción del switch $ sudo dpctl unix:/tmp/s1 stats-desc Adicionar flujos $ sh dpctl unix:/tmp/s1 flow-mod cmd=add,table=0 in_port=1 apply:output=2 $ sh dpctl unix:/tmp/s1 flow-mod cmd=add,table=0 in_port=2 apply:output=1 Estado de la tabla de flujos $ sudo dpctl unix:/tmp/s1 stats-flow
  • 78.
    TCP bandwith Testing TCPbandwidth entre hosts con Iperf $ sudo mn --switch user --test iperf Results: [‘54.9 Mbits/sec', '60.6 Mbits/sec'] $ sudo mn --switch ovsk --test iperf Results: ['7.06 Gbits/sec', '7.06 Gbits/sec'] Note que en el primer caso se consigue un BW en Iperf TCP mucho menor que comparado a la vista en el segundo caso usando el switch kernel
  • 79.
    Ejecución de controladoresRyu y ODL # Open DayLigth (https://www.opendaylight.org/downloads) Acceso al directorio ODL y ejecución de Karaf cd ~/distribution-karaf-0.4.4-Beryllium-SR4 sudo ./bin/karaf # Ryu Controller (https://github.com/osrg/ryu) Acceso al directorio Ryu y ejecución del controlador cd ~/ryu sudo ./bin/ryu-manager --verbose ryu/app/simple_switch_13.py
  • 80.
    Controlador Ryu Components: Proporciona interfacepara control y estado y genera eventos. Libraries: Funciones llamadas por los componentes: Ex: OF-Config, Netflow, sFlow, Netconf, OVSDB
  • 81.
  • 82.
    Ryu Controller conOpenFlow 1.3 El comando debajo inicia el controlador mediante la llamada al Handler del protocolo Openflow y la aplicación Simple Switch 1.3 cd /home/ubuntu/ryu ./bin/ryu-manager --verbose ryu/app/simple_switch_13.py Creamos la topología del mininet. Para controladores remotos, por defecto OpenFlow 1.3 esta configurado sudo mn --topo single,3 --mac --controller remote --switch ovsk Comando para listar los flujos en memoria del Open vSwitch sudo ovs-ofctl dump-flows s1
  • 83.
    OpenDayLight con OpenFlow1.3 Hacemos lo mismo, pero usando el controlador Open DayLight cd ~/distribution-karaf-0.4.4-Beryllium-SR4 sudo ./bin/karaf Creamos la topología del mininet. Para controladores remotos, por defecto OpenFlow 1.3 esta configurado sudo mn --topo single,3 --mac --controller remote --switch ovsk Comando para listar los flujos en memoria del Open vSwitch sudo ovs-ofctl dump-flows s1
  • 84.
    Wireshark Mediante el usode otro terminal, iniciar Wireshark y escoger la interface Loopback. Escoger tipo de filtro: “openflow_v4”
  • 85.
    Simple Learning Switch ●Un “Learning switch” es un equipo un poco más inteligente en capa 2. ● El switch aprende la MAC y el puerto desde los paquetes que llegan a sus interfaces. ● Si el switch no sabe el destino MAC, éste inunda el paquete a todas las interfaces y luego aprende la MAC y el puerto. De otra manera, éste reenvia al puerto asociado con la MAC destino.
  • 86.
    OpenFlow Learning Switch ●La aplicación “learning-switch” en OpenFlow hace lo siguiente: ○ Cuando el switch no tiene un flujo que mapee una MAC a un puerto, éste enviaría el paquete (packet_in) al controlador. Por defecto, OpenFlow 1.0 envia el packet-in al controlador, el OpenFlow 1.3 pierde dicho flujo si una entrada de flujo explicitamente no indica esto. ○ El controlador aprenderá la MAC source y el puerto en donde el paquete llegó, instala flujo con éstos campos y envia el paquete de retorno (Packet Out) con una acción de salida del tipo Flood. ○ Paquetes subsecuentes con destino igual a la MAC aprendida son reenviadas directamente al destino.
  • 87.
    Hands On: Mininet conOpenflow 1.3 y Open DayLight
  • 88.
    Setup Configuration Para elpresente tuorial, nosotros vamos a convertir un HUB a un switch de aprendizaje MAC que programa flujos. 1. Start the ODL controller in debug mode # Terminal 1 cd $control ./karaf debug 2. Verify if the feature “sdnhub-tutorial-learning-switch” is installed > feature:list -i |grep sdnhub-tutorial-learning-switch If it is not installed, install it > feature:install sdnhub-tutorial-learning-switch Wait 30 seconds until the Learning-Switch program is installed and active > bundle:list -s |grep learning-switch 189 | Active | 80 | 1.0.0.SNAPSHOT org.sdnhub.odl.tutorial.learning-switch.impl
  • 89.
    Setup Configuration 3. Startmininet topology # Change to a second terminal (Terminal 2) sudo mn --topo single,3 --mac --switch ovsk,protocols=OpenFlow13 --controller remote * We wait until the controller is connected to the mininet topology: is_connected: true 4. Try to do ping between “host1” and “host2” mininet> h1 ping h2 From 10.0.0.1 icmp_seq=1 Destination Host Unreachable Porqué el Ping falla? 5. Add the next rule and verify the ping mininet> s1 ovs-ofctl add-flow tcp:127.0.0.1:6654 -OOpenFlow13 priority=1,action=output:controller mininet> h1 ping -c 10 h2
  • 90.
    Setup Configuration 6. Openthe learning-switch program ($learn/TutorialL2Forwarding.java) and pay attention in the lines #79 and #143 In the line #79 you may note that the default function of the code is in “hub mode”. This means that our program (learning-switch) will act as hub, thus ping between hosts would have a high RTT value, as you can see above. In the line #143 you may note the code block related to the behavior of the program. 7. In the same file TutorialL2Forwarding.java, change the default function of the program from “hub” to “switch”. private String function = "hub"; # Line 79 to private String function = "switch";
  • 91.
    Setup Configuration 8. Updatemaven from the path of the program and copy the “JAR” generated by maven to the folder “deploy” of our controller cd $program1 # Path of the learning-switch program mvn install -nsu cp $target/learning-switch-impl-1.0.0-SNAPSHOT.jar $deploy/ 9. Restart “mininet” and the “controller” and do ping between h1 and h2 again: > logout # Logout to the controller ./karaf debug # Start the controller again mininet > exit # Exit to the mininet $ mn -c # Clean mininet $ sudo mn --topo single,3 --mac --switch ovsk,protocols=OpenFlow13 --controller remote mininet > h1 ping -c 10 h2 Notas cambios en el RTT obtenido en el paso 5 y 9? Que sucedió?
  • 92.