Next Vid in Queue (Patreon)
Content
Please let us know your feedback!
Here's a preview of that article:
What is SMB Multichannel and Why Should I care?
Do you want to double your LAN speeds for file shares simply by plugging in 2/3/4 or more wires? Use windows machines? Then read up. Maybe I should make this a video. It is mentioned briefly when I review a Thecus product that implements multichannel in a slick way.
SMBMultichannel is a protocol improvement to windows file sharing best found on Windows Server 2012R2 and Windows 8.1 and up. However recent improvements to Windows 10 have made it easier than ever to get SMBMultichannel working. What it does is let you use more than one network adapter (with more than one IP on your local subnet) simply by plugging in another network card. You don't have to do any software config (that's the promise allthrough it's not entirely true), does not require a special ethernet switch or any configuration on the switch at all, and also simultaneously lowers CPU uage.
It is important to understand that SMBMultichannel has some hooks into important hardware stuff happening under the hood. If you aren't arware how it works under the hood, it will seem random as to when it works and when it doesn't. One of the things windows tries to do, if you hardware supports it, is something called Recieve Side Scaling. This isn't *just* increasing the buffer of packets that can be recieved before acknowledgements are sent (something sender + reciever have to agree on), but it is also about offloading interrupts to the CPU when events occur, like data buffer full, to a specific core on the CPU so that the other cores on the CPU can continue to work independently.
When you run get-smbclientnetworkinterface for example, the RSS Capable line here may indicate false (for example on the i217/i218/i219v) even though the intel spec sheet says that RSS capable is true for this chipset. This leads to the somewhat humorous situation where when some motherboards that also implement the i210/i211 PCIe NIC onboard, that this nic is more functional in terms or RSS and interrupt offloading than the one provided "built-in" to the intel CPUs. This technology is called MSI-X.
In the case of i219/i218/i217 chipsets, the core that handles the ethernet is essentially hard wired to one core; it cannot be remapped to other cores. So some would say that Intel saying this PHY being capable of RSS is misleading, wrong and has led to loads of heartburn and angst. It is a somewhat fixable situation in the case of gigabit though!
In EARLIER scenarios, with the first versions of SMB 3.02, Windows 8, and Windows 2012, it was important that each nic be on its own TCP Subnet so that things like LM broadcast name-to-IP lookups returned different IPs (that is no longer the case). This was great, though, because it meant even the most rock-dumb-stupid ethernet adapters would work with multichannel -- no harwdare counterpart required! The recent Threshold updates to Windows 10 mean more of this is handled in the protocol and so DNS lookups and the like matter less than ever. It is still the case that you may be in a situation where your hardware is in a mode where it somewhat supports multichannel, but it doesn't work. So you have to be aware that there is this situation with No-RSS (which is really more properly named No MSI-x) which is a mode where you have some RSS support, but not complete RSS support, and it doesn't work. It does NOT auto fall back to this rock-dumb-simple mode (!) because it uses considerably more CPU overhead.
There isn't a single guide on the internet that explains this properly unless you've already got a lot of knowledge for how this works in business.
EXAMPLE:
PS C:\WINDOWS\system32> Get-SmbClientNetworkInterface
In each of these examples:
Interface Index RSS Capable RDMA Capable Speed IpAddresses Friendly Name
--------------- ----------- ------------ ----- ----------- -------------
3 False False 1 Gbps (ipv4,ipv6 addresses} Ethernet 2
(random other intefaces you may have)
12 False False 1 Gbps {ipv4,ipv6 addresses} Ethernet
PS C:\WINDOWS\system32> Get-SmbClientNetworkInterface
Interface Index RSS Capable RDMA Capable Speed IpAddresses Friendly Name
--------------- ----------- ------------ ----- ----------- -------------
3 False False 1 Gbps {ipv4,ipv6 addresses} Ethernet 2
(random other intefaces you may have)
12 False False 1 Gbps {ipv4,ipv6 addresses} Ethernet
Note that these two examples are Intel i218v + i210 and i218v + Realtek gigabit whatever. And multichannel IS WORKING.
So for you, it SHOULD work even though RSS capable is FALSE for both adapters. You can copy a large file and then run:
PS C:\WINDOWS\system32> Get-SmbMultichannelConnection
and see:
Server Name Selected Client IP Server IP Client Interface Index Server Interface Index Client RSS Capable Client
RDMA
Capable
----------- -------- --------- --------- ---------------------- ---------------------- ------------------ --------
server True {your ip1} {server ip} 3 14 False False
server True {your ip2} {server ip} 12 14 False False
However, if you see this:
Interface Index RSS Capable RDMA Capable Speed IpAddresses Friendly Name
--------------- ----------- ------------ ----- ----------- -------------
3 True False 1 Gbps {ipv4,ipv6 addresses} Ethernet 2
(random other intefaces you may have)
12 False False 1 Gbps {ipv4,ipv6 addresses} Ethernet
Your configuration will attempt to use ONLY MSI-X resources for multichannel. Meaning it will NOT use the other RSS (MSI-X) capable adatper! However, if you disable it AND your CPU is fast enough to push 2 gigabits, you will see that windows will aggreagate the performance of the two NICs for a single file transfer. You can disable it most of the time directly in device manager on the properties of the card. If you only intend to use one NIC, leave it enabled. This is partly why, in most scenarios, the onboard i210 or i211 on your motherboard will perform better than the "built-in" i217/i218/i219.
By the way! If you are on a SERVER then don't disable RSS Capable -- instead get some new NICs that are all RSS capable and do it that way. And remember "Supports RSS" does not necessarily mean that it supports RSS+MSI-X (and saying the hardware does RSS w/o also supporting MSI-X is pretty tongue-in-cheek anyway).
If you are running 10 gigabit, you will see RDMA capable as being TRUE (or you should). RDMA is the "next tier" of low-cpu-overhead fast file trasnfer support, and it is really only relevant for 10 and 40 gigabit adapters.
You should also note if you do have a NAS that runs Windows Server, you can get some other benefits for configuring windows server to be your networks DNS and DHCP. The DNS resolver can be a caching forwarder. IPv6
Further Reading:
MS Blog:
Intel Says RSS/Multichannel not supported (they mean MSI-X as clearly Multichannel works fine in rock-dumb mode):
http://www.intel.com/content/www/us/en/support/network-and-i-o/000017506.html
Sad struggle on the intel forums where "the fix" is not clearly outlined like above:
https://communities.intel.com/thread/80805