Best file sharing protocol for Windows clients?

I want to share files on a Linux server with Windows 7 clients. I have a choice between multiple file sharing protocols: SMB/CIFS, FTP, WebDAV, NFS… question is: which one is the best for my needs?

Here are my criteria:

  • High performance on fast links (LANs), usable on slow links (WANs). Raw throughput is the most important, though high random performance would be nice (random read/writes, opening a lot of files…). On Gigabit LANs I want to be able to saturate my network link and I want it to feel like I'm using a local drive. On WANs I expect low overhead so it can accomodate high latency and make good use of the available network bandwidth.
  • Transparency for applications, i.e. mountable as a drive letter or close.
  • Security and firewall-friendly are bonus (as long as I can tunnel it over a VPN).

SMB/CIFS is slow over WANs, FTP doesn't seem very transparent, and it seems all Windows NFS clients are ugly and lack important functionality such as correct support for Unicode in file names. I didn't try WebDAV yet.

So, what's your stance on the subject? I'm not opposed to using two different protocols for LAN and WAN but I'd prefer to avoid it for usability reasons.


Solution 1:

You only have a couple really good options. You are correct about SMB/CIFS over WAN, it is not the most efficient. The main benefit of going with SMB/CIFS, is to avoid a regular client/server architecture. The downside of having a decentralized architecture is inefficiency, which becomes more noticeable the more nodes connected. If you demand a decentralized setup over WAN/LAN, SMB/CIFS would be the only way to go. Also, SMB/CIFS over WAN is not recommended for security concerns.

I would prefer NFS in an all, or mostly, Linux LAN, Especially in a situation that is always connected, like shared home directory. NFS over WAN is nasty in regards to firewalls. It can be done and I have done it, but it is more then just opening a port. NFS really is a great choice when you want a NAS type setup.

If you are OK with a client/server model, I highly recommend WebDAV. You get automatically supported read (regular HTTP web-browser), easy firewalling with just one port (80 and/or 443), and solid performance.

FTP has its advantages, but over WAN you would want FTP with explicit SSL. FTPeS is newer, not all FTP clients supports it. Modern clients will, like a new copy of filezilla. But once again, firewalling is more then just popping a port open.

You really can't get more transparent then HTTP IMO. It's also what I do for my WAN/LAN, I even prefer it for just my regular LAN transfers.