A blog by Jose Barreto, a member of the File Server team at Microsoft.
All messages posted to this blog are provided "AS IS" with no warranties, and confer no rights.
Information on unreleased products are subject to change without notice.
Dates related to unreleased products are estimates and are subject to change without notice.
The content of this site are personal opinions and might not represent the Microsoft Corporation view.
The information contained in this blog represents my view on the issues discussed as of the date of publication.
You should not consider older, out-of-date posts to reflect my current thoughts and opinions.
© Copyright 2004-2012 by Jose Barreto. All rights reserved.
Follow @josebarreto on Twitter for updates on new blog posts.
One smart MVP was doing some testing and noticed that SMB Multichannel did not trigger immediately after an SMB session was established. So, he asked: How much traffic needs to pass between the SMB Client and Server before Multichannel actually starts?
Well... SMB Multichannel works slightly different in that regard depending on whether the client is running Windows 8 or Windows Server 2012.
On Windows Server 2012, SMB Multichannel starts whenever an SMB read or SMB write is issued on the session (but not other operations). For servers, network fault tolerance is a key priority and sessions are typically long lasting, so we set up the extra channels as soon as we detect any read or write.
SMB Multichannel in Windows 8 will only engage if there are a few IOs in flight at the same time (technically, when the SMB window size get to a certain point). The default for this WindowSizeThreshold setting is 8 (meaning that there are at least 8 packets asynchronously in flight). That requires some level of activity on the SMB client, so a single small file copy won't trigger it. We wanted to avoid starting Multichannel for every connection from a client, especially if just doing a small amount of work. You can query this client setting via "Get-SmbClientConfiguration". You can set it with "Set-SmbClientConfiguration -WindowSizeThreshold n". If you set it to 1, for instance, to have a behavior similar to Windows Server 2012.
Even after SMB Multichannel kicks in, the extra connections might take a few seconds to actually get established. This is because the process involves querying the server for interface information, there's some thinking involved about which paths to use and SMB does this as a low priority activity. However, SMB traffic continues to use the initial connection and does not wait for additional connections to be established. Once the extra connections are setup, they won't be torn down even if activity level drops. If the session ends and is later restarted, though, the whole process will start again from scratch.
You can learn more about SMB Multichannel at http://blogs.technet.com/b/josebda/archive/2012/06/28/the-basics-of-smb-multichannel-a-feature-of-windows-server-2012-and-smb-3-0.aspx