Bug 237339
| Summary: | DHCP UDP corrupt checksum issues seen by Xen guest | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Daniel Berrangé <berrange> |
| Component: | kernel-xen | Assignee: | Herbert Xu <herbert.xu> |
| Status: | CLOSED RAWHIDE | QA Contact: | Brian Brock <bbrock> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | rawhide | CC: | bstein, mcepl, mcepl, xen-maint |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2007-05-04 14:27:21 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 223258 | ||
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: