On 09/18/2017 01:32 PM, Ben Pfaff wrote:
On Mon, Sep 18, 2017 at 01:27:52PM -0700, Greg Rose wrote:
On 09/18/2017 11:15 AM, Ben Pfaff wrote:
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.
Correct, the user space limit should be 32KB. That's what it is in iproute2.
OVS supports Linux < 4.9 as well, so should we stick with 16 kB (or
detect the kernel version or limit somehow)?
http://www.spinics.net/lists/netdev/msg431592.html
We should research how iproute2 package utilities detect what message size to
use
since they have to work with older kernels as well.
I'll take an action item to do that and get back with a patch or a
recommendation at the least.
Thanks,
- Greg
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev