Blog

Home  /  Server Message Block SMB   /  History of SMB

History of SMB

SMB was originally created by IBM and was used by Microsoft in its LAN Manager product during the mid-1990s. SMB 1.0 was  renamed CIFS (Common Internet File System) and Microsoft submitted some partial specifications to IETF as drafts, though these submissions have since expired.

The initial implementation of SMB/CIFS had numerous  issues that made SMB fit only for managing small files for end users. The protocol was “chatty” due to which performance over distance or where there was latency between client and server was not good.  Around this time the Samba project originated with the aim to reverse engineer the SMB/CIFS protocol and create an SMB server  to allow MS-DOS clients  to access files on Unix machines.

SMB 2.0

Microsoft released SMB2 with Windows Vista in 2006. SMB2.0  had a significant number of improvements over SMB 1.0 partcularly reducing the “chattiness” of the protocol by reducing the number of commands and subcommands from hundreds to nineteen.

The term CIFS become redundent, as it only applied to SMB version 1.0

SMB2 supported many other improvements like  TCP window scaling and WAN acceleration, opportunistic locking, and a feature known as “pipelining” to enable multiple requests to be queued at the same time.

Performance improvements involved allowing larger block sizes thus improving large file transfers. Microsoft introduced “durable file handles” which allowed the connection to an SMB server to  survive  brief network failure frequently seen in wireless networks by allowing clients to transparently reconnect to servers.

SMB 2.1 was released with Windows 7 and Windows Server 2008 and had minor improvements

SMB 3.0

SMB 3.0 (also known as SMB 2.2) was released with Windows 8 and Windows Server 2012. SMB3 introduced major changes in the protocol such as,  the SMB Direct Protocol (SMB over RDMA) and SMB Multichannel (multiple connections per SMB session),that are intended to add functionality and improve SMB2 performance, notably in virtualized data centers.