September 3, 2014

Why You Should Never Again Utter The Word, “CIFS”

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.

Stephen’s Stance

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.

  • Andrew vonNagy

    But what about all those Windows 2003 servers and Windows XP clients still deployed and in use in enterprises? Yes, they are a-plenty!

    Just playing devil’s advocate :)

    Andrew vonNagy

  • http://twitter.com/INDStorage Dan Lah

    Couldn’t agree more.  I’ve found myself in meetings reverting back to SMB shares instead of CIFS shares because it does bother me a bit to use the term, and there are still a lot of people who don’t use NAS that don’t understand the acronym.  But, until EMC and NetApp change the terminology in their GUIs, it will persist.  

  • Mark

    Even Microsoft calls the family “CIFS/SMB/SMB2″ in SDC and elsewhere (I suspect the EU oversight is somewhat in play here), so why not use that as that is what everyone but Apple actually supports….

    – mark

  • Anthony Vandewerdt

    Great blog post!

    Sadly IBM GUIs also continue to use the term CIFS despite the fact that SAMBA is the code base.

  • Colin B

    When people stop referring to disk arrays as “SANs” you might stand a chance.

    As to CIFS being evil and SMB being wonderful…SMB 2.0/2.1 and their persistent handles and compound operations had an impact but it was the network stack rewrite that provided the biggest boon to Windows file shares. Once people are all finally off XP and we get to see 2.2 (Win8) in the data center maybe you’ll get over the performance and availability stigma attached but for now you would just convince the world that SMB also stinks. ;).

  • http://blog.fosketts.net sfoskett

    Considering how many “storage people” don’t know what “NAS” is, I refuse to bow to the will of the masses on CIFS! :-)

  • http://twitter.com/bjgreenberg Brian J. Greenberg

    Thank you Stephen — I feel the same way about the term ‘dark fiber’.  Remember when it meant fiber that wasn’t used – there was no light going through it?  Kind of meaningful wasn’t it.

  • http://blog.fosketts.net sfoskett

    We’ve got @NetApp on board. Now let’s have @IBMStorage change their naming, too! Down with CIFS!

  • http://twitter.com/INDStorage Dan Lah

    I disagree with you to some degree on that one – Iomega and Buffalo have helped make NAS a much more well-known name than CIFS.   That being said, I have still encountered plenty of SMB-Mid-Market companies that are a little fuzzy sometimes on SAN vs. NAS.   

  • PghMike4

     For years, MSFT updated the SMB / CIFS implementations without releasing updated specifications.  As a matter of fact, I think you can argue that they’ve never released a spec that matched any version of SMB 1 or CIFS accurately enough to use without a lot of reverse engineering.

    Once upon a time, MSFT’s goal was to destroy any Internet standards by
    making non-standard extensions to them, forcing people into using the
    MSFT implementations of those standards.  Perhaps they’ve really changed their stripes, and SMB 2′s spec is both accurate, and will be updated over time.  But it’s too early to say that MSFT really understands what a protocol specification is, much less knows how to maintain the validity of one.  Or that, should a little light bulb go off in their heads, and this understanding magically appears in their heads, that they even want to do so.

    And of course, we have the issue of whether anyone can implement SMB 2 without requiring a license from MS, and if a license is required, what type of license is required.  None of that is specified by MS today.

    In short, its way too early to declare SMB 2 anything more than another rev of CIFS.  Time will tell.

  • Jason Boche

    I get your stance on CIFS, but aren’t you the same person who spear headed the Fibre Channel over Token-Ring movement? :)

  • http://twitter.com/that1guynick Nick Howell

    I’m a NetApp’er, and I approve this message.

    (did that sound political enough?)

  • http://twitter.com/rogerluethy Roger Luethy

    Just great ! Thanks !

  • Pingback: Why You Should Never Again Utter The Word, “CIFS” « Storage CH Blog

  • Darren Ehrlich

    This is absolutely tops!!

  • http://www.rocksolidit.ca/ Rock Solid IT

    Great article, thanks for sharing.

  • Pingback: Don’t Call It A WOC: Infineta Systems « The Data Center Overlords

  • Dantalion

    SMB2 this aritcle is one year old and the most recent version of Samba is now 3.0.23 can you imagen.

  • Obdurodon

    People use “CIFS” because for years they got beaten over the head when they said “SMB”. This, in turn, happened because SMB was proprietary and CIFS was supposedly a standard. Blame Microsoft’s marketing – and perhaps their legal department – for that. Others have spent years trying to accommodate them, and it will take a while for their own insistence on “CIFS” to be undone.

  • http://twitter.com/failathon failathon

    @fc2b6bfdc72d531e23e4e14f617e0dbf:disqus SMB2 != Samba 2.x. The reference is to the protocol, not an implementation of said protocol.

  • Alex G

    Great post. And i’m only an year late reading it. Now get off my lawn!

  • Pete

    I second Obdurodon’s comments. I used nothing but “SMB” for most of my IT career, but the combination of the above, as well as Solution Providers, Manufacturers, burning in “CIFS” into the IT lexicon forced me to reluctantly adapt. Just like it sounds silly now to hear someone say, “open up the DOS prompt in Windows…” There are many definitions that get mangled in IT. Some are funny, and others are frustrating. Great article though. Keep up the good work.

  • donmontalvo

    Only misguided curmudgeons recommend CIFS.

    Most IT folks know better. Or they should. ;)

    Heck, most lowly Mac IT guys know to use SMB.

    Don Montalvo, TX

  • Pingback: SMB on steroids but CIFS lord isn’t pleased

  • Pingback: The Difference between CIFS and SMB

  • Pingback: The Difference between CIFS and SMB

  • Johann

    Thank you for this history! Just edited the first line on the Wikipedia article for SMB to clarify, since it misguidingly called CIFS the “modern dialect” of SMB.