L'entreprise Cloudflare a ouvert le code de Pingora, un outil pour la création de services réseau

La société Cloudflare a annoncé l'ouverture du code source du framework Pingora, conçu pour le développement en Rust de services réseau sécurisés et hautes performances ainsi que de systèmes réseau programmables. Le framework est bien éprouvé et est déjà utilisé dans des systèmes à forte charge — un proxy basé sur Pingora est en service depuis plus d'un an dans le réseau de diffusion de contenu de Cloudflare, remplaçant nginx, et traite plus de 40 millions de requêtes par seconde. Le code est écrit en Rust et publié sous la licence Apache 2.0.

Pingora peut être utilisé pour le traitement multithread des requêtes en mode asynchrone, prend en charge HTTP/1 et HTTP/2 (HTTP/3 est prévu), le proxy gRPC et WebSocket, les équilibres de charge modulaires, la modification de configuration sans redémarrage, la mise à jour du code sans rupture de connexion, la définition de stratégies de basculement en cas de défaillance, ainsi que l'intégration avec divers systèmes de surveillance et de journalisation (Syslog, Prometheus, Sentry, OpenTelemetry). TLS est également pris en charge dans Pingora, bien qu'il soit mis en œuvre comme une extension des bibliothèques C OpenSSL et BoringSSL.

Des packages Rust préconfigurés sont fournis pour la création de proxies HTTP, le travail avec des protocoles réseau, l'analyse des en-têtes HTTP, le suivi et la limitation du trafic, l'équilibrage de charge, le travail avec une table de hachage distribuée Ketama, la mise en cache en mémoire et le traitement asynchrone des délais d'attente. En plus de HTTP, il est également possible de créer des services utilisant leurs propres protocoles ou UDP/TCP.

La sécurité a été identifiée comme une priorité clé du projet — pour réduire la probabilité d'erreurs liées à la gestion de la mémoire, le langage Rust a été choisi pour le développement. Une attention particulière a également été accordée à l'efficacité, à la performance et à l'évolutivité. Par exemple, lors de la création de proxiesserveurs et d'équilibres de charge basés sur Pingora, la possibilité d'attacher des gestionnaires de rappel et des filtres est prévue, permettant de gérer différentes étapes du traitement des requêtes, ainsi que de modifier, rediriger, bloquer et journaliser les requêtes et réponses.

En collaboration avec l'organisation ISRG (Internet Security Research Group), qui est à l'origine du projet Let's Encrypt et promeut le développement de technologies pour améliorer la sécurité d'internet, un proxy inverse appelé River sera créé sur la base de Pingora, destiné à être utilisé dans des éléments critiques. de l'infrastructure réseau. Le code de River sera écrit en Rust et distribué sous la licence Apache 2.0. Le développement commencera au deuxième trimestre de 2024. Actuellement, le projet est en phase de conception et de définition de l'architecture. Le projet est dirigé par James Munns de la Rust Embedded Working Group.

L'objectif principal du projet River est de mettre en œuvre un proxy capable de transmettre les requêtes des clients aux serveurs backend, en terminant les connexions TLS entrantes et en routant, modifiant et filtrant les requêtes selon des règles définies. Parmi les caractéristiques de River, on mentionne un modèle de traitement des requêtes multithreadé, permettant un réemploi des connexions plus efficace par rapport à des proxies tels que nginx. Pour étendre les fonctionnalités du proxy et créer des filtres, la connexion de modules compilés au format WebAssembly sera prise en charge (tout langage de programmation capable de compilation en WASM pourra être utilisé pour le développement). Le format de configuration sera conçu pour être aussi simple et familier que possible.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster