NIC组合创建虚拟交换机报错

Windows2022的Hyper-V中NIC组合创建虚拟交换机报错解决

报错内容如下:

应用 虚拟交换机属性 更改时出错 添加虚拟以太网交换机连接时失败。 不建议将虚拟交换机附加到LBFO 团队。SwitchEmbedded Teaming (SET)是此功能的收件箱替代品。有关 LBFO 弃用的更多信息,请参见https://aka.ms/LBFODeprecation。要替代此阻止规则,请使用 New-VMSwitch 中的AllowNetLbfoTeams 选项.

问题原因:

LBFO团队在较新版本的Windows Server中已被逐步弃用,尤其是在Windows Server 2022及之后的系统中。

解决方法:

方法1:

通过 PowerShell 配置 Hyper-V 的 NIC 组合

以管理员身份打开 PowerShell 控制台

运行 Get-NetAdapter 来查找接口索引

Get-NetAdapter

我分组使用 LACP 模式和动态负载平衡模式,组名:xxx

根据创建的组合创建虚拟交换机名字 new

New-VMSwitch -Name "new" -NetAdapterName "xxx" -AllowNetLbfoTeams $true -AllowManagementOS $true

删除的团队名称及成员

#查询现有团队
Get-NetLbfoTeam
#删除命令
Remove-NetLbfoTeam -Name "团队名称" [-Confirm] [-Force]

Remove-NetLbfoTeam -Name "Team1" -Confirm:$false -Force

-Name:需删除的链路聚合团队名称(必填,可通过 Get-NetLbfoTeam 查询现有团队列表)

-Confirm:是否提示确认(默认启用,添加 -Confirm:$false 可跳过确认)

-Force:强制删除(适用于团队状态异常时)

方法2:

SwitchEmbedded Teaming配置

成员适配:

在创建 SET 团队时,您最多使用 8 个相同的 NIC,可以创建只有一个 NIC 的 SET Switch,但任何新成员都必须相同。

负载均衡模式

SET Teams 有两种 Load Balancing 分发模式。他们是:

  • Hyper-V 端口
  • 动态

创建 SET 团队

PowerShell 窗口中使用以下 PowerShell 代码:

获取网络列表:

Get-NetAdapter

查看SET团队

Get-VMSwitchTeam
#指定名称查看SET状态,显示网卡成员及负载均衡策略(如 Dynamic 模式)
Get-VMSwitchTeam -Name "10.10.10.0"  

根据创建的组合创建虚拟交换机名字 new

#默认开启
New-VMSwitch -Name "10.10.10.0" -NetAdapterName "NIC2", "NIC3"
#-EnableEmbeddedTeaming $true:启用SET模式
New-VMSwitch -Name "10.10.10.0" -NetAdapterName "NIC2", "NIC3" -EnableEmbeddedTeaming $true
#添加 -AllowManagementOS $true 参数意味着允许管理操作系统使用这个新创建的虚拟交换机。
New-VMSwitch -Name "10.10.10.0" -NetAdapterName "NIC2", "NIC3" -EnableEmbeddedTeaming $true -AllowManagementOS $true 

-AllowManagementOS $true 是 Hyper-V 网络配置中平衡宿主机与虚拟机网络需求的核心参数

不允许操作系统共享此适配器

Set-VMSwitch -Name "10.10.10.0" -AllowManagementOS $false
#开启
Set-VMSwitch -Name "10.10.10.0" -AllowManagementOS $true 

要创建具有多个 NIC 的 SET 团队

New-VMSwitch -Name "new" -NetAdapterName "NIC 1","NIC 2"

添加和删除 SET 团队成员

假设您已经创建了 NIC 1 和 NIC 2 的 SET 交换机,现在您想要删除 NIC 2 并添加 NIC 3:

Set-VMSwitchTeam -Name new -NetAdapterName "NIC 1","NIC 3"

如果您现在需要删除 NIC 1,可以使用以下命令:

Set-VMSwitchTeam -Name "new" -NetAdapterName "NIC 3"

要将 NIC 2 添加回 SET 团队,您可以使用以下命令:

Set-VMSwitchTeam -Name "new" -NetAdapterName "NIC 3","NIC 2"

更改负载均衡模式

HyperVPort模式

基于虚拟交换机端口:根据虚拟机连接的虚拟交换机端口(VSwitch Port)分配流量。

适用场景:适合虚拟化环境,尤其是虚拟机数量较多且流量分布不均的情况。例如,当虚拟机数量超过物理网卡成员数量时,可有效均衡负载。

效率优势:入站和出站流量均通过同一物理网卡,避免跨网卡转发,适合高吞吐场景(如数据库服务器)。

局限性:单虚拟机流量受限于单个物理网卡带宽,若某虚拟机流量过大,可能造成瓶颈。

依赖虚拟交换机:流量分配完全由Hyper-V虚拟交换机控制,与物理交换机无关,适用于交换机独立模式(无需LACP支持)

​Dynamic模式

动态哈希算法:根据数据包的特征(如源/目标IP地址、TCP端口等)动态调整流量分配策略。 ​适用场景:适用于非虚拟化环境或流量特征复杂的情况(如多类型应用混合部署),能灵活适应不同流量模式。

负载均衡灵活性:通过哈希算法分散流量,减少单一链路的压力,但哈希冲突可能导致部分链路利用率不均。

性能影响:哈希计算可能增加CPU开销,尤其在高速网络(如10Gbps以上)中需谨慎使用。

可结合物理交换机:支持与物理交换机的LACP动态聚合协同,实现端到端负载均衡(需交换机依赖模式)。

维度HyperVPort模式Dynamic模式
流量分配依据虚拟交换机端口动态哈希(IP、端口等)
性能影响高吞吐、低延迟灵活但可能增加CPU开销
网络依赖独立于物理交换机可结合物理交换机LACP
适用场景虚拟机密集环境混合流量或LACP协同环境

要在上述两者之间更改负载均衡模式

# Dynamic模式
Set-VMSwitchTeam -Name "new" -LoadBalancingAlgorithm Dynamic
# HyperVPort模式
Set-VMSwitchTeam -Name "new" -LoadBalancingAlgorithm HyperVPort

配置 VLAN

Set-VMNetworkAdapterVlan -VMNetworkAdapterName "Management" -Access -VlanId 10

要查看您当前拥有的负载均衡模式,请执行以下操作:

Get-VMSwitchTeam -Name "new" | FL

删除 SET

删除 SET 团队的唯一方法是完全删除 Hyper-V 虚拟开关:

Remove-VMSwitch "SET Team"

SET Teams负载均衡二种模式描述

Hyper-V 端口 对 SET Teams 使用 Hyper-V 端口模式时,VM 将连接到 Hyper-V 交换机上的端口。这就像物理服务器连接到物理交换机上的端口一样。Hyper-V 虚拟交换机端口和 VM 的 MAC 地址用于在 SET 团队成员之间划分网络流量。

如果将交换机嵌入式组合与 Packet Direct 配合使用,则必须使用交换机独立组合模式和 Hyper-V 端口负载均衡模式。

使用此绑定模式,任何相邻的交换机将始终在给定端口上看到 VM 的 MAC 地址。这允许交换机将入口负载(从交换机进入 Hyper-V 主机的流量)分配到 MAC 地址所在的端口。当您使用虚拟机队列 (VMQ) 时,Hyper-V 端口模式非常有用,因为可以将队列放置在流量预期到达的 NIC 上。

如果您只托管几个 VM,则 Hyper-V 端口模式不是最佳选择,因为它不够精细,无法实现均衡的分布。此模式还会将每个 VM 限制为单个 NIC 上的可用带宽。

动态 对 SET Teams 使用动态端口模式时,所有出站负载都使用 TCP 端口和 IP 地址的哈希值进行分配。动态端口模式还会实时重新平衡负载,以允许出站流在每个 SET 团队成员之间移动。

对于入站负载,所有流量的分配方式与 Hyper-V 端口模式相同。出站负载使用 flowlet 进行动态平衡。flowlet 是 TCP 流中两个自然发生的中断之间的部分。当 dynamic port 模式检测到 flowlet 边界时,它会自动将流重新平衡到 SET 团队的另一个成员(如果合适)。众所周知,在某些不常见的情况下,动态端口模式可能会重新平衡不包含任何 flowlet 的流。因此,团队成员和 TCP 流之间的相关性可能会随着流量的平衡而改变。