]> git.baikalelectronics.ru Git - kernel.git/commit
ip: use rb trees for IP frag queue.
authorPeter Oskolkov <posk@google.com>
Thu, 2 Aug 2018 23:34:39 +0000 (23:34 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 6 Aug 2018 00:16:46 +0000 (17:16 -0700)
commit82e382cc46f1933f3b5bfc4a7e1aa5d6d427532f
tree4ecb0bb64c8baa58162b3f03046c0643a140ece0
parenta12ec263cb91c4633ebe533d8efbd5c66d65eb9e
ip: use rb trees for IP frag queue.

Similar to TCP OOO RX queue, it makes sense to use rb trees to store
IP fragments, so that OOO fragments are inserted faster.

Tested:

- a follow-up patch contains a rather comprehensive ip defrag
  self-test (functional)
- ran neper `udp_stream -c -H <host> -F 100 -l 300 -T 20`:
    netstat --statistics
    Ip:
        282078937 total packets received
        0 forwarded
        0 incoming packets discarded
        946760 incoming packets delivered
        18743456 requests sent out
        101 fragments dropped after timeout
        282077129 reassemblies required
        944952 packets reassembled ok
        262734239 packet reassembles failed
   (The numbers/stats above are somewhat better re:
    reassemblies vs a kernel without this patchset. More
    comprehensive performance testing TBD).

Reported-by: Jann Horn <jannh@google.com>
Reported-by: Juha-Matti Tilli <juha-matti.tilli@iki.fi>
Suggested-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Peter Oskolkov <posk@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
include/net/inet_frag.h
net/ipv4/inet_fragment.c
net/ipv4/ip_fragment.c
net/ipv6/netfilter/nf_conntrack_reasm.c
net/ipv6/reassembly.c