[ovs-dev] [PATCH] ovn-vtep: fix arping from vtep-gw physical port
Darrell Ball
dlu998 at gmail.com
Tue Sep 20 22:06:52 UTC 2016
On Tue, Sep 20, 2016 at 2:38 PM, Ramu Ramamurthy <ramu.ramamurthy at 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.
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);
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
More information about the dev
mailing list