Мультиплексирование VLESS: как mux и gRPC влияют на скорость
Когда я впервые полез в настройки VLESS, увидел там опции “gRPC” и “smux” и подумал: “Очередные галочки ради галочек”. Но потом заметил странность — на одном сервере YouTube открывался за секунду, на другом с тем же пингом превью грузились по 5 секунд. Разница оказалась именно в мультиплексировании. Если вы тоже тыкали эти настройки наугад — сейчас разберемся, что это реально дает.
Что такое мультиплексирование простыми словами
Представьте, что ваше интернет-соединение — это одна труба. Каждый запрос к сайту (загрузка картинки, видео, текста) — это отдельный грузовик, который едет по этой трубе. Без мультиплексирования грузовики едут по одному: первый проехал, потом второй, потом третий.
Mux (мультиплексирование) — это когда вы делаете из одной трубы многополосную магистраль. Несколько грузовиков едут одновременно, в разных рядах. gRPC и smux — это два разных способа организовать эти “ряды”.
gRPC работает через HTTP/2 протокол. Он создает одно долгоживущее соединение и внутри него открывает множество “потоков” (streams). Каждый поток — как отдельный разговор, но все они идут по одному каналу.
smux — это отдельная библиотека на Go, которая просто берет и мультиплексирует TCP-соединения. Она не привязана к HTTP, работает на более низком уровне.
Зачем это вообще нужно — практический пример
Я тестировал на своем канале МТС (100 Мбит/с, Москва). Открывал сайт с 50 картинками через VLESS Reality.
Без mux: Каждая картинка — отдельное TCP-соединение. Рукопожатие, шифрование, передача, закрытие. 50 картинок = 50 циклов. Первые 3 секунды сайт просто белый экран — грузятся заголовки соединений.
С mux (smux, 8 потоков): Одно соединение, внутри 8 параллельных потоков. Картинки грузятся пачками по 8 штук. Весь сайт загрузился за 1.2 секунды вместо 6.8.
gRPC дает похожий эффект, но добавляет фишки вроде сжатия заголовков и управления ошибками. На практике при стабильном соединении разница между smux и gRPC минимальна — 3-5%.
Настройка мультиплексирования в Happ и Hiddify
Happ (iOS/Android)
- Открываете конфиг VLESS
- Ищете раздел “Stream Settings” или “Транспорт”
- Выбираете “gRPC” (в Happ это предустановлено для VLESS по умолчанию)
- В параметрах gRPC ставите:
- ServiceName: любое слово, например “vpn” (это путь для маскировки) - MultiMode: включить (это и есть мультиплексирование)
- Сохраняете
Hiddify (Android)
- Импортируете конфиг
- Тапаете на него → “Edit” → “Transport”
- Выбираете “gRPC” или оставляете “tcp” и включаете “Mux”
- Если выбрали gRPC:
- ServiceName: то же слово, что в конфиге сервера - Load Balancer: включить - Concurrency: 8 (оптимально для начала)
- Если оставили TCP и включили Mux:
- Mux Concurrency: 8 - Mux Padding: включить (маскирует трафик)
Подводные камни, о которых молчат в гайдах
Я перепробовал кучу настроек и набил шишек. Вот что реально важно:
- gRPC не работает без поддержки сервера. Если на сервере стоит VLESS только с TCP, gRPC-клиент просто не соединится. Нужно, чтобы в конфиге сервера было прописано
"transport": "grpc". У @VPNChill_bot это уже настроено — прилетает готовый конфиг. - Слишком много потоков — хуже. Я ставил 32 потока на smux. Скорость упала на 40% — процессор сервера не справлялся с управлением. Оптимум: 4-8 потоков на средних тарифах, 16-32 на мощных VPS.
- Mux не всегда ускоряет. Если вы открываете один сайт (например, YouTube) и смотрите одно видео — мультиплексирование почти не дает выгоды. Оно нужно, когда много параллельных запросов: новостной сайт с кучей картинок, торренты, облачные сервисы.
- На старых роутерах gRPC может отваливаться. У меня Keenetic с OpenWRT — gRPC работал, но раз в час сбрасывал соединение. Переключил на smux — полет нормальный.
Проверка: что ускоряет, а что нет
Я замерил на Билайн (50 Мбит/с, СПб) и Ростелеком (100 Мбит/с, Краснодар). Тест: открытие сайта habr.com с холодного старта браузера.
| Конфигурация | Время загрузки | Комментарий |
|---|---|---|
| Без mux | 4.8 сек | Каждый элемент по очереди |
| smux 4 потока | 1.9 сек | Оптимально для среднего сайта |
| smux 16 потоков | 2.1 сек | Уже перебор |
| gRPC MultiMode | 1.7 сек | Лучший результат, но на 20% больше нагрузка на CPU |
| gRPC без MultiMode | 3.2 сек | Без мультиплексирования смысла нет |
Вывод: gRPC с MultiMode выигрывает у smux на 10-15%, но если у вас слабый сервер — берите smux с 8 потоками.
Альтернативы, которые я пробовал
QUIC через VLESS. Есть транспорт “quic” — работает поверх UDP. На тестах с МТС давал +30% скорости на нестабильном канале, но Билайн его резал на ровном месте. Не советую для России.
WebSocket с mux. В @VPNChill_bot есть VLESS WebSocket — я ставил mux поверх него. Работает, но gRPC и smux на TCP быстрее на 15-20% из-за меньшего оверхеда.
Trojan с mux. Троян не поддерживает мультиплексирование из коробки. Можно докрутить через прокси-цепочки, но это геморрой и потеря 10% скорости.
Частые вопросы
Что выбрать: gRPC или smux для VLESS на телефоне? На телефоне лучше smux. gRPC жрет больше батареи из-за постоянной поддержки HTTP/2-сессий. smux легче, на Happ (iOS/Android) работает стабильно при 4-8 потоках.
Мультиплексирование в VLESS — это то же самое, что MUX в Shadowsocks? По сути да, но VLESS использует gRPC или smux, а Shadowsocks — свой велосипед. gRPC дает меньше ошибок при плохом сигнале (тестировал на Tele2 в метро — разница 20% в пользу VLESS gRPC).
Как настроить VLESS gRPC на iPhone без Happ? Стандартные клиенты App Store (например, Streisand) не поддерживают gRPC. Happ — единственный стабильный вариант на iOS с gRPC. Если нет Happ — ставьте VLESS Reality без мультиплексирования, будет медленнее, но работать будет.
Сколько потоков ставить в smux для Hiddify? Начните с 8. Если видите, что скорость проседает на 20-30% от канала — снизьте до 4. Если железный сервер (4+ ядра) — 16-32. Больше 32 не ставьте — будет хуже.
Почему после включения mux скорость упала? Проверьте CPU на сервере. Если нагрузка под 100% — mux не тянет. Или наоборот, канал узкий — 8 потоков делят между собой 10 Мбит/с, и каждый поток получает копейки. Ставьте 2-4 потока.
Мультиплексирование — не волшебная кнопка, но на сайтах с кучей контента (медиа, магазины, форумы) оно дает 2-3x ускорение. Для видеозвонков и стримов — разница нулевая. Если хотите готовый конфиг с уже оптимизированным gRPC — Попробовать @VPNChill_bot — 3 дня бесплатно →