martes, 25 de marzo de 2014

Ataques DoS y DDoS, prevención, detección y mitigación


"En la actualidad, uno de los ataques con mayor impacto que se producen son los ataques distribuidos de denegación de servicio (DDoS). En esta entrada se repasan los motivos de su éxito y los problemas que existen en su detección, prevención y mitigación, incluyendo soluciones que minimizan su impacto, alguna de ellas basada en redes definidas por software (SDN)"



En una anterior entrada ("TRILL, SPB, VXLAN, NVGRE, EVI, OTV, EVB, VNTag: nuevas soluciones para antiguos problemas") se mostraron las tendencias que están apareciendo para solventar muchas de las problemáticas que aparecen en las actuales arquitecturas de red de los Data Centers.

Del mismo modo, ahora se presentan las soluciones que aparecen, y las que se impondrán en el futuro, a la hora de detectar y mitigar uno de los ataques más destructivos que se producen a día de hoy, los ataques de denegación de servicio (DoS), en particular los que son distribuidos (DDoS).

Antes de comenzar con los sistemas de detección y mitigación, se comenzará repasando qué es un ataque DoS y posteriormente se revisarán algunas de las técnicas de prevención más habituales.

¿Qué es un ataque DoS?

Un ataque de denegación causa la interrupción de uno o varios servicios mediante el consumo excesivo de alguno de estos recursos en el servidor o elementos de red intermedios:
  • Ancho de banda
  • Ciclos de CPU
  • Memoria
  • Espacio en disco, Bases de Datos, o tablas internas (de número de conexiones por ejemplo)

Habitualmente esto se consigue mediante técnicas de envío masivo de paquetes o información, también nombrado como flooding, al cual la víctima no puede responder por su cantidad/tamaño, por lo que deja de dar servicio. 

Otro modo de conseguir el efecto buscado es mediante vulnerabilidades de las aplicaciones (ataques de nivel 7).

En la actualidad, este tipo de ataques han ido mejorándose, desde los más sencillos, en los que un atacante con origen conocido realiza un flooding sobre la víctima, hasta ataques más complejos como puedan ser los ataques distribuidos amplificados y que se aprovechan de exploits de la aplicación.



Figura 1 - Tipos de ataque DoS más utilizados según RADWARE (info 2011)

El ataque de directo de origen localizado tiene una incidencia menor en la actualidad, ya que es más fácil de detectar y mitigar, así como porque los servidores y dispositivos de hoy en día soportan una carga, lo suficientemente alta, como para que el servicio no se vea afectado por un número reducido de atacantes, no obstante existen excepciones, que casi siempre vienen dadas por fallos en los aplicativos, los cuales pueden ser explotados por el/los atacantes y provocar la caída del servicio.



Figura 2 - Esquema de ataque DoS

Un ataque más preocupante que el anterior es el ataque de denegación de servicio distribuido, o DDoS. En este caso el/los atacantes lanzan el ataque desde una multitud de orígenes diferentes, confundiéndose con los usuarios lícitos del servicio.

El ataque conjunto de varios atacantes desde múltiples localizaciones es posible, pero requiere un trabajo de coordinación, ya que todos los orígenes deben atacar la mismo objetivo a la vez. Para solucionar ese problema se han creado varios software que permiten la utilización de dispositivos de terceros, con o sin su conocimiento, para el envío de peticiones simultaneas desde ellos.

Muchas veces los atacantes hacen uso de botnets, que no son más que multitud de equipos que poseen este tipo de software (muchas veces instalados mediante la descarga no intencionada de malware) para generar un mayor número de peticiones y ocultar su origen.



Figura 3 - Esquema de ataque DDoS mediante botnet

Como se puede ver en la anterior figura, mediante esta técnica se genera un ataque con una multiplicación del número de peticiones.

En ocasiones, la víctima, dispone de una política de seguridad que solo permita el tráfico a un determinado servicio desde unas pocas IPs. Para "saltarse" esa securización, los atacantes pueden utilizar una técnica llamada ataque reflexivo que utiliza dispositivos de terceros, que si están permitidos, para poder encontrar un vector de ataque.

Esta técnica, además de saltarse la política de seguridad, permite al atacante ocultar su dirección IP. Para poder efectuarla se ha de realizar un IP spoofing para que las respuestas del dispositivo de terceros envíe las respusetas a la víctima, en lugar de al atacante. Esto se verá con más detalle a continuación, en los ataques amplificados, ya que en su gran mayoría utilizan la técnica de ataque reflexivo.

A parte de esta multiplicación en el número de peticiones que se ha visto con el ataque desde botnets, también se puede amplificar el tamaño de los paquetes, haciendo que a partir de pequeñas peticiones, se generen flujos de tráfico de mayor tamaño, que se destinan a la victima que está siendo atacada. 

Los ataques DoS amplificados son muy efectivos para agotar los recursos de ancho de banda de la víctima, ya que por ejemplo, en el caso del ataque de DNS amplificado que se verá más adelante, con una petición de 60 bytes del atacante, se puede generar una respuesta, recibida por la víctima, de más de 3Mb, es decir, más de 50 veces el tráfico generado por un solo atacante, por lo que si este tiene, por ejemplo, un ADSL con únicamente 1 Mbps de subida, podría generar un caudal de 50 Mbps que recibiría la víctima. 

Si a este tráfico amplificado se le suma el esquema distribuido DDoS, con 10 atacantes, la víctima necesitaría más de 500Mbps de conexión a Internet para poder recibir todo ese tráfico.

Por último, si se realiza una DDoS con una botnet, donde existen cientos y miles de zombis en muchas de ellas, y a la vez se utiliza esta técnica de amplificación, se podrían generar Gigas de tráfico que colapsarían cualquier conexión pública que pueda tener la víctima.

Existen varios tipos de ataques que pueden ser amplificados pero estos tienen en común el uso de protocolos no orientados a conexión en los cuales las respuestas sean mucho mayores que las peticiones, y el IP spoofing . 

El primero que existió, el smurff attack, consistía en lanzar peticiones ICMP a la dirección broadcast de una red haciendose pasar por la víctima (con lo que recibía las respuestas de todos los elementos de la red). También se ha hablado de la amplificación DNS, que se cubrirá más adelante, pero el DNS no es el único utilizado para este tipo de ataques, otro susceptible, y facil de comprender, es el protocolo NTP, por el cual mediante el comando monlist, el cual devuelve una lista de las últimas 600 direcciones IP que han consultado el NTP, se puede reenviar más de 200 veces el tráfico generado por la propia petición.




Figura 4 - Esquema de ataque DDoS NTP amplificado



El ataque amplificado por NTP es más sencillo, ya que no tiene tantos elementos intermedios como el ataque amplificado por DNS, pero no es tan común que los servidores NTP permitan el uso de monlist , por lo que es más fácil encontrar DNS recursivos abiertos que servidores NTP con esta "vulnerabilidad", 

Para mostrar un ataque amplificado algo más complejo, se revisará el DDoS DNS amplificado, que es uno de los más comunes de este tipo.

Ya que las respuestas DNS son, como ya se ha comentado antes, mucho mayores en tamaño que las peticiones, y si además a esto se añade que es posible utilizar multitud de DNS recursivos (cuyas respuestas DNS no descartará la víctima), al estar estos abiertos a las peticiones de cualquier IP, se tiene un resultado perfecto para la generación de ataques DoS amplificados.

Para ilustrar el ataque que aprovecha este tipo de amplificación se presenta el siguiente esquema (tomado de Security Affairs) donde se pueden ver los pasos de un ataque DDoS DNS amplificado utilizado a su vez una botnet:



Figura 5 - Esquema de ataque DDoS DNS amplificado

Este tipo de ataque es, si cabe, mucho más efectivo si se provee del servicio DNSSEC, ya que se obtiene un mayor tamaño de las respuestas DNS en estos casos. 

Prevención de ataques DoS / DDoS

Los ataques de denegación de servicio, sobretodo los distribuidos en los que se utilizan botnets, son difíciles de detener, e incluso de detectar, pero su prevención se basa en los mismos principios que en los de cualquier otro ataque:


1- Monitorización y conocimiento de la plataforma

Aunque pueda ser obvio, el conocimiento del servicio prestado es fundamental para poder abordar las tareas de prevención del ataque, y en muchos casos sucede que la información se tiene, pero de forma segmentada (habitualmente por "departamentos"), cuando la visión  y conocimiento de la plataforma deben ser globales para poder sacarles el mayor provecho.

Se deberán contemplar aspectos como:


  • Comportamiento habitual del servicio a proteger, entre los que se encontrarían el número de peticiones nuevas según línea temporal, localización de los clientes que acceden al servicio, puertos y flujos de conexiones necesarios, ancho de banda utilizado, valores medios de CPU, memoria, etc de dispositivos, ... para poder comparar en caso de ataques o comportamientos anómalos.
  • Valores máximos que todos los dispositivos implicados puede soportar, así como los rangos de funcionamiento teniendo en cuenta otros servicios si existen dispositivos compartidos (servidores, firewalls, balanceadores, routers, etc), de manera que se puedan conocer los posibles cuellos de botella del servicio de manera anticipada.
  • Crecimiento esperado en el tiempo y nuevos servicios, que puedan impactar en los datos de los dos puntos anteriores

La mayor parte del anterior conocimiento se obtiene de una correcta monitorización de la plataforma, por lo que este sondeo tendría una doble función, por un lado recabar la información de los puntos descritos más arriba, y por otra recoger los datos que, una vez procesados, indiquen que se está bajo un ataque y, a la vez, servir para poder detenerlo, como se verá en el siguiente apartado de detección y mitigación.

El procesamiento de la información recogida por los sistemas de monitorización debería ir más allá de la revisión frente a un gran ataque, es recomendable realizar periódicamente búsquedas de fuentes de pequeños ataques, que incluso han podido pasar desapercibidos, o por comportamientos anómalos en el servicio que puedan ser el origen de problemas posteriores.

Para poder realizar una monitorización completa se ha de revisar también el tráfico encriptado, ya que cada vez más ataques DoS utilizan protocolos como SSL para hacer más "opacos" sus ataques, ya que en la mayoría de los casos este tráfico no se desencripta para su monitorización, debido a los problemas de rendimiento que esto plantea, a parte de las implicaciones legales asociadas a desvelar la información que transporta SSL.

2 - Correcto diseño de la plataforma y planificación de procedimientos

Es imposible crear un buen diseño de la arquitectura del servicio si no se dispone de la información relativa al anterior punto. Los datos del comportamiento "normal" del servicio, así como la previsión de crecimiento son fundamentales a la hora de un correcto dimensionamiento, determinación de la topología y la elección de los dispositivos implicados en la plataforma de servicio.

En alguna ocasión, en el dimensionamiento de equipos, se puede tener cuenta un cierto factor de corrección, para permitir que la arquitectura soporte un nivel de carga significativamente superior a los máximos habituales (y crecimiento esperado), de manera que sea menos vulnerable a los ataques.

Otra idea es la de instalar elementos que estén específicamente diseñados para realizar el caching de partes del servicio, de manera que la mayoría de las conexiones sean atendidas por estos elementos sin tener que llegar las peticiones al servidor backend. 

Estas medidas, aunque efectivas, supone un costo adicional, sobretodo el sobre-dimensionamiento, en casi todos los casos es demasiado elevado para tenerlo en cuenta.

Otra parte del diseño que es importante a la hora de prevenir los ataques DoS es la deshabilitación de funcionalidades no utilizadas o que potencialmente puedan ser utilizadas como vector de ataque. En este caso podrían incluirse algunos de los ejemplos ya comentados anteriormente, como la desactivación del comando monlist en los servidores NTP, o la función de recursividad en los servidores DNS. Estas funcionalidades no se restringen a los servidores, sino que también a los elementos de red que pueden ser susceptibles a ser atacados, como por ejemplo, los routers (fragmentación IP, ICMP redirects, pings a direcciones broadcast, ataques de STP, etc). 

En los routers también existen configuraciones que pueden prevenir los ataques DoS, como por ejemplo la desactivación de la fragmentación IP. Esta configuración, aunque muchas veces problemática si no se tienen bien configuradas las MTU, permite ser inmune a los ataques basados en fragmentación de paquetes, los cuales son utilizados o como medio para "saltarse los firwealls" y sus inspecciones anti-DoS, o directamente como vector de ataque, enviando múltiples paquetes que se deban segmentar, haciendo que el uso de la CPU del router se dispare (sobretodo si el tráfico saliente es por un túnel). 

Del mismo modo, si los componentes del servicio lo permiten, es una buena idea limitar el número de conexiones totales y por usuario único (suele ser por IP origen), así como el número de nuevas conexiones por segundo (también a nivel general y por usuario único). 

En ocasiones, del mismo modo, se podrán limitar los temporizadores de establecimiento de sesión y de sesiones establecidas (para evitar que se mantengan en la tabla de memoria, sesiones que no son utilizadas durante largos periodos), ya que varios ataques DoS se basan en agotar la memoria de los equipos lanzando muchas conexiones "half open" esto es, que no se abren completamente, lo que hace que el dispositivo que recibe la petición de apertura tenga que destinar memoria (durante el periodo del temporizador de establecimiento de conexión) para guardar el estado de la "medio conexión", a la espera de que se termine de completar.

Las configuraciones de los temporizadores son útiles a la hora de prevenir los efectos de los ataques pero es importante tener en cuenta que están muy condicionados a los servicios que hay por debajo, por ejemplo, hay servicios de bases de datos que deben mantener conexiones abiertas sin utilizar durante horas, por lo que si se restringe el temporizador de sesión puede que el servicio se vea interrumpido intermitentemente.

Por otro lado, a parte de las configuraciones de QoS que restrinjan la utilización de ancho de banda, las cuales también son de ayuda a la hora de minimizar el impacto de los ataques DoS, una buena idea, si es posible, es la de configurar valores máximos de recursos utilizados por los aplicativos, por ejemplo, si el servicio se encuentra en una máquina virtual, o si las conexiones transcurren por un firewall físico que ha sido subdividido en varios virtuales, limitar el máximo número de ciclos de CPU, memoria y conexiones (en el caso del firewall) que podrá consumir de la máquina host, de manera que el ataque a un determinado servicio, no afecte a otros que no están siendo atacados directamente. 

A modo de resumen, algunas ideas de configuración mencionadas a tener en cuenta son:
  • Limitar el número de conexiones totales y conexiones por usuario, así como el número de nuevas conexiones a nivel general y por usuario
  • Aplicar políticas QoS a los flujos de tráfico
  • Minimizar los temporizadores de sesiones establecidas y de espera en la apertura de nuevas conexiones
  • Limitar la utilización de recursos (CPU, memoria, red y disco) cuando se utilicen sistemas compartidos o virtualizados.

Una parte del diseño fundamental a la hora de prevenir los ataques DoS y DDoS es la arquitectura de seguridad. Esta deberá, al menos, Incluir políticas antispoofing (que también deberían habilitarse en los routers mediante la configuración de uRPF, sobretodo si se utiliza BGP) y restringir los accesos a las IPs de los clientes, en los casos en los que se pueda, por ejemplo, si se presta un servicio NTP, que solo las IPs autogestionadas puedan realizar peticiones de este tipo, en ningún caso hacer público para todo el mundo, ya que se da pié a que un atacante (con una IP que estaría fuera de nuestro control) explotase alguna vulnerabilidad conocida.

Por otra parte, cada vez es más importante incluir elementos de control y seguridad de aplicación, como los firewalls de nivel 7 e IPS, para minimizar los ataques DoS basados en exploits o fallos software de los aplicativo, así como para eliminar directamente las conexiones "mal hechas".

Para finalizar con la parte de seguridad, tan solo añadir que, como es normal, será necesaria la utilización de software antivirus y antimalware, para que los servidores y PCs no puedan ser incluidos como parte de alguna botnet que ataque a terceros o a uno mismo.

Un problema recurrente a la hora de prevenir los ataques DoS y DDoS es que, en muchos casos, las acciones tomadas para reducirlos no son útiles si el resto del mundo no los adopta. Por ejemplo, el que los servidores NTP propios no permitan el uso de monlist ,no impide que otro servidor NTP bajo otra administración si lo haga y por ello sea susceptible de ser utilizado para realizar un ataque sobre un servicio propio.

Una vez vistas las indicaciones de diseño y seguridad, solo queda recalcar que muchas de las acciones de prevención (y mitigación como se verá más adelante) pueden ser efectuadas por terceros, o por incluso el propio ISP que proporciona conexión, por lo que es importante planificar con ellos la posibilidad de utilizar estos servicios añadidos en caso de contingencia o incluso de manera continuada.

La planificación de las acciones tomadas en caso de contingencia es un punto importante que podría tomarse como parte de la prevención, así como el estudio de la automatización de tareas en el caso de detección de ataque y puesta en marcha de contramedidas, de manera que se detecte y detenga el ataque antes de que este provoque daños al servicio.


3 - Realización de auditorias y corrección de vulnerabilidades

Como último punto de prevención, se encontraría la realización periódica de auditorías para revelar y corregir las vulnerabilidades del servicio.

En estas auditorías se deberían volver a revisar la localización de los cuellos de botella (no únicamente de red) y fallos en las configuraciones. También se realizarán pruebas de carga para comprobar el comportamiento de la plataforma frente frente al estrés.

Del mismo modo, se deberá revisar si se está protegido frente a las últimas vulnerabilidades y ataques conocidos, actualizando aplicativos y Sistemas Operativos en los casos que sean necesarios.

Detección y mitigación de ataques DoS / DDoS

Como se ha visto, es muy difícil prevenir completamente los ataques DoS, ya que en gran medida depende también de la configuración por parte de terceros (por ejemplo en los casos de ataques amplificados y reflexivos), por lo que es probable que si se publican servicios conocidos en Internet, antes o después estos sean atacados.

Por ello se han de tener claros tres puntos principalmente:
  • Métodos de detección
  • Métodos de mitigación
  • Planificación del procedimiento de contingencia

Tanto la detección, como la mitigación de los ataques DDoS son bastante complejas, tal y como se verá a continuación, por lo que los fabricantes de equipamiento de red han desarrollado sus soluciones propietarias que proporcionan estos servicios anti-DoS. Por su parte, operadores y proveedores Cloud, aprovechando esta complejidad, también aportan la posibilidad de gestionar ellos el tráfico susceptible de ser un ataque DDoS y "limpiar" de esta manera las conexiones entrantes a un servicio específico. 

Por tanto, en la mayoría de los casos, tanto la detección como la mitigación de los ataques DoS y DDoS recae sobre terceros, ya sea mediante la implementación de sus productos en la infraestructura propia, o mediante la utilización de servicios de "detección y limpieza" de diversos proveedores e ISPs (reenviando el tráfico). Esto no quiere decir que sea imposible realizar una solución propia de detección y mitigación, programando diversos scripts, instalando servidores y configurado integraciones con los dispositivos de red, aunque en ningún caso se podrá obtener el mismo resultado que con las soluciones propietarias.


Todas las anteriores afirmaciones se entenderán mejor en el siguiente desglose.

1 - Métodos de detección

Para poder contrarrestar un ataque hay que disponer de cierta información. 
En primer lugar se ha de detectar que se está bajo un ataque (esto no siempre es tan facil como parece), preferentemente antes de que los servicios se vean afectados, y más tarde, se ha de localizar el origen y el vector de ataque. Sin esa información será imposible mitigación alguna.

Para ello se requiere el estudio de los datos obtenidos mediante la monitorización de la plataforma. Esta monitorización puede venir dada por exportaciones de datos (por ejemplo Netflow, útil para obtener información sobre cantidades de tráfico así como número de conexiones e IPs origen/destino), obtención de valores SNMP o incluso, para las detecciones más avanzadas de algunos fabricantes, capturas de trazas (tcpdump) del tráfico.

Es importante volver a recalcar la necesidad de monitorizar el tráfico encriptado y tunelizado, ya que sin la visibilidad de este tipo de conexiones nunca se podrán evitar los ataques que utilicen esos medios para alcanzar a la víctima.

Las soluciones de detección/mitigación de los fabricantes utilizan una combinación de los anteriores métodos de monitorización (ya sea con dispositivos situados en línea o con la importación de los datos mediante SPAN de puertos u otro tipo de reenvío del tráfico), algunos incluso proporcionando los medios necesarios para romper ellos mismos los túneles SSL y de ese modo inspeccionar insitu el tráfico encriptado (otros en cambio necesita de un tercero para hacer este trabajo y reenviarle los datos "en claro").

Volviendo al principio, para detectar que la plataforma se encuentra bajo un ataque, basta con tener los datos "habituales" de funcionamiento y compararlos con los aportados por la monitorización. Para determinar si se está bajo un ataque se han de recoger que los datos de utilización de recursos como la CPU, memoria, red (latencias y ancho de banda utilizado), disco, etc, de los equipos implicados y compararlos con los valores "normales" que suele tener el servicio.

Con esta información se puede llegar a asegurar que un ataque se está produciendo, pero en muchos casos no se aporta suficiente información para determinar el origen (distinguiendolo de los usuarios lícitos) ni el tipo de ataque que se está produciendo.

Detectar los orígenes del ataque puede ser muy complicado ya que, como se vio en el primer apartado, los ataques reflexivos o la utilización de botnets complican la localización de las IPs desde las que se lanzan las peticiones de ataque, al estar estas enmascardas con el tráfico lícito de otros clientes.

Los diferentes fabricantes han desarrollado sus propios algoritmos de categorización de flujos de tráfico que, a la vez, informan del tipo de ataque producido, casi siempre basándose en esta información:
  • Medición de "rates", es decir, número de peticiones por cliente, tráfico generado, etc para descubrir los ataques basados en "volumen" (ataques por flooding)
  • Clasificación de clientes, mediante puntuaciones que se realizan atendiendo al país de procedencia, rangos de IPs públicas, etc. Estas puntuaciones se modifican dinámicamente realimentándose de los datos obtenidos por los propios algoritmos.
  • Análisis del comportamiento de cada cliente. Ya que las botnets no son peticiones realizadas por clientes reales, sino que son producidas por software, en ocasiones se repiten ciertos patrones que dan un indicio de que las peticiones de una cierta IP no son "reales". Si se tiene esta sospecha se podría directamente marcar a un cliente como atacante, o modificar los puntos de su clasificación (punto anterior). Por otra parte, también se puede utilizar el conocimiento adquirido sobre los comportamientos "normales" de los clientes, por ejemplo, si habitualmente los clientes que realizan una petición a un servicio web X, también abren conexiones sobre otro servicio web Y, y existen multitud de conexiones desde un cliente al servicio X pero ninguna desde él al servicio Y, puede hacer sospechar que no es un comportamiento "normal" y que es parte de un ataque DDoS.

Como se puede ver, es difícil generar por uno mismo un algoritmo parecido al ya desarrollado por los fabricantes de dispositivos y proveedores de servicio, por lo menos para aportar las funcionalidades de clasificación de clientes y análisis de comportamiento, no obstante es posible programar scripts propios que controlen los "rates" de tráfico, conexiones, CPU, etc para, tal vez, tener la oportunidad de determinar las IPs que están realizando ataques DoS por flooding.

Por último, una vez que se tienen acotados los posibles orígenes del ataque, se realiza un estudio más pormenorizado (revisando las capturas de paquetes o flujos de tráfico) para determinar el tipo de ataque que se está sufriendo. Estos procedimientos son parecidos a las que realizan otros elementos como IPS o firewalls de aplicación, incluso hay fabricantes que recogen la información de estos para poder deducir el tipo de ataque DoS que se está efectuando. Para ello utilizan una serie de firmas que verifican el vector de ataque.

Este último trabajo es difícil de ser implementado desde cero, por lo que nuevamente se ha de confiar en productos anti-DoS hechos a medida. Algunos ejemplos de despliegue de soluciones anti-DoS se darán en el siguiente punto, tras mostrar las técnicas de mitigación de los ataques.

2 - Métodos de mitigación
Una vez conocidos los orígenes y el modo de ataque, se puede proceder a realizar las acciones necesarias para mitigar los efectos que este produce sobre el servicio.

La mitigación puede producirse en el mismo equipo/infraestructura que ha realizado la detección, o reenviando el tráfico "posiblemente malicioso" o otro dispositivo o plataforma que realice nuevos test y finalmente minimice o descarte el tráfico marcado como "ataque".


Ambas soluciones, se basan en dos modelos para mitigar el ataque:

  1. En la modificación de algunos de los parámetros de configuración, como los temporizadores, tamaños de ventana TCP, QoS, etc (los mismos que se modificaron para la prevención en un apartado anterior), restringiendo mucho más sus valores, por ejemplo reduciendo drásticamente los temporizadores de sesión, o el ancho de banda utilizado por cierto rango de IPs. 
  2. Descartar directamente el tráfico susceptible de ser un ataque, en lugar restringir esos parámetros de configuración.

Se va a ilustrar lo comentado sobre la detección y la mitigación mostrando algunos esquemas de soluciones anti-DoS.


En el primer diagrama, puede observarse la arquitectura más simple, en la que un equipo en línea sondea y reconoce el tráfico y a la vez minimiza el impacto de los ataques DoS/DDoS.


Figura 6 - Esquema dispositivo anti-DDoS en línea

El dispositivo debe ser correctamente dimensionado, ya que un propio ataque DoS puede dejar inutilizado el equipo y cortar todas las conexiones. Para ello estos equipos se suelen conectar a un switch de bypass que puede "puentear" el tráfico para saltarse el equipo anti DoS, lo cual no haría otra cosa que dejar pasar el ataque directamente hasta donde esté alojado el servicio.

Otro de las posibilidades mencionadas es la contratación de servicios de "limpieza" de conexiones a los propios proveedores (lo que excluiría la necesidad de incluir equipamiento anti-DoS en todos los Data Centers). Este esquema funcionaría del siguiente modo, en condiciones normales las peticiones de los clientes se destinan directamente al servicio, mientras que si se detecta un ataque (mediante la interpretación de la información de monitorización) el tráfico sospechoso se envía a un "centro de depuración" el cual vuelve a sondear el tráfico, desecha los flujos de ataque, y reenvía el tráfico limpio al servicio.


Figura 7 - Esquema servicio Anti-DDoS "en la nube"

Esta redirección puede hacerse de varias formas, incluso de manera automática modificando las rutas anunciadas por BGP dependiendo de las incidencias detectadas por un monitor al cual se envían los datos Netflow, como muestra el siguiente esquema tomado del proyecto opendaylight:


Figura 8 - Problemática de la redirección del tráfico

Como se puede imaginar, estas modificaciones sobre la marcha de los enrutamientos no son sencillas y puede que el ISP no permita hacerlas si el servicio de depuración de conexiones no lo está aportando el mismo. Si no se permiten estas redirecciones, se deberá enrutar todo el tráfico  del servicio (sea o no posiblemente malicioso) al centro de depuración para que sea tratado en consecuencia.

Por otra parte, si el ISP realiza el procedimiento automático de modificar las rutas anunciadas por BGP, existe el problema adicional de la lentitud de respuesta ante el posible ataque, ya que los temporizadores de BGP suelen ser muy lentos.

Aunque este procedimiento de redirección de tráfico sospechoso se ha visto para el caso de "depuración en la nube", un esquema parecido se puede implementar en la arquitectura local, sustituyendo el "centro de depuración" por el appliance que realice ese mismo trabajo. 

No obstante los problemas de configuración selectiva de la redirección siguen siendo los mismos, o incluso mayores porque normalmente a nivel local no se cuenta con la flexibilidad que aporta el protocolo BGP.

Es por ello que en las soluciones locales se hace difícil implementar esta arquitectura de diversificación de flujos, a no ser que se cuente con una infraestructura de red basada en Software o red SDN (en la anterior entrada "Ideas básicas sobre SDN" se introdujeron los conceptos clave sobre redes SDN).

En este caso, la utilidad viene dada en la versatilidad que aporta el Controller a la hora de destinar los flujos de conexiones atendiendo a cualquier parámetro que pueda imaginarse. En el caso que se aborda se tendrían las siguientes ventajas:

  • La recolección de estadísticas, información de las trazas, etc que de otra manera deberían ser exportadas o tomadas por equipos únicos situados en línea de las conexiones, son tomados directamente por todos y cada uno de los switches, por lo que no existe la necesidad de añadir equipamiento adicional.
  • La información es tratada por el controlador y el software conectado a su API el cual realizaría las tareas de detección y mitigación de ataques DDoS, dando instrucciones al controlador para que desviase los flujos que desee hacia la herramienta de depuración.

En el siguiente esquema, tomado de una solución de Radware, puede napreciarse los puntos comentados:


Figura 9 - Esquema con equipo anti-DDoS y red SDN

Como puede observarse, el despliegue de esta solución es mucho más simple, y solventa todos los problemas de tiempos de respuesta que se encuentran en las arquitecturas tradicionales, al contar con la facilidad de reconfiguración de los flujos de tráfico desde el controlador SDN, y la inteligencia que aporta el software que utiliza su API.

3 - Planificación de la contingencia

Como último punto a tratar dentro de este apartado está la designación de un plan de contingencia que marcará las pautas de actuación en caso de recibir un ataque y que este no pueda ser detenido.


Debido a la efectividad de los ataques DDoS es importante definir (con suficiente antelación) qué hacer en última instancia si un servicio es atacado y ni las medidas de prevención ni de detección/mitigación adoptadas son suficientes para detenerlo.

Aquí las posibilidades son infinitas aunque algunas de las acciones que en última instancia podrían tomarse son:

  • Realizar el bypass del equipo "cuello de botella", si el ataque está afectando primordialmente a equipos intermedios de conexión.
  • Acordar con el ISP el descarte directo de cierto tráfico (black holes con BGP por ejemplo) para evitar que este llegue a la arquitectura propia. El tráfico seleccionado pueden ser redes completas (ya que seguramente no se tenga información precisa sobre los orígenes del ataque), de manera que se descarte tanto el tráfico de ataque como mucho del tráfico lícito de clientes.
  • Deshabilitar totalmente el servicio que está siendo atacado. Esto puede ser útil si el servicio es atacado por un exploit (que incremente por ejemplo su uso de CPU hasta el 100%) y corre sobre una plataforma compartida y el ataque, aunque solo esté destinado a él, está afectando al resto de servicios que utilizan la misma infraestructura.
  • Añadir más equipamiento para repartir la carga de manera balanceada, en el caso de que sea un servicio que esté soportado por varios servidores balanceados. En este caso se podrían incluir varios servidores adicionales en el pool, con lo que la carga/servidor sería menor. Esta solución es útil si los servidores pueden desplegarse rápidamente (por ejemplo por ser virtuales) y los equipos que balancean la carga soportan sin problema la carga del ataque. Existen incluso soluciones de fabricantes de balanceadores que pueden detectar una mayor demanda de recursos en los servidores y, mediante una integración con los productos de virtualización (vCenter de VMware, por ejemplo), crear nuevas máquinas virtuales, añadirlas al pool de servicio y comenzar automáticamente a repartir la carga entre esos nuevos servidores y los antiguos.
Estos son solo algunos ejemplos de las acciones últimas a tomar en casos límite, los cuales habría que sopesar si, atendiendo a las particularidades del servicio, podrán ponerse en uso en caso de contingencia. 

Las consecuencia de algunas de ellas es una interrupción total o parcial (para algunos clientes) del servicio atacado, pero muchas veces esto es mejor que afectar a la totalidad de servicios proporcionados por un Data Center.


viernes, 22 de noviembre de 2013

TRILL, SPB, VXLAN, NVGRE, EVI, OTV, EVB, VNTag: nuevas soluciones para antiguos problemas

"Esta entrada presenta algunos de los nuevos protocolos que han aparecido, para dar solución a los requisitos que surgen habitualmente en las arquitecturas de Data Center, comparándolos con los que se vienen utilizando hasta ahora, pero dejando a un lado las soluciones puramente SDN"


En lugar de ir enumerando los diferentes protocolos y explicándolos cada uno por separado, se expondrán una serie de problemas comunes a los Data Centers, y se mostrarán las soluciones que se vienen implementando y, a continuación, los nuevos protocolos que pueden ser utilizados.


No se hace mención de la utilización de SDN (ver entrada en el blog sobre la introducción al Software Defined Network) ya que, aunque solucionaría todos y cada uno de los siguientes problemas de un modo sencillo, es un cambio total del paradigma del envío tradicional de paquetes. A pesar de ello, también es cierto que la arquitectura SDN se está empezando a implementar para dar soporte adicional a elementos mostrados en esta misma entrada, como en la creación automatizada de los túneles dentro de los overlay networks, como se verá más adelante.

Tampoco se abordan los conceptos de Network Functions Virtualization ( NFV ), ya que su único cometido es el de virtualizar los componentes de red para introducirlos dentro de algún hipervisor, del mismo modo que se haría con una máquina virtual, y no el de solventar los problemas que aquí se muestran mediante la introducción de un nuevo protocolo.

De los protocolos mostrados, habrá algunos casos en los que dos protocolos diferentes se solapen en funcionalidades, o que directamente solventen un problema de diferentes maneras. 


Por otro lado, algunos de los protocolos mostrados tienen una misión similar dentro del Data Center, y se podría decir que son parejos, con la salvedad de que uno es propietario y otro es el estándar.

A continuación se comienzan a mostrar algunos de los requisitos más comunes a la hora de diseñar las arquitecturas DC de hoy en día.


Optimización del uso de enlaces 

La optimización tratada no es la correspondiente a la utilización del ancho de banda de cada uno de los enlaces, la cual se realizaría mediante QoS, si no la utilización de todos los enlaces disponibles para la comunicación de datos (elección del camino de los paquetes a nivel 2).

Normalmente se utilizan enlaces redundantes para conectar cada uno de los switches, para garantizar la alta disponibilidad, pero no siempre se puede hacer un uso eficiente de todos ellos, es decir, una utilización activo-activo de los enlaces, sino que se tiene que recurrir al uso en modo activo-pasivo.

La utilización de todos los enlaces es importante, más si cabe cuando los enlaces son costos, como por ejemplo enlaces 10G o enlaces inter-DC (suponiendo que les hemos conectado con DWDM, por ejemplo).

También existe el problema de los altos tiempos de convergencia tras una modificación/caída de uno de los enlaces, así como el grado de impacto que este acontecimiento tiene en la arquitectura global.


Soluciones hasta el momento

El primer método encontrado para poder implementar un despliegue L2 con redundancia fue la utilización del protocolo Spanning-Tree, o mejor dicho, alguna de sus variantes como MST, PVSTP (propietario), RSTP... 

Para mejorar la utilización de los enlaces, ya que STP habilitará siempre un único camino (siempre será activo-pasivo), normalmente se utilizan dos métodos adicionales: la agregación de enlaces o la utilización de MST o PVSTP para poder crear diferentes árboles STP por cada VLAN o grupo de VLANs (en el caso de MST).

Otra solución adicional es la formación de agregados de enlace, también llamados PortChannels o EtherChannels. La utilización de todos los enlaces mediante la utilización de agregados de enlace era bastante restringida, ya que hasta hace unos años (se verá más tarde) no se podrían crear agregados de enlace distribuidos a lo largo de varios switches (el agregado tenía que inicial y finalizar en los mismos dos switches físicos), por lo que el único esquema válido era el siguiente (y para un máximo de 8 enlaces):



Figura 1 - Utilización de todos los caminos mediante agregados de enlace

Aún así, si se incluía un tercer switch, los agregados ya no podrían verse como una solución para la optimización de utilización de caminos, por lo que había que recurrir a las correctas configuraciones de MST y PVSTP.

En la siguiente figura se presenta el típico esquema de tres switches conectados de manera redundante, en el cual STP bloquea uno de los enlaces para que no existan bucles L2:



Figura 2 - Bloqueo de enlace por protocolo STP

Con este esquema, el enlace bloqueado no será utilizado, a no ser que el enlace entre los switches A y B falle.

Para poder utilizar también el enlace entre el Switch A y el Switch C, se podrían hacer dos grupos (si se utiliza MST) de VLANs, el grupo color azul y el grupo color verde, y a cada uno se le asignaría un arbol STP diferente, con diferentes pesos e incluso root bridge, para que de este modo cada arbol STP bloquee uno de los enlaces disponibles, como se muestra a continuación:



Figura 3 - Optimización mediante división de árboles STP

En los últimos años han aparecido otros métodos, basados en la virtualización de componentes, para poder crear un único gran switch virtual y eliminar así los enlaces inter-switch:



Figura 4 - Stacks de switches

En primer lugar aparecieron los stacks físicos de switches, los cuales se forman mediante un cable que une varios switches, con los que se permite la consolidación de varios dispositivos en uno solo, de modo que este nuevo switch virtual resultante aparezca, desde el punto de vista lógico, como un único equipo, tanto para su gestión como en el sentido de funcionamiento, por lo que podrían formarse agregados terminados en Hardware físico distribuido (Multichasis Etherchannel o MEC).

De tenerse un único equipo (stack formando un switch virtual), o incluso dos (y agregados de enlace), se podría deshabilitar STP, ya que no habría posibilidad de bucles L2 (este despliegue conservaría el HA al tener varios equipos dentro del stack), por lo que se obtendría una ventaja añadida y es que no entrarían en juego los temporizadores de STP a la hora del recálculo de pesos en caso de un fallo en un enlace o switch, mejorando los tiempos de respuesta globales de la plataforma ante fallos.

Más tarde aparecieron los chasis virtuales, los cuales podrían formarse sin la necesidad de un cable especial, si no mediante conexiones Ethernet. Este es el caso del IRF en HP o el VSS en Cisco.

En caso de tener que conectar (al stack) switches que no soporten ninguno de estos protocolos, también se consigue una optimización de caminos, ya que se podrá formar un agregado de enlace distribuido entre diferentes terminaciones físicas entre el stack y el nuevo switch, al ser considerado el stack como un switch único. Puede verse un ejemplo de agregado distribuido en la siguiente figura:



Figura 5 - Agregados de enlace a stacks de switches

Existe otra tecnología que permite la creación de agregados a lo largo de switches distribuidos, como el virtual PortChannel (vPC), mac-pinning, etc (ver entrada en el blog sobre configuraciones de vPC, mac-pinning, etc en Nexus 1000v), y diversos fabricantes han hecho sus propias implementaciones al respecto, con lo que se podrían utilizar todos los caminos aunque no se pudiesen formar stacks de switches propiamente dichos.

Resumiendo lo anterior, habitualmente para poder proporcionar servicio de red en HA, intentando optimizar la utilización de los enlaces, se puede:

  • Utilizar una variante de STP (MST o PVSTP) haciendo grupos de VLANs y diferenciando los enlaces activos en el árbol STP para cada uno de ellos.


  • Creación de stacks o chasis virtuales (por ejemplo IRF o VSS)


  • Creación de agregados de enlace. Para mejorar la alta disponibilidad se pueden realizar agregados sobre stacks/chasis virtuales (Multichasis Etherchannel).


Solución con nuevos protocolos ( TRILL / SPB )

Se han visto fundamentalmente dos métodos para la utilización de todos los caminos: configuración de MST/PVSTP o la creación de agregados y stacks.

Ya que en despliegues muy grandes no se podrán tener únicamente dos switches, aún realizando stacks, para poder formar entre ellos como mucho un agregado de enlace, se deberá contar con la configuración de STP para garantizar el HA.

Al tener habilitado STP se deberá contar con los retardos que introduce a la hora de re-converger la red en caso de fallo de algún componente, o los posibles recortes de tiempo aging de las tablas CAM cuando existen cambios en la topología.

Para conseguir un comportamiento Multipath, a la vez que eliminar los problemas de los retardos de reconvergencia de STP, se han creado varios protocolos que, en lugar de utilizar pesos y selecionar los enlaces activos, como hace STP, se crea un Fabric Ethernet (siguiendo una filosofía parecida a la del Fabric de los switches FC de almacenamiento) por el cual las tramas son enrutadas desde el origen al destino, como si de la capa L3 se tratase.

Los nuevos protocolos estándar para este fin son: Transparent Interconnection of Lots of Links (TRILL)Shortest Path Bridging (SPB). También existen implementaciones propietarias, como FabricPath, que realizan el mismo trabajo que los dos estándares que se van a abordar.

Como se ha comentado, el proposito es crear un Fabric, por lo que la "nube de switches" podría ser vista como un único gran dispositivo (desde el punto de vista de transmisión de paquetes, no de gestión de los equipos). 

Para entender esta afirmación hay que tener claro que mediante TRILL o SPB, cada equipo conoce de antemano el interfaz de salida para el paquete, gracias a la tabla de enrutamiento interna que almacena (del mismo modo que los protocolos de enrutamiento L3), lo cual puede asemejarse mucho a la tabla CAM que mantiene un único switch para decidir la interfaz de salida de una trama.



Figura 6 - Transformación de la topología hacia un Fabric de red

Resumiendo, un paquete de un cliente conectado a un switch perteneciente al fabric es enrutado internamente por el protocolo (TRILL/SPB) para llegar al destino de manera transparente, pudiendo utilizar varios caminos y manejando los fallos que puedan producirse en la topología. De esta manera se ha eliminado por completo la necesidad de utilización de STP para garantizar la alta disponibilidad de la plataforma.

Aunque en este enlace se puede encontrar una comparativa (algo parcial al punto de vista del fabricante Avaya), o en esta presentación, y en este otro enlace hay una buena descripción de TRILL y SPB, y teniendo en cuenta que la comparación extensiva entre TRILL y SPB queda fuera del ámbito que se está abordando, tan solo se va a realizar un escueto resumen de ambas propuestas de estándares.

Transparent Interconnection of Lots of Links (TRILL), es un estándar propuesto por la IETF que utiliza el protocolo de enrutamiento IS-IS (aprovechando que este se basa en el modelo OSI y no TCP/IP) para enrutar las tramas L2 desde su origen hasta su destino, para lo cual introduce una nueva cabecera sobre la cabecera MAC, encapsulando los paquetes para más tarde poder encaminarlos. Los equipos que realizan el enrutamiento L2 son llamados Rbridges.

Shortest Path Bridging (SPB) se encuentra recogido bajo el estándar 802.1aq del IEEE como borrador (draft) y puede que sea incluido en el estándar 802.1q. Este estándar también utiliza IS-IS para realizar el enrutamiento interno y tiene dos métodos para introducir los identificadores internos, y permitir el multipath: Shortest Path Bridging VLAN (SPBV) y Shortest Path Bridging Mac-in-Mac (SPBM). La diferencia entre ellos son los identificadores que utilizan para conocer cual es el mejor camino hasta el destino. Mientras SPBV utiliza lo que se llama Shortest Path VLAN ID (SPVID), SPBM utiliza una combinación de una Backbone MAC (BMAC) y un Backbone VLAN ID (BVID)SPBV utiliza el encapsulamiento Q-in-Q mientras que SPBM utiliza MAC-in-MAC.


Escalabilidad y Multitenancy 

Otro problema de los actuales grandes DCs es la imposibilidad de escalar más allá de ciertos límites en, por ejemplo número de VLANs IDs (4096) a configurar o número de MACs en las tablas CAM de los switches, sobretodo si se realizan extensiones L2 a lo largo de varios Data Centers, así como la duplicidad de IPs.

A este problema de escalabilidad hay que sumar la necesidad de separar lógicamente varias zonas del mismo Data Center, lo que se llama Multitenancy, por ejemplo porque se desea dar servicio a varios clientes completamente independientes.

Las necesidades de Multitenancy y de escalabilidad pueden verse como dos puntos completamente diferentes, pero la verdad es que muchas de las soluciones para conseguir una mayor escalabilidad consisten precisamente en explotar las funcionalidades multitenancy.


Solución hasta el momento

El problema del escalado de IPs, VLANs IDs y MACs aprendidas en los switches, así como el concepto Multitenant no es nuevo, ya que los ISPs se han estado enfrentando a estos problemas durante muchos años. Para solventarlos se han ido utilizando una serie de métodos como Q-in-Q (802.1ad), MAC-in-MAC (802.1ah) y la utilización de MPLS. Estos métodos pueden ser igualmente utilizados dentro de un Data Center (o a lo largo de DCs distribuidos).

Q-in-Q no es más que utilizar dos tags de VLANs, uno para la parte cliente y otro para la parte proveedor, de manera que cuando el tráfico de las VLANs de un cliente (tenant) entra en la red del proveedor en forma de trunk de VLANs, este tráfico se encapsula dentro de una nueva VLAN del proveedor. Con esto se consigue que dentro de cada una de las VLANs que posee el proveedor se encapsula el trunk 802.1q de cada cliente. Esta técnica proporciona 16 millones de posibles "VLANs" (4096 x 4096).

La técnica de MAC-in-MAC es utilizada por protocolos como PBB y PBT, y su cometido no es más que encapsular las tramas de cliente dentro de una nueva trama Ethernet con una MAC del propio proveedor. Del mismo modo que en una LAN un servidor envía y recibe datos desde una MAC asignada a su NIC, con MAC-in-MAC dentro de de la red del proveedor un cliente enviará y recibirá tráfico identificado por otra MAC diferente. Esta técnica de encapsulación separa completamente los dominios de cliente y proveedor y proporciona una ventaja considerable con respecto a Q-in-Q, ya que los dispositivos de la red de proveedor no tienen que aprender todas las MACs de cliente, ya que estas se encuentran enmascaradas dentro de la MAC de proveedor, lo que hace que que equipamiento de red no complete sus tablas CAM con tanta asiduidad.

Por último, la utilización de MPLS es otra de las medidas utilizadas (y posiblemente la mejor) para proporcionar una mayor escalabilidad, gracias a que el número de tags  MPLS posibles es mucho mayor que el de VLANs IDs, además de que permite la separación lógica de los flujos de cada cliente.



Solución con nuevos protocolos ( TRILL + FGL o NVGRE / VXLAN )

Las últimas soluciones tienen ciertas similitudes con la solución MAC-in-MAC y se basan en que, para proporcionar escalabilidad y Multitenancy, se han de desplegar lo que se llama overlay networks que son arquitecturas en las cuales cada cliente (tenant) dispone de una red virtual propia (que utiliza los mismos componentes físicos que el resto de clientes) mediante la cual sus equipos pueden comunicarse.

Mediante los Network Overlays se aislan los espacios de direccionamiento de los clientes, MACs y VLANs IDs duplicadas,etc sin importar si existen niveles L3 de por medio. 

Aunque este video es explicativo de Openflow, la verdad es que deja claro el concepto básico de lo que son overlay networks. También se puede visitar la entrada de este blog para comprender un poco mejor este tipo de solución.


Figura 7 - Ejemplo de Overlay Network

Es importante distinguir los diferentes "tipos" de virtualización de las redes para tener claro donde encajan los overlay networks, y conocer las diferencias cuando la virtualización se habla de NFV, ni tampoco asociar los overlay networks unívocamente a SDN:
  • Software Defined Network (SDN) se refiere a la deslocalización del la capa de control de los elementos de red, desde los equipos de red a uno o varios gestores centrales (controllers), los cuales mediante APIs se hablan con aplicativos que pueden, de este modo, modificar la configuración y comportamiento de la red. Esta deslocalización puede ser completa (utilizando el protocolo OpenFlow), de manera que los equipos de red son meros forwarders de paquetes siguiendo los dictados del controller, o mediante la gestión centralizada de la configuración de red, lo cual podría ser un software corriendo en un servidor que lanza los comandos necesarios en cada uno de los equipos de red para que estos repliquen el funcionamiento que se requiere. Cuando VMware hace referencia a NSX y NVP se refiere principalmente a la utilización de SDN junto con overlay networks, es decir, a la introducción de un controlador que podría crear dinámicamente los túneles formados por VXLAN, pero esto no quiere decir que no se puedan formar overlay networks con VXLAN de manera manual si ningún tipo de infraestructura  SDN adicional (controller y API).

  • Network Functions Virtualizacion (NFV) no es más que la generación de "maquinas virtuales" que realizan las funciones que típicamente realizan los dispositivos de red, como puedan ser routers, firewalls, balanceadores, proxys, etc e introducirlos en la plataforma de virtualización (VMware, Hiper-V, KVM, etc). Tampoco hay que confundir NFV con la virtualización de equipos físicos de red, en donde por ejemplo de un solo firewall físico pueden obtener varios firewalls lógicos, ya que estos no correrían bajo un hipervisor para máquinas virtuales, sino sobre el software del propio equípo físico.

Existen varias tendencias de encapsulación, como la que se hace mediante NVGRE y VXLAN , y la utilización de tags adicionales contenidos en otros protocolos, como sucede con el tag Fine-Grained Labeling ( FGL ) de TRILL.

Los mostrados aquí no son los únicos protocolos, existen más, pero si son los que se percibe que pueden ser tendencia en los próximos años. Un ejemplo de alguno de estos "otros" protocolos puede ser Stateless Transport Tunneling Protocol for Network Virtualization ( STT ), que es un borrador del protocolo utilizado por la empresa Nicira (adquirida por VMware) para encapsular con unas cabeceras al estilo de TCP. 

NVGRE y VXLAN son bastante parecidos. NVGRE está siendo impulsado por Microsoft mientras que VXLAN por VMware, pero los dos se basan en la encapsulación.

NVGRE utiliza el protocolo GRE (MAC-in-GRE) para tunelizar las tramas L2 sobre redes L3 y, a esto, le añade a su vez un identificador llamado Tenant Network ID (TNI), mientras que VXLAN utiliza UDP (MAC-in-UDP) y un identificador llamado VXLAN Net Identifier (VNI)

Una vez tunelizado el tráfico viaja por las redes L2 y L3 hasta que llega al end-point, momento en el cual se realiza la des-encapsulación y se reenvía al la ubicación final. Estos end-point se llaman NVGRE Endpoint en NVGRE y VXLAN Tunnel End Points (VTEP) en VXLAN.

Por tanto, entre las ventajas de la utilización de NVGRE o VXLAN se pueden encontrar:
  1. Los nuevos identificadores TNI y VNI son de 24-bits, frente a los 12 de los VLAN ID tradicionales, lo cual permite 16 millones de VLANs frente a las 4096.
  2. Al ser el tráfico encapsulado hasta su destino final, se pueden crear overlay networks que segmentan los dominios de conectividad de los clientes, solventando los problemas de IPs/VLANs/MACs duplicadas y seguridad.
  3. También, debido a la encapsulación del tráfico con UDP o GRE, como funcionalidad añadida se tiene la posibilidad de transportar el tráfico L2 a lo largo de redes L3, o lo que es lo mismo extender el dominio L2. Esto puede permitir la formación de comunicaciones inter-Data Center, las cuales serán tratadas en el siguiente punto. Esta funcionalidad, por ahora, tiene varias restricciones que también serán descritas en el siguiente punto que habla de los enlaces DCI.
  4. Facilita la creación dinámica y automatizada (bueno para el cloud) de los overlay networks, ya que se independizan las comunicaciones de este tipo de la configuración de los equipos de red intermedios. Esto, que puede verse como una ventaja para la adopción de una arquitectura cloud, puede también ser considerado como un problema desde el punto de vista de la gestión y control de red, ya que el personal de comunicaciones queda muchas veces al margen de estas topologías y porque las plataformas virtuales pasan a ser un punto crítico en las comunicaciones de red de los servicios de la empresa.
Los diferentes métodos de encapsulamiento que utilizan NVGRE y VXLAN implican hechos que deben ser considerados, por ejemplo, NVGRE al utilizar GRE, protocolo bien conocido por los equipamientos de red actuales para realizar encapsulamientos (incluso por Open vSwitch), hace más fácil el migrar a esta solución incluso haciendo que los endpoting sean switches físicos y no elementos virtuales dentro de VMware (esto tiene sus ventajas como se verá más adelante), mientras que VXLAN utiliza un método de encapsulamiento basado en UDP que no es soportado por muchos de los chips utilizados en los switches actuales, lo que podría suponer la necesidad de cambiar el equipamiento Hardware.

El que el equipamiento de red pueda hacer de endpoint para los túneles de los overlay networks puede ser muy útil (rendimiento, gestión por el personal de comunicaciones, etc), ya que las máquinas que se encuentren en una VXLAN, para poder alcanzar a otra maquina (ya sea virtual o física) que se encuentre en una VLAN tradicional fuera de la VXLAN/NVGRE-LAN, deberá terminar el túnel (GRE o UDP) en su correspondiente end-point, como se puede ver en la siguiente ilustración, donde en la parte izquierda aparece la terminación en el elemento de red mientras que en la derecha se utiliza una máquina adicional (virtual o física) para poder acabar el túnel:




Figura 8 - Terminación de túneles VXLAN para comunicación con máquinas externas

Como contrapartida a NVGRE  se tienen una implicación negativa del uso de este protocolo, y es que GRE no tiene visibilidad de flujo (al contrario que TCP y UDP, utilizado por VXLAN), por lo que no se podrán utilizar parámetros como el número de puerto dentro del fabric de red intermedio para lograr caminos de igual coste (ECMP), o incluso en la distribución del tráfico en los agregados de enlace, lo cual permitiría poder lograr un mejor aprovechamiento de los enlaces (debido a los cálculos de HASH diferentes IP/puerto).

Tanto NVGRE como VXLAN requieren que la plataforma de red que hay por debajo (la que conecta los end-point) suporte multicast y a nivel 3 el propio encaminamiento multicast (ver entrada en el blog sobre encaminamiento multicast) para poder lograr tanto las comunicaciones broadcast como multicast a lo largo de los overlay networks, lo cual complica la configuración de la arquitectura e incluso, en ocasiones, imposibilita la utilización de estos protocolos (muchos ISPs no lo soportan).

Es más, para el caso concreto de VXLAN, VMware recomienda que para cada VXLAN se utilice un arbol multicast para reducir los problemas de flooding. Este requisito/recomendación implica unas altas necesidades de CPU y RAM en los equipos de red intermedios.

El requisito de utilización de multicast podrá ser sustituido en el futuro mediante la integración de VXLAN y NVGRE con controladores de SDN, ya que en ese caso los controllers conocerían todos los servidores pertenecientes a la VXLAN (haciendo innecesario el uso de broadcast ARP) y no se tendría por qué realizar flooding de paquetes a toda la VXLAN.

También, al ser protocolos basados en la encapsución, es importante tener en cuenta las implicaciones de las modificaciones de la MTU a valores por encima de 1500 bytes, lo que induciría a la fragmentación intermedia de no tener correctamente configurada toda la red (de principio a fin), lo que perjudicaría gravemente al rendimiento de las comunicaciones.

Por último, otra implicación del uso de comunicaciones encapsuladas, es la imposibilidad de garantizar políticas de seguridad para esos flujos en los firewalls intermedios, por lo menos a día de hoy, ya que en el futuro puede que se incluya soporte para comunicaciones VXLAN o NVGRE en las releases de los firewalls físicos. Como contramedida a esta falta de seguridad, se pueden implementar firewalls virtuales tras los end-points, que podrán ver los flujos de tráfico des-encapsulados. Lo anterior no solo es aplicable a la seguridad, sucedería lo mismo con otros servicios de red como por ejemplo los balanceadores de carga o los optimizadores WAN.

Los anteriores métodos NVGRE y VXLAN están principalmente pensados para el mundo virtual (al menos por el momento) y tienen los problemas derivados de la incorporación de nuevas cabeceras para el encapsulamiento. Por otro lado está la solución basada en tags, como la de TRILL con la etiqueta FGL, si bien es cierto que por ahora no es más que un borrador, en el futuro, dentro de una red con TRILL desplegado, se podría hacer uso de la etiqueta FGL para proporcionar 16 millones de VLANs diferentes.

Con este método no se incluiría el encapsulamiento con las cabeceras adicionales UDP (VXLAN) o IP (NVGRE), con lo que el funcionamiento de la red sería igual al tradicional y, no menos importante, no se desvirtuaría la dupla mundo de sistemas/virtualización y mundo de comunicaciones, únicamente se ganaría una mayor escalabilidad de VLANs en las arquitecturas actuales.

Para lograr el multitenancy mediante el método de TRILL + etiqueta, se podrá utilizar en el futuro Q-in-Q dentro del propio fabric TRILL, aunque nuevamente este tipo de soluciones todavía está en sus primeros pasos.

También podrían utilizarse métodos NFV o virtualización de equipos físicos para realizar las funciones Multitenancy, tal y como se viene haciendo hoy en día.



Extensión L2 y Data Center Interconnect (DCI)

En las actuales arquitecturas de Data Center habitualmente se hace necesario inter-conectar a nivel 2 los diferentes centros.

La extensión L2 a lo largo de diferentes Data Centers puede ser bastante problemática, por el hecho de que los bucles de un DC pueden propagarse al otro, con lo que se perdería la alta disponibilidad, además de que el formar grandes segmentos L2 puede hacer alcanzar los valores máximos de número de MAC por VLAN.

Otros problemas de la extensión de VLANs son los propios del uso eficiente de los enlaces a nivel 2, como se mostrado en el punto anterior.


Solución hasta el momento

Existe múltiples métodos para la inter-conexión de Data Centers a nivel 2. Algunos de ellos se comentan en la entrada "Arquitectura MultiDataCenter - Extensión L2".

Resumiendo lo más común, existe la posibilidad de conexión mediante tres opciones fun
damentales, dependiendo del tipo de conectividad que esté disponible entre los DCs:
  1. Nivel 1 (Fibra oscura o DWDM): se tratarían del como un cable directo.
  2. Nivel 2 (MPLS): Se utilizaría EoMPLS, o VPLS (enlaces multipunto).
  3. Nivel 3 (IP): Se tuneliza con GRE para poder utilizar alguno de los protocolos del punto 2: EoMPLSoGRE o VPLSoGRE.

Con relació
n al punto "Optimización de enlaces", explicado anteriormente, es importante ver cómo los protocolos STP y los nuevos TRILL o SPB pueden encajar dentro de la inter-conexión tradicional de Data Centers.

En el caso de la utilización de enlaces de nivel 1 (DWDM o fibra oscura), las consideraciones de los protocolos STP o TRILL/SPB serían la mismas que las mostradas anteriormente, ya que los enlaces DCI podrían ser vistos como cables directos entre los DCs. 

De realizarse una conexión DWDM/fibra, se deberían solucionar los mismos problemas que los tratados en el anterior punto, como si de un enlace local al DC se tratase, y habría que tener en cuenta que existiría un único dominio STP, o un único Fabric (si se utilizase TRILL/SPB) compartido por los dos Data Centers (al igual que en las consideraciones locales hechas en el anterior punto para un solo Data Center).

En el caso de conectar más de dos DCs se pueden utilizar los mismos métodos:
  • Variante de STP
  • Formación de chasis (stack) virtual
  • TRILL o SPB

En el caso de utilizar una variante de STP uno de los enlaces será bloqueado (ya sea para todas las VLANs o para un grupo de ellas) por lo que para poder alcanzar el DC3 desde el DC1, habría que pasar previamente por el DC2, con el aumento de retardo y consumo de anchos de banda que ello conlleva:


Figura 9 - DWDM con STP para múltiples DCs

La formación de chasis virtuales a lo largo de conexiones WAN es posible siempre y cuando se cumplan una serie de requisitos de ancho de banda y retardo, no obstante el hecho de utilizar enlaces WAN en lugar de LAN para la formación del chasis virtual conlleva riesgos que deberían ser estudiados a fondo antes de optar por esta solución:



Figura 10 - DWDM y formación de chasis virtuales extendidos

TRILL y SPB solventan este problema de utilización no optima de los recursos como ya se ha visto anteriormente, por lo que puede ser una buena solución en arquitecturas con DWDM:


Figura 11 - DWDM con TRILL/SPB para múltiples DCs

Un problema adicional que tiene el extender el dominio STP a lo largo de los Data Centers es que, cualquier modificación de STP en cualquiera de los centros, conllevaría cálculo de la reconvergencia en todos los centros, es decir, que un fallo en un DC afectaría al resto.

Este comportamiento con TRILL y SPB se ve minimizado, porque no hay que contar con los problemas implícitos de STP, pero si es verdad que ante un eventual fallo de TRILL se verían afectados todos los centros a la vez. Por ello es por lo que siempre se recomienda aislar los dominios L2 entre los DCs y confinarlos localmente, para poder disponer de una verdadera HA de los servicios a nivel global.

Los protocolos EoMPLS y VPLS proporcionan dicho aislamiento (conservando la conectividad a nivel 2), por lo que en ocasiones estos son utilizados sobre los propios enlaces DWDM, aunque no exista una red MPLS entre los DCs, para lograr el confinamiento de los dominio L2 dentro de cada Data Center:



Figura 12 - Confinamiento de dominios STP/TRILL/SPB en el DC local

Por otra parte, la solución del chasis virtual extendido, vista anteriormente, tiene un problema similar al del dominio STP único, ya que el chasis formado es un punto único de fallo que, teóricamente, podría afectar a todos los DCs al unisono, por lo que este deberá ser otro punto a tener en cuenta en la elección de su posible implementación.


Solución con nuevos protocolos ( EVI / OTV  o NVGRE / VXLAN)


Existen dos tendencias diferentes a la hora de dar nuevas soluciones a la interconectividad L2 entre DCs remotos, uno principalmente vinculado al mundo de sistemas y virtualización (NVGRE / VXLAN), y otro punto de vista tradicional de las comunicaciones (EVI / OTV).


EVI y OTV

Si bien es cierto que VPLS cubre las necesidades de interconexión de DCs distribuidos, hay que tener presente algunos aspectos que son mejorables:
  • Depende de MPLS por debajo, por lo que, de no existir entre los DCs, hay que utilizar métodos de encapsulación GRE.
  • Para poder propagar las MACs realiza un flooding de estas, por lo que no se puede eliminar el flooding de un DC a otro.
  • Se necesitan protocolos adicionales para poder formar las conexiones multihoming (por ejemplo BGP), lo que complica la configuración final.
  • Requiere una conexión full mesh entre todos los DCs
  • No puede escalar más allá de 4096 VLANs (para soportar más VLANs hay que recurrir a métodos como QinQ)

Es por ello que han surgido nuevos protocolos como EVI - Ethernet Virtual Interconnect (HP) y OTV - Overlay Transport Virtualization (Cisco), los cuales:
  • Permiten realizar conexiones L2 sobre cualquier tipo de plataforma IP (se obtendría una homogeneización del tipo de interconexión de los Data Centers sin necesidad de túneles adicionales)
  • Transmisiones multicast (no es necesario el flooding)
  • No se necesitaría la complejidad de MPLS, BGP y otros protocolos por debajo.
  • Autogestionan las conexiones multihoming sin necesidad de tener que realizar un full mesh

Aparte, aunque en primera instancia tienen soporte para 4k VLANs, en ambos se incluyen tags dentro de las cabeceras que en un futuro podrán ser utilizados para alcanzar un mayor número de VLANs ID, lo cual puede ser necesario cuando se extiende el nivel 2 por múltiples Data Centers.

EVI y OTV son parecidos, y ambos utilizan IS-IS por debajo para poder enrutar el tráfico de las inter-conexiones de DCs y tunelizan mediante GRE.

Los dos protocolos simplifican los enlaces entre DCs pero introducen alguna restricción, como el número de centros (8 DCs), o la necesidad de Hardware compatible con estos protocolos.

No se ha de confundir el cometido de EVI y OTV con el de TRILL o SPB, ya que ambos utilicen un método similar para enrutar las tramas/paquetes de modo interno (protocolo IS-IS), tienen funciones diferentes, TRILL/SPB sustituyen a STP para obtener una red de nivel 2 de alta disponibilidad y EVI/OTV proporcionan un método de extender el nivel 2 entre DCs, es más es probable que se requieran utilizar conjuntamente para extender los Fabrics a lo largo de los diferentes Data Centers.

Hay que recordar que es recomendable mantener la mayor independencia posible ente DCs, tal y como se vio anteriormente, para poder aislar los problemas entre centros:



Figura 13 - EVI / OTV y TRILL / SPB


NVGRE / VXLAN

Como se ha mencionado antes, la solución DCI mediante NVGRE (Microsoft, principalmente) o VXLAN (VMware) ha sido desarrollada desde el punto de vista de los ingenieros de sistemas, los cuales muchas veces se encuentran con el problema de tener que conectar máquinas virtuales que se encuentran en diferentes redes de diferentes DCs, lo cual implica que el equipo de comunicaciones tenga que reconfigurar y reestructurar la arquitectura de red para poder acometer ese requerimiento, o lo que es lo mismo, tiempo y dinero.

Para evitar tener que involucrar, en la medida de lo posible, a las áreas de comunicaciones y para encontrar solución a problemas que los protocolos tradicionales de red todavía no podrían aportar, se crearon métodos de encapsulamiento para "independizarse" de las restricciones de la red subyacente. 

Al utilizar tecnologías de encapsulamiento que puedan ser enrutadas por redes L3, se proporciona la habilidad de conectar, mediante estos túneles, máquinas que se encuentren en DCs diferentes, por lo que podría verse como una especie de enlace DCI.

Aunque se aporte conectividad L2 entre los Data Centers, este tipo de DCI no cumple con varios de los requisitos básicos de este tipo de enlaces (cosas que sí que hacen protocolos ya vistos, como VPLS, EVI o OTV), como por ejemplo que extiende los problemas potenciales de un DC al otro, al no tener métodos de contención de errores y aislamiento de ellos entre los diferentes DCs , o que no contiene el flooding de paquetes ni minimiza el efecto de los broadcast entre los DCs.

Sumado a esto hay que añadir los problemas que ya se han revisado de la necesidad de multicast y la modificación de las MTUs para evitar la fragmentación, elementos muy difíciles de manejar cuando de conexiones WAN se tratan (sobretodo si son manejadas por ISPs).

A parte de lo anterior, a día de hoy, cuando todavía hay que utilizar end-point vinculados plenamente a las plataformas virtuales, puede existir el problema de "traffic tromboning" o "traffic trombons", o lo que es lo mismo, ineficiencias en los flujos de tráfico (los flujos pasan más veces de las necesarias por la WAN).

Esto puede darse cuando una máquina vitual se mueve de un DC a otro y a su vez necesita comunicarse con máquinas o clientes en el DC origen. 

Un ejemplo recurrente de este comportamiento se da cuando se utilizan  en VMware elementos como los vShields, cuya misión sería securizar las diferentes VXLANs, en este caso podría suceder lo explicado en este blog



Figura 14 - Problema de los traffic tromboning con VXLAN y vShield

Y por último, las tecnologías VXLAN y NVGRE, por el momento, solo pueden utilizarse para plataformas virtuales, si se necesita la extensión L2 para equipos físicos, por ejemplo para crear un cluster extendido, se tendrá que recurrir a otras tecnologías como HP EVI , Cisco OTV, VPLS, etc.

Resumiendo lo anterior, VXLAN y NVGRE no pueden verse, a día de hoy, como tecnologías para interconectar Data Centers, aunque es posible que mediante modificaciones futuras (introducción de controller SDN, funcionalidades de end-points dentro del equipamiento de red, etc) puedan ser una opción para realizar este trabajo.



Visibilidad y control de conexiones de VMs

Los principales problemas que plantea la virtualización de sistemas, desde el punto de vista de la arquitectura de red son:

Pérdida de visibilidad del tráfico entre máquinas virtuales dentro del mismo host físico, ya que si una máquina virtual quiere comunicarse con otra dentro del mismo hipervisor el tráfico no fluye fuera del host físico:



Ilustración 15 –Comunicación interna por vSwitch entre VMs dentro de mismo Host físico

Difuminación de línea de diferenciación de responsabilidades entre departamentos de sistemas y de comunicaciones.

Necesidad de consumo de CPU en los host físicos para gestión del tráfico de red en los vSwitches o adquisición de tarjetas NIC específicas para realizar el offload de dicho trabajo.

Imposibilidad de aplicar políticas de seguridad y QoS que sean consistentes (en configuración y gestión) con el resto de la arquitectura de red


Solución hasta el momento

Existen maneras de solventar algunas de estas problemáticas:

1. Externalización de los trabajos de red con NIC Hardware especiales

Los problemas de  performance, relativos al uso de ciclos de CPU para gestionar el tráfico de red en el los vSwitches, puede ser solventado mediante la externalización de este trabajo a unas NICs con Hardware especializado gracias a la tecnología Single Root I/O Virtualization (SR-IOV).
   

Ilustración 16 –Hardware especifico para externalizar del hipervisor el procesado de red

Este método tiene ciertos problemas y es que hace necesaria la adquisición de nuevo Hardware especializado, además de que la BIOS de los equipos en los que se pretenda instalar lo soporten. 

A esto hay que sumar que se requerirá también la instalación de los drivers específicos de dichas NICs, los cuales tendrán que ser compatibles con el sistema operativo sobre el que se ejecute el hipervisor.

Si a lo comentado se le añade que tan solo se solventa el problema derivado del rendimiento del procesado de red en los entornos de virtualización, hace que en algunos casos se deseche esta implementación.


2. Incorporación de switches software dentro de las plataformas virtuales.

Debido a que varios de los hipervisores presentes en el mercado, han liberado una API para poder desarrollar productos que se integren con sus soluciones de virtualización,  existen algunos fabricantes que han creado switches software que implementan funcionalidades avanzadas que pueden ser instalados en los sistemas operativos que gestionan los hipervisores.
  

Ilustración 17 –Switches software avanzados en los hipervisores

Esta solución no compensa el incremento de CPU necesitado en los host físicos que albergan las máquinas virtuales, es más, puede que lo aumente, además de implicar más elementos de gestión a la plataforma y de complicar el despliegue y el mantenimiento de la solución, sin sumar el aumento de coste, tanto de compra como mantenimiento, que tienen este tipo de switches software.


Solución con nuevos protocolos ( EVB / VNLink )


Existe una nueva solución, la configuración de nuevas funcionalidades de la propagación de los interfaces virtuales a los switches físicos de red, como la estandar Edge Virtual Bridging (EVB) y la tecnología propietaria Virtual Network Link (VNlink).

Estos métodos consisten en propagar las interfaces de red de los servidores virtualizados de manera que puedan ser considerados como interfaces físicos propios por los switches físicos a los que se conecta el host que alberga dichas máquinas virtuales.

  
Ilustración 18 – Propagación de interfaces virtuales a switches físicos

Al considerar las interfaces de las máquinas virtuales como interfaces físicos propios, se les pueden aplicar las mismas políticas de securización, gestión o configuración que el resto de los interfaces del switch, mejorando todos los aspectos negativos relacionados con la visibilidad y falta de funcionalidades que se comentaron como problemas de los entornos virtualizados. 

Los switches físicos pueden “descubrir” las interfaces de las máquinas gracias a la configuración de ciertos protocolos que permiten dicha visibilidad entre el hipervisor y los switches. 

Existe algún protocolo propietario como VN-Tag (VNLink), mediante el cual se añaden unos nuevos tags (que deberán ser soportados por todo el Hardware por que fluyan) los cuales permiten "ver" las vNICs de las máquinas virtuales en los switches físicos, como si fuesen interfaces reales para ellos.

Pero, por otro lado existe VEPA. Con VEPA el tráfico fluye por los switches físicos externos sin necesidad de añadir tag adicionales, por lo que se tiene completa visibilidad de él, a parte de poder configurar los interfaces virtuales a los cuales está conectado la VM como si fuese físicos y, además, no el tráfico de red no consume ciclos de CPU (al ser gestionado el tráfico por los switches físicos). Tan solo hay que tener en cuenta que se requerirá un mayor ancho de banda de las interfaces del host físico, lo cual no es problema debido a la normalización de las NICs de 10G:



Ilustración 19 – Distribución de switches virtuales en las capas de la arquitectura

Gracias a la funcionalidad Multichannel de VEPA, permite una gran flexibilidad de configuración al poder hacer convivir varios tipos de conexión de las máquinas virtuales con el exterior (Virtual Ethernet Switch (vSwitch habitual de los hipervisores), VEPA o mapeo directo) dentro de un mismo hipervisor:
  

Ilustración 20 – Distribución de switches virtuales en las capas de la arquitectura

Por el momento, este tipo de implementaciones necesitan de componentes adicionales que deberán ser instalados en los Host que mantienen los hipervisores pero no será así en el futuro (en KVM ya se encuentra soportado nativamente).


Multihoming y movilidad inter-DC de VMs

Para proporcionar alta disponibilidad de los servicios, o para poder manejar las cagas de trabajo de cada Data Center, muchas veces se hace necesario permitir la movilidad de las máquinas virtuales entre los diferentes DCs.

Desde el punto de vista de la red tradicional puede llegar a ser muy complicado dar soporte a este tipo de movimientos si se quiere minimizar el impacto sobre el servicio debido a los cortes en la comunicación, ya que cuando se hacen movimientos de carga es muy probable que se produzcan flujos no optimizados (traffic trombons) en las cuales las comunicaciones tienen que transcurrir varias veces por la WAN antes de devolver la respuesta al cliente (del mismo modo que pasaba en el anterior ejemplo de las VXLANs y vShield).


Solución hasta el momento

No se pueden enumerar aquí todas las soluciones actuales a esta problemática, ya que cada diseño es diferente, pero si se tiene presente la complejidad de los flujos de comunicación cuando las máquinas virtuales se mueven de un DC a otro (consultar entrada en el blog sobre ejemplos de movilidad de VMs entre DCs) y las dependencias del conexionado externo con los ISPs (ver entrada en el blog sobre ejemplos de conectividad con ISPs) se puede llegar a la conclusión de que, cualquier diseño de arquitectura que se realice para dar soporte a este tipo de comunicaciones, utilizando las herramientas actuales, se encontrará lleno de carencias que muchas veces son suplidas mediante Hardware (costosos equipos) o con complejas configuraciones de la plataforma de red.


Solución con nuevos protocolos ( LISP, HIP, RANGI, Ivip, ... )

Existen dos métodos para abordar esta problemática: las integraciones entre dispositivos (por ejemplo, que la plataforma virtual "hable" con los balanceadores globales) y la creación de nuevos protocolos, que es lo que se está revisando en esta entrada.

Existen múltiples protocolos que intentan dar solución a este problema, tal y como puede verse en este enlace, sin estar ninguno realmente extendido o implementado en redes importantes, pero hay uno que está siendo impulsado por Cisco: Locator/ID Separation Protocol (LISP).

Lo primero que hay que decir de LISP es un protocolo que está siendo estudiado por el Internet Engineering Task Force (IETF), y que todavía no se recomienda instalar en redes de producción, más allá de tareas de experimentación.

LISP se basa en separar la localización de la identificación de los servidores, es decir, crear dos espacios de nombramiento, uno que sería el routing locator RLOC (donde está conectado el cliente) y el identificador EID (quién es el cliente). Ambos identificadores pueden ser IPs, coordenadas GPS, MACs, ....


Los routers LISP realizan el mapeo entre EID y RLOC de modo transparente a los clientes finales. Esos mapeos son guardados y distribuidos ya que será esta la información necesaria para resolver la dirección final de los clientes a la cual deben ser enviados los paquetes.

Para poder enviar los paquetes de forma transparente realiza un encapsulado IP-in-IP, de manera que, si una máquina virtual se mueve de un DC a otro, el tráfico es encapsulado hasta el DC donde residirá la máquina virtual, de manera que no exista ningún tipo de tromboning, como puede verse en este enlace:




Ilustración 21 – Uso de la tunelizacion LISP en movimientos de VMs

Mediante esta técnica, el tráfico se envía directamente a la localización correcta sin necesidad de cambios de IP en el servidor ni en los elementos de red intermedios, conservando además la conexión, la cual no se corta. 

Aunque en la conexión no se rompa, en las pruebas que se están realizando, se están encontrando problemas con retardos importantes en el reestablecimiento de la conexión tras los movimientos de las VMs. Este problema, y otros que están saliendo a la luz con los experimentos (por ejemplo, no se tiene claro el comportamiento ante ataques DoS) dan una clara idea del estado de desarrollo de esta tecnología por el momento.

En resumen, la falta de adopción por parte de los fabricantes de este tipo de protocolos, así como el estado experimental de ellos, hace que no puedan ser explotados en la vida real por el momento, y tal vez no salgan adelante debido a las soluciones, mucho más sencillas, que pueden lograrse a día de hoy mediante el uso de SDN o integraciones entre los compornentes de la solución, no obstante es una posible solución (por el medio de "nuevo protocolo") al problema de los movimientos de máquinas virtuales.