Articulo de referencia

Conmutador con equilibrio de carga

Un conmutador con balanceo de carga es una arquitectura de conmutador que garantiza un rendimiento del 100 % sin arbitraje central , a costa de enviar cada paquete dos veces a t...

Un conmutador con balanceo de carga es una arquitectura de conmutador que garantiza un rendimiento del 100 % sin arbitraje central , a costa de enviar cada paquete dos veces a través de la matriz de conmutación. Los conmutadores con balanceo de carga son objeto de investigación para enrutadores de gran tamaño que superan el punto en el que el arbitraje central resulta práctico.

Introducción

Los enrutadores de Internet suelen estar construidos con tarjetas de línea conectadas a un conmutador . Los enrutadores que admiten un ancho de banda total moderado pueden usar un bus como conmutador, pero los enrutadores de alto ancho de banda suelen usar algún tipo de interconexión de barra cruzada . En una barra cruzada, cada salida se conecta a una entrada, de modo que la información puede fluir a través de todas las salidas simultáneamente. Las barras cruzadas utilizadas para la conmutación de paquetes se reconfiguran normalmente decenas de millones de veces por segundo. El cronograma de estas configuraciones lo determina un árbitro central , por ejemplo, un árbitro Wavefront , en respuesta a las solicitudes de las tarjetas de línea para enviar información entre sí.

La arbitraje perfecta daría como resultado un rendimiento limitado únicamente por el rendimiento máximo de cada entrada o salida de la matriz de conmutación. Por ejemplo, si todo el tráfico que llega a las tarjetas de línea A y B está destinado a la tarjeta de línea C, entonces el tráfico máximo que las tarjetas A y B pueden procesar juntas está limitado por C. Se ha demostrado que la arbitraje perfecta requiere una gran cantidad de cálculos, que aumentan mucho más rápido que el número de puertos en la matriz de conmutación. Los sistemas prácticos utilizan heurísticas de arbitraje imperfecto (como iSLIP) que se pueden calcular en un tiempo razonable.

Un conmutador con balanceo de carga no guarda relación con un conmutador de balanceo de carga, que se refiere a un tipo de enrutador utilizado como interfaz para un conjunto de servidores web con el fin de distribuir las solicitudes a un único sitio web entre muchos servidores.

Arquitectura básica

Como se muestra en la figura de la derecha, un conmutador con balanceo de carga tiene N tarjetas de línea de entrada, cada una de velocidad R, conectadas a N búferes mediante un enlace de velocidad R/N. Estos búferes, a su vez, están conectados a N tarjetas de línea de salida, cada una de velocidad R, mediante enlaces de velocidad R/N. Los búferes centrales se dividen en N colas de salida virtuales .

Cada tarjeta de línea de entrada distribuye sus paquetes uniformemente entre los N búferes, algo que puede hacer sin problemas de contención. Cada búfer escribe estos paquetes en una única memoria local a una velocidad combinada de R. Simultáneamente, cada búfer envía paquetes al inicio de cada cola de salida virtual a cada tarjeta de línea de salida, también a una velocidad de R/N por tarjeta. La tarjeta de línea de salida puede reenviar estos paquetes sin problemas de contención.

Cada búfer en un conmutador con equilibrio de carga actúa como un conmutador de memoria compartida, y un conmutador con equilibrio de carga es esencialmente una forma de ampliar un conmutador de memoria compartida, a costa de una latencia adicional asociada con el reenvío de paquetes a una tasa R/N dos veces.

El grupo de Stanford que investiga conmutadores con balanceo de carga se centra en implementaciones donde el número de búferes es igual al número de tarjetas de línea. Se coloca un búfer en cada tarjeta de línea, y las dos mallas de interconexión son, de hecho, la misma malla, que proporciona una tasa de 2R/N entre cada par de tarjetas de línea. Sin embargo, la arquitectura básica de un conmutador con balanceo de carga no requiere que los búferes se coloquen en las tarjetas de línea, ni que haya el mismo número de búferes y tarjetas de línea.

Una característica interesante de un conmutador con balanceo de carga es que, si bien la malla que conecta las tarjetas de línea con los búferes debe conectar cada tarjeta de línea con cada búfer, no es necesario que la malla funcione como una matriz de conmutación sin bloqueo, ni que las conexiones respondan a ningún patrón de tráfico. Esta conexión es mucho más sencilla que una matriz de conmutación con arbitraje centralizado.

Mantener los paquetes ordenados

Si dos paquetes destinados a la misma salida llegan consecutivamente a una tarjeta de línea, se distribuirán en dos búferes diferentes, que podrían tener ocupaciones distintas, por lo que los paquetes podrían reordenarse antes de ser entregados a la salida. Si bien el reordenamiento es lícito, generalmente no es deseable, ya que TCP no funciona correctamente con paquetes reordenados.

Al añadir mayor latencia y almacenamiento en búfer, el conmutador con balanceo de carga puede mantener el orden de los paquetes dentro de los flujos utilizando únicamente información local. Un ejemplo de este algoritmo es FOFF ( Fully Ordered Frames First ). FOFF ofrece además la ventaja de eliminar cualquier vulnerabilidad a patrones de tráfico anómalos y proporcionar un mecanismo para establecer prioridades.

Implementaciones

Barra transversal de un solo chip más árbitro de equilibrio de carga

El proyecto Tiny Tera de la Universidad de Stanford (véase Abrizio ) introdujo una arquitectura de conmutación que requería al menos dos diseños de chips para la propia estructura de conmutación (la sección de matriz de conmutación y el árbitro). La actualización del árbitro para incluir el balanceo de carga y la combinación de estos dispositivos podrían ofrecer ventajas en cuanto a fiabilidad, coste y rendimiento.

Enrutador global único

Dado que las tarjetas de línea en un conmutador con balanceo de carga no necesitan estar físicamente cerca unas de otras, una posible implementación consiste en utilizar una red troncal de tamaño continental o global como malla de interconexión, y los enrutadores centrales como "tarjetas de línea". Esta implementación presenta el inconveniente de que todas las latencias aumentan al doble de la latencia de transmisión en el peor de los casos. Sin embargo, ofrece varias ventajas interesantes:

  • Las grandes redes troncales de paquetes suelen tener una capacidad excesiva (10 veces o más) para hacer frente a problemas como una planificación de capacidad imperfecta , la congestión y otros inconvenientes. Una red troncal con conmutadores de carga balanceada puede ofrecer un rendimiento del 100 % con una capacidad excesiva de tan solo 2 veces, medida en todo el sistema.
  • Las redes troncales de gran tamaño suelen basarse en canales ópticos que no se pueden conmutar rápidamente. Estos se adaptan bien a los canales 2R/N de velocidad constante de la red mallada del conmutador con balanceo de carga.
  • No es necesario modificar las tablas de rutas en función de la información sobre la congestión global, porque no existe tal congestión.
  • En caso de fallo de un nodo, el redireccionamiento requiere modificar la configuración de los canales ópticos. Sin embargo, el redireccionamiento puede precalcularse (ya que solo puede fallar un número finito de nodos) y no provoca congestión que requiera modificaciones adicionales en la tabla de enrutamiento.

Referencias

  • Equilibrio de carga óptimo I. Keslassy, ​​C. Chang, N. McKeown y D. Lee
  • Escalado de enrutadores de Internet mediante óptica I. Keslassy, ​​S. Chuang, K. Yu, D. Miller, M. Horowitz, O. Solgaard y N. McKeown