Re: [PATCH] openvswitch: perform refragmentation for packets which pass through conntrack
From: Aaron Conole <aconole@redhat.com>
Date: 2021-03-19 22:14:23
Aaron Conole [off-list ref] writes:
When a user instructs a flow pipeline to perform connection tracking,
there is an implicit L3 operation that occurs - namely the IP fragments
are reassembled and then processed as a single unit. After this, new
fragments are generated and then transmitted, with the hint that they
should be fragmented along the max rx unit boundary. In general, this
behavior works well to forward packets along when the MTUs are congruent
across the datapath.
However, if using a protocol such as UDP on a network with mismatching
MTUs, it is possible that the refragmentation will still produce an
invalid fragment, and that fragmented packet will not be delivered.
Such a case shouldn't happen because the user explicitly requested a
layer 3+4 function (conntrack), and that function generates new fragments,
so we should perform the needed actions in that case (namely, refragment
IPv4 along a correct boundary, or send a packet too big in the IPv6 case).
Additionally, introduce a test suite for openvswitch with a test case
that ensures this MTU behavior, with the expectation that new tests are
added when needed.
Fixes: 7f8a436eaa2c ("openvswitch: Add conntrack action")
Signed-off-by: Aaron Conole <aconole@redhat.com>
---Ugh, after I re-generated, I forgot to add 'net' as the target tree. Sorry for that.