Cc'ing Cong, Paul, Oz and Davide.

On Thu, Oct 29, 2020 at 10:22:04AM +0800, wenxu wrote:
> Only do gso for the reassembly big packet is also can't fix all the
> case such for icmp packet.

Good point. And as we can't know that a fragment was for an icmp
packet before defraging it, this is quite impactful.

> 
> So there are some proper solution for this problem. In the Internet
> we can't avoid the fragment packets.

I agree. One other idea is to add support for some hook to mirred,
that gets executed before xmiting the packet. Then, when act_ct (or
another specific act module, say act_frag, as act_ct might not be the
only one interested in defragging in the future) gets loaded, it
configs that hook.

So that mirred would something like:
if (xmit_hook)
        xmit_hook(skb, dev_queue_xmit);
else
        dev_queue_xmit(skb);
Even protect it with a static branch key.

This leaves mirred almost untouched, 0 performance penalty for those
that don't use act_ct, can even have a Kconfig knob, is not CT or
ipfrag specific code on mirred so it's reusable later on and solves
our problem here. Thoughts?

  Marcelo

Reply via email to