Microsoft открыл свою реализацию протокола QUIC, применяемого в HTTP/3 - AsaDagar

Microsoft открыл свою реализацию протокола QUIC, применяемого в HTTP/3

Компания Microsoft объявила об открытии кода библиотеки MsQuic с реализацией сетевого протокола QUIC. Код написан на языке Си и распространяется под лицензией MIT. Библиотека кроссплатнорменная и может использоваться не только в Windows, но и в Linux с задействованием Schannel или OpenSSL для TLS 1.3. В дальнейшем планируется поддержка и других платформ.

Библиотека основана на коде драйвера msquic.sys, предоставляемого в ядре Windows 10 (Insider Preview) для обеспечения работы протоколов HTTP и SMB поверх QUIC. В том числе код используется для реализации HTTP/3 во внутреннем стеке Windows и в .NET Core. Разработка библиотеки MsQuic целиком будет вестись на GitHub с использованием публичного рецензирования, pull-запросов и GitHub Issues. Подготовлена инфраструктура, проверяющая каждый коммит и pull-запрос в наборе из более 4000 тестов. После стабилизации окружения для разработки планируется принимать изменения от сторонних разработчиков.

MsQuic уже можно использовать для создания серверов и клиентов, но не вся функциональность, определённая в спецификации IETF в настоящее время доступна. Например, пока нет поддержки 0-RTT, миграции клиентов, Path MTU Discovery и управления выбором адресов для сервера (Server Preferred Address). Из реализованных особенностей отмечается оптимизация для достижения максимальной пропускной способности и минимальных задержек, поддержка асинхронного ввода/вывода, RSS (Receive Side Scaling), возможность объединения входных и выходных UDP-потоков. Реализация MsQuic проверена на совместимость с экспериментальными ветками браузеров Chrome и Edge.

Напомним, что HTTP/3 стандартизирует использование протокола QUIC в качестве транспорта для HTTP/2. Протокол QUIC (Quick UDP Internet Connections) c 2013 года развивается компанией Google в качестве альтернативы связке TCP+TLS для Web, решающей проблемы с большим временем установки и согласования соединений в TCP и устраняющей задержки при потере пакетов в процессе передачи данных. QUIC представляет собой надстройку над протоколом UDP, поддерживающую мультиплексирование нескольких соединений и обеспечивающую методы шифрования, эквивалентные TLS/SSL.

Основные особенности QUIC:

  • Высокая безопасность, аналогичная TLS (по сути QUIC предоставляет возможность использования TLS 1.3 поверх UDP);
  • Контроль за целостностью потока, предотвращающий потерю пакетов;
  • Возможность мгновенно установить соединение (0-RTT, примерно в 75% случаях данные можно передавать сразу после отправки пакета установки соединения) и обеспечить минимальные задержки между отправкой запроса и получением ответа (RTT, Round Trip Time);
  • Не использование при повторной передаче пакета того же номера последовательности, что позволяет избежать двусмысленности при определении полученных пакетов и избавиться от таймаутов;
  • Потеря пакета влияет на доставку только связанного с ним потока и не останавливает доставку данных в параллельно передаваемых через текущее соединение потоках;
  • Средства коррекции ошибок, минимизирующие задержки из-за повторной передачи потерянных пакетов. Использование специальных кодов коррекции ошибок на уровне пакета для сокращения ситуаций, требующих повторной передачи данных потерянного пакета.
  • Границы криптографических блоков выравнены с границами пакетов QUIC, что уменьшает влияние потерь пакетов на декодирование содержимого следующих пакетов;
  • Отсутствие проблем с блокировкой очереди TCP;
  • Поддержка идентификатора соединения, позволяющего сократить время на установку повторного соединения для мобильных клиентов;
  • Возможность подключения расширенных механизмов контроля перегрузки соединения;
  • Использование техники прогнозирования пропускной способности в каждом направлении для обеспечения оптимальной интенсивности отправки пакетов, предотвращая скатывание в состояние перегрузки, при которой наблюдается потеря пакетов;
  • Заметный прирост производительности и пропускной способности, по сравнению с TCP. Для видеосервисов, таких как YouTube, применение QUIC показало сокращение операций повторной буферизации при просмотре видео на 30%.
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии