Articles.Abysm.ru

Актуально до 1.06.2023
Информация Актуальна до даты Х, по истечении срока статья проверяется на Актуальность и обновляется. Затем в индикаторе актуальности дата меняется на новую.

HTTP/3 QUIC и его проблемы на IIS server.

Предыстория...

Началось все с PageSpeed сервиса оценки производительности и качества сайта. Помимо банальных способов улучшения показателей скорости загрузки сайта, решил поискать альтернативы на которые, в итоге, я и наткнулся.

Я обнаружил протоколы HTTP/1.1 и HTTP/2. Конечно, я с ними сталкивался и раньше, но внимание им не уделял. Первый вариант еще используется, но большинство серверов сейчас использует HTTP/2. Затем проверил не вышел ли следующий более современный протокол и обнаружил HTTP/3 QUIC.

Естественно каждый протокол, обещал рост производительности. HTTP/3 QUIC, обещал повышенную производительность для медленных соединений.

Я радостно теряя тапки побежал внедрять сиё чудо.

Преимущества HTTP/3 QUIC.

- В случае потери пакета или пакетов HTTP/3 QUIC не останавливает загрузку страницы и ее ресурсов в ожидании потерянного пакета, как это делал HTTP/2.
- Сокращает время соединения 0,1 или 0,2 секунды, за счет сжатия приветствий. Естественно обычный пользователь вряд ли заметит разницу.
- HTTP/3 QUIC дает возможность миграции соединения для мобильных устройств, без обрыва соединения.
- Улучшает возможность приоритеризации ресурсов в сравнении с HTTP/2.
- Пр.

Включение поддержки HTTP/3 в Windows Server 2022.

В предыдущих версиях Windows Server поддержку HTTP/3 искать не стоит, ее там просто нет. Данный способ установки HTTP/3 расписан на многих сайтах. Жаль только, что разработчики, которые внедряли HTTP/3 QUIC на IIS server, не догадались сделать включение HTTP/3 нажатием в одну кнопку.

Чтобы включить поддержку HTTP/3 на IIS нужно настроить несколько параметров в Windows Server 2022.

1. Включить поддержку протокола TLS 1.3. Вводить через CMD.exe.

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v Enabled /t REG_DWORD /d 1 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v DisabledByDefault /t REG_DWORD /d 0 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v Enabled /t REG_DWORD /d 1 /f

2. Включить поддержку HTTP/3 для IIS. Вводить через CMD.exe.

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters" /v EnableHttp3 /t REG_DWORD /d 1 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters" /v EnableAltSvc /t REG_DWORD /d 1 /f

3. Шифры TLS_CHACHA20_POLY1305_SHA256 (cipher suite) для TLS подключений. Вводить через PowerShell.

Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0

Проверка, что шифр включен.

(Get-TlsCipherSuite).Name | Select-String CHACHA

4. Добавить HTTP/3 в заголовок ответа сайта.

Заходим в Диспетчер служб IIS, выбираем сайт, заголовки ответов HTTP. Имя Alt-Svc, значение h3=":443"; ma=86400; persist=1.

Как сейчас работает HTTP/3 QUIC на IIS server.

Браузеры будут пытаться использовать QUIC, только если им доподлинно известно, что сервер поддерживает протокол HTTP/3. Это хорошо видно на примере сайта YouTube.com.

1. Первое подключение к серверу YouTube.com

HTTP/3 QUIC первое подключение к серверу YouTube

А на примере моего сайта Abysm.ru видно, что первое соединение осуществляется по протоколу HTTP/2 и только после повторного обновления страницы браузер подключается через HTTP/3. Как я понял это происходит потому, что очень много сайтов в интернете еще не перешли на протокол HTTP/3 и из-за этого подключение осуществляется по умолчанию на протоколе HTTP/2. Исключение из этого правила, крупные и известные сервисы на HTTP/3 о которых браузеры точно знают что они поддерживают этот протокол.

1. Первое подключение к серверу Abysm.ru

HTTP/2 QUIC первое подключение к серверу Abysm

2. Последующее обновление страницы или переход на другие страницы сайта.

HTTP/3 QUIC повторное подключение к серверу Abysm

Когда браузер впервые связывается с сервером, он будет использовать только HTTP/2 или HTTP/1.1. Чтобы сообщить браузеру, что сервер поддерживает HTTP/3, задается HTTP-заголовок: имя Alt-Svc, значение h3=":443"; ma=86400; persist=1.

По факту, на данный момент времени, при первом подключении первые данные браузер получает либо по HTTP/2, либо по HTTP/1.1. Что сводит потенциалную пользу протокола HTTP/3 к нулю, т.к. ползователь получает основной объем данных о вашем сайте (.css, .js и пр) при первом соединении, а затем исползует их из кэша браузера.

Тест скорости на PageSpeed.

Если верить тесту скорости PageSpeed, то производительность между протоколами HTTP/2 и HTTP/3 находится в рамках погрешности теста. Визуально, на глаз, особой разницы не заметно между протоколами HTTP/2 и HTTP/3.

Во многих статьях по HTTP/3 QUIC упоминается, что протокол HTTP/3 показывает наибольшую производительность в медленных сетях. Проверить это не получится т.к. у меня быстрое соединение. Кроме слов, никаких тестов демонстрирующих прирост скорости в медленных сетях я не обнаружил.

HTTP/2

1. Мобильные устройства

HTTP/2 QUIC YouTube Тест Мобильные устройства

2. ПК

HTTP/2 QUIC YouTube Тест ПК

HTTP/3


1. Мобильные устройства

HTTP/3 QUIC Abysm Тест Мобильные устройства

2. ПК

HTTP/3 QUIC Abysm Тест ПК

Проблемы HTTP/3 QUIC на IIS server.

- На данный момент, первое подключение осуществляется по протоколу HTTP/2 или HTTP/1.1 и затем получив нужный заголовок переходит на HTTP/3 QUIC.
- В ряде браузеров есть только частичная поддержки HTTP/3 QUIC и нигде нет полной поддержки HTTP/3 QUIC.
- Промежуточная сеть или файрвол может полностью блокирует QUIC или UDP по которому осуществляется соединение.
- Инструменты тестирования во многих сервисах еще не адаптированы под HTTP/3.
- Все еще недостаточно инструментов отладки HTTP/3 QUIC. Часть из них либо в разработке, либо в процессе отладки.
- Из-за нехватки инструментов HTTP/3 QUIC разработчики не доконца понимают, как работает протокол и все что с ним связано.

Выводы о HTTP/3 QUIC на IIS server.

Сейчас большинству первопроходцам HTTP/3 QUIC, не дает практически никаких преимуществ перед HTTP/2. Исключением из этого правила являются крупные корпорации. Их браузеры внесли в свой список на подключение по протоколу HTTP/3 QUIC, а все остальные будут ждать пока браузеры не начнут по умолчанию всех соединять по HTTP/3 QUIC.

Если смотреть на скорость внедрения HTTP/3 QUIC, на это еще уйдет как минимум 3-5 лет. Владельцы WEB-серверов попробовавших HTTP/3 QUIC, скорее всего не заметят разницы и не будут стремятся переходить на новый протокол с протоколов HTTP/2 или HTTP/1.1.

Протокол HTTP/3 QUIC все еще находится в разработке.

Внимание! Около половины статей посвященных HTTP/3 QUIC полная чушь не имеющая отношения к реальности. На YouTube.com можно посмотреть ролики с разработчиками HTTP/3 QUIC, где они обсуждают возникающие проблемы и их решения. Также вы можете найти документацию по HTTP/3 QUIC на IETF.org.

Теги: HTTP/3, quic, HTTP/2, HTTP/1.1, IIS, server, http, https, TLS 1.3, pagespeed, сервер, протокол, подключение, поддержка, браузер, windows, производительность, скорость, пк, мобильные, кэш, тест, файрвол, заголовок, powershell, CMD.exe, шифр, Alt-Svc.
 

 
 
 
LiveInternet
Top.Mail.Ru Яндекс.Метрика