On Mon, Sep 18, 2017 at 10:58:28AM -0700, Greg Rose wrote:
> On 09/12/2017 08:37 PM, ychen wrote:
> >in function nla_alloc_flow_actions(), there is a check if action length is
> >greater than MAX_ACTIONS_BUFSIZE(32k), then kernel datapath flow will not be
> >installed, and packets will droppped.
> >but in function xlate_actions(), there is such clause:
> >if (nl_attr_oversized(ctx.odp_actions->size)) {
> > /* These datapath actions are too big for a Netlink attribute, so we
> > * can't hand them to the kernel directly. dpif_execute() can
> > execute
> > * them one by one with help, so just mark the result as
> > SLOW_ACTION to
> > * prevent the flow from being installed. */
> > COVERAGE_INC(xlate_actions_oversize);
> > ctx.xout->slow |= SLOW_ACTION;
> > }
> >and in function nl_attr_oversized(), the clause is like this:
> >return payload_size > UINT16_MAX - NLA_HDRLEN;
> >
> >
> >so we can see that in user space, max action length is almost 64K, but in
> >kernel space, max action length is only 32K.
> >my question is: why the max action length is different? packet will drop
> >when its action length exceeds 32K, but packet can excute in slow path when
> >its action length exceeds 64K?
>
> It's a kernel limitation.
>
> http://www.spinics.net/lists/netdev/msg431592.html
It sounds like the userspace limit, then, should also be 32 kB (or
possibly 16 kB). I guess we should fix that.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev