Das Unternehmen Cloudflare hat den Code von Pingora veröffentlicht, einem Tool zur Erstellung von Netzwerkdiensten

Die Firma Cloudflare hat die Veröffentlichung des Quellcodes des Pingora-Frameworks bekannt gegeben, das für die Entwicklung von sicheren, leistungsstarken Netzwerkdiensten und programmierbaren Netzwerksystemen in der Programmiersprache Rust gedacht ist. Das Framework wurde umfassend getestet und wird bereits in stark belasteten Systemen eingesetzt — ein auf seiner Basis entwickelter Proxy wird seit über einem Jahr im Content Delivery Network von Cloudflare anstelle von nginx verwendet und verarbeitet mehr als 40 Millionen Anfragen pro Sekunde. Der Code ist in Rust geschrieben und unter der Lizenz Apache 2.0 veröffentlicht.

Pingora kann für die mehrfädige Verarbeitung von Anfragen im asynchronen Modus verwendet werden, unterstützt HTTP/1 und HTTP/2 (HTTP/3 ist geplant), Proxys für gRPC und WebSocket, anpassbare Lastverteilung, Konfigurationsänderungen ohne Neustart, Code-Updates ohne Unterbrechung der Verbindungen, die Festlegung von Lastwechselstrategien im Fehlerfall (Failover) sowie die Integration mit verschiedenen Überwachungs- und Protokollierungssystemen (Syslog, Prometheus, Sentry, OpenTelemetry). In Pingora wird auch TLS-Verschlüsselung unterstützt, die jedoch als Erweiterung über die C-Bibliotheken OpenSSL und BoringSSL implementiert wurde.

Fertige Rust-Pakete werden bereitgestellt, um HTTP-Proxys zu erstellen, mit Netzwerkprotokollen zu arbeiten, HTTP-Header zu parsen, den Datenverkehr zu zählen und zu begrenzen, Lastverteilung zu implementieren, mit der verteilten Hash-Tabelle Ketama zu arbeiten, Cache im Arbeitsspeicher zu verwalten und asynchrone Timeout-Behandlung durchzuführen. Neben HTTP kann auch die Erstellung von Diensten unterstützt werden, die eigene Protokolle oder UDP/TCP verwenden.

Der Schlüsselpriorität des Projekts wurde die Gewährleistung der Sicherheit zugeschrieben — um die Wahrscheinlichkeit von Fehlern im Zusammenhang mit der Arbeitsspeicher zu minimieren, wurde die Programmiersprache Rust ausgewählt. Besondere Aufmerksamkeit wurde auch der Effizienz, Leistung und Skalierbarkeit gewidmet. Beispielsweise ist bei der Erstellung von Proxys-Server und Lastverteilern auf Basis von Pingora die Möglichkeit vorgesehen, Callback-Handler und Filter anzuhängen, die es ermöglichen, verschiedene Phasen der Anfrageverarbeitung zu steuern sowie Anfragen und Antworten zu ändern, umzuleiten, zu blockieren und zu protokollieren.

In Zusammenarbeit mit der ISRG (Internet Security Research Group), die das Projekt Let’s Encrypt ins Leben gerufen hat und zur Entwicklung von Technologien zur Verbesserung der Sicherheit im Internet beiträgt, wird auf Basis von Pingora der Reverse-Proxy River entwickelt, der für den Einsatz in kritischen Komponenten ausgelegt ist. der Netzwerkinfrastruktur. Der Code von River wird in Rust geschrieben und unter der Lizenz Apache 2.0 veröffentlicht. Die Entwicklung beginnt im zweiten Quartal 2024. Derzeit befindet sich das Projekt in der Entwurfs- und Architekturphase. Das Projekt wird unter der Leitung von James Munns aus der Rust Embedded Working Group entwickelt.

Das Hauptziel des Projekts River ist die Implementierung eines Proxys, der in der Lage ist, Anfragen von Clients an Backend-Server weiterzuleiten, eingehende TLS-Verbindungen zu terminieren sowie Anfragen gemäß festgelegten Regeln zu routen, zu ändern und zu filtern. Zu den Eigenschaften von River gehört ein mehrfädiges Modell zur Verarbeitung von Anfragen, das eine effizientere Wiederverwendung von Verbindungen im Vergleich zu Proxys wie Nginx ermöglicht. Um die Funktionalität des Proxys zu erweitern und Filter zu erstellen, wird die Unterstützung für Module, die im WebAssembly-Format kompiliert sind, bereitgestellt (für die Entwicklung können beliebige Programmiersprachen verwendet werden, die eine Kompilierung in WASM unterstützen). Das Konfigurationsformat soll so einfach und gewohnt wie möglich gestaltet werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4