Hyper-V over SMB: SMB Multichannel
As already mentioned in my first post, SMB 3.0 comes with a lot of different supporting features which are increasing the functionality in terms of performance, security, availability and backup. Here are some quick notes about some of the features which make the whole Hyper-V over SMB scenario work, this time SMB Multichannel.
SMB Multichannel was designed to solve two problems, first make the path from the Hyper-V host (SMB Client) to the File Server or Scale-Out File Server (SMB Server) redundant and get more performance by using multiple network paths. If you are using iSCSI or Fiber Channel you use MPIO (Multipath-IO) to use multiple available paths to the storage. For normal SMB traffic you may be used NIC Teaming to achieve that. SMB Multichannel is a much easier solution which offers great performance. SMB Multichannel will automatically make use of different network adapters which are configured with different IP subnets.
In my tests and the environment I have build for customers, I have seen great performance with SMB Mutlichannel. It works “better” as NIC Teaming because most of the time you just get one active network interface except you use LACP and stuff like which requires the configuration of network switches with cheap switches you may lose redundancy. The same with MPIO, MPIO most of the time works great but you can sometimes not get the performance you should get in an active/active configuration. With SMB Multichannel I can simply bundle two or even more NICs together and Multichannel will make use of all of them.
Btw. SMB Mutlichannel is also a must have if you are using RDMA NICs, because of the redundancy you only get with SMB Multichannel.
SMB Mutlichannel and NIC Teaming
SMB Mutlichannel does also work in combination with Windows Server NIC Teaming. But the feature SMB Direct (RDMA) does not allow you to use NIC Teaming or the Hyper-V Virtual Switch, because you would loose the RDMA functionality.
How do you setup SMB Multichannel?
Well the setup of SMB Multichannel is quite easy because it’s enabled by default, but there are some things you should now about SMB Multichannel for designing your environment or just to troubleshoot an installation.
Verify SMB Multichannel
Verify that SMB Multichannel is active on the client
Get-SmbClientConfiguration | Select EnableMultichannel
Verify that SMB Multichannel is active on the server
Get-SmbServerConfiguration | Select EnableMultichannel
You can also disable or enable Mutlichannel if you need to.
Set-SmbServerConfiguration -EnableMultiChannel $false
Set-SmbClientConfiguration -EnableMultiChannel $false
Set-SmbServerConfiguration -EnableMultiChannel $true
Set-SmbClientConfiguration -EnableMultiChannel $true
To see if all the right connections are used you can use the following commands on the client to see all the SMB connections and verifiy that all SMB Mutlichannel connections are open and using the write protocol version.
SMB Mutlichannel Constraint
Another thing you have to know about SMB Mutlichannel is how you limit the SMB connection to specific network interfaces. For example, you have a Hyper-V hosts which has an 1 gigabit network adapter for management and stuff and you have two 10Gbit (or greater) RDMA interfaces which should be used for the connection to the storage, you want to make sure that the Hyper-V hosts only uses the RDMA network interface to connected to the storage. With a simple PowerShell cmdlet you can limit the Hyper-V host to only access a file shares with the RDMA interfaces.
- Fileshare where the Virtual Machines are stored: \\SMB01\VMs01
- Name of the 1 GBit network interface for Management and stuff: Management
- Name of the RDMA interfaces: RDMA01 and RDMA02
New-SmbMultichannelConstraint -InterfaceAlias RDMA01, RDMA02 -ServerName SMB01
Make sure you run this on every Hyper-V host, not on the SMB file server.
Well there is a little bit more behind SMB Multichannel but this should give you a great jumpstart into this feature. If you want to know more about SMB Multichannel checkout Jose Barretos (Microsoft Corp.) blog post on The basics of SMB Multichannel.