SSL FTP on macOS is very slow

+1 vote
asked Aug 21, 2018 by peterw (130 points)

I was referred to this site by Royal TSX customer support. They are using the Rebex libraries for FTP.
I experience very slow up and download speeds when using SSL, I think the slowest one being the explicit option. This is only on macOS, not on Windows, where speed is just fine.
Without SSL the Mac is downloading at 50MB/sec, with explicit SSL, downloading is going a only 1 to 1.5 MB/sec.

Because I thought the problem seemed to be platform related, and the people from Royal TSX are just using your libraries, I decided to test for myself. I downloaded Visual Studio for Mac, downloaded a demo of your library, opened the project "FtpGetPut_CS" which is in the samples folder and ran it from the IDE with the external console so I could enter a login and password.

Results were as I feared. With the "none" option, the download is much much faster. It seems to me there is something wrong with your implementation on macOS, when using FTP over an SSL connection.
Can you please look into this?

Applies to: Rebex FTP/SSL

1 Answer

0 votes
answered Aug 21, 2018 by Lukas Pokorny (96,370 points)
edited Aug 21, 2018 by Lukas Pokorny

If you are Royal TSX customer and have no intention of purchasing a Rebex product, please report issues such as this to Royal TSX customer support (who can then get in touch with us according to the terms of their support contract). Direct provision of support services by Rebex to Royal TSX customers is not part of our support contract with Royal TSX developer.

Regardless, we can offer some advice for Rebex customers who stumble upon this issue.

  • Mono seems to be slower than .NET Framework in most scenarios, and old versions of Mono are slower than new versions. Make sure you use a recent version of Mono. However, when using Rebex libraries on Mono/macOS, measured transfer speeds are usually lower than on .NET/Windows.
  • On Mono/macOS, some symmetric ciphers are implemented in managed code. On Windows, much faster native implementations provided by Windows CryptoAPI or CNG API are used instead. Disabling AES/GCM ciphers on non-Windows platforms often improves transfer speeds.
  • Setting Ftp.Settings.UseLargeBuffers to true might improve transfer speeds as well.
commented Aug 22, 2018 by peterw (130 points)
Wow. That first paragraph in bold. Relax Lukas. If I download a demo version and try something out, that makes me technically a prospect. If I am installing VS Mac and even compile test code, I'm more than a customer of your customer, I'm a cross platform  developer myself, allthough I had not tried out this new approach. I had only used VS Windows for C/C++ development, and Xojo when I want to have simple common base code. So I am really interested in this product, or I would not even consider doing these tests.

Because Felix from Royal TSX had trouble reproducing these big speed differences, we agreed that it would be a good idea to ask you guys what could be the problem.

Regardless, thanks for your advice.

As I understand from your answer,  Mono/.NET Core/macOS/C# is not fast enough. Let's hope it ever will be. And disabling AES/CGM ciphers could improve speed.
Earlier, I tried to use large buffers, but that didn't help.

commented Aug 22, 2018 by Lukas Pokorny (96,370 points)
I'm sorry if I come off as rude. Sorry! The first paragraph should have been directed at Royal TS, not at you. Of course, if you are interested in acquiring a Rebex license, that makes you a prospective customer.

On the other hand, if we agreed to support customers of our customers directly, we would quickly get into a very unfortunate situation. Our products are royalty-free and a single-developer Rebex Total Pack license with support contract costs just $450 a year for existing customers. The math is simple - we cannot afford to directly support an unlimited number of customers for only $450 a year.
commented Aug 23, 2018 by peterw (130 points)
Of course. I understand.