[SRU] pre-1.5 OVS has trouble with floating ips when pinging from the same box
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
openvswitch (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Precise |
Fix Released
|
Medium
|
Unassigned |
Bug Description
[Impact]
The connection tracking logic using by IPtables gets confused if a packet passes through multiple linux network namespaces on the same host. The reason for this confusion is that OVS is not properly clearing some of the fields in the skb header, meaning the connection tracking ignores this packet, so iptables functionality that relies on this (in particular DNAT and SNAT) do not work.
In particular, the use of OVS by OpenStack Quantum is critically affected by this bug.
[Fix]
The issue has been fixed upstream as of 1.4.3. A minimal 5-liner that clears the appropriate metadata from the skb header. The patch has been cherry-picked and fix released in the current Ubuntu dev. release (12.10).
[Test Case]
1. Create external network 40.0.0.0/24 for floating IPs
2. Assign br-ex the IP 40.0.0.1
3. Pinging 40.0.0.1 appears to work, but you're pinging the router, not the VM
4. Network connectivity to the VM with the floating IP does not work, as expected.
[Regression Potential]
Minimal. Simple patch that has been cherry-picked from the current upstream stable release of Openvswitch (1.4.3).
[Original Report]
Note: OVS from before 1.5, which includes the default versions shipped with 12.04 and Fedora 17, has a bug that causes it not to work correctly with floating IPs when the person contacting the floating IP is on the same box as quantum-l3-agent.
While not very likely to happen in a production setup, this is fairly common in simple development environments. For example, let's say you create an external network 40.0.0.0/24 for floating IPs. If you then assign br-ex the IP 40.0.0.1, you should be able to reach all of your VMs with floating IPs, but it won't work because of this bug. Oddly, it will often appear to work if you use ping, but in reality you are pinging the IP address in the router namespace, not the VM.
We believe the following OVS commit it required for this to work properly:
We are looking at creating a new stable release on the 1.4.x branch to include this change and plan to work with distros to get it pulled into their packages.
Related branches
- Ubuntu Development Team: Pending requested
-
Diff: 454 lines (+402/-0)6 files modified.pc/applied-patches (+1/-0)
.pc/lp1044318-Reset-upper-layer-protocol-info.patch/datapath/vport-internal_dev.c (+330/-0)
datapath/vport-internal_dev.c (+8/-0)
debian/changelog (+10/-0)
debian/patches/lp1044318-Reset-upper-layer-protocol-info.patch (+52/-0)
debian/patches/series (+1/-0)
Changed in quantum: | |
milestone: | none → folsom-rc1 |
assignee: | nobody → dan wendlandt (danwent) |
importance: | Undecided → High |
status: | New → Confirmed |
Changed in openvswitch (Ubuntu): | |
importance: | Undecided → Medium |
description: | updated |
summary: |
- pre-1.5 OVS has trouble with floating ips when pinging from the same box + [SRU] pre-1.5 OVS has trouble with floating ips when pinging from the + same box |
Changed in openvswitch (Ubuntu Precise): | |
status: | New → Confirmed |
no longer affects: | quantum |
description: | updated |
Changed in openvswitch (Ubuntu Precise): | |
status: | Confirmed → Triaged |
importance: | Undecided → Medium |
removing from milestone for quantum, as this is a purely packaging issue.