Hysteria2 или VLESS Reality: какой протокол выбрать
Два современных VPN-протокола в сравнении: QUIC поверх UDP и TLS поверх TCP. Скорость на сетях с потерями, что происходит при ограничении UDP, как каждый выглядит в сети и как Colitu выбирает за вас.
Hysteria2 и VLESS Reality — два из режимов подключения в Colitu. Они рассчитаны на разные условия, а практическая разница сводится к одному выбору: транспорту под ними. Hysteria2 работает поверх UDP, VLESS Reality — поверх TCP. В этой статье разбираем, что это значит для скорости, для сетей с ограничениями и для того, что видит наблюдатель в сети, и когда лучше подходит каждый из них.
Hysteria2 вкратце
Hysteria2 — прокси-протокол на основе QUIC, транспорта поверх UDP, на котором работает HTTP/3. Рукопожатие — стандартный TLS 1.3, сервер предъявляет действительный сертификат. Внутри соединения приложение проходит аутентификацию HTTP/3-запросом, а запрос без учётных данных получает такой же ответ, какой дал бы обычный веб-сервер. Каждое TCP-соединение с вашего устройства получает отдельный поток QUIC, а UDP-трафик — звонки, игры, DNS — идёт датаграммами QUIC.
VLESS Reality вкратце
VLESS Reality сочетает VLESS, минималистичный прокси-протокол, и Reality — слой TLS 1.3, которому не нужен собственный сертификат. Приложение начинает рукопожатие с именем настоящего стороннего сайта и отпечатком, имитирующим Chrome. В ClientHello спрятан небольшой блок аутентификации. Если он верный, сервер сам завершает рукопожатие и туннель запускается. Если нет, соединение побайтово пересылается на настоящий сайт. Colitu также включает XTLS Vision, который уменьшает характерный рисунок «TLS внутри TLS», возникающий при вложенном HTTPS.
Транспорт: QUIC поверх UDP или TLS поверх TCP
В этом главное различие.
- Hysteria2 использует QUIC поверх UDP. Потоки внутри одного соединения независимы, поэтому потерянный пакет в одном потоке не задерживает остальные.
- VLESS Reality использует TLS 1.3 поверх TCP. Это единый упорядоченный поток байтов — такое же соединение, какое браузер открывает к любому HTTPS-сайту.
Ни один из них не лучше во всех ситуациях. Они подходят для разных сетей.
Скорость на каналах с потерями
Классическое управление перегрузкой в TCP воспринимает каждый потерянный пакет как признак перегруженного канала и снижает скорость. В мобильной сети, на загруженном Wi-Fi или на длинном международном маршруте пакеты часто теряются по другим причинам: из-за помех или слабого сигнала. TCP замедляется без необходимости и медленно восстанавливается.
В Hysteria2 есть собственное управление перегрузкой, Brutal. Если доступная пропускная способность известна, он продолжает слать данные с этой скоростью и компенсирует потери повторной отправкой. Если пропускная способность не задана, используется BBR, который оценивает полосу, а не реагирует на каждый потерянный пакет. В итоге на каналах с потерями скорость ровнее. Звонки и игры тоже выигрывают, потому что UDP-трафик идёт датаграммами.
VLESS Reality ведёт себя как любой протокол на TCP. На стабильном проводном или Wi-Fi-соединении с малыми потерями он работает хорошо, а Vision держит накладные расходы низкими. На канале с сильными потерями он замедляется, и там Hysteria2 обычно быстрее.
Когда UDP ограничен в сети
Некоторые корпоративные, гостиничные, кампусные и мобильные сети ограничивают UDP или QUIC. В такой сети Hysteria2 не подключается или работает медленно. Здесь сильнее VLESS Reality: он работает поверх TCP и там, где работает обычный HTTPS.
То же относится к сетям, которые обращаются с QUIC к незнакомым адресам иначе, чем с TCP. Причины и способы действий разобраны в статье UDP ограничен: что это значит для VPN.
Как каждый выглядит в сети
- Hysteria2 выглядит как HTTP/3 к сайту с действительным сертификатом. Пассивный наблюдатель видит трафик QUIC, а проверочный запрос без учётных данных получает ответ обычного веб-сервера.
- VLESS Reality выглядит как рукопожатие TLS 1.3 с настоящим сторонним сайтом, с отпечатком, похожим на браузерный. Проверочный запрос без ключа пересылается на этот сайт и видит его настоящий сертификат и страницы.
Оба устроены так, чтобы соединение напоминало обычный веб-трафик. Различается способ: один использует собственный сертификат и HTTP/3, другой заимствует рукопожатие настоящего сайта.
Сравнение в таблице
| Hysteria2 | VLESS Reality | |
|---|---|---|
| Транспорт | UDP, QUIC | TCP |
| Рукопожатие | TLS 1.3 внутри QUIC | TLS 1.3 с Reality |
| Как выглядит | HTTP/3 к сайту с действительным сертификатом | TLS-рукопожатие с настоящим сторонним сайтом |
| Управление перегрузкой | Собственное (Brutal, а без заданной полосы — BBR) | Классический TCP |
| Каналы с потерями (мобильная сеть, загруженный Wi-Fi) | Хорошо держит скорость | Замедляется, как любой протокол на TCP |
| Звонки и игры | UDP идёт датаграммами | Идут внутри потока TCP |
| Где UDP ограничен | Не подключается или медленный | Работает |
| Реакция на проверочные запросы | Отвечает как веб-сервер | Пересылает на настоящий сайт |
| Стабильное проводное или Wi-Fi-соединение | Очень хорошо | Очень хорошо |
Так какой выбрать
- Телефон в мобильной сети, загруженный или дальний Wi-Fi, длинные маршруты, звонки и игры: Hysteria2.
- Сеть, ограничивающая UDP или QUIC, или там, где Hysteria2 не подключается: VLESS Reality.
- Стабильное соединение с малыми потерями: подойдёт любой.
Помните, что у любой техники нет вечной гарантии. Сети меняются, и то, что сегодня работает в одной сети, завтра может вести себя иначе. Поэтому не стоит привязываться к одному протоколу.
Colitu выбирает за вас
Выбирать не нужно. Adaptive Connect — автоматический режим в каждом приложении Colitu — пробует режимы подключения в заданном порядке и проверяет, что реальный трафик идёт, прежде чем оставить режим.
Hysteria2 стоит первым на всех платформах: когда UDP проходит, он лучше всех справляется с потерей пакетов. Если UDP ограничен, рукопожатие не удаётся или туннель ничего не передаёт, приложение переходит дальше. На Android и iOS следующий режим — VLESS Reality, затем VLESS XHTTP, Trojan и Shadowsocks 2022. На Windows и Linux приложение пробует TCP-режимы в порядке измеренного времени соединения. Режим, который ничего не передал, откладывается, и следующее подключение не тратит на него время.
Все режимы зашифрованы, поэтому переключение никогда не означает возврата к незашифрованному соединению. Подробности — на страницах Центра протоколов: Hysteria2, VLESS Reality и Adaptive Connect.