多通道是什么
SMB3 引入的多通道在协议层把一次会话拆到多条 TCP 连接上,可分布到同一主机的多块同速网卡,也可在单网卡上借 RSS 分散到多个 CPU 队列。它解决的是单个 TCP 流跑不满链路或受单核限制的问题。链路聚合(LACP)工作在链路层,把多根网线合成一条逻辑链路,但对同一条 TCP 流通常仍走单条物理链路,所以两者不是替代关系。
基本信息
| 适用平台 | Windows Server 2012 及之后、Samba 4 与支持的客户端 |
|---|---|
| 前提条件 | 协商到 SMB3 及以上、路径上的网卡与交换机支持 |
| 查看命令 | Get-SmbMultichannelConnection、Get-SmbClientConfiguration |
| 关键点 | 参与多通道的网卡速度应相当,差异过大时可能退化为单条 |
| 兼容性 | 虚拟网卡若未启用 RSS,多通道效果会明显受限 |
多通道与链路聚合对照
| 维度 | SMB 多通道 | 链路聚合 LACP |
|---|---|---|
| 工作层次 | SMB 协议层 | 链路与网络层 |
| 聚合对象 | 同一会话的多条连接 | 多根物理链路 |
| 单流带宽 | 可以真正叠加 | 通常仍受限单条链路 |
| 配置位置 | 操作系统网络与客户端设置 | 交换机与主机网卡绑定 |
| 使用建议 | 两端都支持时优先启用 | 作为基础高可用与带宽补充 |
检查与验证
检查与验证
# 查看客户端当前使用的多通道连接
Get-SmbMultichannelConnection | Select-Object ServerName,ClientIPAddress,ServerIPAddress
# 查看客户端多通道相关配置
Get-SmbClientConfiguration | Select-Object *Multichannel*
# 查看网卡是否启用了 RSS 与队列数
Get-NetAdapterRss -Name *
# Linux 客户端侧多通道支持需显式启用,具体参数以自身版本为准
mount -t cifs -o vers=3.1.1,multichannel,max_channels=4,username=svc //10.0.0.20/share /mnt/share多通道要发挥作用,两端的多条路径应尽量同速、同层。常见失误是服务端配了两块 10G,客户端只有一块 1G:此时仍能建立多条连接,但整体吞吐被客户端单口卡住,观感上「配了没效果」。判断方法是同时看两端的连接视图,而不是只看服务端。
在虚拟化环境中改动网卡绑定或队列设置会影响该主机上所有虚拟机的网络,属于需要维护窗口的操作。多通道本身可以在线调整,但底层网卡与交换机配置的变更应先确认业务影响。