Cloudflare пропонує модуль для підтримки HTTP / 3 в NGINX

Cloudflare

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

З клієнтського програмного забезпечення, До експериментальних збірок Chrome Canary вже додано підтримку HTTP / 3 та утиліта 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, час зворотного зв'язку) .
  • Не використовувати однаковий номер послідовності при повторній передачі пакету, що дозволяє уникнути неоднозначності при визначенні прийнятих пакетів та виключає час очікування.
  • Втрата пакета впливає на доставку лише пов'язаного з ним потоку і не зупиняє доставку даних у потоках, що передаються паралельно по поточному з'єднанню.
  • Інструменти виправлення помилок, які мінімізують затримки через повторну передачу втрачених пакетів. Використання спеціальних кодів виправлення помилок на рівні пакетів для зменшення ситуацій, що вимагають повторної передачі втрачених пакетних даних.
  • Межі криптографічного блоку вирівнюються з межами пакетів 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 ще не підтримується.

Щоб прийняти з'єднання в конфігурації, їм потрібно буде додати директиву прослуховування з позначкою "quic".


Залиште свій коментар

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

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.