PuTTYツールを使用して、Windows PC(1)から別の都市のUbuntuマシン(2)にアップロードするのが遅い。
私はこれをOpenVPNトンネル経由で、(2)へのポート転送を介してテストしました。 SSH(plink.exe)またはpscp.exeを介してrsync(Unison)を使用すると、WinSCP(SCPまたはSFTP)で(1)->(2)方向にコピーするよりも70%遅いことがわかります。ダウンロードの速度は両方とも同じです。
ここにいくつかのデータがあります:
link protocol software source target max speed (kb/s)
theoretical speed 4.5mbits 1 2 560
theoretical speed 6.0mbits 2 1 750
VPN SFTP pscp.exe 1 2 180 <- not ok
VPN SFTP pscp.exe 2 1 640
VPN SFTP winscp 1 2 570 <- ok
VPN SFTP winscp 2 1 670
PF SFTP pscp.exe 1 2 185 <- not ok
PF SFTP pscp.exe 2 1 700
PF SFTP winscp 1 2 600 <- ok
PF SFTP winscp 2 1 680
Unisonの速度は、pscpとほぼ同じです。
Wireshark経由でパケットを検査しましたが、特別なことは何もないようです。ちょうどそのWinSCPが2倍以上の量のパッケージを同時に送信します。
送信スタイル:
WinSCP:2つまたは3つのSSH1をサーバーに、1つを戻す(ACK)
No. Time Source Destination Protocol Length Info
797 1.003187000 10.8.0.6 10.8.0.10 TCP 54 22?51739 [ACK] Seq=5089 Ack=496673 Win=7079 Len=0
798 1.003208000 10.8.0.10 10.8.0.6 SSH 1241 Client: Encrypted packet (len=1187)
799 1.003211000 10.8.0.10 10.8.0.6 SSH 1241 Client: Encrypted packet (len=1187)
800 1.008147000 10.8.0.6 10.8.0.10 TCP 54 22?51739 [ACK] Seq=5089 Ack=499047 Win=7079 Len=0
801 1.008166000 10.8.0.10 10.8.0.6 SSH 1241 Client: Encrypted packet (len=1187)
802 1.008180000 10.8.0.10 10.8.0.6 SSH 1241 Client: Encrypted packet (len=1187)
803 1.008357000 10.8.0.6 10.8.0.10 TCP 54 22?51739 [ACK] Seq=5089 Ack=501421 Win=7079 Len=0
pscp:サーバーへの4 SSH2、2バック(ACK)、1 SSH2バック
No. Time Source Destination Protocol Length Info
210 11.000452000 10.8.0.6 10.8.0.10 TCP 54 22?51744 [ACK] Seq=6178 Ack=97187 Win=185856 Len=0
211 11.005520000 10.8.0.6 10.8.0.10 TCP 54 22?51744 [ACK] Seq=6178 Ack=98989 Win=185856 Len=0
212 11.005585000 10.8.0.10 10.8.0.6 SSHv2 1241 Client: Encrypted packet (len=1187)
213 11.005589000 10.8.0.10 10.8.0.6 SSHv2 1241 Client: Encrypted packet (len=1187)
214 11.005591000 10.8.0.10 10.8.0.6 SSHv2 1241 Client: Encrypted packet (len=1187)
215 11.005592000 10.8.0.10 10.8.0.6 SSHv2 669 Client: Encrypted packet (len=615)
216 11.006578000 10.8.0.6 10.8.0.10 SSHv2 134 Server: Encrypted packet (len=80)
217 11.032385000 10.8.0.6 10.8.0.10 TCP 54 22?51744 [ACK] Seq=6258 Ack=101363 Win=185856 Len=0
218 11.037768000 10.8.0.6 10.8.0.10 TCP 54 22?51744 [ACK] Seq=6258 Ack=103165 Win=185856 Len=0
UbuntuマシンはSSH1を提供していないため、WinSCPはその構成でSSH2も選択しています。
もう1つの違いは、WINとACKの値です。
編集:CygwinとOpenSSHでテストしました。WinSCPと同じ速度です。 WinSCPとPuTTYを比較する2つの画像を作成しましたTCP情報、これらは違いです:
PuTTY WinSCP
TCP Segment Len: 615 1187
TCP Push: Set Not set
Window size value 4014 4118
calc. Window size 16056 16472
[Bytes in flight:] 8352 91399
更新-4月20日
link protocol software source target max speed (kb/s)
cVPN SFTP pscp.exe 3 4 250 <- not ok
cVPN SFTP winscp 3 4 580 <- ok
cLAN SFTP pscp.exe 3 4 10200 <- maybe not ok
cLAN SFTP winscp 3 4 11500 <- as expected
cVPN = commercialVPN at my home Lan、cLAN = my Office Lan、(3)->(4)= copy from office laptop from datacenter server。ここでも、pscpはwinscpよりも低速です。
Pscpのパケット順序は単純すぎます。パケットを検査した後、スタイルはより似ています
...
8 client data (100% fill)
9 client data (100%)
10 client data (60%)
11 server data?
12 server ACK to packet #1
13 server ACK to packet #3
14 client ACK to packet #11
...
これは非常に安定しています。代わりに、WinSCPははるかに古いパケットに対してACKを実行し、次のパケットを送信するまでACKを待機していないように見えるため、処理中のパケットが多くなり、スループットが高くなります。
これは、何らかのパケットを送信するだけではなく、PuTTYがACKを待機していることが原因のようです(winscpが実行する処理)。
その他のテスト:
ctcp (de)activated - no change
rtt to ack winscp = 100ms
irtt winscp no info
rtt to ack pscp = 50ms
irtt pscp = 40ms
winscp: window scaling status: unknown (-1)
pscp: window scaling status: disabled(-2)
私はもっとテストしたいと思いますが、何をテストするかわからないので、試して、監視してください。
WinSCPはPuTTYコードを内部で使用します。したがって、選択した暗号化アルゴリズムに違いはありません。
WinSCPはPuTTYコードに加えていくつかの最適化を採用していますが、特により大きな内部およびネットワークバッファーです。これは、特定の場合にスループットを向上させるのに役立ちます。
いくつかの参照:
https://winscp.net/tracker/615
https://winscp.net/tracker/69
https://winscp.net/tracker/127
https://winscp.net/tracker/1295
「TCPプッシュ」フラグについて:
これはおそらく、WinSCPがソケットで Nagleのアルゴリズム を無効にしているのに対し、PuTTY転送ツールは無効にしていないためです(PuTTY自体はそうです)。
両方のアプリケーションがデータをソケットにできるだけ早くプッシュするため、ネットワーク層がパケットを遅延させる理由がないようにする必要があるため、合理的なネットワークでは、これが問題にならないことを願っています。そして、私はこれをテストしたときにどんなネットワークにも間違いはありません。しかし、私はそれが違いを生むと一部のユーザーから報告があります。
NaTgleのアルゴリズムはPuTTY端末構成で切り替えることができますが、PuTTY転送ツール(psftpおよびpscp)では切り替えることができません。常に有効になっています。
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter4.html#config-nodelay
FAQ-WINSCP SPEED 、PLUS-WINSCPを最新バージョンに更新してください。
見積もり:
SSHを使用する場合、WinSCPのファイル転送は暗号化され、CPUに負荷がかかります。通常、BlowfishはAESよりもはるかに高速です(BLOWFISHを試してください)。圧縮をオフにした場合、以前にオンにしたことがある場合も役立ちます。
接続遅延によって速度が抑制される場合は、SFTPではなくSCPプロトコルを使用すると役立つことがあります。 SCPはレイテンシーの影響をあまり受けません。この場合、圧縮をオンにすると役立つことがあります。