Linux tap 接口是否支持 ipip 网络流量上的 tcp 分段

Linux tap 接口是否支持 ipip 网络流量上的 tcp 分段

最近,我在虚拟机上运行 kubernetes 从属服务器时遇到了一个问题,该虚拟机使用 calico ipip 隧道作为网络连接协议来连接 kubernetes 节点。当前的症状(经 tcpdump 确认)是,当向虚拟机上的 k8s 从属节点发起 tcp 流量时,到达 vmbr0(虚拟机主机上的桥接接口)的所有数据包(大小大于虚拟机 MTU)都会被丢弃,并且在连接到 qemu 虚拟机的 tap 接口上找不到这些数据包。当发起流量时没有 ipip 标头,数据包可以在 tcp 级别正确分段并转发到虚拟机。

笔记:链路上的 MTU 为 1500,vmbr0 上大于 VM MTU 的数据包是由于 GRO 造成的。解决此问题的一种方法是禁用 VM 主机物理接口上的 GRO,但在处理高吞吐量流量时,这可能会引发性能问题。

相关内容