Pingora 0.7 Launches: New Network Service Framework

Cloudflare has announced the release of Pingora 0.7 framework, aimed at developing secure high-performance network services in the Rust language. The proxy built with Pingora has been utilized in the Cloudflare content delivery network for over two years, processing more than 40 million requests per second. The code is written in Rust and is available under the Apache 2.0 license.

The key features of Pingora include:

  • Support for HTTP/1 and HTTP/2 (with plans for HTTP/3), as well as the ability to develop services using custom protocols or UDP/TCP.
  • Capability for processing multi-threaded requests in asynchronous mode.
  • Provision to attach callback handlers and filters for managing different stages of request processing, allowing the modification, redirection, blocking, or logging of requests and responses.
  • GRPC and WebSocket proxying.
  • Pluggable load balancers.
  • Ability to change configuration without restarting.
  • Support for updating application code without disrupting connections.
  • Tools for load switching in case of failure (failover).
  • Integration with various monitoring and logging systems such as Syslog, Prometheus, Sentry, and OpenTelemetry.
  • Support for TLS encryption using OpenSSL, BoringSSL, or Rustls.
  • Pre-built Rust packages for creating an HTTP proxy, network protocol handling, HTTP header parsing, traffic accounting and limiting, load balancing, Ketama distributed hash table work, RAM cache maintenance, and asynchronous timeout processing.

Among the updates in the latest version are:

  • Addition of the “extension” field to the SslDigest structure, and implementation of the handshake_complete_callback handler for the TlsAccept trait, allowing attachment of arbitrary application-specific data to the TLS connection.
  • Inclusion of the ConnectionFilter trait for TCP connection filtering before negotiating TLS parameters, enabling resource conservation by dropping connections at an early stage.
/Reports, release notes, official announcements.