SMB Multichannel Support

Hi does ZimaOS support SMB Multichannel? I ha have install to networkcard of 10GBe but when i transfer file between ZimaOS to Windows it only use one nic? i have activated smb multichannel in develope mode. but it does not work.

I tested this directly on a ZimaBoard 2.

Even with “Supports multi-channel” enabled in Developer Mode and after a reboot, Samba does not activate SMB Multichannel at runtime. testparm confirms that multichannel is not enabled, so Windows correctly falls back to a single SMB channel and uses one NIC.

In short, your setup is correct and this is the expected behavior at the moment.

Whats solution to that. Wil new update support SMB3 Multichannel?

At the moment there isn’t a workaround to enable SMB3 Multichannel manually in ZimaOS. The current behavior is expected.

Whether SMB3 Multichannel will be fully supported depends on future ZimaOS updates and deeper Samba integration. I suggest keeping an eye on release notes and update announcements, as networking features continue to evolve over time.

For now, using a single 10 GbE connection provides the best and most stable performance.

This is my result in TrueNas SMB3 Multichannel activated with to 10GBe nic. I get double speed in TrueNAS because it use both nics. I hope ZimaOS impliment this future

Perfect @Norinatt

Your screenshots confirm SMB Multichannel is working now:

  • Transfer speed is around 2.1 GB/s
  • And Task Manager shows both Ethernet links active at the same time

That’s exactly what SMB Multichannel is supposed to do (multiple SMB channels over multiple NICs).

Looks like you’ve got it sorted :+1: thanks for posting the results — super helpful for others.

Yes but this result is with Trunas Scale not ZimaOS :slightly_frowning_face: I did not get this result with ZimaOS. ZimaOS still uses one nic even though I enable Smb multichannel in develop mode :slightly_frowning_face:

Normally, since Samba 4.18+ (2022 onward), it has been enabled by default in most modern Linux distributions. ZimaOS 1.5.3 runs samba 4.21.4, and it should have been enabled by default. But it isn’t. IceWhale has decided to disable MultiChannel themselves in ZimaOS and the samba installation/configuration. You can see this by running ‘testparm’ in console, you will see this:

server multi channel support = No

Default settings are not shown in ‘testparm’.

But you can enable SMB MultiChannel in ZimaOS Developer Mode page. After that, the setting is no longer visible when you run ‘testparm’ since it is no configured as a samba default setting. But we can check this too, by running the ‘testparm -v’ command (‘-v’ shows default settings as well, which includes multichannel, defaulting to yes now)".

Look for “server multi channel support = Yes” in the config, like I found on my system after it was enabled in dev mode:

admin@zimaos-pro:~ ➜ $ testparm -v
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

Global parameters

[global]
abort shutdown script =
acl claims evaluation = AD DC only
ad dc functional level = 2008_R2
add group script =
… (trunkated)
server max protocol = SMB3
server min protocol = SMB2
server multi channel support = Yes
server role = auto
… (output truncated)
wide links = No
write list =

Now, SMB multichannel has some requirements on NIC setup (with or without RSS support).

First, Linux/Samba isn’t very happy about multi-homing (two interfaces with IP on the same subnet). It’s possible to hack it on a normal Linux, but not recommened. Windows on the other hand handles it fine for SMB MultiChannel. But using Samba on Linux, you should use two IPs in different subnets.

If you have 2 x 10G in ZimaOS (is it zima hardware or custom?), what do you have on your client, and is it Windows, Linux or MAC?

Hi thanks for reply. I have 2x10GBe RTL8127 nic in ZimaOS server and 2x10GBe Marvell AQC113 nic in windows 10.

When i write ``` testparm -v in terminal i get this

How can i use diffrent subnets? Can you explain how I should do that?

Ok now its work but preformence is poor. Only one time i get full speed. Most of time it split half speed on both nics.Sometime its very poor. So its very unstable.

Here is result




I get this speed most of time. Half speed split on both nics. My ZimaOS setup is one nic have static ip adress and second nic have dhcp.


Norinatt thanks for the extra screenshots, this helps a lot.

1) Your screenshots confirm the key point

In your first results you are clearly only getting one NIC doing the work (single-channel). That is why you see speeds like 2.1GB/s briefly, then it falls back, and why it looks unstable.

Then later, when both links finally engage, you can see it clearly in Task Manager where both Ethernet adapters are active and you’re seeing the proper combined throughput (your last screenshots show both links behaving much better).

So your testing proves something important:
SMB Multichannel is working in theory, but it will only activate properly when the network + client side are correct.


2) ZimaOS SMB Multichannel is now available (but not “default”)

On ZimaOS, IceWhale originally had SMB Multichannel disabled by default even though Samba supports it.

Now it can be enabled in:
ZimaOS Developer Mode > SMB Multichannel toggle

Once enabled, you can confirm it on ZimaOS by running:

testparm -v | grep -i "server multi channel support"

If you see:
server multi channel support = Yes
then SMB Multichannel is ON at the Samba level.

So yes, ZimaOS now supports it (via dev mode), and it stays enabled unless disabled again.


3) Why it didn’t work earlier (this is the real reason)

This is where most people get caught.

Even if Multichannel is enabled on the server, Windows will NOT use both NICs unless all of this is true:

A) You must not test using WiFi

If Windows is connected via WiFi, SMB can behave strangely and it may only establish a single effective path.
In our case, we were testing on WiFi first and it gave misleading results.

For real multichannel validation:
You MUST test with 2x Ethernet connections only.

B) Windows needs the correct driver for the NIC

This is a huge one.
We discovered during our testing that Windows was not even detecting the multichannel NIC properly because it didn’t have the correct driver loaded.

Symptoms of wrong/missing driver:

  • only one adapter shows properly
  • link speed not correct
  • multichannel output looks wrong / blank
  • SMB never spreads load properly

Once the proper driver is installed, Windows will correctly expose the NIC and SMB multichannel can finally engage as intended.


4) How we confirmed it was working properly

After fixing credentials + enabling multichannel + making sure the client was correct, we confirmed:

On ZimaOS (server):

  • Samba is running
  • SMB connection is active
  • Multichannel enabled = Yes

Example proof:

testparm -v | grep -i "server multi channel support"

and:

smbstatus

showed an active SMB3.11 connection.

On Windows (client), we confirmed multichannel client support was enabled:

Get-SmbClientConfiguration | select EnableMultiChannel

and verified multichannel connections:

Get-SmbMultichannelConnection

5) Best way to test speed (important)

Windows Explorer copy is too bursty (it can cache and “finish instantly”).

Best test method is robocopy with a large file (50GB is perfect), example:

Create a test file:

fsutil file createnew C:\test50gb.bin 53687091200

Copy with progress:

robocopy C:\ Z:\ test50gb.bin /J

While it is copying, monitor NIC usage in Task Manager.
You should see BOTH Ethernet links carrying traffic.


Conclusion

So yes, SMB Multichannel is now available in ZimaOS (enabled via Developer Mode), and it does work.

If you previously only saw one NIC being used, it was not because Multichannel is broken, it was because the client side was not in the correct state (WiFi testing and/or missing NIC drivers in Windows can prevent multichannel from engaging properly).

2 Likes

Thank you for detail reply :smile:

Here is my setup




Both Server and PC are connected to TPlink 10GBe switch

Now i have Smb Multi channel activated, but i get not optimal preforence in ZimaOS


transfer files from ZimaOS Server i get max 1.03GB speed


This is tranfer file to ZimaOS to PC then i get max 1.65GB speed
and some time it fall down to low speed

So SMB multi channel in ZimaOS is very unstable

But when i boot from Truenas server with same Server pc and windows10 PC
I get this result


File transfer to TruenasServer i get Full 2.20GB speed :slight_smile:

But when i transfer files from truenas i get low speed :frowning:

Thanks for sharing the additional details. The key thing to clarify upfront, because it’s a very common point of confusion, is this:

Having two 10 Gb NICs does not automatically mean you will see 10 Gb (or 20 Gb) SMB speeds.
SMB Multichannel only increases throughput when Windows actually opens and uses multiple effective network paths, and that depends on several conditions beyond just the hardware being present.

When speeds are low despite dual 10 Gb cards, it usually means one or more of the following is happening:

  • SMB is only using one NIC
  • RSS isn’t fully active on both NICs
  • Disk throughput can’t sustain 10 Gb speeds
  • Windows routing or interface metrics cause one NIC to be preferred
  • The transfer pattern doesn’t scale well
  • One link is silently negotiating below 10 Gb

So dual 10 Gb NICs provide potential, not guaranteed performance.

To help debug this properly, here’s a practical checklist with commands to verify each part.


What to check to reach maximum SMB speed

1. Confirm link speed on both ends

Windows

Get-NetAdapter | Select Name, Status, LinkSpeed

Each 10G NIC should show 10 Gbps.

ZimaOS / Linux

ethtool eth0
ethtool eth1

Look for:

Speed: 10000Mb/s
Duplex: Full

2. Check RSS (mandatory for high-speed SMB)

Windows

Get-NetAdapterRss

You want RSS enabled with multiple queues on each NIC.

If supported but disabled:

Enable-NetAdapterRss -Name "Ethernet"

ZimaOS / Linux

ethtool -l eth0
ethtool -k eth0

Ensure multiple queues and RSS-related offloads are available.


3. Verify SMB Multichannel is actually being used

This is the most important check.

Windows

Get-SmbMultichannelConnection

You should see multiple connections using different interfaces.
If there is only one entry, SMB is using a single path regardless of NIC count.


4. Check SMB session details

Get-SmbConnection

Confirms SMB3 dialect and session health.


5. Check routing and interface preference

Windows may silently prefer one NIC.

Get-NetIPInterface | Sort-Object InterfaceMetric

Lower metric = preferred interface.
If one NIC has a much lower metric, SMB may ignore the other.


6. Validate disk throughput (very common bottleneck)

10 Gb SMB requires roughly 1,000–1,200 MB/s sustained disk throughput.

ZimaOS / Linux

dd if=/dev/zero of=/DATA/testfile bs=1G count=10 oflag=direct status=progress

If the disk can’t keep up, network speed won’t matter.


7. Check CPU usage during transfers

Windows

  • Task Manager → CPU → Logical processors
    Watch for a single core pegged at 100%.

ZimaOS / Linux

htop

One maxed core usually indicates RSS or CPU limits.


8. Test pattern matters

Single large files don’t always scale well.

Parallel test:

robocopy Z:\ C:\ testfolder /E /MT:16 /R:0 /W:0

This often triggers better multichannel utilisation.


9. Optional: raw network test (no disks, no SMB)

Server

iperf3 -s

Client

iperf3 -c <server-ip> -P 4

Expected:

  • ~9–9.5 Gbps on 10G
  • ~2.3 Gbps on 2.5G

What I tested on my side

To rule out ZimaOS or Samba issues, I ran similar tests on my own setup.

On the server side, ZimaOS is running Samba 4.21.x with SMB Multichannel enabled and confirmed active, and the ZimaBoard has multiple NICs available. From the server perspective, everything was correctly configured.

I first tested from a laptop over Wi-Fi 7. Despite the high theoretical speed, Wi-Fi presents itself as a single logical interface and does not expose RSS queues, so SMB only ever used one path. Multichannel cannot scale properly on Wi-Fi, which makes it unsuitable for validating SMB Multichannel throughput.

To remove that variable, I moved testing to a desktop with a wired Intel NIC where RSS was enabled and visible. I then ran a real-world unbuffered transfer to avoid caching effects:

robocopy Z:\ C:\ test50gb.bin /J /R:0 /W:0 /ETA

The result was a sustained ~111 MB/s copying a 50 GB file, which is exactly full real-world saturation of a single 1 GbE link. This confirmed:

  • SMB and Samba are working correctly
  • ZimaOS is not limiting throughput
  • Disks were not the bottleneck
  • The observed ceiling matched the network path

All of this testing was LAN-only. The ISP or internet connection was not involved.


Conclusion

There is no issue with SMB Multichannel support in ZimaOS.
Low speeds with dual 10 Gb NICs almost always come down to SMB using a single path, RSS configuration, disk throughput, CPU limits, or routing decisions.

On my side, I’m currently building a dedicated server rack for my ZimaBoards and plan to add higher-speed NICs as part of that setup. Once both ends are properly connected at 2.5 GbE or 10 GbE with usable paths, the current ceiling will be removed and SMB throughput should scale accordingly.

Hopefully the checklist above helps pinpoint exactly where the limitation is.

If it was me, I would swap the NICs around and put those ACQ into the Windows machine and the RTl ones into the “server”.

Also, unmanaged Switches often get problems when using different subnets on it and also if you use one NIC with DHCP and one with static IP, when there is no dedicated DHCP server active.

So, where do the two DHCP NICs get there IP from? A DSL Router, a cable router, or, like in my case, a dedicated Debian Host running Pi-Hole?

Thing is, Windiws overall is capable of multichannel cxonnections e.g. using more then one NIC at the same time, but, like already stated, any WiFi connection active will trash your connections !

Do NOT, in no case, activate WiFi on the Windows PC and also NOT on the Zima “server”, not even temporarily !!!

Let’s say, you got those two NICs running and acceptable speed and then you activate WiFi, even just for a few minutes, to copy files from or to your phone and then deactivate that connection again, you are screwed and multichannel will stop working !

It might be active, but will, in no case, give you the former speed again, until you do a reboot !

Oh and yes, the disk speed thing is a big problem in most cases, especially when you are using HDDs, not SSDs and older NVME SSDs will not be able to keep up.

Remember, two 10 GBps NICs give 2.500 MB/s, in THeoriy, cause in real world situations, it is less, about 88 to 92 percent of that, so if your Drive is only capable of 2.000 MB/s f.e. you will stress it, heating it up like a toaster until throtteling will hit and also cause the throughput to drop slower and slower.

1 Like

Thanks for detail reply. My SMB Multichannel is working now. Thanks to Joffer I have change subnet ip on one nic in ZimaOs and Windows 10 and now it working but not optimal. I post result later

1 Like

Ok after i change my static ip adress from 192.168.1.190 to 192.168.2..190 In ZimaOS

File transfer from ZimaOS to Win10

File transfer to ZimaOS from Win10

But in TrueNas i get little better result with same Pc and Server

This is from Truenas to Win10

This is from Win10 to Truenas

So ZimaOS is litte slower transfer. I dont know why. Because is exactly same Pc and ServerPC. But now Multichannel works :slight_smile:

1 Like

Finally made it :hugs:
After swaping nic cards from Server pc to Win pc I now get full speed both ways :slight_smile:

Windows to ZimaOS

ZimaOS to Windows

I have swap nics before but it did not work. Now SMB Multichannel works optimal because I changed the IP address.

Thanks to everyone who tried to help me :slight_smile:

3 Likes