Sonata

quiche — реализация QUIC и HTTP/3 от Cloudflare

quiche — это реализация транспортного протокола QUIC и HTTP/3, соответствующая спецификациям IETF. Библиотека предоставляет низкоуровневый API для обработки QUIC-пакетов и управления состоянием соединения, при этом ввод-вывод (например, работа с сокетами) и цикл обработки событий с таймерами остаются на стороне приложения.

Проект активно применяется на практике: quiche обеспечивает работу HTTP/3 в edge-сети Cloudflare, а сайт cloudflare-quic.com используется для тестирования и экспериментов. Кроме того, библиотеку задействует DNS-резолвер Android для реализации DNS через HTTP/3, а также она интегрирована в curl для поддержки HTTP/3.

Работа с API начинается с создания объекта конфигурации, который определяет ключевые параметры соединения: версию QUIC, ALPN-идентификаторы, управление потоком, контроль перегрузки, таймаут простоя и другие настройки. Поскольку QUIC — это универсальный транспортный протокол, многие параметры по умолчанию установлены в ноль, и приложениям обычно требуется настроить их под свои задачи, включая TLS-конфигурацию. Один объект конфигурации может использоваться сразу несколькими соединениями.

Для клиентской стороны применяется специальная функция создания нового соединения, а для серверной — отдельная функция. Обработка входящих пакетов и генерация исходящих выполняются через соответствующие методы соединения, а таймеры для событий, зависящих от времени, контролируются приложением самостоятельно.

Для снижения нагрузки на сеть рекомендуется применять pacing — регулирование скорости отправки исходящих пакетов, чтобы избежать всплесков трафика. quiche предоставляет подсказки по времени отправки каждого пакета, которые приложения могут использовать через платформенно-специфичные механизмы, например, через соответствующую опцию сокета в Linux.

GitHub ★ 11,859

Загрузка страницы