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:
Isn't it DUP of BZ 186183?