ip: process in-order fragments efficiently
authorPeter Oskolkov <posk@google.com>
Sat, 11 Aug 2018 20:27:25 +0000 (20:27 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 12 Aug 2018 00:54:18 +0000 (17:54 -0700)
commita4fd284a1f8fd4b6c59aa59db2185b1e17c5c11c
treed75f09d0acf9a10a81723bd1a2028f555e9dc54c
parent353c9cb360874e737fb000545f783df756c06f9a
ip: process in-order fragments efficiently

This patch changes the runtime behavior of IP defrag queue:
incoming in-order fragments are added to the end of the current
list/"run" of in-order fragments at the tail.

On some workloads, UDP stream performance is substantially improved:

RX: ./udp_stream -F 10 -T 2 -l 60
TX: ./udp_stream -c -H <host> -F 10 -T 5 -l 60

with this patchset applied on a 10Gbps receiver:

  throughput=9524.18
  throughput_units=Mbit/s

upstream (net-next):

  throughput=4608.93
  throughput_units=Mbit/s

Reported-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Peter Oskolkov <posk@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_fragment.c
net/ipv4/ip_fragment.c