Hyper-V提供了多种配置选项,可以帮助你显著提升虚拟机的网络速度
本文将详细介绍如何通过不同的设置和技术手段,优化Hyper-V虚拟机的网络性能
一、理解Hyper-V网络架构 Hyper-V支持三种类型的虚拟交换机:外部虚拟交换机、内部虚拟交换机和专用虚拟交换机
- 外部虚拟交换机:允许虚拟机访问物理网络,从而连接到外部资源,如Internet和其他物理设备
- 内部虚拟交换机:仅允许虚拟机与Hyper-V主机上的其他虚拟机进行通信,无法访问外部网络
- 专用虚拟交换机:类似于内部虚拟交换机,但提供了更高的隔离级别,通常用于安全要求较高的环境
在优化网络性能时,我们通常关注的是外部虚拟交换机,因为它允许虚拟机访问外部资源
二、配置虚拟交换机 1.创建虚拟交换机 在Hyper-V管理器中,右键点击Hyper-V主机,选择“虚拟交换机管理器”
在这里,你可以创建新的虚拟交换机
对于外部虚拟交换机,选择“外部网络”作为连接类型,并选择宿主机上的物理网卡
确保勾选“允许管理操作系统共享此网络适配器”,这样宿主机和虚拟机都可以使用该网络适配器
2.桥接模式 桥接模式允许虚拟机直接连接到物理网络,就像物理计算机一样
在Hyper-V中,你可以通过创建外部虚拟交换机来实现这一点
确保在创建虚拟交换机时选择了正确的物理网卡,并启用了桥接功能
3.NAT模式 NAT(网络地址转换)模式允许虚拟机通过宿主机访问外部网络,同时隐藏虚拟机的真实IP地址
在Hyper-V中,你可以通过创建内部虚拟交换机,并配置NAT来实现这一点
在虚拟交换机设置中,选择“内部网络”作为连接类型,然后在网络适配器属性中启用“Internet连接共享”,并选择用于NAT的物理网卡
三、优化网络性能 1.接收分段合并(RSC) RSC允许通过将多个TCP段组合成更大的段来减少CPU负载并提高网络吞吐量
在Windows Server 2019和更高版本的Hyper-V中,默认情况下,所有外部交换机都启用了RSC
然而,在某些硬件配置中,启用RSC可能会导致额外的网络延迟
你可以使用以下命令检查是否为虚拟交换机启用了RSC: shell Get-VMSwitch | Select-Object RSC 如果网络速度没有提高,你可以尝试禁用RSC: shell Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false 或者,在Windows主机上完全禁用RSC: shell netshinttcpsetglobalrsc=disabled 2.虚拟机队列(VMQ) VMQ是一项硬件功能,旨在通过将数据包从物理网络适配器直接转发到虚拟机来提高网络性能
然而,在某些情况下,如果物理Hyper-V主机的网络适配器驱动程序中启用了VMQ,可能会导致网络性能不佳
你可以在网络适配器驱动程序的属性中禁用VMQ,或者使用PowerShell命令禁用特定网卡的VMQ: shell Set-NetAdapterVmq -Name “NICName” -Enabled $False 禁用VMQ后,最好重新启动主机并检查网络性能
3.TCP设置优化 在Windows Server 2019上,你可以优化Hyper-V的TCP设置,以提高网络性能
你可以使用以下命令保存当前的TCP设置,并应用新的设置: shell Get-NetTCPSetting -SettingName Datacenter,DatacenterCustom,InternetCustom,Internet | select SettingName,CongestionProvider,CwndRestart,ForceWS | Export-csv c:backupws2019_network_stack_settings_nettcp_backup.csv Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled Set-NetTCPSetting -SettingName InternetCustom,Internet -CongestionProvider CTCP Set-NetTCPSetting -SettingName InternetCustom,Internet -DelayedAckTimeoutMs 50 Set-NetTCPSetting -SettingName InternetCustom,Internet -ForceWS Disabled 4.禁用网络RSS和RSC 在TCP堆栈级别,你可以禁用网络RSS(接收端扩展)和RSC(接收分段合并)网络优化方法,以提高网络性能: shell netsh int tcp set global RSS=Disabled netsh int tcp set global RSC=Disabled 或者在网卡级别: shell Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName Recv Segment Coalescing(IPv4) -DisplayValue Disabled -NoRestart Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName Rec