About feature additions in macOS for SMB 2 and 3
Learn which SMB features were added in each version of macOS.
This article is intended for enterprise and education network administrators.
Microsoft creates and maintains the Server Message Block (SMB) Protocol. Here are notable features added to Apple's implementation of SMB in macOS when the Mac is a client. Unless stated otherwise, each feature described below was introduced in that version and maintained in later versions.
macOS Catalina 10.15
Feature | Description |
---|---|
Adaptive pipelining improvements | Pipelining allows for varying segment numbers and sizes, while retaining multithreading. |
Pipelining writes, or uploads | Maximum number of segments: 6 Maximum segment size: 1 MB |
Pipelining reads, or downloads | Maximum number of segments: 6 Maximum segment size: 1.25 MB |
Persistent handles | Continuously available servers use persistent handles. Continuously available servers appear to be a single server, but are in fact multiple nodes mirroring the data, allowing the share to remain up continuously. This is common in cloud and cluster setups. If any one node becomes unavailable, the persistent handle is used to connect to a different node. |
Time Machine server requirements adjusted | Any server that is continuously available can be used as a Time Machine backup destination. |
Netbios name resolution deprioritized | Name resolution now uses Bonjour, then DNS, then NetBios. macOS used to prioritize Bonjour, then NetBios, then DNS. |
SMB 1 always uses signing bit | The signing bit when connecting via SMB 1 used to be optional. |
macOS Mojave 10.14
Feature | Description |
---|---|
Adaptive pipelining improvements | Pipelining is now multithreaded but uses a fixed number and size of segments. |
Pipelining writes, or uploads | Number of segments: 4 Segment size: 1 MB |
Pipelining reads, or downloads | Number of segments: 4 Segment size: 512 KB |
macOS High Sierra 10.13
Feature | Description |
---|---|
Simplified Finder browsing | Finder can be adjusted to browse the contents of folders faster. |
Directory leasing | Directory leasing lets the client to better cache directory enumeration information. |
File leasing | File leasing lets the client to better cache file data locally and reopen files more quickly through deferred closure of files. |
Adaptive pipelining | Rather than using a set number of segments, macOS adjusts the number of segments dynamically to upload or download automatically based upon network conditions. macOS also adjusts the size of each segment automatically, improving performance. |
Pipelining writes, or uploads | Maximum number of segments: 4 Maximum segment size: 512 KB |
Pipelining reads, or downloads | Maximum number of segments: 4 Maximum segment size: 1 MB |
masOS Sierra 10.12
Feature | Description |
---|---|
Durable handle v2 and file lease v2 | Durable handles and leasing let a client reconnect to a share and continue working on a file without losing data. The v2 of leasing and durable handles allows the reconnect feature set to be used more reliably. |
Time Machine | macOS can back up to servers that support the needed features. |
macOS El Capitan 10.11
Feature | Description |
---|---|
Load balancing servers via DNS | In some environments, multiple servers are hosting the same data, and load balanced by round robin DNS. One DNS "A" record points to multiple IP addresses. macOS evaluates and uses currently mounted shares rather than remounting the same share repeatedly, once per IP address. |
Pipelining writes, or uploads | Number of segments: 4 Maximum segment size: 512 KB |
Pipelining reads, or downloads | Number of segments: 4 Maximum segment size: 1 MB |
Directory caching | macOS caches contents of a directory for up to one minute after ceasing to browse, which lets an end user browse out and back into a directory without having to redownload the contents. |
masOS Yosemite 10.10
Feature | Description |
---|---|
SMB 3 is introduced | macOS adds support for the SMB 3.0 and 3.0.2 dialects. |
Validate negotiate | This is an additional security feature in SMB 3 that helps ensure that the initial negotiations aren't modified. |
SMB 3 signing | Security signatures are sent in each request. |
SMB 3 encryption | Traffic between the client and server can be encrypted. |
macOS Mavericks 10.9
Feature | Description |
---|---|
SMB 2 is introduced | Before Mavericks, only SMB 1 is supported. Mavericks adds support for SMB versions 2.0.2 and 2.1. Mounting a share using "cifs://" will use SMB 1. |
Symbolic link reparse points | Symbolic link reparse points seamlessly redirect a user from a file or folder to another location. |
Distributed File System (DFS) | DFS lets users connect to multiple servers using only a single DNS name. |
Compound requests and replies | More than one related request or response can be sent in a single packet. |
SMB 2 signing | Security signatures are sent in each request. |
Copy chunk | The SRV_COPYCHUNK_COPY command is used to request that a server copy data from and to itself without macOS downloading the data first. |
AAPL create context | AAPL is Apple's extension to the SMB protocol to better support macOS semantics. Using the AAPL create context indicates that the extension is in use. |
Durable Handles | Durable handles let clients reconnect to shares without losing data. |
Local Kerberos authentication (LKDC) | If an SMB server is also the KDC (key distribution center), macOS can authenticate using Kerberos without reaching out to additional servers. This is used primarily when macOS is authenticating to a macOS hosted share. |
Pipelining | Pipelining allows for asynchronously transferring sections of a file. If a file is 10 MB large, the file can be sent in ten different chunks, each 1 MB large. However, with pipelining, multiple segments may be sent at one time without waiting for a transfer to complete, which speeds up transfers. SMB 2.0 and earlier allows for segments up to 64 KB large. SMB 2.1 allows for larger segments. |
Pipelining writes, or uploads | Number of segments: 2 Maximum segment size: 512 KB |
Pipelining reads, or downloads | Number of segments: 4 Maximum segment size: 1 MB |
More resources
View Apple's SMB directory.