146
解决 Hyper-V R2 虚拟网卡影响网速变慢问题

虽然升级到WIn2008R2有一段时间了, 但没有感觉到什么网络问题。

直到最近,我在局域网的另一个机器,通过FTP从主机上下载一些程序等等。

因为平常都是在虚机里面,没有注意这个。

结果今天一用,发现 从内网下载的速度,居然只有700KB/S左右, 最高没有超过1M/S (IE下载的,用其他工具稍微快点,大概2~3M/S 左右)。

 

唉。这速度怎么说呢? 我的内网好赖也是100M的,这么慢的话,下载什么都不爽了。

(唉,要是要部署30G VHD文件,我给下载到什么时候去呢)

最初实际上以为是网络问题,但后来,我直接把 两个机器直接用网线连接到 一起(没有交换机OR路由)

速度也是上不去,唉,问题是我本机。

 

但因为我的主板是 双网卡的,用另一个网络口,进行下载,速度轻松的上去了。

分以了一下2个借口的区别,想起来了, 其中 下载慢的那个接口 安装 虚机的虚拟网卡的共享驱动。

为了证明这个, 我直接把虚拟网卡删了,来测试。

恩,速度是突飞猛进了。(可惜,之后 还给为每个虚机重新分配新的网卡,因为新的网卡GUID不同。唉。)

在网上 Google了一下,终于,在 英文MSDN社区上找到了答案。

http://social.technet.microsoft.com/Forums/en/winserverhyperv/thread/29c669db-30fe-4196-9b95-a9d5e48ac318?prof=required&wa=wsignin1.0

 

唉, 简单来说,是 Hyper-V R2 改进 惹得祸。

R2中新增了一个 VM Chimney 功能,主要作用是 将 虚拟网卡 的处理工作 转交给 物理网卡,来提高速度,降低CPU使用。 但这个功能 是需要硬件支持的,因此默认是禁用的。

也许是MS后期通过更新,而开启这个功能,还是因为其他原因等。这个被启动了。

然后,网络就。。。

解决方式是将 物理网卡的 IPv4 硬件校验和(Checksum ) 关闭掉( 当让,根据原文,改成 Rx 应该也可以,不过我没有测试。)

不过虚拟网卡的 关不关闭好像都不会有多少影响。 建议自己尝试一下。

下图是 物理网卡的, 区分方法是,这个网卡没有IP,属性里面,只选了虚机共享。


这个是虚拟网卡的。

 

禁用了之后,FTP速度就上去了

(Win7之后多的东西,很好的工具,可以看到,基本 达到90% 的带宽了,考虑到 交换机或者路由的性能,以及冗余等,这个已经不错了。)

 

如果要使用注册表方式的来更改的话,可以参考这里http://msdn.microsoft.com/en-us/library/aa938424.aspx

 

最后,找了一下 Rx Tx 的作用。

如果网卡支持,在高级选项里可以设置Checksum Offload是否对Rx或Tx有效,也可以设置为对两者都有效。

对于Tx,设置Checksum Offload有效之后,Windows的传输层将随机填充TCP校验和,因此在本机上抓取的数据包是Bad CheckSum。然后,网卡会自动计算正确的校验码然后发送,因此对方收到的仍然是正确的TCP包。

对于Rx,设置Checksum Offload有效之后,网卡在接收数据时,会填充一个NDIS_TCP_IP_CHECKSUM_PACKET_INFO 结构并设置标志位;如果由于某种原因失败,则不设置标志位,由Windows里的TCP/IP协议栈来完成数据校验。

CheckSum Offload实际上是将传输层的一部分工作交给了硬件完成,以节约系统的CPU资源。微软的测试表明它可以最多节约30%的CPU资源。IBM里AIX的文档则指出:对于PCI接口的千兆网卡来说还不如让400Mhz以上的CPU来计算校验和,而PCI-X的千兆网卡启用此项后可以达到线路速度,从而节约CPU资源。


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!