Инструмент, который ускоряет обмен данными и снижает нагрузку на серверы по всему миру, теперь свободен.

Компания Cloudflare открыла исходный код своей асинхронной библиотеки tokio-quiche — системы, объединяющей протокол QUIC и фреймворк Tokio для языка Rust. Этот проект используется в инфраструктуре компании уже несколько лет: именно на tokio-quiche работают прокси-сервера Proxy B в Apple iCloud Private Relay, новое поколение прокси-платформ Cloudflare Oxy, а также клиент MASQUE в приложении Warp, заменяющий туннели WireGuard на каналы связи на основе QUIC. По данным разработчиков, библиотека обрабатывает миллионы HTTP/3-запросов в секунду с минимальными задержками и высокой пропускной способностью.
Изначально Cloudflare создала библиотеку quiche как реализацию протокола QUIC и HTTP/3 на Rust с упором на безопасность памяти и универсальность. Она была написана по принципу sans-IO — то есть содержит только логику протокола и не привязана к конкретному способу работы с сетью. Пользователь сам должен был реализовать обработку UDP-пакетов, управление сокетами и интеграцию с асинхронным исполнением. Такая архитектура обеспечивала гибкость, но требовала большого объёма ручного кода и была сложной в освоении.
Теперь tokio-quiche берёт эти задачи на себя. Она объединяет quiche с популярным асинхронным окружением Tokio, выполняющим миллиарды задач на распределённой сети Cloudflare. В результате разработчикам больше не нужно самостоятельно писать связку между QUIC и вводом-выводом — tokio-quiche полностью автоматизирует передачу данных, управление соединениями и синхронизацию.
Изначально эта библиотека использовалась внутри компании только как ядро HTTP/3-сервера платформы Oxy, однако необходимость создать полноценный HTTP/3-клиент с поддержкой MASQUE — протокола туннелирования данных поверх QUIC — привела к решению сделать tokio-quiche самостоятельным проектом. В отличие от quiche, новый модуль ориентирован не на исследователей, а на практическое внедрение: он снижает порог входа для разработчиков и упрощает интеграцию QUIC и HTTP/3 в собственные приложения.
Cloudflare подчёркивает, что развитие новых интернет-стандартов не имеет смысла, если взаимодействовать с ними может только сама компания. Открытие кода tokio-quiche должно ускорить распространение технологий QUIC и HTTP/3 в экосистеме Rust и помочь другим сервисам перейти на современные протоколы, ориентированные на безопасность и производительность.
Архитектурно tokio-quiche построена на модели акторов — лёгких асинхронных задач, каждая из которых отвечает за отдельную часть протокольного состояния и обменивается сообщениями с другими компонентами через каналы. Такая схема идеально подходит для асинхронной обработки данных: и акторы, и sans-IO-библиотеки управляют внутренним состоянием и взаимодействуют с внешним миром через потоки сообщений. В случае QUIC этими сообщениями становятся сетевые пакеты и буферы байтов.
Главный актор в tokio-quiche — IO loop actor, управляющий движением пакетов между quiche и сетевым сокетом. Он реализует цикл приёма и отправки данных, а также обрабатывает сетевые события, включая создание, завершение и обновление соединений. Поскольку QUIC является транспортным протоколом, поверх него можно реализовывать любые прикладные решения — от HTTP/3 до DNS-over-QUIC или даже мультимедийной передачи данных (Media over QUIC). Для этого в библиотеке предусмотрен интерфейс ApplicationOverQuic, который абстрагирует методы quiche и сетевое взаимодействие, позволяя сосредоточиться на логике приложения.
Кроме базового уровня библиотека содержит драйвер H3Driver, соединяющий HTTP/3-модуль quiche с асинхронным циклом ввода-вывода. Он преобразует низкоуровневые события протокола в понятные структурам более высокого уровня и поддерживает потоки данных тела запросов. На его основе реализованы 2 разновидности: ServerH3Driver и ClientH3Driver, которые добавляют поведение, соответствующее серверной или клиентской роли.
Внутри tokio-quiche работают 2 ключевые задачи: InboundPacketRouter и IoWorker. Первая управляет приёмом входящих UDP-датаграмм и маршрутизирует их по идентификатору соединения (DCID), передавая в отдельные каналы. Вторая отвечает за выполнение вызовов quiche для конкретного подключения и взаимодействие с ApplicationOverQuic, обеспечивая контроль над состоянием до и после операций ввода-вывода.
По словам команды, библиотека прошла многолетние испытания в боевых условиях и доказала способность обрабатывать миллионы запросов в секунду без сбоев. Хотя tokio-quiche не является готовым клиентом или сервером HTTP/3, она служит прочным фундаментом для создания таких решений. Примеры базовых циклов событий для сервера и клиента включены в документацию.
Cloudflare планирует и дальше развивать экосистему QUIC и HTTP/3, готовя к открытой публикации более удобные абстракции — тот же стек, что лежит в основе прокси Oxy и клиента Warp. В будущем компания намерена представить клиент для пользователей своих Privacy Proxies и новый сервис, обрабатывающий миллионы запросов в секунду на базе tokio-quiche.
Исходный код уже доступен на GitHub, а готовый пакет опубликован в crates.io. Разработчики могут использовать его для создания собственных QUIC-приложений — от простых echo-серверов и DNS-клиентов до защищённых VPN-туннелей и полноценных HTTP-серверов.