前言
因为某些原因,需要用到虚拟机,在我的电脑已有 VMware 的前提下我还是选择了 HyperV,主要原因是 HyperV 能够方便的设置随宿主机开机自启,配置过程很顺利,虚拟机网络我选择的是桥接模式,桥接到无线网卡上,就当我以为一切正常可以宣告完工的时候,我发现了一个问题:在虚拟机中使用scp传输文件的时候,上行速度只有十几KB
预览
先上个图吧
虚拟机到网关路由器的测速结果:
宿主机到网关路由器的测速结果:
可以看到,相差非常大
寻找解决方案
我测试了以下几种情况
使用 HyperV 另开一个虚拟机,桥接网络,问题存在
使用 HyperV 另开一个虚拟机,虚拟交换机选择 HyperV Default Switch (NAT模式),问题消失
使用 VMware 另开一个虚拟机,网络类型选择桥接,问题消失
于是我开始考虑是否是硬件问题:将虚拟机桥接到有线网卡,发现问题消失,重新桥接到无线网卡发现问题依旧存在。
以 HyperV bridge WiFi connection
为关键词搜索,发现有部分文章提到了:HyperV 对无线网卡的支持有问题,可能会出现性能下降的情况,但是我的房间设计的时候没有预留有线网络接口,要用有线网络不太现实
问题突破
继续搜索发现,有部分文章提到了解决方案,总结起来,归类为以下几种
在 HyperV 虚拟机设置中,将 启用虚拟机队列 取消勾选
在物理/虚拟网卡的硬件属性中,将 Large Send Offload Version 2 (IPv4/6) 设置为 Disabled
但是我电脑的
和第二种方法一样,额外将 TCP/UDP Checksum Offload (IPv4/6) 设置为 Disabled
但是,以上方法并没有任何一个能解决我所遇到的问题,但是他们都指向了一个关键点:网络设备的属性
问题解决
经过对比发现,桥接网卡之后,在控制面板中会多出一个名为 Microsoft Network Adapter Multiplexor Driver 的网桥设置,于是大胆猜想:是否考虑问题出现在这呢?
经过试验后发现:在设备管理器 -> Microsoft Network Adapter Multiplexor Driver -> 属性 -> 高级选项卡中,将 Large Send Offload Version 2 (IPv4/6) 设置为 Disabled 之后(其实就是类似于上述第2和3条),问题解决
下面是测速结果
将物理网卡、虚拟网卡、虚拟机设置恢复,问题不出现,问题解决
后续
为了验证我的猜想,我以 Microsoft Network Adapter Multiplexor Driver slow speed 为关键词搜索,发现在 Intel 社区上确实有人碰到了类似的问题,解决方案和我的一样,此处贴上链接
Hyper-V External Virtual Switch Bridge Mode - Slow download speeds on 8265AC