SSH feature suggestion - inverse connection multiplexing
SSH supports connection multiplexing which allows sharing a single TCP
connection for multiple sessions. Inverse multiplexing would let a
single session to span multiple TCP connections.
Potential benefits:
1. Reduced latency - buffered data on one channel will not delay data
on another channel.
2. Surviving dropped connections (e.g. buggy NATs)
3. Increase total throughput (like "download accelerators")
An inverse multiplexing layer would be added between the the connection
layer and multiple instances of the transport layer. The imux layer
would appear to the connection layer as a transport layer with relaxed
ordering guarantees: SSH packets with the same channel id would be
delivered in order but packets from separate channels can have
different latencies.
The imux layer would use acknowledge packets to monitor the buffering
status of each connection and prioritize latency-sensitive information
(e.g. interactive keystrokes) to idle or lower-latency connections. If
a connection times out or is is dropped the packets must be
retransmitted over another channel. This means that in some cases there
may be duplication of packets which should be filtered out by the imux
layer.
When used with tunneling this should reduce the performance
problems associated with the behavior of TCP congestion control when
the underlying transport is also TCP.
Oren
|