[OVSDB-273] ARP request from public gateway not answered Created: 24/Jan/16  Updated: 29/May/18  Resolved: 25/Jan/16

Status: Resolved
Project: ovsdb
Component/s: Southbound.Open_vSwitch
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Josh Hershberg Assignee: Josh Hershberg
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 5069

 Description   

Pinging the public gateway from a VM that has a floating IP does not work.

Analysis shows that OVS blocks ARP requests from the public gateway.

From devstack node:

[odl@vpn-6-116 ~]$ arp -a
sw01-dist-6.tlv.redhat.com (10.35.7.254) at 40:b4:f0:c2:24:01 [ether] on eth0
Note the public gateway's mac ^^^

[odl@vpn-6-116 ~]$ sudo ovs-appctl bridge/dump-flows br-int
...
priority=180004,arp,dl_src=40:b4:f0:c2:24:01,arp_op=1,actions=NORMAL
duration=794s, n_packets=0, n_bytes=0, priority=180003,arp,dl_dst=40:b4:f0:c2:24:01,arp_op=2,actions=NORMAL
...

These (^^^) hidden rules prevent the ARP request from being properly responded to.



 Comments   
Comment by Josh Hershberg [ 24/Jan/16 ]

Note this issue is resolved by setting the bridge as not in "in-band" mode. The bug does not occur in master as a result of this commit:
[root@vm-18-80 ovsdb]# git show 3bbc624d
commit 3bbc624dbad7fdcd0bae091d8289990c884dde37
Author: Sam Hague <shague@redhat.com>
Date: Sat Nov 14 00:44:31 2015 -0500

rework sfc flows 2

Change-Id: I9cb93d19d54cd7bcf7d93ab82e17dbe7579cafb3
Signed-off-by: Sam Hague <shague@redhat.com>

More specifically, this specific diff:

diff --git a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SouthboundImpl.java b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SouthboundImpl.java
index 2ea5489..38eeaec 100644
— a/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SouthboundImpl.java
+++ b/openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SouthboundImpl.java
@@ -33,6 +33,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeExternalIds;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeOtherConfigs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeOtherConfigsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeOtherConfigsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
@@ -197,6 +199,13 @@ public class SouthboundImpl implements Southbound {
ovsdbBridgeAugmentationBuilder.setProtocolEntry(createMdsalProtocols());
ovsdbBridgeAugmentationBuilder.setFailMode(
MdsalHelper.OVSDB_FAIL_MODE_MAP.inverse().get("secure"));
+ BridgeOtherConfigsBuilder bridgeOtherConfigsBuilder = new BridgeOtherConfigsBuilder();
+ bridgeOtherConfigsBuilder.setBridgeOtherConfigKey(MdsalHelper.DISABLE_IN_BAND);
+ bridgeOtherConfigsBuilder.setBridgeOtherConfigValue("true");
+ bridgeOtherConfigsBuilder.setBridgeOtherConfigKey(MdsalHelper.DISABLE_IN_BAND);
+ List<BridgeOtherConfigs> bridgeOtherConfigsList = new ArrayList<>();
+ bridgeOtherConfigsList.add(bridgeOtherConfigsBuilder.build());
+ ovsdbBridgeAugmentationBuilder.setBridgeOtherConfigs(bridgeOtherConfigsList);
setManagedByForBridge(ovsdbBridgeAugmentationBuilder, ovsdbNode.getKey());
if (isOvsdbNodeDpdk(ovsdbNode)) {
ovsdbBridgeAugmentationBuilder.setDatapathType(DatapathTypeNetdev.class);

Comment by Sam Hague [ 24/Jan/16 ]

Joshua,

did you find this in stable/lithium? so master and stable/beryllium have the disable-inband and are working fine, right?

Thanks, Sam

Comment by Sam Hague [ 24/Jan/16 ]

https://git.opendaylight.org/gerrit/#/c/33435/

Generated at Wed Feb 07 20:35:57 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.