On Wed, Jan 24, 2018 at 09:41:10AM -0800, Ben Pfaff wrote:
> From: Huanle Han <hanxue...@gmail.com>
> 
> Currently, ovs datapath doesn't support to mask igmp type. Masking igmp
> type made flow_wildcards_has_extra() always true when revalidate. And
> igmp flow is never kept in datapath.
> 
> Signed-off-by: Huanle Han <hanxue...@gmail.com>
> ---
>  ofproto/ofproto-dpif-xlate.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
> index 40c04cc4fb4a..51ddc93a0935 100644
> --- a/ofproto/ofproto-dpif-xlate.c
> +++ b/ofproto/ofproto-dpif-xlate.c
> @@ -2808,7 +2808,6 @@ xlate_normal(struct xlate_ctx *ctx)
>               */
>              ctx->xout->slow |= SLOW_ACTION;
>  
> -            memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src);
>              if (mcast_snooping_is_membership(flow->tp_src) ||
>                  mcast_snooping_is_query(flow->tp_src)) {
>                  if (ctx->xin->allow_side_effects && ctx->xin->packet) {

Thanks for pointing out the problem.

I think that this is an aspect of a bigger problem, and I do not think
that this patch solves it.  The bigger problem is that translation can
yield a datapath flow match that is more specific than the datapath can
implement.  Such a flow match can only be installed in the datapath by
leaving out some of the match criteria.  If that is done, it will lead
to incorrect forwarding if a packet comes along that matches the
installed match but not the intended match.

This situation is supposed to be handled this way:

    - odp_flow_key_to_flow() reports ODP_FIT_TOO_LITTLE, indicating that
      the datapath didn't parse fields that userspace understands.

    - The upcall code installs a slow-path flow instead of a flow that
      actually executes all of the actions.

However, I see now that somehow both parts of this solution are missing.
For the first part, odp_flow_key_to_flow() lacks the special case for
IGMP that it needs.  For the second part, the code to slow-path
incomplete matches apparently got dropped around 2013.

I'll send a series soon that addresses both of these.  I'd appreciate
your feedback on whether it fixes the problem that you observe.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to