Bug 237339 - DHCP UDP corrupt checksum issues seen by Xen guest
Summary: DHCP UDP corrupt checksum issues seen by Xen guest
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel-xen
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Herbert Xu
QA Contact: Brian Brock
URL:
Whiteboard:
Depends On:
Blocks: 223258
TreeView+ depends on / blocked
 
Reported: 2007-04-20 21:15 UTC by Daniel Berrangé
Modified: 2018-04-11 08:30 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2007-05-04 14:27:21 UTC


Attachments (Terms of Use)

Description Daniel Berrangé 2007-04-20 21:15:52 UTC
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 12:45:37 UTC
Isn't it DUP of BZ 186183?


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