Veröffentlichung von Pingora 0.7, einem Framework zur Erstellung von Netzwerkdiensten

Das Unternehmen Cloudflare hat die Version 0.7 des Pingora-Frameworks veröffentlicht, das für die Entwicklung von sicheren, hochleistungsfähigen Netzwerklösungen in Rust konzipiert ist. Proxyserver, die mithilfe von Pingora erstellt wurden, werden seit über zwei Jahren im Content Delivery Network von Cloudflare anstelle von nginx eingesetzt und verarbeiten über 40 Millionen Anfragen pro Sekunde. Der Code ist in Rust geschrieben und unter der Lizenz Apache 2.0 veröffentlicht.

Die Hauptfunktionen von Pingora:

  • Unterstützung von HTTP/1 und HTTP/2 (geplant ist HTTP/3) sowie die Möglichkeit, Dienste zu erstellen, die eigene Protokolle oder UDP/TCP verwenden.
  • Unterstützung der mehrsträngigen Verarbeitung von Anfragen im asynchronen Modus.
  • Die Möglichkeit, Callback-Handler und Filter anzuhängen, die verschiedene Phasen der Anfrageverarbeitung steuern sowie Anfragen und Antworten ändern, umleiten, blockieren und protokollieren können.
  • Proxying von gRPC und WebSocket.
  • Erweiterbare Lastenausgleicher.
  • Die Möglichkeit, Konfigurationen ohne Neustart zu ändern.
  • Unterstützung der Aktualisierung des Anwendungscodes ohne Unterbrechung von Verbindungen.
  • Mittel zur Lastumschaltung im Falle eines Ausfalls (Failover).
  • Integration mit verschiedenen Überwachungs- und Protokollierungssystemen (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Unterstützung der TLS-Verschlüsselung (verwendet OpenSSL, BoringSSL oder Rustls).
  • Fertige Rust-Pakete zur Erstellung von HTTP-Proxys, zum Arbeiten mit Netzwerkprotokollen, zur Analyse von HTTP-Headern, zur Überwachung und Begrenzung des Verkehrs, zur Lastverteilung, zur Verwendung von verteilten Hash-Tabellen (Ketama), zur Speicherung von Caches im Arbeitsspeicher und zur asynchronen Bearbeitung von Timeouts.

Zu den Änderungen in der neuen Version gehören:

  • In die Struktur SslDigest wurde das Feld "extension" hinzugefügt, und für den Typ TlsAccept wurde ein Handler handshake_complete_callback implementiert, der es ermöglicht, an TLS-Verbindungen beliebige anwendungsspezifische Daten anzuhängen. Als Beispiel wird gezeigt, wie diese Möglichkeit zum Erstellen genutzt werden kann. сервера, der Informationen aus dem Client-Zertifikat liest und diese in der HTTP-Antwort zurückgibt.
  • Ein ConnectionFilter-Typ wurde hinzugefügt, um TCP-Verbindungen vor der Aushandlung der TLS-Parameter zu filtern, was Ressourcen spart, indem Verbindungen frühzeitig zurückgesetzt werden.
  • Unterstützung für virtuelle L4-Streams wurde hinzugefügt, die integrierte Implementierungen von Netzwerkprotokollen in pingora-proxy ermöglichen.
  • Die Verwendung der Optionen verify_cert und verify_hostname in Konfigurationen mit rustls wurde implementiert.
  • Externen crate-Paketen wurde der Zugriff auf die HttpProxy-Struktur erlaubt, um die Proxyläuftlogik zu überschreiben.
  • Es ist nun möglich, Hintergrundverarbeiter für Unteranfragen vom Hauptsession-Handler zu trennen.
  • Die Möglichkeit zur Verfolgung der Größe von HTTP1- und HTTP2-Anfragekörpern sowie von Proxy-Metriken wurde bereitgestellt.
  • Es wurde die Möglichkeit hinzugefügt, eigene Sitzungen für gekapselten HTTP-Verkehr zu erstellen.
  • Es wurden Einschränkungen für die Nutzung von Versionen der lru-Bibliothek (0.16.3 oder neuer) aufgrund einer Sicherheitsanfälligkeit in der Implementierung des Iterators IterMut festgelegt, die zu einem Absturz durch das Auslösen der Überprüfung der Variablenverleihung (borrow checker) führt.

Quelle: opennet.ru

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster