Společnost Cloudflare oznámila otevření zdrojového kódu rámce Pingora, určeného pro vývoj vysoce výkonných síťových služeb a programovatelných síťových systémů v jazyce Rust. Rámec byl dobře testován a již se používá v provozu vysoce zatížených systémů — proxy založená na něm je více než rok nasazena v síti pro doručování obsahu Cloudflare místo nginx a zpracovává více než 40 milionů požadavků za sekundu. Kód je napsán v jazyce Rust a publikován pod licencí Apache 2.0.
Pingora může být použita pro vícestandardní zpracování požadavků v asynchronním režimu, podporuje HTTP/1 a HTTP/2 (plánováno je HTTP/3), proxy gRPC a WebSocket, připojitelné vyvažovače zátěže, změnu konfigurace bez restartu, aktualizaci kódu bez přerušení spojení, určování strategie přepínání zátěže v případě selhání (failover), integraci s různými monitorovacími a logovacími systémy (Syslog, Prometheus, Sentry, OpenTelemetry). V Pingora je také podporováno šifrování TLS, ale je implementováno jako nadstavba nad C knihovnami OpenSSL a BoringSSL.
Jsou k dispozici hotové Rust balíčky pro vytváření HTTP proxy, práci s síťovými protokoly, analýzu HTTP hlaviček, sledování a omezování provozu, vyvažování zátěže, práci s distribuovanou hash tabulkou Ketama, udržování cache v operační paměti a asynchronní zpracování timeoutů. Kromě HTTP je podporováno vytváření služeb využívajících vlastní protokoly nebo UDP/TCP.
Hlavním prioritou projektu je zajištění bezpečnosti — k tomu, aby se snížila pravděpodobnost chyb spojených s manipulací s pamětí, byl vybrán jazyk Rust. Velká pozornost byla také věnována efektivitě, výkonu a rozšiřitelnosti. Například při vytváření proxy -servery a vyvažovačů zátěže na bázi Pingora je zahrnutá možnost připojení callback zpracovatelů a filtrů, které umožňují řídit různé fáze zpracování požadavku, a také měnit, přesměrovávat, blokovat a zaznamenávat požadavky a odpovědi.
Ve spolupráci s organizací ISRG (Internet Security Research Group), která je zakladatelem projektu Let’s Encrypt a přispívá k rozvoji technologií pro zvýšení bezpečnosti internetu, bude na základě Pingora vytvořen reverzní proxy River, určený pro použití v kritických prvcích. síťové infrastruktury. Kód River bude napsán v jazyce Rust a bude distribuován pod licencí Apache 2.0. Vývoj začne ve druhém čtvrtletí roku 2024. V současné době je projekt ve fázi návrhu a definování architektury. Projekt je veden Jamesem Munnsem (James Munns) z Rust Embedded Working Group.
Hlavním účelem projektu River je implementace proxy, která bude schopna přenášet požadavky klientů na backendové servery, terminovat příchozí TLS spojení a směrovat, upravovat a filtrovat požadavky podle daných pravidel. Mezi vlastnosti River patří vícetr Threat processing model, který umožňuje efektivnější opětovné využívání spojení ve srovnání s takovými proxy jako nginx. Pro rozšíření funkčnosti proxy a vytvoření filtrů bude podporováno připojení modulů zkompilovaných do formátu WebAssembly (pro vývoj bude možné použít jakékoli programovací jazyky, které podporují kompilaci do WASM). Formát konfigurace se plánuje co nejvíce zjednodušit a učinit ho běžným.
Zdroj: opennet.ru
