Cloudflare предлага модул за поддръжка на HTTP / 3 в NGINX

Cloudflare

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

От клиентския софтуер, Поддръжката на HTTP / 3 вече е добавена към експерименталните компилации на Chrome Canary и помощната програма за къдрене. От страна на сървъра досега се изисква използването на изолирани тестови реализации, които имат ограничени възможности. Възможността за обработка на 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. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.