FTP / FTPS / SFTP / SCP – 速度比较

FTP,FTPS,SFTP和SCP如何在传输速率方面进行比较,以及如何通过testing来比较它们?

如果你有一个快速的networking,你会发现sftpscp的速度sftp ,速度很慢。 他们都遭受性能问题的底层openssh。 使用现代硬件,这不是由于encryption开销,而是由于openssh实现的问题 – 它实现了自己的内部窗口机制,在快速连接中出现故障。

这些问题在长距离(更高延迟)的连接上变得更加明显,但是即使在局域网上我也经历了缓慢。

这些都是有据可查的,补丁可以解决这个问题。 修补连接的任何一端可以帮助; 理想情况下,你会补丁两端。 有关更多信息和补丁,请参阅匹兹堡超级计算机中心的高性能SSH 。

顺便说一句,encryption开销也可能成为一个问题,一旦窗口问题得到解决。 补丁也修复了这一点。

同时,你会发现ftp是非常不安全的; 它以纯文本格式发送密码。

ftps我认为在SSL中包装ftp协议。 它可能比未修补的SFTP / SCP更快。

最后一个注意事项:根据我的经验,WinSCP客户端(至less有时)是痛苦的缓慢。 我不知道为什么,但根据他们的常见问题,我不是唯一有这个问题的人。 所以,如果你从Windows上scp'ing,似乎很慢,尝试一个不同的客户端。 即使是没有打补丁的openssh服务器,使用不同的客户端也可以做得更好。 不幸的是,我不确定哪些是好客户。

一般来说,所有协议的性能大致相同。 你更可能受networking或磁盘速度的限制,而不是协议。

较早版本的OpenSSH(SFTP / SCP)使用固定的窗口大小,这将限制高延迟networking(比如跨大西洋)的速度。 有一个补丁可以解决这个问题,称为HPN(高性能networking),它被包含在大多数现代安装的OpenSSH中。

如果您正在运行一个千兆位或更快的局域网连接和较慢的CPU,则SFTP / SCP可能会遇到瓶颈。 您将能够知道,因为ssh / scp / sftp进程将使用发送或接收主机上的CPU的100%。 如果您使用的是较新版本的OpenSSH(6.4+),则可以启用AES密码的线程版本,以便能够使用多个核心来处理encryption,并且不太可能受CPU而不是磁盘的限制或networking带宽。

如果您同时控制发送方和接收方,OpenSSH 6+也有一个可选的“NONECIPHER”模式。 这使用常规的encryption/密钥等login到远程机器,但然后下降到一个未encryption的连接实际的文件复制。 这将消除CPU的开销。 NONECIPHER内置的防护措​​施比防止未经encryption的shell得到保护。

最后,协议不应该是速度上的限制,虽然老版本的ssh确实有高延迟链接的问题。

基于encryption开销,我会说普通的FTP可能比其他协议稍微好一点,但它可能可以忽略不计。 我会使用提供您需要的安全性的协议,然后担心吞吐量。

这就是说,你必须build立一个testing,以find真正的数字。 以上的一切只是我的意见。 如果您要在本地testing性能,请在您的networking上设置一个服务器。 如果最终用途将通过互联网,则从外部主机进行testing。

与往常一样,谷歌有答案,
FTP v / s SFTP v / s FTPS
哪个说FTP> FTPS> SFTP
在其他人的testing中,FTP似乎也比SCP更快( http://www.lysesoft.com/support/forums/viewtopic.php?f=5&t=542 ),但我build议您尝试一下。
因此,只需在networking上的任意一个随机框上设置SCP和FTP,然后运行典型的文件传输,然后查看两者都需要多长时间