![在 KVM 虚拟网络上禁用 TCP 校验和卸载](https://linux22.com/image/628588/%E5%9C%A8%20KVM%20%E8%99%9A%E6%8B%9F%E7%BD%91%E7%BB%9C%E4%B8%8A%E7%A6%81%E7%94%A8%20TCP%20%E6%A0%A1%E9%AA%8C%E5%92%8C%E5%8D%B8%E8%BD%BD.png)
我有一个用于连接 KVM 客户机和主机的虚拟网络。
我需要禁用此网络上的 TCP 校验和卸载。ethtool 工作正常,但我想禁用它永久我在 virsh 或 QEMU 文档中找不到任何内容。添加带有相应选项的 /etc/sysconfig/network-scripts/ifcfg-virbr1 文件也不起作用。
答案1
ethtool -K eth0 tso off
或rc.local
虚拟机启动脚本。您可以将其作为libvirt 钩子也
答案2
我建议使用 udev 规则来执行此操作。我将其放在 /etc/udev/rules.d/81-bridge.rules 中:
ACTION=="add", SUBSYSTEM=="net", NAME=="virbr*", RUN+="/sbin/ethtool -K $env{INTERFACE} tx off"
根据您的需要,可以使用更复杂的方法。
答案3
您可以在客户机界面 xml 中禁用它:
<driver>
<host csum='off'/>
<guest csum='off'/>
</driver>
參閱https://libvirt.org/formatdomain.html#setting-nic-driver-specific-options
答案4
我一般用这个:
<interface type='network'>
<model type='virtio'/>
<driver name='vhost'>
<guest csum='off' tso4='off' tso6='off'/>
</driver>
</interface>
它现在似乎触发了语法错误,YMMV。据我所知,不同之处在于,这种方式在拆分/半虚拟驱动程序的客户机端被禁用。
看着https://doc.dpdk.org/guides-16.07/sample_app_ug/vhost.html看来只有启用了 DPDK 后“vhost”才会存在。