Mux (мультиплексирование): что это
- Автор
- Екатерина Лебедева, редактор раздела knowledge base
- Проверил:
- Артём Волков
- Проверено:
- Опубликовано:
- , обновлено
- Версия гайда:
- 1.0
Коротко
Mux — функция Xray-core, которая объединяет несколько независимых соединений клиента в один физический TCP-канал к серверу, чтобы не открывать TCP- и TLS-рукопожатие заново для каждого из них. В Happ она включается настройками исходящего соединения в JSON-конфигурации, а не отдельным параметром в обычной ссылке.
Мультиплексирование — общий сетевой приём: несколько логических потоков данных идут через одно физическое соединение вместо отдельного соединения для каждого. В Xray-core это функция Mux у исходящего соединения: параметр concurrency задаёт, сколько подключений может разделить одно TCP-соединение, а xudpConcurrency — то же самое для UDP-трафика. Mux экономит время на повторные рукопожатия при большом числе коротких соединений, но не увеличивает пропускную способность канала. У протокола VLESS есть собственная команда для мультиплексированного потока в заголовке запроса — она используется именно тогда, когда Mux включён.
Mux — функция Xray-core, которая объединяет несколько независимых соединений клиента в одно физическое TCP-соединение к серверу вместо отдельного соединения для каждого запроса. Название — сокращение от «мультиплексирование», общего сетевого приёма передачи нескольких потоков через один канал.
Суть мультиплексирования
Мультиплексирование — общий сетевой приём: вместо того чтобы открывать отдельное соединение под каждый поток данных, несколько потоков идут через один общий канал, а на входе и выходе их различают по меткам. Радио- и телефонные сети используют этот приём десятилетиями, и в компьютерных сетях он встречается на многих уровнях — от HTTP/2 до самого Xray-core.
В Xray-core мультиплексирование реализовано как функция исходящего соединения с названием Mux. Она включается для конкретного протокола — VLESS, VMess, Trojan или Shadowsocks — и объединяет несколько независимых запросов клиента в одно уже установленное TCP-соединение к серверу.
Смысл в экономии времени, а не пропускной способности. Каждое новое TCP-соединение — это отдельное рукопожатие, а с TLS поверх него — ещё и обмен ключами. Если клиент открывает много коротких соединений подряд, например при загрузке страницы с десятками мелких файлов, повторные рукопожатия складываются в заметную задержку. Mux пропускает все эти запросы через один уже готовый канал.
Параметры
Настройка Mux состоит из нескольких полей в конфигурации исходящего соединения:
| Параметр | Диапазон | По умолчанию | За что отвечает |
|---|---|---|---|
enabled | true / false | false | Включает или выключает Mux для этого соединения |
concurrency | 1–128 | 8 | Сколько подключений разделяют одно TCP-соединение |
xudpConcurrency | 1–1024 | 0 (UDP идёт вместе с TCP) | То же самое отдельно для UDP-трафика через механизм XUDP |
xudpProxyUDP443 | reject / allow / skip | reject | Как обрабатывается UDP-трафик на порт 443 |
Эти поля задают в конфигурации сервера или JSON-профиля, а не в параметрах обычной ссылки вида vless://. Именно поэтому Mux — тема скорее для администратора сервера или провайдера, чем для повседневной настройки в приложении.
Как это выглядит в Happ
В параметрах ссылок, которые описывает документация Happ, — vless://, vmess://, trojan:// и других — отдельного параметра для Mux нет. Управление им относится к настройкам исходящего соединения целиком, а не к отдельным полям ссылки.
Happ поддерживает JSON-конфигурации, которые передаются в Xray-core без изменений: если такая конфигурация содержит объект mux у исходящего соединения, он будет работать ровно так, как его прописал автор. Обычные правила маршрутизации приложения на такую конфигурацию не влияют — об этом подробнее написано в разделе про маршрутизацию.
Для рядового пользователя Happ это означает, что настройка Mux — забота провайдера или администратора сервера, а не что-то, что нужно включать самостоятельно в интерфейсе приложения.
Чем Mux отличается от похожих терминов
Mux легко перепутать с другими формами многопоточности в Xray-core, хотя решают они разные задачи.
| Термин | Что делает | Отличие от Mux |
|---|---|---|
| gRPC | Транспорт на основе HTTP/2 | Уже умеет вести несколько потоков сам по себе, поэтому Mux поверх него обычно не нужен |
| Команда «Mux» в заголовке VLESS | Метка внутри протокола, что поток объединён с другими | Часть самого протокола VLESS, а не отдельная настройка — появляется именно тогда, когда включена функция Mux |
| Outbound | Всё исходящее соединение целиком: протокол, транспорт, защита | Mux — лишь одна из настроек внутри исходящего соединения |
Главное практическое отличие Mux от транспортов вроде WebSocket или XHTTP в том, что он не заменяет их: Mux работает поверх уже выбранного протокола и транспорта, экономя время на установлении новых соединений, а не меняя способ доставки данных по сети.
Главное
- Mux объединяет несколько логических соединений клиента в одно физическое TCP-соединение к серверу и экономит время на повторных рукопожатиях.
- Параметр concurrency задаёт число подключений на одно TCP-соединение (от 1 до 128, по умолчанию 8), а xudpConcurrency — то же самое отдельно для UDP-трафика.
- Mux ускоряет установление множества коротких соединений, но не увеличивает пропускную способность уже открытого канала.
- У протокола VLESS есть отдельная команда «Mux» в заголовке запроса — она используется, когда несколько потоков идут через одно соединение.
- Happ передаёт JSON-конфигурации в Xray-core без изменений, поэтому настройка Mux в исходящем соединении работает так, как её задал автор конфигурации.
Частые вопросы
Что делает функция Mux в Xray-core?
Mux берёт несколько независимых запросов клиента — например, разные сайты, открытые одновременно, — и передаёт их через одно уже установленное TCP-соединение к серверу вместо того, чтобы открывать новое соединение под каждый запрос. Это снижает число TCP- и TLS-рукопожатий при большом количестве коротких соединений, что особенно заметно на нестабильных или медленных сетях.
Что означает параметр concurrency у Mux?
concurrency задаёт, сколько независимых подключений может разделить одно физическое TCP-соединение — от 1 до 128, по умолчанию 8. Чем выше значение, тем больше запросов уместится в одном соединении, но и тем заметнее задержка одного запроса будет влиять на остальные, если они делят общий канал.
Чем xudpConcurrency отличается от обычного concurrency?
concurrency относится к TCP-соединениям, а xudpConcurrency — к отдельному механизму агрегации UDP-трафика поверх Mux, который называется XUDP. Он задаёт, сколько независимых UDP-потоков может разделить одно такое соединение — от 1 до 1024. Если значение не указано или равно нулю, UDP-трафик идёт тем же путём, что и TCP.
Можно ли включить Mux в Happ через обычную ссылку?
В параметрах ссылок vless://, vmess:// и других, которые описывает документация Happ, отдельного параметра для включения Mux нет. Настройка относится к исходящему соединению целиком и передаётся через JSON-конфигурацию, которую Happ отправляет в Xray-core без изменений. Обычному пользователю включать её вручную не требуется — это решение принимает автор конфигурации.
Почему Mux не стоит включать вместе с gRPC?
Транспорт gRPC работает поверх HTTP/2, который уже умеет вести несколько потоков в одном соединении. Включение Mux поверх gRPC добавляет второй слой мультиплексирования там, где он не нужен, и может усложнить диагностику проблем с соединением без заметной пользы. Документация Xray прямо не рекомендует такое сочетание.
Ускоряет ли Mux скорость уже установленного соединения?
Нет, Mux не увеличивает пропускную способность канала — он экономит время на установлении новых соединений. Эффект заметнее всего там, где приложение открывает много коротких запросов подряд: медленное TCP- или TLS-рукопожатие на каждый из них складывается в заметную задержку, а Mux избавляет от повторных рукопожатий за счёт общего соединения.
Упомянутые темы
Похожие материалы
- gRPC-транспорт
- Outbound и inbound в Xray
- WebSocket-транспорт в Happ: как работает и когда нужен
- JSON-конфигурации и прямая передача в Xray-core
- Архитектура Happ: как устроено приложение изнутри
- Что такое VPN простыми словами и чем он отличается от прокси-клиента
- VMess в Happ: ссылка vmess://, шифрование и время
- Trojan в Happ: ссылка trojan://, TLS и пароль
Разделы по теме
Источники
- Документация Xray: объект Outbound и настройка Mux — обращение 28 сентября 2026
- Документация Happ: маршрутизация и JSON-конфигурации — обращение 28 сентября 2026