Pourquoi FileZilla est-il tellement plus rapide que PSFTP?


11

J'utilise FileZilla 3.10.3 et PSFTP 0.63 (PuTTY). Quelqu'un peut-il m'aider à comprendre pourquoi le débit que j'obtiens est si radicalement différent entre les deux clients? Cela ne peut pas être simplement une lacune du protocole SFTP, car FileZilla (et WinSCP) est tellement plus rapide! Merci d'avance.

Lorsque j'utilise FileZilla pour me connecter au même serveur en utilisant un certain protocole, j'obtiens un "bon" débit; ~ 1,2 Mbps pour un gros fichier. Voici le journal:

Response: fzSftp started, protocol_version=2
Command: open "mecorp@ftp.themcorp.com" 22
Trace: Looking up host "ftp.themcorp.com"
Trace: Connecting to 222.22.111.33 port 22
Trace: We claim version: SSH-2.0-PuTTY_Local:_Mar_29_2015_12:25:15
Trace: Server version: SSH-2.0-9.99 sshlib: 8.1.0.0
Trace: Using SSH protocol version 2
Trace: Doing Diffie-Hellman group exchange
Trace: Doing Diffie-Hellman key exchange with hash SHA-1
Trace: Host key fingerprint is:
Trace: ssh-dss 1024 20:88:a6:92:fe:11:db:b4:9a:b5:9e:8b:5f:50:bb:77
Trace: Initialised AES-256 SDCTR client->server encryption
Trace: Initialised HMAC-SHA1 client->server MAC algorithm
Trace: Initialised AES-256 SDCTR server->client encryption
Trace: Initialised HMAC-SHA1 server->client MAC algorithm
Command: Pass: ********
Trace: Sent password
Trace: Access granted
Trace: Opening session as main channel
Trace: Opened main channel
Trace: Started a shell/command
Status: Connected to ftp.themcorp.com
Trace: CControlSocket::ResetOperation(0)
Status: Starting upload of c:\temp\test.zip
Command: cd "/Home/mecorp"
Response: New directory is: "/Home/mecorp"
Trace: CControlSocket::ResetOperation(0)
Trace: FileTransferSend()
Command: put "c:\temp\test.zip" "test.zip"
Status: local:c:\temp\test.zip => remote:/Home/mecorp/test.zip
Trace: FileTransferParseResponse()
Trace: CControlSocket::ResetOperation(0)
Status: File transfer successful, transferred 27,974,088 bytes in 21 seconds

Lorsque j'utilise PSFTP pour me connecter au même serveur en utilisant le même protocole et en transférant le même fichier, j'obtiens un débit beaucoup plus lent. J'évaluerais environ 150 kbps (en regardant les octets d'E / S dans le gestionnaire de tâches de Windows 7). Voici le journal:

C:\temp>c:\d2\trunk\Util\psftp.exe -v -l mecorp -pw topsecret -P 22 ftp.themcorp.com
Looking up host "ftp.themcorp.com"
Connecting to 222.22.111.33 port 22
Server version: SSH-2.0-9.99 sshlib: 8.1.0.0
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.63
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-dss 1024 20:88:a6:92:fe:11:db:b4:9a:b5:9e:8b:5f:50:bb:77
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Using username "mecorp".
Sent password
Access granted
Opening session as main channel
Opened main channel
Started a shell/command
Connected to ftp.themcorp.com
Remote working directory is /Home/mecorp
psftp> put test.zip test.zip
local:test.zip => remote:/Home/mecorp/test.zip
psftp>

Réponses:


23

FileZilla utilise un code source PuTTY / psftp pour une implémentation SFTP. En fait, FileZilla exécute un sous-processus PSFTP caché.

Mais il utilise sa propre version de PSFTP ( FzSFtp.exe) qui utilise peu d'optimisations (et d'autres modifications), notamment:

  • La file d'attente de transfert SFTP est de 4 Mo (contre 1 Mo dans PSFTP)
  • Alloue de la mémoire en segments beaucoup plus grands (32 Ko par rapport à 515 B)
  • Utilise de grands tampons réseau (4 Mo pour SO_RCVBUF et taille dynamique pour SO_SNDBUF [en utilisant SIO_IDEAL_SEND_BACKLOG_QUERY]). PSFTP conserve les valeurs par défaut du système.

FileZilla utilise également un compilateur (mingw) différent de PuTTY (VS), ce qui peut contribuer.


WinSCP est également basé sur le code PSFTP (bien qu'il utilise le code PSFTP en interne, pas dans un sous-processus externe) et utilise un ensemble similaire d'optimisations.


4
Très instructif, Martin, et merci pour WinSCP!
Chris
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.