Spoločnosť Cloudflare zverejnila verziu frameworku Pingora 0.6, určeného na vývoj zabezpečených a vysoce výkonných sieťových služieb v jazyku Rust. Proxy postavené pomocou Pingora sa už viac ako dva roky používajú v sieti dodávky obsahu Cloudflare namiesto nginx a spracovávajú viac ako 40 miliónov požiadaviek za sekundu. Kód je napísaný v jazyku Rust a zverejnený pod licenciou Apache 2.0.
Hlavné funkcie Pingora:
- Podpora HTTP/1 a HTTP/2 (v plánoch HTTP/3), ako aj možnosť vytvárania služieb, ktoré používajú vlastné protokoly alebo UDP/TCP.
- Podpora viacvláknového spracovania požiadaviek v asynchrónnom režime.
- Možnosť pripojiť callback spracovateľov a filtre, ktoré umožňujú spravovať rôzne fázy spracovania požiadavky, ako aj meniť, presmerovávať, blokovať a zaznamenávať požiadavky a odpovede.
- Proxy gRPC a WebSocket.
- Pripojiteľné balancery záťaže.
- Možnosť zmeny konfigurácie bez reštartovania.
- Podpora aktualizácie kódu aplikácie bez prerušenia spojení.
- Prostriedky na prepnutie záťaže v prípade zlyhania (failover).
- Integrácia s rôznymi systémami monitorovania a logovania (Syslog, Prometheus, Sentry, OpenTelemetry).
- Podpora TLS šifrovania (používa sa OpenSSL, BoringSSL alebo Rustls).
- Hotové Rust balíky na vytvorenie HTTP proxy, prácu so sieťovými protokolmi, analýzu HTTP hlavičiek, sledovanie a obmedzovanie prevádzky, rozdeľovanie záťaže, prácu s rozdelenou hašovacou tabuľkou Ketama, udržiavanie cache v pamäti a asynchrónne spracovanie timeoutov.
Medzi zmenami v novej verzii:
- Počas ukončenia práce sa zabezpečuje uloženie do logu názvov runtime komponentov pre jednoduchšiu diagnostiku problémov, ktoré sú spôsobené absenciou runtime komponentov a vedú k oneskoreniam počas ukončenia práce.
- Zahŕňa sledovanie fáz vykonávania servera, informácie o ktorých môžu byť užitočné pre monitorovanie alebo zabezpečenie odolnosti. Pri zmene fázy vykonávania sa generuje správa ExecutionPhase, ktorú je možné zachytiť cez API Server::watch_execution_phase.
- Povolené umiestnenie v pamäti komprimovaných slovníkov.
- V implementácii http servera a http proxy boli pridané direktívy HttpServerOptions a H2Options.
- Realizovaná ochrana pred útokom MadeYouReset, ktorý umožňuje vyvolať odmietnutie služby prostredníctvom manipulácie s riadiacimi rámcami HTTP/2.
Zdroj: opennet.ru
