/qmux

wire protocol for multiplexing connections or streams into a single connection, based on a subset of the SSH Connection Protocol

Primary LanguageGoMIT LicenseMIT

qmux

qmux is a wire protocol for multiplexing connections or streams into a single connection. It is based on the SSH Connection Protocol, which is the simplest, longest running, most widely deployed TCP multiplexing protocol with flow control.

It is meant as a drop-in layer for any stream capable transport (TCP, WebSocket, stdio, etc) to provide basic multiplexing. This brings any connection API to rough semantic parity with QUIC multiplexing, so it can act as a stopgap or fallback when QUIC is not available. You can then design higher level protocols based on multiplexing semantics that sit on top of QUIC or any other streaming transport with qmux.

Spec

The specification is here. It is a simplified version of the Channel Mechanism in the SSH Connection Protocol.

Implementations

Demos

  • groktunnel: Ephemeral localhost public forwarding system for HTTP similar to Ngrok in less than 150 lines of Go.

About

Licensed MIT