Compania Cloudflare a anunțat lansarea codului sursă pentru cadrul Pingora, destinat dezvoltării de servicii rețea performante și sistemelor de rețea programabile, utilizând limbajul Rust. Cadrul a fost bine testat și este deja utilizat în sistemele de înaltă încărcare — proxy-ul construit pe baza acestuia a fost activ timp de peste un an în rețeaua de livrare a conținutului Cloudflare, înlocuind nginx și procesând peste 40 de milioane de solicitări pe secundă. Codul este scris în limbajul Rust și publicat sub licența Apache 2.0.
Pingora poate fi utilizat pentru procesarea multi-threaded a solicitărilor în mod asincron, suportă HTTP/1 și HTTP/2 (planificat HTTP/3), proxy pentru gRPC și WebSocket, load balancers conectabili, modificarea configurației fără repornire, actualizarea codului fără întreruperea conexiunilor, definirea unei strategii de comutare a sarcinii în caz de eșec (failover), integrarea cu diverse sisteme de monitorizare și înregistrare (Syslog, Prometheus, Sentry, OpenTelemetry). De asemenea, în Pingora este suportat criptarea TLS, dar aceasta este implementată ca un strat deasupra bibliotecilor C OpenSSL și BoringSSL.
Sunt furnizate pachete Rust gata pregătite pentru crearea proxy-urilor HTTP, lucrul cu protocoalele de rețea, analiza headerelor HTTP, contabilizarea și limitarea traficului, balansarea sarcinii, gestionarea unei tabele hash distribuite Ketama, menținerea unui cache în memorie și procesarea asincronă a timeout-urilor. În afară de HTTP, este suportată crearea serviciilor care utilizează propriile protocoale sau UDP/TCP.
Prioritatea principală a proiectului a fost asigurarea securității — pentru a reduce probabilitatea de a comite erori legate de operarea memoriei, limbajul Rust a fost ales pentru dezvoltare. S-a acordat, de asemenea, o mare atenție eficienței, performanței și scalabilității. De exemplu, în crearea proxy-urilorservere și a load balancerelor bazate pe Pingora este prevăzută posibilitatea de a adăuga обработчики de callback și filtre, care permit gestionarea diferitelor etape ale procesării solicitării, precum și modificarea, redirecționarea, blocarea și înregistrarea solicitărilor și răspunsurilor.
Împreună cu organizația ISRG (Internet Security Research Group), care este fondatoarea proiectului Let’s Encrypt și susține dezvoltarea tehnologiilor pentru creșterea securității internetului, pe baza Pingora va fi creat un proxy invers River, destinat utilizării în elemente critice. a infrastructurii rețelii. Codul River va fi scris în Rust și va fi distribuit sub licența Apache 2.0. Dezvoltarea va începe în trimestrul II al anului 2024. În prezent, proiectul se află în faza de proiectare și definire a arhitecturii. Proiectul este dezvoltat sub conducerea lui James Munns din Rust Embedded Working Group.
Principala destinație a proiectului River este implementarea unui proxy capabil să transceadă cererile clienților către serverele backend, terminând conexiunile TLS de intrare și rutând, modificând și filtrând cererile conform regulilor stabilite. Printre caracteristicile River se numără modelul multi-thread de prelucrare a cererilor, care permite o reutilizare mai eficientă a conexiunilor comparativ cu proxy-uri precum nginx. Pentru extinderea funcționalității proxy-ului și crearea de filtre, va fi acceptată conectarea modulelor compilate în format WebAssembly (pentru dezvoltare se pot folosi orice limbaje de programare pentru care este suportată compilația în WASM). Formatul de configurare este planificat să fie cât mai simplu și familiar.
Sursa: opennet.ro
