L'azienda Cloudflare ha annunciato l'apertura del codice sorgente del framework Pingora, destinato allo sviluppo di servizi di rete ad alte prestazioni e sistemi di rete programmabili, realizzati in Rust. Il framework è stato ben testato e viene già utilizzato in sistemi ad alta richiesta: un proxy costruito su questa base è in funzione da oltre un anno nella rete di distribuzione dei contenuti di Cloudflare, sostituendo nginx e gestendo oltre 40 milioni di richieste al secondo. Il codice è scritto in Rust ed è pubblicato sotto la licenza Apache 2.0.
Pingora può essere utilizzato per la gestione multi-threaded delle richieste in modalità asincrona, supporta HTTP/1 e HTTP/2 (con piani per HTTP/3), proxy gRPC e WebSocket, bilanciatori di carico plug-in, modifica della configurazione senza riavvio, aggiornamento del codice senza interruzione delle connessioni, determinazione della strategia di failover in caso di guasto, integrazione con vari sistemi di monitoraggio e logging (Syslog, Prometheus, Sentry, OpenTelemetry). In Pingora è anche supportata la crittografia TLS, ma viene implementata come un'estensione delle librerie C OpenSSL e BoringSSL.
Sono disponibili pacchetti Rust pronti per la creazione di proxy HTTP, la gestione di protocolli di rete, l'analisi degli header HTTP, il monitoraggio e la limitazione del traffico, il bilanciamento del carico, la gestione di una tabella hash distribuita Ketama, il mantenimento della cache in memoria e l'elaborazione asincrona dei timeout. Oltre a HTTP, è supportata la creazione di servizi che utilizzano protocolli propri o UDP/TCP.
La sicurezza è stata dichiarata come la priorità principale del progetto: per ridurre la probabilità di errori legati alla gestione della memoria, è stato scelto il linguaggio Rust. È stata prestata particolare attenzione anche all'efficienza, alle prestazioni e all'estensibilità. Ad esempio, nella creazione di proxy e bilanciatori di carico basati su Pingora, è prevista la possibilità di allegare gestori di callback e filtri, che consentono di gestire le diverse fasi dell'elaborazione delle richieste, così come di modificare, reindirizzare, bloccare e registrare richieste e risposte.server e dei bilanciatori di carico basati su Pingora, è prevista la possibilità di allegare gestori di callback e filtri, che consentono di gestire le diverse fasi dell'elaborazione delle richieste, nonché di modificare, reindirizzare, bloccare e registrare le richieste e le risposte.
In collaborazione con l'organizzazione ISRG (Internet Security Research Group), che è fondatrice del progetto Let’s Encrypt e promuove lo sviluppo di tecnologie per aumentare la sicurezza di internet, sarà creato un proxy inverso River basato su Pingora, progettato per l'uso in elementi critici. dell'infrastruttura di reteIl codice di River sarà scritto in Rust e distribuito con licenza Apache 2.0. Lo sviluppo inizierà nel secondo trimestre del 2024. Attualmente, il progetto è in fase di progettazione e definizione dell'architettura. Il progetto è guidato da James Munns del Rust Embedded Working Group.
L'obiettivo principale del progetto River è implementare un proxy in grado di trasmettere le richieste dei clienti ai server di backend, terminando le connessioni TLS in entrata e instradando, modificando e filtrando le richieste in base a regole specificate. Tra le caratteristiche di River si evidenzia un modello di elaborazione delle richieste multithreading, che consente un riutilizzo delle connessioni più efficace rispetto a proxy come nginx. Per espandere le funzionalità del proxy e creare filtri, sarà supportata la connessione di moduli compilati nel formato WebAssembly (per lo sviluppo sarà possibile utilizzare qualsiasi linguaggio di programmazione che supporti la compilazione in WASM). Il formato di configurazione sarà reso il più semplice e familiare possibile.
Fonte: opennet.ru
