Bug 237339 - DHCP UDP corrupt checksum issues seen by Xen guest
DHCP UDP corrupt checksum issues seen by Xen guest
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: kernel-xen (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Herbert Xu
Brian Brock
:
Depends On:
Blocks: 223258
  Show dependency treegraph
 
Reported: 2007-04-20 17:15 EDT by Daniel Berrange
Modified: 2007-11-30 17:12 EST (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2007-05-04 10:27:21 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Daniel Berrange 2007-04-20 17:15:52 EDT
Description of problem:
The situation is this:

  - Dom0 runs a bridge device 'virbr0' - there is no physical device enslaved

  - virbr0 is configured with 192.168.122.1/255.255.255.0

  - Dom0 runs a dnsmasq daemon serving DHCP requests on virbr0

     dnsmasq --keep-in-foreground \
             --bind-interfaces \
             --pid-file  \
             --conf-file  \
             --listen-address 192.168.122.1 \
             --except-interface lo \
             --dhcp-leasefile=/var/lib/libvirt/dhcp-default.leases \
             --dhcp-range 192.169.122.2,192.168.122.254

  - There can be an aribtrary number of other bridge devices virbrX
    and associated dnsmasq processes, but they can be ignored really

  - IPTables FORWARD is enabled & MASQUERADE is used in POSTROUTING
    chain for outbound net access

  - FC6 DomU guest is configured with a vif attached to virbr0

So, when booting up the FC6 DomU guest sends out a DHCP request and the
dnsmasq process attached to virbr0 sees it & sends back an offer.

I have 2 machines with this setup

  1. FC6 Dom0, with FC6 kernel 2.6.18-1.2798.fc6xen
  2. FC6 Dom0, with RHEL5 kernel 2.6.18-10.el5xen
  3. FC7 Dom0, with FC7 kernel 2.6.20-2925.5.fc7xen

No, that's not a typo with option 2 - FC6 userspace + RHEL5 kernel.

In the machine running the FC6/RHEL5 kernel, the guest gets a DHCP reply
just fine, but in machine with the FC7 kernel, the guest always sees corrupt
UDP checksums.

In the FC6 kernel I see:

 # ethtool -k virbr0
  Offload parameters for virbr0:
  rx-checksumming: off
  tx-checksumming: on
  scatter-gather: off
  tcp segmentation offload: off
 # ethtool -k vif2.0
  Offload parameters for vif2.0:
  rx-checksumming: off
  tx-checksumming: on
  scatter-gather: on
  tcp segmentation offload: on


In the RHEL-5 kernel I see:

 # ethtool -k virbr0
  Offload parameters for virbr0:
  rx-checksumming: off
  tx-checksumming: off
  scatter-gather: off
  tcp segmentation offload: off
 # ethtool -k vif1.0
  Offload parameters for vif1.0:
  rx-checksumming: off
  tx-checksumming: on
  scatter-gather: off
  tcp segmentation offload: off

But in the FC7 kernel I see:

 # ethtool -k virbr0
  Offload parameters for virbr0:
  rx-checksumming: off
  tx-checksumming: on
  scatter-gather: off
  tcp segmentation offload: off
  udp fragmentation offload: off
  generic segmentation offload: off
 # ethtool -k vif8.0
  Offload parameters for vif8.0:
  rx-checksumming: off
  tx-checksumming: on
  scatter-gather: on
  tcp segmentation offload: on
  udp fragmentation offload: off
  generic segmentation offload: off

So, the only noticable variation here is that RHEL-5 has tx-checksumming
off for the bridge device. In all other cases its on. But FC7 is the only
one failing.

Finally, the Guest VM in all cases was an *identical* FC6 paravirt DomU

 # ethtool -k eth0
  Offload parameters for eth0:
  rx-checksumming: off
  tx-checksumming: on
  scatter-gather: on
  tcp segmentation offload: on


Since the DomU kernel is identical in all cases, I can only conclude that
there is some checksumming issue in the FC7 Dom0 kernel. Indeed, if I turn
off tx-checksumming on virbr  in Dom0 for FC7 kernel, then the guest DHCPs
just fine.


Version-Release number of selected component (if applicable):
2.6.20-2925.5.fc7xen

How reproducible:
Always

Steps to Reproduce:
1. Create a FC6 guest, attaching it to virbr0
2. Run ifup eth0 in guest
3.
  
Actual results:
Fails to DHCP with UDP checksum errors logged

Expected results:
DHCP succeeeds

Additional info:
Comment 1 Matěj Cepl 2007-04-24 08:45:37 EDT
Isn't it DUP of BZ 186183?

Note You need to log in before you can comment on or make changes to this bug.