原帖地址:http://www.cnblogs.com/GSonOVB/archive/2009/11/12/1601435.html
最近把家里的硬件更新了,换用了2008R2。凑巧今天须要在公司里远程连过来,感受很是的卡,频繁掉线,而网络状康是很好的,不至于如此。回到家里,用另外一台机器链接远程桌面一样存在问题,基本上只要一有动做就掉包。关掉关联的虚拟网卡则一切正常,怀疑是HyperV的虚拟网卡形成,上Google搜了一下,就有了下文,不过我和原做者不一样,我必须修改虚拟网卡的配置禁用IPV4检查才见效
虽然升级到WIn2008R2有一段时间了, 但没有感受到什么网络问题。
直到最近,我在局域网的另外一个机器,经过FTP从主机上下载一些程序等等。
由于日常都是在虚机里面,没有注意这个。
结果今天一用,发现 从内网下载的速度,竟然只有700KB/S左右, 最高没有超过1M/S (IE下载的,用其余工具稍微快点,大概2~3M/S 左右)。
唉。这速度怎么说呢? 个人内网好赖也是100M的,这么慢的话,下载什么都不爽了。
(唉,要是要部署30G VHD文件,我给下载到何时去呢)
最初实际上觉得是网络问题,但后来,我直接把 两个机器直接用网线链接到 一块儿(没有交换机OR路由)
速度也是上不去,唉,问题是我本机。
但由于个人主板是 双网卡的,用另外一个网络口,进行下载,速度轻松的上去了。
分以了一下2个借口的区别,想起来了, 其中 下载慢的那个接口 安装 虚机的虚拟网卡的共享驱动。
为了证实这个, 我直接把虚拟网卡删了,来测试。
恩,速度是日新月异了。(惋惜,以后 还给为每一个虚机从新分配新的网卡,由于新的网卡GUID不一样。唉。)
在网上 Google了一下,终于,在 英文MSDN社区上找到了答案。
唉, 简单来讲,是 Hyper-V R2 改进 惹得祸。
R2中新增了一个 VM Chimney 功能,主要做用是 将 虚拟网卡 的处理工做 转交给 物理网卡,来提升速度,下降CPU使用。 但这个功能 是须要硬件支持的,所以默认是禁用的。
也许是MS后期经过更新,而开启这个功能,仍是由于其余缘由等。这个被启动了。
而后,网络就。。。
解决方式是将 物理网卡的 IPv4 硬件校验和(Checksum ) 关闭掉( 当让,根据原文,改为 Rx 应该也能够,不过我没有测试。)
不过虚拟网卡的 关不关闭好像都不会有多少影响。 建议本身尝试一下。
下图是 物理网卡的, 区分方法是,这个网卡没有IP,属性里面,只选了虚机共享。
这个是虚拟网卡的。
禁用了以后,FTP速度就上去了
(Win7以后多的东西,很好的工具,能够看到,基本 达到90% 的带宽了,考虑到 交换机或者路由的性能,以及冗余等,这个已经不错了。)
最后,找了一下 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资源。