Some more clarifications:
It appears the QEMU does turn on the vnet_hdr flag of the tap interface in most
cases, not just host-only networks. My previous assumption was due to the way
the libvirt manages it, only setting it if the virtio interface is used.
Still, for software fragmentation imple
After stepping through the code, it has become clear that the
e1000e/vmxnet3 emulated models do not implement TCP segmentation,
however they still "advertise" it as a feature to the guest OS.
Regarding my prior interpretation, the implementation is written to
forward the entire packet to the host
After reading through some of the code for the e1000, e1000e, and
vmxnet3 device models, it appears that all 3 are capable of performing
tcp segementation, however, in the net_tx_pkt_send function, there is a
check
if (pkt->has_virt_hdr ||
pkt->virt_hdr.gso_type == VIRTIO_NET_HDR_GSO_NONE)
Public bug reported:
Problem Description:
When using a tap interface and the guest sends a TCP packet that would need to
be segmented, it is fragmented using IP fragmentation. The host does not
reassemble the IP fragments and forwards them to the next hop. This causes
issues on certain ISPs, wh