什么可能导致 kvm 虚拟化 pfsense 比物理 pfsense 落后 84mbps,但在取代物理 pfsense 时下降到 1mbps?

网络工程 linux 感知 虚拟的 调制解调器
2022-03-01 10:43:34

我正在为可能导致以下行为的原因而摸不着头脑:

场景 A:笔记本电脑 -> virtualizedpfsense -> 交换机 -> 物理 pfsense -> 调制解调器

speedtest.com 给我 84mbps 下载(这是预期的:物理pfsense 的快速以太网端口的瓶颈。)(有趣的观察是上传失败,我推测(疯狂猜测)可能是由于双重 NAT,但没有足够的经验知道.

场景 B:笔记本电脑 -> virtualizedpfsense -> 调制解调器

speedtest.com 和其他网站无法访问,google.com 和其他低带宽网站可以访问但加载缓慢。virtualizedpfsense 的 Web 界面的流量监视器显示 WAN 连接的最大流量为 1mbps。Google.com 的速度测试最终加载并以 0.05mb/sec 开始,然后达到 0.01mb/sec,此时我将其关闭。

为了清楚起见: 我的问题是为什么会发生这种奇怪的行为?奇怪的行为是 virtualizedpfsense 在场景 A 中获得 84mbps,然后在场景 B 中获得 <1mbps。在场景 B 中所需的行为是 >84mbps。

附加信息: physicalpfsense 是一台笔记本电脑,在 PCI 插槽上添加了第二个以太网端口,它是 192.168.1.1(经过尝试和真实设置。)(virtualizedpfsense 设置为 192.168.9.1)

virtualizedpfsense 是一台 Atom PC,有 4 个网卡,运行 CentOS7 最低限度,BIOS 中启用了虚拟化,硬件不支持 VT-d。yum install libvirt 和 openssh 是唯一安装的软件包。(virt-manager 安装在另一台 PC 上,用于通过静态配置的 Eth4 进行远程 GUI 管理。) Eth1 和 Eth2 被配置为不会在 KVM 主机上分配 IP 地址,pfsense 2.4.1 x64 作为 KVM 来宾运行,Eth1和 Eth2 通过 virt-manager GUI 设置为半虚拟化直通,因此它们映射到 virtualpfsense vEth1(WAN) 和 vETH2(LAN)(我读过半虚拟化可以实现,因此您不需要像 VT-d 这样的硬件支持。半虚拟化应该接近裸机性能,场景 A 似乎证实了这一点。

初步故障排除:

  • 摆动并更换跳线以检查问题是否是物理问题
  • 在场景 A 和 B 之间来回切换 3 次,中间重新启动只是为了看看它是否是侥幸。

计划的故障排除/跟进:

  • 我记得读过来宾操作系统需要设计为用作半虚拟化来宾,才能使半虚拟化有效。不确定 pfsense 是否存在,也许不是,场景 A 是侥幸?还是很奇怪的行为。
  • 将测试 VyOS 是否有类似行为(最终目标是 VyOS 和 pfsense 在 atom box 上虚拟化)
1个回答

JFL 是正确的,它是 NIC 校验和卸载错误。我的猜测是,当我的虚拟路由器位于我的物理路由器后面时,它以某种方式成功了,因此它不需要进行校验和。

问题回顾:

  • 场景 A:物理后的虚拟导致 88mbps(pfsense 2.4.2 作为 CentOS 7 上的 KVMguest,pfsense 安装上的默认设置。)(受到物理 pfsense 笔记本电脑的 PCI 插件卡的限制。)

  • 场景B:虚拟替换物理导致0.01mbps


解决方案:

  • 通过在 KVMhost 上运行以下命令,我能够在场景 B 中获得 80mbps。
ethtool --offload  enp1s0  rx off  tx off 
ethtool --offload  enp2s0  rx off  tx off

笔记:

  • 可悲的是,这只导致了 80mbps。(并且在重新启动之间不会持续存在,我相信我可以找到一种方法让它在重新启动之间持续存在,但是性能使得这个学习项目不值得。)
  • 我还尝试了 pfsense web GUI:系统 -> 高级 -> 网络 -> 禁用硬件校验和卸载
  • 并尝试了 pfsense 控制台:ee /boot/loader.conf(添加了以下条目以使 pfsense 知道作为半虚拟化来宾运行)

virtio_load="YES"
virtio_pci_load="YES"
if_vtnet_load="YES"
virtio_blk_load="YES"

  • 最终通过所有 3 项优化,速度仍然只有 80mbps。显然,FreeBSD 没有很好的 virtio 驱动程序,但是 VyOS(基于 linux)确实有很好的 virtio 驱动程序,因此可以获得良好的性能,但是在这一点上,我还不如运行裸机,因为我无法在可接受的性能水平。我想将来我可以用一个支持 vt-d 的盒子再次尝试这个实验,这样我就可以对 NIC 进行 pci 直通,或者我可以购买一个大于 16GB 的 ssd,这样我就可以看看 pfsense 是否与 HyperV 配合得很好半虚拟化解决方案。