FreeBSD: Netflix transmite a casi 400 GBit/s por servidor

FreeBSD: Netflix transmite a casi 400 GBit/s por servidor

septiembre 20, 2021 0 Por Tobias

Para su servicio de streaming, Netflix ha optimizado al máximo el hardware de AMD y el FreeBSD que utiliza a lo largo de los años. Ya hay planes para más.

Para el proveedor de streaming de vídeo Netflix, es técnicamente ventajoso proporcionar la mayor cantidad de datos de vídeo lo más rápidamente posible sin tener que invertir demasiado en hardware. Por ello, el desarrollador Drew Gallatin optimiza, entre otras cosas, el sistema FreeBSD utilizado de forma que la distribución de los datos de vídeo se acerque lo más posible al límite técnico del hardware de red, como describe en una presentación en la conferencia EuroBSD (PDF). Un solo servidor alcanza ahora velocidades de datos de casi 400 GBit/s.

El problema técnico básico en este caso es que, debido a las características del hardware y también a determinados procesos de software, a menudo no se puede alcanzar el límite técnicamente posible del hardware de la red. No obstante, gracias a diversas optimizaciones, Netflix ha podido aumentar la velocidad de datos de unos 200 GBit/s el año pasado a 400 GBit/s por servidor.

Problemas con el hardware y optimizaciones como remedio

Los servidores se basan en CPUs AMD Epyc-7502P (32 núcleos), que se apoyan en una memoria RAM DDR4-3200 de 256 GBytes. Para la conexión de red se utilizan dos Mellanox ConnectX-6 Dx, que ofrecen cuatro conexiones de 100GbE. Los resultados óptimos se ven impedidos inicialmente por el ancho de banda de la memoria, de unos 240 GBit/s. La arquitectura NUMA también limita el ancho de banda de la memoria.

La arquitectura NUMA de las CPUs Epyc también limita el flujo de datos. La gran cantidad de datos simplemente provoca un retraso en el procesamiento por parte de la CPU, ya que los accesos a la memoria compiten entre sí. En el mejor de los casos, los datos no pasaban por las CPUs NUMA en absoluto, según Gallatin.

Por lo tanto, Netflix ha probado el uso de una sola dirección IP por host y confía en la agregación de enlaces. La idea era realizar siempre los cálculos con determinados datos en uno de los nodos NUMA para evitar las transferencias. Sin embargo, el cambio de uno a cuatro nodos probablemente sólo ha aportado mejoras mínimas.

Kernel TLS como solución

Para conseguir una velocidad aún mayor, el equipo tuvo la idea de eliminar la CPU del transporte de datos en la medida de lo posible. Esto es posible gracias al hardware de red utilizado actualmente y al uso de una descarga TLS con la ayuda de la implementación de TLS en el kernel de FreeBSD (kTLS).

Gallatin ya había descrito detalles de esto en una conferencia hace dos años (PDF). La sesión TLS propiamente dicha sigue estableciéndose en el espacio de usuario, pero las claves utilizadas migran con la ayuda del kernel al hardware de red, donde tiene lugar el cifrado. Ya no es necesario un desvío a través de la CPU.

Utilizando el último firmware de las tarjetas de red y las optimizaciones de TLS, Netflix consigue una transmisión de datos de unos 380 GBit/s con unas 400.000 sesiones activas por servidor. Con las CPUs de servidor ARM de Ampere, que también se probaron, el equipo sigue alcanzando unos 320 GBit/s, pero esto se debe probablemente a la conexión PCIe. El equipo aún no ha podido probar la descarga de TLS con el hardware de Intel. Además, el equipo ya dispone de prototipos de hardware con los que podrían ser posibles conexiones de red de hasta 800 GBit/s, pero el equipo aún no lo ha probado.

Share