Let me put on my “grumpy old storage guy” hat for a moment: CIFS is not the network storage protocol used by Microsoft Windows, and many other clients. CIFS is dead, and has been for many years. The protocol used to share files over a LAN by the majority of personal computers is called SMB. I wish everyone in the industry would get that through their heads.
Dear marketers: If you worked for Ford, would you off-handedly call your latest car “the Edsel”? And if you did, would you expect to still have a job the next day? It’s time to stop saying “CIFS”.
What Exactly Is CIFS And Why Was It So Bad?
Way back in prehistoric times (the mid-1980’s), IBM invented the protocol to share files over a local area network (LAN). Microsoft took this protocol, known as “server message block” (SMB), and merged it with LAN Manager, which had been codeveloped with 3Com, and released it as the preferred network storage mechanism in Windows for Workgroups.
With the Internet gaining prominence in the mid-1990’s, many companies scrambled to adopt Internet protocol (IP) rather than older standards like IPX/SPX and the NetBIOS API. As part of the Windows 95 push, Microsoft rebranded an updated version of SMB as “Common Internet File System” or CIFS. Much of the protocol was also submitted to the IETF as an Internet draft, and many other operating systems and implementations sprouted up.
“CIFS” is pronounced as “sifs”, which sounds like a communicable disease
By the year 2000, most operating systems had some sort of CIFS client support, and many included a CIFS server as well. One notable product was Samba, an open source reverse engineering of CIFS and SMB and associated protocols for UNIX systems. Other companies licensed Microsoft’s client or server source code or develop their own implementations.
SMB2 is not CIFS
Over the years, CIFS gained a bad reputation. Buggy client/server interactions, proprietary extensions, and poor performance over high latency networks (especially, ironically, the Internet) sullied its reputation. Much of this was deserved: CIFS just wasn’t intended for this kind of use, and the many and frequent modifications made by Microsoft and others didn’t help matters.
Microsoft set about writing an entirely new version of server message block (SMB), releasing the result with Windows Vista in 2006. The resulting protocol, SMB 2.0 is radically different from CIFS. SMB2 is dramatically streamlined, with much of the tacked-on cruft removed. Pipelining allows multiple requests to be batched, improving performance over high latency links, and durable file handles survive brief network outages, a frequent occurrence with wireless networks.
SMB 2.0 also adds important functionality: Symbolic links are introduced, 128 bit file handles improve performance and allow larger files, security is improved, and file properties can be cached by the client. As Windows clients adopted Vista, and Windows Server 2008 was implemented, SMB 2.0 gradually took over the Windows world.
Although the various CIFS implementations continued in widespread use, their days were numbered. SMB 2.0 was simply too good to ignore, and Microsoft released sufficient implantation details to allow fully-compatible third-party clients and servers to appear.
Today, the vast majority of NAS servers and clients support SMB 2.0, although CIFS is usually still offered as a fallback. Apple made waves when Mac OS X 10.7 “Lion” unceremoniously dumped CIFS support, but most devices were fully capable of supporting SMB 2.0 anyway. Microsoft has since introduced SMB 2.1 (in Windows 7 and Server 2008 R2) and
will soon release SMB 2.2 as part of Windows 8 has released SMB 3 as part of Windows 8 and Windows Server 2012, but that is a story for another day.
Why You Should Stop Saying “CIFS” and Start Saying “SMB”
I cringe every time I hear someone in the enterprise storage industry say the word, “CIFS”. They are almost certainly using the word incorrectly, and instead mean to refer to SMB in general or SMB 2.0/2.1 in particular. Enterprise storage marketers and engineers ought to know the difference between these protocols by now, but there’s an even more important reason for them to get the nomenclature right.
Put simply, CIFS sucks. Everyone who knows anything about storage can relate to the pain and suffering of heterogeneous CIFS implementations. Even those who have only experienced it in a homogenous Windows network have experienced slowness, incompatibility, and server disconnects. Everyone hates CIFS, so why do allegedly-technical people continue to use that inappropriate name?
Just ask yourself, “does CIFS make me look stupid?”
I imagine that many people just aren’t aware of the great strides taken in SMB 2.0, but they are really doing themselves, their companies, and the products a disservice by using that old name. This is not a minor semantic matter: By clinging to the “CIFS” moniker, the industry is holding back adoption of a much-needed and much improved alternative, SMB 2.0. When customers hear that name, they assume it will suck and start looking for alternatives, even though the alternative is already at hand.
You may think I’m overreacting, or perhaps even overacting, but I’m deadly serious: It’s time to bury CIFS once and for all. The CIFS protocol was terrible, the implementations were worse, and it’s a crime to continue using that name for something as good as SMB 2.0.