RHEL 8 and 9 KVM: Large packets sent from guests via virtio-net with UFO are dropped.

Solution Verified - Updated -

Issue

RHEL 8 and 9 KVM: Large packets sent from guests via virtio-net with UFO(Udp Fragmentation Offload) are dropped.

Reproducer Environment Sample:

=== KVM host1

[root@host1 /]# uname -r
4.18.0-513.5.1.el8_9.x86_64
[root@host1 /]# ip link show master br0
3: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP mode DEFAULT group default qlen 1000
    link/ether c8:5b:76:9b:24:e7 brd ff:ff:ff:ff:ff:ff
12: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether fe:54:00:60:00:d8 brd ff:ff:ff:ff:ff:ff
14: vnet3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether fe:54:00:f2:f2:33 brd ff:ff:ff:ff:ff:ff
[root@host1 /]#

=== Guest vm2

[root@vm2 /]# ip addr list dev eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:f2:f2:33 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.2/24 brd 10.1.1.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
[root@vm2 /]# 

=== Guest vm1

[root@vm1 /]# uname -r
3.10.0-1160.el7.x86_64
[root@vm1 /]# ip addr list dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:60:00:d8 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/24 brd 10.1.1.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
[root@vm1 /]# ethtool -i eth0 | head -1
driver: virtio_net
[root@vm1 /]# ethtool -k eth0 | grep udp-fragmentation-offload:
udp-fragmentation-offload: on
[root@vm1 /]# ls -l /tmp/data.1476
-rw-r--r-- 1 root root 1476 Sep  8 16:12 /tmp/data.1476
[root@vm1 /]# date; cat /tmp/data.1477 | nc -u 10.1.1.2 10000
Mon Sep  8 16:16:51 JST 2025
[root@vm1 /]# date; ethtool -K eth0 ufo off
Mon Sep  8 16:18:20 JST 2025
[root@vm1 /]# date; cat /tmp/data.1477 | nc -u 10.1.1.2 10000
Mon Sep  8 16:18:23 JST 2025
[root@vm1 /]# 

Issue:

[root@host1 /]# tcpdump -i vnet1 -nne '! (icmp or arp)' 2>/tmp/stderr
16:16:51.472061 52:54:00:60:00:d8 > 52:54:00:f2:f2:33, ethertype IPv4 (0x0800), length 1519: 10.1.1.1.37042 > 10.1.1.2.10000: UDP, length 1477
16:18:23.227888 52:54:00:60:00:d8 > 52:54:00:f2:f2:33, ethertype IPv4 (0x0800), length 1514: 10.1.1.1.48782 > 10.1.1.2.10000: UDP, bad length 1477 > 1472
16:18:23.227904 52:54:00:60:00:d8 > 52:54:00:f2:f2:33, ethertype IPv4 (0x0800), length 39: 10.1.1.1 > 10.1.1.2: ip-proto-17
[root@host1 /]# tcpdump -i vnet3 -nne '! (icmp or arp)' 2> /tmp/stderr
16:18:23.227898 52:54:00:60:00:d8 > 52:54:00:f2:f2:33, ethertype IPv4 (0x0800), length 1514: 10.1.1.1.48782 > 10.1.1.2.10000: UDP, bad length 1477 > 1472
16:18:23.227906 52:54:00:60:00:d8 > 52:54:00:f2:f2:33, ethertype IPv4 (0x0800), length 39: 10.1.1.1 > 10.1.1.2: ip-proto-17

The length 1477-byte packet was dropped at 16:16:51 before it reached vnet3. The tcpdump output at 16:18:23 confirms that running 'ethtool -K eth0 ufo off' on vm1 serves as a workaround.

Environment

  • Red Hat Enterprise Linux 8
  • Red Hat Enterprise Linux 9

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content