Samba

Myths About Samba

~by Andrew Tridgell

Originally published on Groklaw.

There have been a number of press reports lately that discuss the techniques used in developing Samba, and that refer to those techniques as "reverse engineering". That term is quite misleading, and does not at all accurately reflect the techniques that the Samba Team actually use. I think that it is time to describe again the techniques that we actually use, and to dispel some other common myths about Samba development.

Myth 1: dissecting the waiter

Classical reverse engineering techniques in software engineering revolve around the use of disassemblers, debuggers and other object code analysis tools to examine directly the executable code of an existing product in order to create a "clone" that behaves in the same way. While these venerable techniques have been successfully used by many groups, they are not what we use in the Samba project.

Apart from the fact that these techniques often lead to very poor code in a new implementation, in the Samba Team we are very conservative when it comes to techniques that might be legally controversial.

For people who aren't software engineers I usually use the "French Cafe" analogy to describe the techniques that are really used in the development of Samba. You can see the original French Cafe description at: http://samba.org/ftp/tridge/misc/french_cafe.txt

I suggest you go and read the French Cafe description now, then come back, as the rest of this paper won't really make any sense until you have read it.

I originally wrote that paper as part of a submission made by the Samba Team to the European Commission Microsoft anti-trust trial. The aim was to make the techniques used by the Samba Team more easily understood by judges who might not be familiar with software engineering techniques.

Extending that analogy a little, I think it would be fair to say that classical reverse engineering techniques would be like taking a scalpel and dissecting the waiter. It might indeed be possible to find out how the waiter "works" from a biological perspective by using a scalpel, but it is also possible to find out what you need to know by just talking to the waiter, as long as you are persistent. The Samba Team has been "talking to the waiter" for thirteen years now, and it might be fair to say that we know more about his job than he does himself.

For future reference, the terms we usually use to describe what we do in developing Samba are "network analysis" or "protocol analysis". If you see someone describing Samba as "reverse engineering" then please ask them to use these terms instead, or point them at this paper.

Myth 2: which came first?

Many people incorrectly see Samba as being a "clone" of WindowsNT. A quick check of history will confirm that the very idea is absurd. I first released Samba in January 1992, whereas the first release of WindowsNT was in August 1993. Unless you also credit me with inventing time travel, it is difficult to see how I could have been aiming to produce a "clone" of WindowsNT.

Furthermore, I didn't find out that Samba inter-operated at all with any version of DOS or Windows until nearly two years after I did that first release. The earliest versions of Samba were aimed at being compatible with clients for the Digital Equipment Corporation "Pathworks" product suite, which was an early implementation of the SMB protocol that was quite popular at the time, and that ran on Ultrix and VMS systems. My initial motivation was to implement the same protocol on SunOS, so that I could use my desktop system to access the departmental Unix server.

These days we obviously take great care to ensure that Samba is as compatible as possible with current Microsoft Windows clients. That is absolutely essential, as their monopoly market position in desktop operating systems means that Samba is used with Microsoft clients more than any other client. That doesn't mean we ignore other clients that implement the SMB protocol, it just means that we test against Microsoft clients more often than we test against other clients.

Myth 3: who invented CIFS?

Another common myth is to assume that Microsoft "invented" the protocols that Samba implements. To understand how wrong this is you need to know a little bit of history.

The protocol that Samba implements was first invented by Barry Feigenbaum at IBM in early 1983. He initially called it the "BAF" protocol after his initials, but changed the name to "SMB" before the first official release. You may note that the name "Samba" contains the letters "SMB", and that is not a coincidence.

The term "CIFS" or "Common Internet File System" was coined by Microsoft in 1996 as a marketing exercise in an attempt to combat a perceived threat from Sun Microsystems after their WebNFS announcement. The term caught on, and now the SMB protocol is often called CIFS. The two names refer to the same protocol, as is easily demonstrated by connecting a current Microsoft "CIFS" client to a Samba "SMB" server from 1992.

It should also be noted that SMB/CIFS is an evolving protocol. The original design by Barry Feigenbaum deliberately allowed scope for protocol extensions, and a number of groups have taken advantage of this over the years. The largest set of extensions have been made by Microsoft, but some quite substantial extensions have been made by other groups, including SCO, Thursby, IBM, Apple and the Samba Team.

It might be worth noting that of all these extensions, only Microsoft has kept some (but not all) of their additions secret. It is also important to note that in many cases Microsoft clients do not operate correctly with servers that do not implement the Microsoft extensions. That is, fundamentally, why we need to use the "network analysis" techniques described above.

From 1996 until about five years ago Microsoft played a leading role in the effort to standardize the SMB/CIFS protocol. They started the annual CIFS conference series that continues today, they started the effort to create an IETF standard for the protocol and they ran a public discussion list on all aspects of the protocol. For reasons that we still don't fully understand, they have since withdrawn from all of these activities, and now appear to be actively hostile to open standards efforts.

Despite this change of heart on behalf of the biggest player, the CIFS conferences and plug-fests have continued with the help of the Storage Network Industry Association, and with the Samba Team playing a leading technical role, alongside industry heavyweights such as Network Appliance and EMC.

Where to now?

I still hold out hope that Microsoft will someday rejoin the SMB/CIFS developer community by attending the annual conference and plug-fest. A lot has happened since they stopped attending, including the development of a comprehensive test suite that covers most of the protocol. Microsoft is doing its customers a great disservice by ignoring the opportunity to work with other industry members, and could certainly benefit from attending the plug-fest and learning about the extensive protocol test suites that are now available.

If anyone from Microsoft is reading this, then I encourage you to look at http://www.cifs2005.org/ and seriously think about sending someone with the technical knowledge to discuss what has been happening in the last few years.


Andrew Tridgell (tridge at osdl.org)

Donations


Nowadays, the Samba Team needs a dollar instead of pizza ;-)

Beyond Samba

Commercial Support

Global · By Country

Conferences

sambaXP by SerNet

SDC by SNIA

Releases

Current stable release

Samba 4.20.0 (gzipped)
Release Notes · Signature

Release History

Versions & Notes

Maintenance

Patches · Security Updates · GPG Key

Future

Release Planning · Roadmap