La empresa Cloudflare ha anunciado la apertura del código fuente del marco Pingora, diseñado para desarrollar servicios de red de alto rendimiento y sistemas de red programables en Rust. El marco ha sido bien probado y ya se utiliza en sistemas de alta carga: el proxy construido sobre su base ha estado en funcionamiento durante más de un año en la red de entrega de contenido de Cloudflare en lugar de nginx y maneja más de 40 millones de solicitudes por segundo. El código está escrito en Rust y se publica bajo la licencia Apache 2.0.
Pingora puede utilizarse para el procesamiento multihilo de solicitudes en modo asincrónico, admite HTTP/1 y HTTP/2 (con planes para HTTP/3), proxy gRPC y WebSocket, balanceadores de carga plug-in, configuración cambiante sin reinicios, actualización de código sin romper conexiones, determinación de estrategias de conmutación por error (failover), e integración con diversos sistemas de monitoreo y registro (Syslog, Prometheus, Sentry, OpenTelemetry). También se admite cifrado TLS en Pingora, aunque se implementa como una capa sobre las bibliotecas en C OpenSSL y BoringSSL.
Se proporcionan paquetes de Rust listos para crear proxies HTTP, trabajar con protocolos de red, analizar encabezados HTTP, contar y limitar el tráfico, balancear cargas, trabajar con la tabla hash distribuida Ketama, mantener cachés en memoria y manejar asincrónicamente timeouts. Además de HTTP, se admite la creación de servicios que utilicen sus propios protocolos o UDP/TCP.
La seguridad ha sido nombrada como una prioridad clave del proyecto: para reducir la probabilidad de errores relacionados con el manejo de memoria, se eligió el lenguaje Rust para su desarrollo. También se presta gran atención a la eficiencia, el rendimiento y la escalabilidad. Por ejemplo, al crear proxies.servidores y balanceadores de carga basados en Pingora, se prevé la posibilidad de adjuntar controladores de callback y filtros que permiten gestionar diversas etapas del procesamiento de solicitudes, así como modificar, redirigir, bloquear y registrar solicitudes y respuestas.
Junto con la organización ISRG (Internet Security Research Group), que es la fundadora del proyecto Let’s Encrypt y promueve el desarrollo de tecnologías para mejorar la seguridad en Internet, se creará un proxy inverso llamado River en la base de Pingora, diseñado para su uso en elementos críticos. de infraestructura de redEl código de River se escribirá en Rust y se distribuirá bajo la licencia Apache 2.0. El desarrollo comenzará en el segundo trimestre de 2024. Actualmente, el proyecto se encuentra en la fase de diseño y definición de la arquitectura. El proyecto está siendo liderado por James Munns del Rust Embedded Working Group.
El objetivo principal del proyecto River es implementar un proxy capaz de retransmitir las solicitudes de los clientes a los servidores backend, terminando las conexiones TLS entrantes y enrutando, modificando y filtrando solicitudes de acuerdo a las reglas establecidas. Entre las características de River se menciona un modelo de procesamiento de solicitudes multihilo, que permite lograr un uso más eficiente de las conexiones en comparación con proxies como nginx. Para expandir las funcionalidades del proxy y crear filtros, se admitirá la conexión de módulos compilados en formato WebAssembly (se podrán utilizar cualquier lenguaje de programación que soporte la compilación a WASM para el desarrollo). Se planea que el formato de configuración sea lo más simple y familiar posible.
Fuente: opennet.ru
