On 20/07/2020 15:47, Alexander Petrovsky wrote: > Unfortunately, for UDP I can't pick some _random_ host in case the > first _seen_ fragment it's not a First Fragment (frag_off=0, MF=1). In > this case, I have to accumulate ALL fragments in map. And on each > received fragment check, is all fragments are collected. I did it in > my PoC with AF_XDP, but in PoC all seems unreliable. That's why I say punt in that case (XDP_PASS and then have something else downstream of it to handle the slowpath. However people did LB before XDP came along. Idk, netfilter? Does that have hooks post- reassembly?) And probably when punting also record a map entry saying "we punted this IPID" so that when the First Frag shows up, the slowpath gets to see that one too and can do its reassembly. So the map doesn't have to accumulate the fragments (the slowpath does that), just their offsets and lengths so XDP can tell when all frags have been passed to the slowpath and delete the map entry. -ed