Cloudflare announced the release of the Pingora framework’s source code. Pingora is a framework designed for developing secure, high-performance network services and programmable network systems using the Rust language. The framework has been extensively tested and is currently being used in Cloudflare’s content delivery network, processing over 40 million requests per second. The code is available on GitHub under the Apache 2.0 license.
Pingora supports multi-flow processing of queries in asynchronous mode and includes features such as HTTP/1 and HTTP/2 support, with plans for HTTP/3. It also supports GRPC and WebSocket Balances, Configuration Balancers, load balancing strategies in case of failure, and integration with various monitoring and logging systems such as Syslog, Prometheus, Sentry, and Opentelemetry. TLS support is also available, implemented as a superstructure over OpenSSL and Boringssl libraries.
Rust packets are provided for creating HTTP Proxies, working with network protocols, analyzing HTTP headers, traffic restrictions, load balancing, maintaining a cache in RAM, and handling timeouts asynchronously. Pingora also supports the creation of services using other protocols or UDP/TCP.
Security is a key focus of the Pingora project, with the Rust language chosen for development to reduce memory-related errors. Efficiency, performance, and scalability are also prioritized. Proxy servers and load balancers built on Pingora can attach callback-cutters and filters to manage different stages of request processing, including modifying requests, redirecting, blocking, and logging requests and responses.
In collaboration with the Internet Security Research Group (ISRG), creator of Let’s Encrypt, the Pingora framework will be used to create River, a reverse proxy designed for critical infrastructure. The River code will be written in Rust and shared under the Apache 2.0 license. Development is scheduled to begin in the second quarter of 2024, with the project currently in the design and definition stage of architecture. The project is led by James Manns (James Munns).