Multiple NICs, 2 PC, SMB Multichannel and LACP


2 PC on Windows Server 2019
Each PC have 1g Nic + 4x 1g Nic on Realtek chips
2x ports on each PC in LACP, 2x ports with DHCP Enabled, not Teamed. 1x port disabled currently.
Managed Switch with LACP
pfSense VM on separate node with Proxmox

As I understand SMB Multichannel, it requires multiple IP, which LACP can’t provide.

So, that’s why I have 2x ports with LACP and 2x w/o teaming on both sides (switch, Windows Server machines).

I wanted to use those non LACP ports to get increased speed via SMB multichannel, but it just doesn’t work.

I tried route smb server IP on client via “route ADD (ip of SMB Server) MASK (gateway) METRIC 1 IF (non teamed interface index)”. However, based on Task Manager, traffic still goes through Teamed LACP interface.

I tried different combinations, but nothing worked out. Then, I thought about moving 2x non teamed interface on each PC to another VLAN, but in the end traffic still goes through Teamed interface. (Maybe some smb caching, I don’t know.)

I tried to set domain name for SMB server non teamed NICs, via pfSense DNS Resolver, even tried to attach 2 A records. But, overall it even decreases speed to like 800 mbps, and ofc, no SMB Multichannel in action. However, traffic goes via another NIC.

If I assign those 2 non LACP ports to Hyper-V Windows Server VM and use it as SMB client, no issues, SMB multichannel working as expected, download speed like 160 MB/s, which is over 1g.

What I want exactly?

  1. I want to have 2x LACP ports for everything except SMB, on both PC.
  2. Also, 2x non Teamed ports for just SMB and SMB Multichannel. (On separate, VLAN, or main subnet, doesn’t matter.)
  3. SMB clients with just 1 NIC, must be able to reach SMB server via LACP interface as they do at the moment.

Try moving the non-lacp ports to a separate subnet, you can configure it manually.

There’s a description of how multichannel works in the samba docs:

Basically, you need 2 IPs on the server side, and one or two IPs on the client side. And traffic needs to move on the correct interfaces.

The server needs to report the IPs to the client, and then the client needs to choose to use them.

See the Wireshark details here: ; you should be able to tell what IPs the server is sending.

Well, still didn’t look at wireshark at all :slight_smile:, but found out that accessing SMB Share via domain returns nothing. While, using server name or ip returns 1 line via “Get-SmbMultichannelConnection”.
The thing is, whatever server NIC ip, I use on client. It returns client IP and server IP from same subnet (LACP interfaces).

So, idk, changed NIC metrics and so on, still nothing.
However, it works when I’m removing whole subnet from LACP interface, but ye, idk how to gently override it just for SMB client, because LACP interface have default gateway, so, everything goes through it.

Well, looks like I solved my issue. I just blocked local IP(smb client IP) and remote IP(smb server IP) via Windows Firewall on smb client.