知识卡片

vhost中checksum与TSO的诚实谎言

专业/工作 · 1115.a

内容

网卡硬件卸载checksum和TSO(参见[[TSO与RSC是拆包组包的镜像卸载]]),是为应对真实物理链路上包可能出错、包大小受MTU限制这些约束。但virtio场景下数据从客户机到宿主机走的是内存拷贝,根本没经过任何物理网络——不存在传输出错风险,也没有MSS限制需要真的切分大包。所以vhost对这两个特性的”支持”其实是一种诚实的谎言:特性协商时告诉客户机”我支持”,客户机发包便省去真正计算校验和、切分TCP包的CPU开销,vhost收包后只需把包头标志位改成”已完成”,全程没做过真正对应的计算。

参考来源

《深入浅出DPDK》第12章《加速包处理的vhost优化方案》