Lanzamiento de la pila de red F-Stack 1.13, ejecutándose en espacio de usuario

Después de año y medio de desarrollo se llevó a cabo lanzamiento del proyecto F-Stack 1.13, desarrollando un stack de red de alto rendimiento operativo en espacio de usuario, basado en el framework DPDK y el stack TCP/IP de FreeBSD (F-Stack no está vinculado a FreeBSD y considera Linux como su plataforma principal de aplicación). El proyecto se utiliza en diversos productos y servicios Tencent, la mayor empresa de telecomunicaciones en China. Código se distribuye bajo licencia BSD. Se soporta el funcionamiento en Linux y FreeBSD.

F-Stack permite organizar la interacción en red en aplicaciones, utilizando en lugar del stack de red del sistema operativo su propio stack de red, que opera en espacio de usuario y trabaja directamente con el hardware de red. Se proporcionan ediciones especializadas de Nginx y Redis, adaptadas para utilizar F-Stack.

Para el desarrollo de aplicaciones es compatible tanto como la API Posix estándar (Socket, Epoll, Kqueue), que simplifica la migración de aplicaciones existentes a F-Stack, como su propia interfaz de programación basada en corutinas (microhilos), que facilita la creación de aplicaciones en red y permite evitar la compleja lógica de procesamiento asíncrono de solicitudes. F-Stack también proporciona herramientas para facilitar su aplicación en aplicaciones con arquitectura multiproceso.

Para interactuar con la tarjeta de red, evitando las interfaces del núcleo del sistema operativo, se utiliza el marco DPDK (Data Plane Development Kit), que proporciona un conjunto de bibliotecas para el trabajo de bajo nivel con adaptadores de red, interacción en sistemas multinúcleo, utilización de buffers circulares y grandes páginas de memoria ("huge page"). El uso de DPDK permite recibir y enviar paquetes de red con un mínimo de ciclos de CPU (alrededor de 80 ciclos por paquete) y desarrollar componentes de red de alto rendimiento. La funcionalidad del stack TCP/IP se ha tomado de FreeBSD 11.1 y se ha extraído en una biblioteca independiente del sistema operativo.

F-Stack se posiciona como una solución que se puede aplicar para mejorar el rendimiento de los manejadores de solicitudes de red en situaciones donde el funcionamiento del stack TCP/IP del núcleo de Linux se convierte en un cuello de botella y limita la escalabilidad. La aplicación de F-Stack proporciona una optimización considerable y permite en algunas situaciones multiplicar el número de pequeñas solicitudes procesadas.

Lanzamiento de la pila de red F-Stack 1.13, ejecutándose en espacio de usuario

Lanzamiento de la pila de red F-Stack 1.13, ejecutándose en espacio de usuario

El aumento del rendimiento se logra mediante la exclusión de operaciones como la copia de paquetes de red, la planificación de hilos, el manejo de interrupciones y la aplicación de llamadas al sistema. F-Stack permite alcanzar el techo del rendimiento de red posible para la tarjeta de red utilizada. Por ejemplo, las soluciones basadas en F-Stack han demostrado la capacidad de manejar 10 millones de conexiones simultáneas, 5 millones de solicitudes por segundo y 1 millón de conexiones por segundo.

En esta nueva versión:

  • Se ha añadido soporte para VLAN;
  • Se ha asegurado la posibilidad de funcionar en contenedores aislados basados en Docker;
  • Se han implementado las interfaces ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd y ff_setsockopt_freebsd;
  • Se ha añadido el parámetro "idle_sleep" para reducir la carga en la CPU en situaciones de ausencia de paquetes entrantes.
  • Se ha añadido soporte para la construcción para la arquitectura ARM64;
  • En la versión de Nginx trasladada a F-Stack se han reemplazado los manejadores getpeername, getsockname y shutdown;
  • Se ha realizado la transición a la nueva versión DPDK 17.11.4 LTS;
  • Se ha añadido la utilidad traffic para mostrar el tráfico actual procesado por aplicaciones basadas en F-Stack (similar a trafshow).

En los planes futuros se destaca soporte para IPv6, provisión de API para los lenguajes Python, PHP y Go, soporte para la API de Cyptodev (Intel QAT), uso de zerocopy al enviar paquetes, soporte SPDK y posibilidad de ejecución como proceso en segundo plano.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster