Предварителен вариант на nginx с поддръжка на QUIC и HTTP/3

Компания NGINX обяви обявява за старта на тестването реализация на протоколите QUIC и HTTP/3 в HTTP сървъра и прокси nginx. Реализацията се основава на чернова 27 на спецификацията IETF-QUIC и е достъпна чрез отделно хранилище, отделено от версия 1.19.0. Кодът се разпространява под лиценз BSD и не се припокрива с по-рано предложената реализация на HTTP/3 за nginx от компанията Cloudflare, която е отделен проект.

Поддръжката на HTTP/3 в nginx е отбелязана като експериментална, тъй като не всички възможности на протокола са реализирани. Въпреки това, nginx вече може да се използва за изпращане на отговори на прости HTTP/3 заявки върху QUIC и за качване/изтегляне на големи файлове. Сред все още отсъстващите функции на протокола се отбелязват средствата за договаряне на версия на протокола, ECN и контрол на претоварването, структурирани логове, режим на възстановяване (QUIC recovery, управление на потока и претоварването), NAT Rebinding, мобилни адреси, Server push, присъединяване на данни (trailer). Осигурена е само основна поддръжка за обработка на ACK пакети и управление на потока, което изисква допълнителна работа. Не всички изисквания на стандарта са спазени.

За активиране на HTTP/3 е необходимо да се компилира nginx с модула http_v3_module и да се добави допълнителната директива
„listen“ с флага „http3“ за създаване на слушащ UDP сокет. Например:

server {
listen 443 ssl; # TCP сокет за HTTP/1.1
listen 443 http3 reuseport; # UDP сокет за QUIC+HTTP/3

ssl_protocols TLSv1.3; # TLS 1.3 е задължителен за QUIC
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;

add_header Alt-Svc ‘quic=":443"‘; # индикатор за наличността на QUIC
add_header QUIC-Status $quic; # Заглавие с статус на използването на QUIC
}

Напомняме, че HTTP/3 стандартизира използването на протокола QUIC като транспорт за HTTP/2. Протоколът QUIC (Quick UDP Internet Connections) се развива от компанията Google от 2013 г. като алтернатива на TCP+TLS за уеб, решаваща проблемите с дългото време за установяване и преговори на връзките в TCP и премахваща закъсненията при загуба на пакети по време на предаване на данни. QUIC представлява надстройка над UDP протокола, която поддържа мултиплексиране на няколко връзки и предоставя методи за криптиране, еквивалентни на TLS/SSL. На клиентската страна експерименталната поддръжка на HTTP/3 вече е добавена в Curl, Firefox и Chromium.

Предварителен вариант на nginx с поддръжка на QUIC и HTTP/3

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

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

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster