diff mbox

[ovs-dev] ovn-vtep: fix arping from vtep-gw physical port

Message ID CAKgLnsF=TP=fFkfEkZR15cp5h9D7k7pKNH+7+s6qC2y=F1q8wA@mail.gmail.com
State Not Applicable
Headers show

Commit Message

Darrell Ball Sept. 20, 2016, 10:06 p.m. UTC
On Tue, Sep 20, 2016 at 2:38 PM, Ramu Ramamurthy <ramu.ramamurthy@gmail.com>
wrote:

> >
> > Does the following diff work on your system?
> >
> >
> > diff --git a/ovn/northd/ovn-northd.8.xml b/ovn/northd/ovn-northd.8.xml
> > index 7797417..4f1cd89 100644
> > --- a/ovn/northd/ovn-northd.8.xml
> > +++ b/ovn/northd/ovn-northd.8.xml
> > @@ -421,8 +421,8 @@
> >
> >      <ul>
> >        <li>
> > -        Priority-100 flows to skip ARP responder if inport is of type
> > -        <code>localnet</code>, and advances directly to the next table.
> > +        Priority-100 flows to skip ARP responder if inport is not
> > associated
> > +        with a local VIF, and advances directly to the next table.
> >        </li>
> >
> >        <li>
> > diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
> > index 8c7e80c..bcb9738 100644
> > --- a/ovn/northd/ovn-northd.c
> > +++ b/ovn/northd/ovn-northd.c
> > @@ -2428,7 +2428,9 @@ build_lswitch_flows(struct hmap *datapaths, struct
> > hmap *ports,
> >              continue;
> >          }
> >
> > -        if (!strcmp(op->nbsp->type, "localnet")) {
> > +        /* Skip installing arp responder if the logical switch inport
> > +         * is not associated with a local VIF. */
> > +        if (strcmp(op->nbsp->type, "")) {
> >              ds_clear(&match);
> >              ds_put_format(&match, "inport == %s", op->json_key);
> >              ovn_lflow_add(lflows, op->od, S_SWITCH_IN_ARP_ND_RSP, 100,
>
> Yes, the above works, The above code skips the arp-responder for all
> non-vif ports
> (localnet, vtep, router, l2gateway). Is that ok ?
>

Actually, I was just going to fire off another e-mail after further
reflection.

The present "l2gateway type" inport case could be kept for now; thats a
separate discussion
with other implications.
It will take advantage of the arp responder, however, for north->south
traffic.

The logical switch "router type" inport case should never be needed here
and if that is the inport,
we can go to the next table.

             ovn_lflow_add(lflows, op->od, S_SWITCH_IN_ARP_ND_RSP, 100,



>
> My usecase requires to skip the arp-responder for
> vtep because, multiple hypervisors could respond to an arp from vtep.
>

Thats right
diff mbox

Patch

diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
index 8c7e80c..e1a33c1 100644
--- a/ovn/northd/ovn-northd.c
+++ b/ovn/northd/ovn-northd.c
@@ -2428,7 +2428,10 @@  build_lswitch_flows(struct hmap *datapaths, struct
hmap *ports,
             continue;
         }

-        if (!strcmp(op->nbsp->type, "localnet")) {
+        /* Skip arp responder if the logical switch inport is not
+         * associated with a local VIF or a l2gateway port */
+        if ((strcmp(op->nbsp->type, "")) &&
+            (strcmp(op->nbsp->type, "l2gateway"))) {
             ds_clear(&match);
             ds_put_format(&match, "inport == %s", op->json_key);