QUIC

QUIC
Название Quick UDP Internet Connections
Уровень (по модели OSI) Транспортный
Семейство TCP/IP
Создан в июнь 2013
Порт/ID 443[1]
Основные реализации (клиенты) Веб-браузеры: Google Chrome.
Разработчик Google

QUIC (сокр. от англ. Quick UDP Internet Connections; произносится quick) — экспериментальный интернет-протокол, разработанный Google[2][3] в конце 2012 года[4].

QUIC позволяет мультиплексировать несколько потоков данных между двумя компьютерами, работая поверх протокола UDP, и содержит возможности шифрования, эквивалентные TLS и SSL. Имеет более низкую задержку соединения и передачи, чем TCP. Хорошо переносит потерю части пакетов путём выравнивания границ криптографических блоков по границам пакетов. В протокол заложена возможность прямой (упреждающей) коррекции ошибок на уровне пакетов, но на практике она отключена[5].


Поддержка[ | ]

для поддержки QUIC был добавлен в Google Chrome[6] начиная с версии 29 (в предрелизных ветках dev и canary — с июня 2013, в релизной — с 20 августа 2013 года). Он может быть включен на странице chrome://flags/#enable-quic, активные сеансы видны на chrome://net-internals/#quic.

Реализация на языке С++ для поддержки QUIC доступна под лицензией BSD. Клиентская часть протокола доступна на Git[7][8].

Экспериментальный сервер с поддержкой QUIC доступен как часть проекта Chromium[9].

HTTP-сервер может объявить клиенту о поддержке протокола QUIC с помощью дополнительного заголовка «Alternate-Protocol: 80:quic» или «Alternate-Protocol: 443:quic».

В мае 2021 года протокол был принят в качестве официального стандарта RFC 9000. Социальная сеть ВКонтакте заявила о внедрении протокола для всех пользователей своих приложений[10].

Недостатки клиентской реализации[ | ]

По состоянию на 2015 г., существует одна открытая реализация протокола, разработанная в Google. Представленная реализация обладает следующими недостатками[источник не указан 2114 дней]:

  • серверная часть использует epoll, что, как минимум, не позволяет без дополнительной доработки собрать и запустить серверную часть протокола на других ОС за исключением Linux[11];
  • реализация интегрирована в Chromium, что затрудняет использование в других проектах, как в плане интеграции, так и в плане синхронизации и обновления овой базы.

Существует извлечённая из дерева исходных текстов Chromium клиентская часть реализации протокола под названием libQUIC[12]. Извлечением и синхронизацией с овой базой, а также некоторой доработкой занимается компания Devsisters. Данное ответвление от основной реализации устраняет недостаток интеграции в проект Chromium.

Серверная реализация[ | ]

Имеется серверная реализация на языке Go[13], что позволяет использовать её в других проектах. 11 июля 2017 года LiteSpeed Technologies, Inc. начали официально поддерживать QUIC[14] в своём балансировщике нагрузки (WebADC) и веб-сервере (LiteSpeed Web Server).

В конце 2020 года появилась реализация IETF QUIC протокола от Microsoft — MsQuic, написанная на языке C. Утверждается, что MsQuic имеет отличия от других вариантов библиотек тем, что:

  • Оптимизирована для клиентской и серверной стороны.
  • Оптимизирована для максимальной пропускной способности при минимизации задержки.
  • Асинхронная работа.
  • Поддержка масштабирования на стороне приёма (RSS).
  • Поддержка слияния приёма и отправки по UDP[15].

См. также[ | ]

  • SPDY — другой экспериментальный протокол Google.
  • DTLS
  • HTTP/2
  • SCTP
  • μTP — транспортный протокол поверх UDP с контролем доставки в μTorrent

Примечания[ | ]

  1. https://ma.ttias.be/googles-quic-protocol-moving-web-tcp-udp/
  2. Looks Like Google Is Working On A UDP Replacement Called QUIC. Дата обращения: 29 октября 2017. Архивировано 4 июля 2013 года.
  3. Google making the Web faster with protocol that reduces round trips. Дата обращения: 29 июня 2013. Архивировано 4 июля 2013 года.
  4. Issue 11125002: Add QuicFramer and friends. - Code Review
  5. https://www.blackhat.com/docs/us-16/materials/us-16-Pearce-HTTP2-&-QUIC-Teaching-Good-Protocols-To-Do-Bad-Things.pdf#page=61 "FEC (currently disabled)"
  6. Chromium Code Reviews: Issue 12317026: Various small QUIC cleanups after merging to Chrome.. Дата обращения: 22 февраля 2013.
  7. chromium / chromium / src / net / refs/heads/main / . / quic
  8. Index of /trunk/src/net/quic
  9. Chromium Code Search: net/tools/quic
  10. ВКонтакте ускорилась в 2 раза. РИА Новости (20 сентября 2021). Дата обращения: 22 сентября 2021.
  11. chromium/src/net/tools/quic/quic_server.h
  12. репозиторий Devsisters libQUIC на github
  13. quic-go/README.md at master · lucas-clemente/quic-go · GitHub GitHub
  14. QUIC — LiteSpeed Technologies
  15. Cross-platform, C implementation of the IETF QUIC protocol.. github.com. github.com (06.01.2021). Дата обращения: 5 марта 2021.

Литература[ | ]

Ссылки[ | ]