通过 VPN 使用 SMB 多通道:客户端实际用到什么
通过 VPN 使用 SMB 多通道并不会增加多少通道:在把文件变慢归咎于隧道之前,先查看客户端接口、已选连接和 SMB 方言。
VPN 上文件访问变慢时,人们容易把多通道设置当成解决办法,而这项设置往往没有可发挥的条件。单个不支持 RSS 的虚拟适配器无法把流量分散到多条通道,无论复选框怎么写。真正重要的是 SMB 在两端看到的能力,而不是笔记本物理网卡的规格。下面的梳理从活动会话出发,再回溯到适配器布局。
从会话查起,而不是从网卡规格查起
先确认该会话究竟能不能使用多通道。该功能属于 SMB3,因此与设备或旧服务器协商出的更早方言会直接排除它,适配器问题也就无从谈起。然后确认客户端实际连到了哪台服务器,因为名字解析到的节点若不是你正在检查的那台,就会给出有说服力却无关的结果。
Get-SmbConnection
Get-SmbClientConfiguration | Select-Object EnableMultichannel
Get-SmbClientNetworkInterface
第一条命令在一行里给出方言、服务器和共享。第二条显示客户端是否启用了该功能,第三条列出 SMB 已知的接口及其报告的能力。一个既不报 RSS 也不报 RDMA 的虚拟适配器,说明了这个布局最多能变成什么。
如果方言不是 SMB3,先停下来把这个问题解决。否则后续每条命令描述的都将是无法生效的功能。
如实读取客户端接口
SMB 并不关心默认路由由哪块适配器承载;它会枚举可用的接口并逐个评估。一台同时有 Wi-Fi、以太网和 VPN 适配器的笔记本可能呈现三个接口,而其中只有一个能到达你正在对话的服务器。其余只是候选,不是通道。
要看 RSS 和 RDMA 两列,而不是链路速度列。虚拟适配器常常报告很高的标称速度却不具备 RSS,而标称速度描述的是虚拟链路,不是经过互联网的路径。这两个数字都不能说明会话用了几条通道。
如果适配器不显示 RSS 能力,受支持的修复属于 VPN 厂商的驱动,而不是物理网卡的高级属性。在硬件适配器上勾选 RSS 不会改变虚拟适配器向 SMB 呈现的任何内容。
把已选通道与探测到的候选分开
连接列表是最容易被误读的部分。包含未选候选时,输出会显示 SMB 考虑过的一切,那并不是正在承载数据的通道集合。要针对你关心的特定客户端与服务器接口对,读取选中标志和通道数。
Get-SmbMultichannelConnection -ServerName files.lab.example -IncludeNotSelected
Get-SmbMultichannelConnection -ServerName files.lab.example | Format-List *
换成你自己的服务器名。第二种形式会打印已选连接的属性,包括接口索引和当前通道数,这个数字才是关键。同一块适配器上探测到的多个地址仍然只是一块适配器。
探测到的地址也可能因 VPN 策略而不可用:它可能是隧道不承载的本地子网地址,也可能是服务器只在另一网络提供的地址。SMB 把它列为候选,是因为接口存在,而不是因为路径可用。
VPN 适配器对布局做了什么
有三种布局值得区分,因为只有两种能产生不止一条通道。单块不支持 RSS 的适配器给出一条通道。单块支持 RSS 的适配器可以把连接分散到多个核心。多块可用适配器即使没有 RSS 也能产生多条通道,而人们认定 RSS 是必需条件时,忘掉的正是这种配置。
| Layout SMB sees | Channels possible |
|---|---|
| One adapter, no RSS | One |
| One adapter with RSS | Several, spread across cores |
| Two or more usable adapters | Several, one path per adapter |
| Several adapters behind one tunnel | Several, one shared bottleneck |
最后一行才是 VPN 场景下要紧的。全部进入同一条加密隧道的通道共享隧道吞吐、网关 CPU 和 WAN 链路。在那里加通道只是重新分配工作,并不增加容量,测量会显示这一点。
对比期间请保持签名和加密开启,因为关掉它们会改变你正在测量的对象。依赖关闭某项安全设置才成立的性能结果,不是可以落地的结果。
测量真正慢的那个工作负载
动手之前先给工作负载命名:一次大的顺序复制、同一目录下的大量小文件,或者频繁开闭句柄的应用。存在真正独立路径时,多通道对第一种情况有帮助;对第三种几乎无用,因为那里的代价是相互依赖的往返,而不是带宽。
用当前布局取一次基线,只改一处,再在相同文件集合同一时间复测。把已选路径数记在数值旁边,好让后来的读者判断这次改动改变的是布局还是只有负载。
如果通道没变,性能问题就在别处:隧道的加密开销、路径时延,或者服务器自身的磁盘和 CPU。给一台已经不缺适配器的笔记本再加一块之前,这些都值得先测。