Cloudflare hat die Open-Source-Bereitstellung des Pingora-Frameworks angekündigt, das für die Entwicklung von leistungsstarken, sicheren Netzwerkdiensten und programmierbaren Netzwerksystemen in Rust konzipiert wurde. Das Framework ist gut getestet und wird bereits in hochbelasteten Systemen eingesetzt – ein auf seiner Basis entwickelter Proxy arbeitet seit über einem Jahr im Content Delivery Network von Cloudflare anstelle von Nginx und verarbeitet über 40 Millionen Anfragen pro Sekunde. Der Code ist in Rust geschrieben und unter der Apache 2.0 Lizenz veröffentlicht.
Pingora kann zur multithreaded Verarbeitung von Anfragen im asynchronen Modus verwendet werden, unterstützt HTTP/1 und HTTP/2 (HTTP/3 ist in Planung), gRPC- und WebSocket-Proxying, plugin-fähige Lastenausgleicher, Konfigurationsänderungen ohne Neustart, Code-Updates ohne Verbindungsunterbrechungen, die Definition von Failover-Strategien zur Lastenverlagerung im Fehlerfall sowie die Integration mit verschiedenen Überwachungs- und Protokollierungssystemen (Syslog, Prometheus, Sentry, OpenTelemetry). Zudem unterstützt Pingora TLS-Verschlüsselung, die jedoch als Schicht über den C-Bibliotheken OpenSSL und BoringSSL implementiert ist.
Es werden fertige Rust-Pakete zur Erstellung von HTTP-Proxys, zur Arbeit mit Netzwerkprotokollen, zur Analyse von HTTP-Headern, zur Traffic-Kontrolle und -Begrenzung, zur Lastverteilung, zur Verwaltung von verteilten Hash-Tabellen mit Ketama, zur Speicherung von Cache im Arbeitsspeicher und zur asynchronen Verarbeitung von Timeouts bereitgestellt. Neben HTTP wird auch die Erstellung von Diensten unterstützt, die ihre eigenen Protokolle oder UDP/TCP verwenden.
Ein zentrales Anliegen des Projekts ist die Gewährleistung von Sicherheit – zur Reduzierung der Wahrscheinlichkeit von Speicherfehlern wurde die Programmiersprache Rust gewählt. Auch der Effizienz, Leistung und Erweiterbarkeit wird große Aufmerksamkeit geschenkt. Beispielsweise wird bei der Erstellung von Proxys-Server und Lastverteilern auf Basis von Pingora die Möglichkeit vorgesehen, Callback-Handler und Filter anzuhängen, die verschiedene Phasen der Anfrageverarbeitung steuern können, sowie Anfragen und Antworten zu ändern, umzuleiten, zu blockieren und zu protokollieren.
In Zusammenarbeit mit der ISRG (Internet Security Research Group), die das Let’s Encrypt Projekt gegründet hat und die Entwicklung von Technologien zur Verbesserung der Internetsicherheit fördert, wird auf der Basis von Pingora der Reverse Proxy River entwickelt, der für den Einsatz in kritischen Infrastrukturen konzipiert ist. der Netzwerk Infrastruktur. 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. Es wird unter der Leitung von James Munns aus der Rust Embedded Working Group weiterentwickelt.
Das Hauptziel des River-Projekts besteht darin, einen Proxy zu implementieren, der in der Lage ist, Anfragen von Clients an Backend-Server weiterzuleiten, eingehende TLS-Verbindungen zu terminieren und Anfragen gemäß festgelegten Regeln zu routen, zu modifizieren und zu filtern. Unter den Eigenschaften von River wird ein mehrstufiges Modell zur Verarbeitung von Anfragen hervorgehoben, 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 bereitgestellt, die im WebAssembly-Format kompiliert sind (jeder Programmiersprache, die die Kompilierung in WASM unterstützt, kann für die Entwicklung verwendet werden). Das Konfigurationsformat soll so einfach und vertraut wie möglich gestaltet werden.
Quelle: opennet.ru
