On Wed, Jan 24, 2018 at 09:41:10AM -0800, Ben Pfaff wrote:
> From: Huanle Han <[email protected]>
>
> 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 <[email protected]>
> ---
> 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
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev