Mengapa lebih cepat untuk melompat SSH dengan pseudo-tty dibandingkan penerusan?

3

Saya perhatikan bahwa di jaringan kantor saya, koneksi SSH multi-hop menggunakan metode "pseudo-tty" berkinerja lebih baik (lihat catatan terakhir) daripada menggunakan metode "penerusan". Mengapa demikian?

Dengan kata lain, mengapa:

ssh -A -X -tt server1 ssh -X -tt server2  # pseudo-tty

menghasilkan kinerja yang jauh lebih baik daripada:

ssh -o ‘ProxyCommand=ssh -A -X -W %h:%p server1’ -X server2  # forwarding

?

Catatan lain:

  • Saya menggunakan laptop saya, dan server1 dan server2 memiliki perangkat keras yang sama.
  • Di laptop saya, saya punya Windows 7 dengan ssh dan xwin Cygwin. Ini memiliki prosesor yang layak (i7 4610M atau serupa).
  • Baik server1 dan server2 adalah RHEL 6.5.
  • Saya belum mengukur bitrate, tetapi aplikasi X11 secara signifikan lebih cepat dengan metode pseudo-tty (ada penundaan yang terlihat dengan penerusan).
roti panggang
sumber
Bisakah Anda mencobanya dengan versi windows asli? Saya tahu bahwa Cygwin melakukan cukup banyak sihir untuk meniru berbagai hal Linux dan saya percaya akan ada beberapa untuk penerusan X.
Jakuje
Sudahkah Anda mencoba proksi otomatis juga, yang seharusnya memiliki lebih sedikit overhead daripada kedua opsi lainnya. Saya tidak yakin mengapa harus ada banyak perbedaan antara dua metode yang Anda sebutkan.
eckes

Jawaban:

0

Saya pikir command-line pertama Anda akan membuat koneksi untuk server1dioptimalkan untuk sesi interaktif (dengan respon rendah, tetapi lebih sedikit troughput), tetapi metode forwading akan membuka sesi dengan bit ToS diatur ke MaximizeTroughtput, dengan waktu respon yang lebih tinggi. Sehingga kurang dioptimalkan untuk sesi interaktif.

Itu mungkin berasal dari fakta bahwa ssh dan sshd akan secara otomatis mengatur ToS sesuai rfc1349. Defaultnya adalah lowdelay untuk sesi interaktif dan throughput untuk non-interaktif (biasanya sftp, scp, dalam penerusan port case Anda).

Ambil dari man ssh_config:

 IPQoS   Specifies the IPv4 type-of-service or DSCP class for connections.  Accepted values are af11, af12, af13, af21, af22, af23, af31, af32, af33, af41, af42, af43, cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, ef, lowdelay,
         throughput, reliability, or a numeric value.  This option may take one or two arguments, separated by whitespace.  If one argument is specified, it is used as the packet class unconditionally.  If two values are speci‐
         fied, the first is automatically selected for interactive sessions and the second for non-interactive sessions.  The default is lowdelay for interactive sessions and throughput for non-interactive sessions.

ps: Anda dapat mencoba:

ssh -o ‘ProxyCommand="ssh -A -X -W %h:%p -o IPQoS=lowdelay server1"’ -X server2

Saïmonn
sumber