Happ VPN

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 состоит из нескольких полей в конфигурации исходящего соединения:

ПараметрДиапазонПо умолчаниюЗа что отвечает
enabledtrue / falsefalseВключает или выключает Mux для этого соединения
concurrency1–1288Сколько подключений разделяют одно TCP-соединение
xudpConcurrency1–10240 (UDP идёт вместе с TCP)То же самое отдельно для UDP-трафика через механизм XUDP
xudpProxyUDP443reject / allow / skiprejectКак обрабатывается 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 избавляет от повторных рукопожатий за счёт общего соединения.

Упомянутые темы

Разделы по теме

Источники

  1. Документация Xray: объект Outbound и настройка Mux — обращение 28 сентября 2026
  2. Документация Happ: маршрутизация и JSON-конфигурации — обращение 28 сентября 2026