A Cloudflare bejelentette a Pingora keretrendszer forráskódjának megnyitását, amelyet Rust nyelven írtak magas teljesítményű védett hálózati szolgáltatások és programozható hálózati rendszerek fejlesztésére. A keretrendszer jól lett tesztelve, és már használják nagy terhelésű rendszerekben — az alapjául szolgáló proxy már több mint egy éve működik a Cloudflare tartalomelérési hálózatában az nginx helyett, és másodpercenként több mint 40 millió kérést kezel. A kód Rust nyelven íródott és Apache 2.0 licenc alatt jelent meg.
A Pingora több szálon képes aszinkron kérdések feldolgozására, támogatja a HTTP/1 és HTTP/2 (a tervek között szerepel a HTTP/3), a gRPC és WebSocket átjárást, cserélhető terheléselosztókat, konfigurációváltást újraindítás nélkül, kódfrissítést a kapcsolatok megszakítása nélkül, a hiba esetén történő terhelés átkapcsolásának (failover) stratégiáját, valamint különböző monitorozó és naplózó rendszerekkel (Syslog, Prometheus, Sentry, OpenTelemetry) való integrációt. A Pingorában a TLS titkosítás is támogatott, de ez a C könyvtárak, mint az OpenSSL és a BoringSSL, fölé implementálva valósul meg.
Készen álló Rust csomagok állnak rendelkezésre HTTP proxyk, hálózati protokollokkal való munkához, HTTP fejléc elemzéséhez, a forgalom számolásához és korlátozásához, terheléselosztáshoz, a Ketama elosztott hash-táblával való munkához, a memóriában lévő gyorsítótár fenntartásához és aszinkron időtúllépések feldolgozásához. HTTP mellett saját protokollokat vagy UDP/TCP-t használó szolgáltatások létrehozására is van lehetőség.
A projekt kulcsfontosságú prioritása a biztonság biztosítása volt — a memória működésével kapcsolatos hibák előfordulásának csökkentése érdekében a Rust nyelvet választották a fejlesztéshez. A hatékonyságra, teljesítményre és skálázhatóságra is nagy figyelmet fordítottak. Például a Pingora alapú proxyk és terheléselosztók létrehozásakor lehetőség van callback-kezelők és szűrők csatolására, amelyek lehetővé teszik a kérés különböző feldolgozási szakaszainak kezelését, valamint a kérések és válaszok módosítását, átirányítását, blokkolását és naplózását.szerverek A Pingora alapú proxyk és terheléselosztók esetén lehetőséget biztosítanak callback-kezelők és szűrők csatolására, amelyek segítségével különböző kérések feldolgozási fázisait lehet kezelni, és módosítani, átirányítani, blokkolni és naplózni lehet a kéréseket és a válaszokat.
Az ISRG (Internet Security Research Group) szervezettel együtt, amely a Let’s Encrypt projekt alapítója és a biztonságos internetet szolgáló technológiák fejlesztését támogatja, a Pingora alapjain létrehozzák a River visszafelé proxy-t, amely kritikus fontosságú elemek alkalmazására lesz optimalizálva. hálózati infrastruktúrábólA River kódot Rust nyelven írják, és az Apache 2.0 licenc alatt kerül forgalmazásra. A fejlesztés 2024 második negyedévében kezdődik. Jelenleg a projekt tervezés és architektúra meghatározás fázisában van. A projektet James Munns, a Rust Embedded Working Group vezetője irányítja.
A River projekt fő célja egy proxy megvalósítása, amely képes a kliens kéréseket a háttérszerverek felé továbbítani, miközben megszakítja a bejövő TLS kapcsolatokat, és azokat irányítja, módosítja és szűri a megadott szabályok szerint. A River sajátosságai közé tartozik a több szálú kéréskezelési modell, amely lehetővé teszi a kapcsolatok hatékonyabb újrahasználatát olyan proxykkal összehasonlítva, mint az nginx. A proxy funkcionalitásának kibővítése és szűrők létrehozása érdekében a modulként az WebAssembly formátumra fordított modulok csatlakozása is támogatott lesz (a fejlesztéshez bármilyen programozási nyelv használható, amellyel kapcsolatosan támogatott a WASM-re való fordítás). A konfigurációs formátumot a lehető legegyszerűbbé és megszokottá kívánják tenni.
Forrás: opennet.ru
