Linux Guest 中 VirtIO 适配器的性能异常

Linux Guest 中 VirtIO 适配器的性能异常

我一直在与 Linux KVM 客户机的 VirtIO 适配器的极其奇怪的行为作斗争。首先,我的设置:

KVM 主机是 CentOS 6.8 机箱。客户机运行的是 CentOS 7。适配器最初连接到主机桥,但我将虚拟网络更改为 OVS 设置,客户机连接到 OVS 桥。

Linux 客户端都位于未桥接到主机接口的 OVS 桥接器“internalbr1”上。相反,流量会流向 LAN 网关 10.255.0.1,这是 PFSense VM 的 LAN 接口,它通过主机上的直通接口将其发送出去。基本上,OVS 桥接器“internalbr1”充当客户端和防火墙 LAN 端之间的交换机。

最初,客户机使用的是 e1000 适配器,但由于速度问题(下载时速度下降到 100k),我想切换到 VirtIO。有一个 Windows 客户机(2012)使用 VirtIO 适配器运行(看到同样的 e1000 问题。在到主机接口的桥接上),它运行正常。所有 Linux 客户机都可以正常 ping 出,没有延迟,尝试使用 wget 拉取网页非常慢,yum 命令返回“没有到主机的路由”,尽管 ping 到 yum 存储库的工作正常。

我不知道发生了什么,谷歌搜索了好几个小时也没用。以前有人遇到过类似的问题吗?

更新

发现问题出在 PfSense 防火墙上,而不是 VirtIO(部分原因)。在防火墙上进行一些数据包捕获后,我发现离开的数据包的校验和不正确。我发现这有时是硬件校验和卸载的问题。我禁用了硬件校验和卸载,一切开始正常工作。我猜 VirtIO 适配器无法进行硬件校验和卸载(至少在我的版本中)。这也解释了为什么我没有看到 e1000 适配器的问题。

我希望这对将来的某人有所帮助。

相关内容