Você está na página 1de 3

¿Por qué necesitamos nuevos algoritmos PERC?

Si una red prácticamente pudiera incorporar un algoritmo PERC en su plano de reenvío, entonces
la congestión podría controlarse más estrictamente, sin preocuparse por la estabilidad. Antes
de implementar dicho algoritmo en la red, el operador naturalmente espera que el algoritmo
converja de manera demostrable a las tasas justas de máximo a mínimo en un tiempo limitado
conocido. Desafortunadamente, todos los algoritmos PERC anteriores con límites de
convergencia conocidos [22], [76], [27], [21], [60] tienen limitaciones que los hacen poco
prácticos de implementar:

1. Requieren que los conmutadores estén sincronizados3 o mantengan el estado para flujos
individuales, ninguno de los cuales es escalable.

2. Casi cuatro de ellos asignan una tasa justa de máximo a mínimo a cada flujo. Si bien esto tiene
sentido para los flujos de larga duración, a menudo queremos que los flujos de corta duración
tengan prioridad [45], [13], [43], especialmente en los centros de datos.

3. No abordan las preocupaciones sobre la robustez (por ejemplo, ¿qué sucede si se cae un
mensaje de programación o si los cálculos de la tasa son imprecisos?).

Un algoritmo PERC reciente llamado PDQ [45] aborda algunos de estos problemas, pero no
todos. PDQ es asin-

crónico, pretende emular primero el trabajo más corto, y se muestra robusto. Sin embargo,
necesita mantener el estado para los flujos individuales. Por lo tanto, necesitamos nuevos
algoritmos de PERC para diferentes objetivos que conviertan en tiempo limitado y que sean
prácticos de implementar a altas velocidades.

Descripción general de s-PERC

Este algoritmo no requiere que los conmutadores estén sincronizados o mantengan el estado
por flujo, y se puede probar que convergen en la mayoría de los RTT 6N (§3.4), donde N es la
longitud de la cadena de dependencia más larga. Además, s-PERC puede implementarse en
hardware (por ejemplo, un interruptor programable) para funcionar a velocidades de reloj de 5
ns (como lo demuestra nuestro prototipo NetFPGA de 40 Gb / s [85]), y no vemos limitaciones
fundamentales que lo impidan. de correr a velocidades de reloj de 1 ns (§4.2). s-PERC

s-PERC se ejecuta en los conmutadores y en las NIC del host final. Las NIC del host final envían
periódicamente un paquete de control

para cada flujo, que sigue el mismo camino que el flujo mientras el flujo esté activo. Los
conmutadores modifican los paquetes de control a medida que pasan, pero los conmutadores
no mantienen el estado por flujo. Toda la información específica del flujo se transporta en los
paquetes de control. Un paquete de control es específico de un flujo y lleva cuatro tipos de
información para cada enlace (Tabla 1.1). los

los campos se actualizan en el paquete de control a medida que pasa cada enlace: (1) Cada
enlace mantiene una estimación en ejecución de su propia tasa de cuello de botella. (2) Los
enlaces clasifican cada flujo dependiendo de si se encuentra en un cuello de botella en este
enlace o en otro enlace; un flujo puede cambiar la clasificación a medida que el algoritmo
converge. (3) Según la clasificación, el enlace asigna el ancho de banda al flujo. (4) El enlace
indica su confianza en su tasa de participación justa. Esta es la clave de cómo s-PERC converge
sin estado por flujo: si un enlace detecta que su tasa de participación justa es demasiado
pequeña, alerta a otros enlaces utilizando el bit de ignorar. Las cuatro piezas de información se
actualizan en paquetes de control a medida que pasan. Los hosts finales utilizan las asignaciones
calculadas por los conmutadores para ajustar la velocidad a la que envían los flujos

En esta tesis, profundizaremos más en los beneficios prácticos de s-PERC para las redes de
centros de datos. Nos centramos en las redes de centros de datos porque aquí es donde la
mayoría de las investigaciones se llevan a cabo hoy. No hay nada sobre s-PERC que lo haga
específico para los centros de datos. Por el contrario, dado lo bien que funciona para flujos de
larga duración, sospechamos que s-PERC sería muy adecuado para redes de largo recorrido
donde se necesitan redes no congestionadas y de buen comportamiento que sean justas entre
los flujos. En la siguiente sección, analizaremos brevemente los interruptores programables y
sus ventajas, y resaltaremos algunas restricciones para ejecutar un algoritmo en un interruptor
programable (o cualquier canal de hardware) a una velocidad de reloj de 1 ns.

Interruptores programables de alta velocidad

Casi todos los conmutadores de productos básicos desde finales de la década de 1990 hasta
principios de la década de 2010 estaban hechos de conmutador de función fija

papas fritas. Funciones o protocolos como búsqueda de ACL y enrutamiento de IP fueron


incorporados en el chip del switch. Esto hizo que fuera difícil evolucionar un protocolo existente
(por ejemplo, cambiar a IPv6) o implementar nuevos protocolos (por ejemplo, MPLS) a escala
rápidamente. Un interruptor programable requiere más lógica y cableado que un chip de
función fija. Sin embargo, la sobrecarga es modesta (por ejemplo, [24] muestra que un chip de
conmutador programable de 64x10 Gb / s 28 nm impone un área y una sobrecarga de energía
de menos del 15% sobre los chips de conmutador de función fija de productos básicos). Debido
a que los transistores se han vuelto más pequeños, uno puede encajar más lógica en la misma
área, y el precio de la programabilidad ha disminuido. Como resultado, los interruptores que se
ejecutan a velocidades de Tb / sy utilizan chips de interruptor programables [2], [1] ya están
disponibles. Dichos conmutadores permitirían a los operadores de red implementar nuevas
funciones y protocolos fácilmente y más rápidamente.

Para comprender la diferencia entre un interruptor de función fija y un interruptor programable,


podemos ver la

chip de interruptor de función fija como una tubería de etapas, donde cada etapa realiza una
función fija. Por ejemplo, un interruptor típico de función fija tiene una función de conmutación
de Capa-2, seguida de enrutamiento de Capa-3, seguida de control de acceso. Además, cada
función fija puede verse como una tabla de acciones de coincidencia; coincide en un campo fijo
del encabezado del paquete (por ejemplo, coincide con la dirección IP src y dst) y luego realiza
una acción fija (por ejemplo, decide el enlace de salida). En contraste, un interruptor
programable involucra una tubería de etapas en las que la memoria y la computación

Los recursos en cada etapa pueden ser reasignados a través de diferentes funciones. Esto es
posible porque cada etapa es programable: contiene memorias modulares que se pueden usar
para implementar tablas de búsqueda que coinciden con cualquier parte del encabezado, y
contiene unidades de acción modulares (como la suma y la resta) que modifican diferentes
partes de la cabecera. encabezado de paquete simultáneamente. Cada etapa también contiene
registros con estado que persisten en todos los paquetes y pueden ser leídos / modificados por
las unidades de acción.

Juntas, las memorias modulares y las unidades de acción proporcionan la abstracción de una
secuencia (o árbol) de emparejamientos

Tablas de acciones, cada una de las cuales se puede configurar para que coincida con una parte
fija arbitraria del encabezado y realice acciones que modifiquen el paquete o los registros con
estado. En esta abstracción, cada una de las acciones de la tabla puede ser en realidad una
composición de muchas acciones primitivas aplicadas una tras otra. Los lenguajes de
programación como P4 proporcionan una manera de definir encabezados de paquetes
personalizados y expresar el interruptor

lógica del chip utilizando la abstracción de tablas de acción de coincidencia que modifican el
encabezado del paquete. Para implementar un algoritmo PERC como s-PERC en un conmutador
programable, uno podría descomponer el

cambie el algoritmo local en una serie de tablas de acción de coincidencia (posiblemente con
coincidencias triviales) que lean o modifiquen el paquete de control y los registros de estado.
Como veremos más adelante, las tablas de acción de coincidencia se pueden usar para
implementar pasos intermedios, como una división aproximada. Un compilador descubre cómo
asignar el programa P4 a un conjunto de tablas de acción de coincidencia reales [51] y secuencia

de acciones primitivas [80] que se ajustan a las restricciones (por ejemplo, número de etapas,
tamaño y ancho de las memorias) de la tubería del interruptor de destino. Hacia el final de esta
tesis, después de que hayamos discutido los algoritmos PERC, profundizaremos en el problema
de compilar programas generales de P4 en un interruptor programable.

Você também pode gostar