Highlights
- Adds complete server-side TCP Brutal support for the in-tree SMUX and H2MUX implementations.
- Keeps Brutal opt-in and independently configurable per inbound, with no global state and no change for existing configurations.
- Completes the existing outbound/client implementation so Xray can now negotiate Brutal end to end.
Brutal server
-
Added per-inbound configuration:
"smux": { "brutal-opts": { "enabled": true, "up": "1 Gbps", "down": "1 Gbps" } }
-
Carries immutable inbound limits through the accepted connection context into
singmux.Service. -
Reserves
_BrutalBwExchange:0inside the mux server before routing or DNS. -
Applies
min(server up, client down)to the physical TCP carrier and advertisesserver downto the client. -
Allows one successful negotiation per carrier and shares the controller across all H2MUX streams.
-
Rejects disabled, malformed, duplicate, and out-of-range exchanges without routing them.
-
Closes the physical carrier if socket control or the post-activation response can leave asymmetric congestion control.
Compatibility notes
- Brutal remains disabled by default; existing inbound and outbound configurations continue unchanged.
- The server configuration is scoped to each inbound, so different inbounds may use different limits.
- Linux servers still require the Brutal congestion-control kernel module for socket activation.
- The SMUX/H2MUX wire format and ordinary TCP/UDP stream behavior are unchanged.
Validation
- Passed focused unit tests for configuration propagation, bounded negotiation, rejection paths, carrier closure, routing isolation, and SMUX/H2MUX parity.
- Passed race and checkptr suites for the mux stack.
- Passed all 80 SMUX/H2MUX process interoperability scenarios with Xray, sing-box, and Mihomo.
- Passed Go formatting and protobuf header checks.
- Built a static stripped Linux amd64 binary with
CGO_ENABLED=0. - The external DoH test against
1.1.1.1returned EOF in this environment and is retained as the known external DNS limitation accepted for this release.