Cloudflare предлагает модуль для поддержки HTTP / 3 в NGINX

Cloudflare

Cloudflare подготовила модуль для поддержки протокола HTTP / 3 в NGINX. Модуль готов в виде оснастки на библиотеке пирога с заварным кремом разработан в Cloudflare с реализацией транспортного протокола QUIC и HTTP / 3. Код киша написан на Rust., но модуль для NGINX написан на C и обращается к библиотеке через динамические ссылки. Часы работы открыты по лицензии BSD.

Из клиентского программного обеспечения Поддержка HTTP / 3 уже добавлена ​​в экспериментальные сборки Chrome Canary. и утилита curl. На стороне сервера до сих пор требовалось использование изолированных тестовых реализаций с ограниченными возможностями. Возможность обрабатывать HTTP / 3 в nginx значительно упростит развертывание серверов с поддержкой HTTP / 3 и это сделает более доступной тестовую реализацию нового протокола.

HTTP / 3 стандартизирует использование протокола QUIC как транспорт для HTTP / 2. Протокол QUIC был разработан Google в качестве альтернативы TCP + TLS для Интернета, поэтому нацелен на решение проблем с длительным временем установки и согласования компаундов в TCP и задерживает устранение потери пакетов во время передачи данных. QUIC - это плагин к протоколу UDP, который поддерживает мультиплексирование нескольких подключений и предоставляет методы шифрования, эквивалентные TLS / SSL.

Среди ключевых характеристик QUIC выделяются:

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

Как реализовать модуль для поддержки HTTP / 3 в NGINX?

Для тех, кто заинтересован в возможности реализовать этот модуль на своем сервере, Они могут сделать это, следуя инструкциям, которые мы приводим ниже.

Чтобы скомпилировать его, им просто нужно скачать патч для nginx 1.16 и код библиотеки пирога с заварным кремом.

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz

tar xzvf nginx-1.16.1.tar.gz

git clone --recursive https://github.com/cloudflare/quiche

cd nginx-1.16.1

patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

И мы компилируем NGINX с включенной поддержкой HTTP / 3:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

--with-openssl=../quiche/deps/boringssl \

--with-quiche=../quiche

make

Во время компиляции поддержка TLS должна быть основана на библиотеке BoringSSL («–with-openssl = .. / quiche / deps / boringssl»), использование OpenSSL пока не поддерживается.

Чтобы принимать соединения в конфигурации, им нужно будет добавить директиву listener с флагом quic.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.