Компания Cloudflare обяви за отварянето на изходния код на фреймворка Pingora, предназначен за разработване на защитени, високо производителни мрежови услуги и програмирани мрежови системи на езика Rust. Фреймворкът е добре тестван и вече се използва в работа на системи с високо натоварване — проксито, изградена на база Pingora, се използва повече от година в мрежата за доставка на съдържание на Cloudflare вместо nginx и обработва над 40 млн. запитвания в секунда. Кодът е написан на езика Rust и е публикуван под лицензия Apache 2.0.
Pingora може да се използва за многопоточно обработване на запитвания в асинхронен режим, поддържа HTTP/1 и HTTP/2 (в плановете е добавянето на HTTP/3), проксиране на gRPC и WebSocket, плъгини за балансиране на натоварването, промяна на конфигурацията без рестартиране, обновяване на кода без прекъсвания на връзките, определяне на стратегия за превключване при неуспех (failover), интеграция с различни системи за мониторинг и логване (Syslog, Prometheus, Sentry, OpenTelemetry). В Pingora също така е поддържано TLS криптиране, но то е реализирано като надстройка над C библиотеките OpenSSL и BoringSSL.
Предоставят се готови Rust пакети за създаване на HTTP прокси, работа с мрежови протоколи, анализ на HTTP заглавия, проследяване и ограничаване на трафика, балансиране на натоварването, работа с разпределена хеш таблица Ketama, поддържане на кеш в оперативната памет и асинхронна обработка на тайм аутове. Освен HTTP, е възможно създаването на услуги, използващи свои протоколи или UDP/TCP.
Ключов приоритет на проекта е осигуряването на сигурност — за да се намали вероятността от грешки, свързани с работата с паметта, за разработката бе избран езика Rust. Голямо внимание също е отделено на ефективността, производителността и разширяемостта. Например, при създаването на прокси-сървъри и балансировачи на натоварването на базата на Pingora, е предвидена възможност за прикрепяне на callback обработчици и филтри, които позволяват управление на различните етапи на обработка на запитването, както и модификация, пренасочване, блокиране и регистриране на запитвания и отговори.
В сътрудничество с ISRG (Internet Security Research Group), учредител на проекта Let’s Encrypt и организация, която подпомага развитието на технологии за повишаване на сигурността в интернет, на базата на Pingora ще бъде създаден обратен прокси River, предназначен за приложение в критично важни елементи. на мрежовата инфраструктура. Кодът на River ще бъде написан на Rust и ще се разпространява под лицензия Apache 2.0. Разработката ще започне през второто тримесечие на 2024 година. В момента проектът е в етап на проектиране и определяне на архитектурата. Проектът се развива под ръководството на Джеймс Маннс (James Munns) от Rust Embedded Working Group.
Основната цел на проекта River е реализацията на прокси, способно да трансферира клиентски заявки към сървъри на бекенда, завършвайки входящите TLS връзки и маршрутизирайки, променяйки и филтрирайки запитванията съгласно зададените правила. Специална функция на River е многопоточната обработка на заявки, която позволява по-ефективно повторно използване на връзките в сравнение с проксита като nginx. За разширяване на функционалността на проксито и създаване на филтри ще бъде поддържано свързването на модули, компилирани във формат WebAssembly (за разработка могат да се използват всякакви програмни езици, които поддържат компилация в WASM). Форматът на конфигурацията ще се планира да бъде възможно най-прост и познат.
Източник: opennet.ru
