多数の SOCKS 接続が 1 つの SSH トランスポートを共有できる
ssh -D は宛先ストリームを SSH チャネル上で多重化する。外側の TCP 接続 1 本が依然として共通のボトルネックになり得る。
1 つの ssh -D プロセスは複数のウェブサイト接続を同時に扱える。層ごとに分けて数える。
| 層 | 運ぶもの |
|---|---|
| アプリから SOCKS リスナーへ | 個別のアプリ接続と SOCKS 要求 |
| SSH チャネル | チャネル単位のフロー制御を持つ独立してアドレス指定されたストリーム |
| SSH トランスポート | 多重化されたチャネルデータ。通常は 1 本の下位 TCP 接続上 |
| ゲートウェイからウェブサイトへ | ゲートウェイが開く個別の宛先接続 |
したがって、暗号化された SSH ソケットが 1 つ見えるからといって、すべてのウェブサイト要求が 1 つの宛先接続に直列化されるわけではない。動的転送はストリームデータを中継し、新しい接続を開く。アプリの元の TCP パケットと IP ヘッダーを別の TCP 接続の中に運ぶパケットトンネルとは異なる。
共有トランスポートは依然として重要だ。容量、スケジューリング、暗号化処理、トランスポートの損失や遅延は複数のチャネルに同時に影響し得る。1 つの宛先が止まっただけでは、1 チャネル制限の証明にはならない。
複数のアプリが同時に遅くなる場合は、同じ SSH セッションとゲートウェイ経路を共有しているかを確認し、実際のワークロードを比較する。ローカルの SOCKS ポートを数えても、スループットも独立した経路も測れない。多重化自体は、速度向上も各ストリーム専用の公開出口も約束しない。