martes, 19 de noviembre de 2013

Ideas básicas sobre Software Defined Network (SDN)

"Durante los próximos años, las redes definidas por software o Software Defined Networks (SDN), serán cada vez más comunes, seguramente en un principio en despliegues híbridos con los despliegues tradicionales de red, debido a las múltiples ventajas que introduce y que serán revisadas en esta entrada"


Las redes, tal y como están implementadas hoy en día, tienen una serie de problemas, entre los que se encuentran que:
  • Son difíciles de personalizar, ya que la configuración y diseño se debe hacer conforme a los parámetros de numerosos protocolos aislados (STP, protocolos de enrutamiento, etc)


  • Son difíciles de integrar con los nuevos servicios que requieren movilidad de máquinas virtuales y usuarios, así como la integración con entornos de Cloud.


  • Son difíciles de mantener seguros, ya que los protocolos en los que se basan pueden ser vulnerables a ciertos ataques y la configuración de todos sus elementos lo ha de tener en cuenta.


  • Son difíciles de integrar con el resto de elementos TI, como por ejemplo las plataformas de virtualización o el Software que presta el servicio final.


  • Son difíciles de optimizar,  pues las opciones de configuración son rígidas y dependen de los protocolos implementados en los switches.


  • Es complicado el manejo de los cambios en la red,  ya que la modificación de los flujos en cierto momento tendría que venir dada por la reconfiguración de todos los protocolos independientes de los equipos de red implicados.


  • Difíciles de administrar, ya que cada fabricante de Hardware dispone de un CLI, e incluso métodos de gestión, diferentes al resto. También hay que remarcar las dificultades que algunas veces brindan las redes híbridas de dos o más fabricantes, ya que su integración suele ser compleja en algunos casos.


  • El Hardware que los soporta es costoso, al tener cada uno de ellos que ejecutar números procesos complejos de decisión de encaminamiento de paquetes.


El origen de los problemas anteriores es que los elementos de la arquitectura de red (switches, routers y demás componentes) se han ido convirtiendo en dispositivos cada vez más complejos, debido al creciente número de protocolos distribuidos que se les han ido integrando los cuales, en muchos casos, no siguen los estándares además de su necesidad de ser gestionados por interfaces  CLIs propietarias.

Mientras el resto de componentes TI se ha adaptado a las necesidades de agilidad, reducción de costes globales y sencillez de gestión, las arquitecturas de red no han seguido ese mismo camino con la misma rapidez, debido a las limitaciones que se han descrito, es por ello por lo que han surgido una serie de tecnologías para modificar el modo en el que trabajan hoy en día las redes.

Las tecnologías Software Defined Networking (SDN) tienen como objetivo el control minucioso de flujos de tráfico mediante un software que brinde una interfaz que permita al usuario personalizar dichos flujos de una manera centralizada, sin recaer en los procesos independientes en cada equipo de red, y sin depender del Hardware subyacente.

La principal idea de SDN es externalizar la responsabilidad del control de flujo y la inteligencia de red fuera del Hardware de los switches y routers, centralizándolo en un servidor llamado controlador, o Controller, que realiza todas las tareas que los antiguos protocolos independientes hacían para para garantizar el correcto encaminamiento de los paquetes.

Al poder tener una visibilidad completa de la red desde los Controllers, en lugar de la actual vista parcial a la que están restringidos los switches y routers, es posible redirigir flujos con gran agilidad y conseguir una optimización máxima de los recursos, incluso mediante comportamientos que son imposibles realizar con los protocolos independientes que actualmente manejan la red.

También se mejora la respuesta ante fallos o incluso congestión en la red, ya que al tener una mayor visibilidad se puede calcular instantáneamente el mejor camino alternativo extremo a extremo, en lugar de la manera local en la que se hace actualmente.

La arquitectura SDN se compone de tres capas diferenciadas:
  • Capa de infraestructura, en la que reside el Hardware. Es importante destacar que los componentes de esta red son dispositivos de red, pero que solo se tiene en cuenta el Hardware que lo componen, no los protocolos que contengan ni ningún tipo de inteligencia, por lo que pueden ser equipos de muy bajo coste y no tendrían que ser de un único fabricante, tan solo deberán contar con el soporte del método que les conecta con el controlador, o lo que es lo mismo, el protocolo OpenFlow.


  • Capa de control, aquí se encontrarían los controladores, quienes mantienen la inteligencia de la red. Los controladores se comunicarían con los Hardware  de la capa de infraestructura con el protocolo OpenFlow y brindarían una API abierta para que puedan ser programados desde la capa de aplicación.


  • Capa de aplicación, es la de más alto nivel y desde la cual se controla el comportamiento de la red. Para ello se utiliza la API del controlador, que puede ser utilizada por usuarios o por otros Software de orquestación o aplicaciones de infraestructura o corporativas.



Figura 1 - Capas de la arquitectura SDN


Al añadir esta tercera capa de aplicación al diseño, es posible programar la red de la misma manera  que las aplicaciones software, de modo que se pueden conseguir implementaciones que se integren ágilmente con el resto de componentes IT, por ejemplo, haciendo que la red se adapte automáticamente a los movimientos de máquinas virtuales entre Data Centers, permitiendo grandes mejoras frente a los diseños tradicionales.


Para entender mejor las posibilidades que brinda SDN, se puede ver un par de ejemplos en los siguientes videos de la Universidad de Stanford (donde principalmente se desarrolló la idea de openflow): 


También se puede consultar en este enlace un repaso de los puntos básicos sobre redes SDN.