SMUX is a stream multiplexing library for Go that lets multiple logical streams share one reliable underlying connection. It is designed for transports such as TCP or KCP, where ordering and reliability are already provided by the lower layer. The library uses sessions, streams, and frames to manage many independent data flows over a single connection. It focuses on controlled memory usage, smooth receiving behavior, fair traffic shaping, and small protocol overhead. Its design includes a session-wide receive buffer, minimized 8-byte headers, and per-stream sliding windows in newer protocol versions. smux is especially useful for networking software that needs efficient connection management without opening a separate socket for every stream.
Features
- Multiplexes many logical streams over one connection
- Works over reliable ordered transports such as TCP or KCP
- Uses sessions, streams, and frames for structured transport control
- Provides token bucket controlled receiving
- Uses a shared session-wide receive buffer for predictable memory usage
- Includes fair queue traffic shaping and per-stream sliding windows