SMB3 多路径能否按策略加权?

Jef*_*der 5 server-message-block multipath mpio windows-server-2012

考虑具有两个相同 WS2012R2 服务器的配置。两者都有四端口网络板。每个都有一个 NIC 连接到由其他服务器共享的子网,并最终可供客户端计算机访问。每台服务器上的其余三个端口都是“网卡绑定”,并连接到仅由相关的两台服务器共享的不同子​​网。我希望看到的是 SMB 流量优先通过更快的 3-nic 路径,并且仅在必要时才求助于更拥挤的 1-nic 路径。

我可以相信 SMB3 中的负载平衡在这里做正确的事情吗?如果没有,我可以应用某种类似于 tcp/ip 路由成本的权重吗?

Eva*_*son 3

我很乐意告诉您该产品将“做正确的事情”,但我没有一个具有代表性的环境来准确模拟您所谈论的内容。

从技术上来说,问题在于服务器计算机通过 API 对其网络接口进行通信的详细信息FSCTL_QUERY_NETWORK_INTERFACE_INFO该协商实际上在[MS-SMB2]:服务器消息块 (SMB) 协议版本 2 和 3规范的第 4.8 节中作为示例显示。不幸的是,规范中包含与网络连接选择相关的逻辑的部分只是说“客户端选择任何一个网络接口对来建立新连接......”。接口选择协议中有一些细微差别(微软已经从规范中省略了这一点,虽然我想有人可能会认为这种行为超出了规范)。例如,本文描述了“不可路由”(阅读:APIPA 和链路本地地址)如何不用于 SMB 多通道。

除了上面文章中描述的“不可路由”地址之外,这确实让我想知道产品中是否存在隐式假设,即客户端/服务器对上的任意网络接口都能够进行通信。(这很可能是在一些奇怪的场景中等待挖掘的失败静脉,其中流量过滤/策略使该假设不真实。)我猜测可能对与初始接口位于同一子网中的接口有一些偏好频道创建于。(如果微软发布了这种行为,那就太好了!)(我发现我不是唯一一个一直在考虑这个问题的人,至少......)

您可以从计算机执行命令Get-SmbMultichannelConnection,查看在长时间运行的复制操作期间是否正在服务器之间创建 SMB 多通道连接。-IncludeNotSelected如果您想查看“未选择”的路径,请添加参数。

您可以使用 cmdlet 直接排除来自 SMB 多通道的连接New-SmbMultichannelConstraint,但这本身并没有对通道优先级进行加权 - 它只是排除(这不是您想要的)。

顺便说一句:我假设您正在使用 W2K12 中的内置 NIC 分组功能。您可能需要使用交换机检查所选的 LACP 哈希算法(在 Windows Server 中称为“负载平衡模式”)是否是最佳的。我见过一些关于改变该模式以通过不同交换机提供更高吞吐量的讨论。