X11 転送時の TCP 接続の異常な速度低下

X11 転送時の TCP 接続の異常な速度低下

自宅のコンピュータ H (Linux)、職場のコンピュータ W (Mac OS X)、および IP 11.22.33.44 のパブリック サーバー S (H と同じ Linux) があります。

H と W はすべて NAT の背後にあるため、autossh を使用して両方を S に接続し、トンネルを介して相互に通信します。

# From H to S
ssh -R :8822:127.0.0.1:22 [email protected]
# From W to S
ssh -R :7722:127.0.0.1:22 [email protected]

オフィスにいるときは、よく SSH で H に接続し、X11 を転送します。

# on W
ssh -X -p 8822 [email protected]
xterm
...

H と W はどちらも S へのレイテンシが非常に低い (ping は約 2 ~ 5 ミリ秒) ため、オフィスを移転して ISP を変更するまではすべて非常にスムーズでした。W から S への ping は低いままで、X 転送が開始するまではすべて高速です。X11 転送を介して H から xterm を起動しようとすると、TCP 接続が非常に遅くなります。ただし、転送なしの W から H への他の SSH セッションは高速のままです。応答しない xterm で Ctrl-C を押すと、転送 SSH セッションはすぐに応答するようになります。

誰かが SSH セッションを監視していて、X11 通信が行われるたびに速度を低下させているように感じます。どの部分が間違っているのかを調べるために、次のようなテストを実行しました。

# on W
ssh -R 11.22.33.44:6010:127.0.0.1:6000 [email protected]
# on S
DISPLAY=11.22.33.44:10 xterm  # works fine!
# on H
DISPLAY=11.22.33.44:10 xterm  # unresponsive

不思議なことに、xterm が S で起動した場合は問題ありませんが、H から起動した場合は、H→S の部分ではなく、W→S SSH セッションで停止し、入力が非常に遅くなります。ハングした xterm で Ctrl-C を実行すると、すぐに回復しました。

H→S と W→S はいずれも良好 (遅延と帯域幅の両方) なので、ネットワークの問題ではないようです。トンネル経由では、W と H 間の scp は高速です。Wlftp fish://Hからでも問題なく動作します。

これは ISP の切り替え後に発生したため、ISP によるトラフィック スロットリングがあるのではないかと考えていましたが、X11 転送は W と S の間、または H と S の間でどの方向でも正常に機能します。W と H の間の X11 トラフィックは、私が考えられる限りでは、その転送を運ぶ SSH 接続を遅くするだけです。

この混乱に深く困惑しています。どの部分を調べればよいか、どなたか教えていただけませんか?

関連情報