[ovs-dev] ARP reply does not lead to revalidate

László Sürü laszlo.suru at ericsson.com
Fri Jan 20 15:38:11 UTC 2017


Thanks! It looks working for the first tests.
In plus I propose to add some more printouts to the error cases in build_tunnel_send() which helped me to understand the root cause.
What would be the next step for the correction?

Best regards
Laszlo

-----Original Message-----
From: Ben Pfaff [mailto:blp at ovn.org] 
Sent: Thursday, January 19, 2017 6:35 PM
To: László Sürü <laszlo.suru at ericsson.com>
Cc: ovs-dev at openvswitch.org
Subject: Re: [ovs-dev] ARP reply does not lead to revalidate

On Thu, Jan 19, 2017 at 04:04:10PM +0000, László Sürü wrote:
> Hi,
> 
> We are using OVS 2.6.1 to connect VMs via GRE tunneling in OpenStack environment.
> The bridge configuration is similar to proposed userspace tunneling at 
> https://github.com/openvswitch/ovs/blob/master/Documentation/howto/use
> rspace-tunneling.rst The 2 bridges are of netdev type as below.
> - br-int contains OF rules to forward packets from VM to GRE tunnel and vice-versa.
> - br-phy is MAC learning switch.
> 
> In the tunnel configuration local and remote IPs are in different IP subnets:
> The use case is about to ping from one VM to another one using MPLS encapsulated in GRE tunnel in between 2 computes via a gateway.
> The expected packet path is
> VM ->  br-int ->br-phy LOCAL ->out
> 
> However, for the first ping this doesn't work in case the tunnel encapsulation cannot lookup the destination IP in the ARP cache.
> ofproto-dpif-xlate.c: build_tunnel_send();
>     "neighbor cache miss for 10.85.59.49 on bridge br-phy, sending ARP request"
> As a consequence, the tunnel_push action cannot be added to the flow, 
> instead the dpif flow will be truncated missing the tnl_push action.
> The ARP reply to the previous request arrives normally, but it doesn't lead to revalidation in datapath.
> 
> This results no packet out from the VM for some random number of 
> minutes, when finally dpif revalidation takes place for some other 
> reason
> 
> Have you experienced similar behavior?
> How the tunnel push supposed to work in such configuration?
> I expect the ARP reply to revalidate dpif flows in this case.

Thanks for the report.

Does the following patch fix the problem?

diff --git a/lib/tnl-neigh-cache.c b/lib/tnl-neigh-cache.c index 499efff..1f2b599 100644
--- a/lib/tnl-neigh-cache.c
+++ b/lib/tnl-neigh-cache.c
@@ -126,8 +126,8 @@ tnl_neigh_set__(const char name[IFNAMSIZ], const struct in6_addr *dst,
             return;
         }
         tnl_neigh_delete(neigh);
-        seq_change(tnl_conf_seq);
     }
+    seq_change(tnl_conf_seq);
 
     neigh = xmalloc(sizeof *neigh);
 

Thanks,

Ben.


More information about the dev mailing list