• Paolo Abeni's avatar
    ipv6: introduce and uses route look hints for list input. · 197dbf24
    Paolo Abeni authored
    When doing RX batch packet processing, we currently always repeat
    the route lookup for each ingress packet. When no custom rules are
    in place, and there aren't routes depending on source addresses,
    we know that packets with the same destination address will use
    the same dst.
    
    This change tries to avoid per packet route lookup caching
    the destination address of the latest successful lookup, and
    reusing it for the next packet when the above conditions are
    in place. Ingress traffic for most servers should fit.
    
    The measured performance delta under UDP flood vs a recvmmsg
    receiver is as follow:
    
    vanilla		patched		delta
    Kpps		Kpps		%
    1431		1674		+17
    
    In the worst-case scenario - each packet has a different
    destination address - the performance delta is within noise
    range.
    
    v3 -> v4:
     - support hints for SUBFLOW build, too (David A.)
     - several style fixes (Eric)
    
    v2 -> v3:
     - add fib6_has_custom_rules() helpers (David A.)
     - add ip6_extract_route_hint() helper (Edward C.)
     - use hint directly in ip6_list_rcv_finish() (Willem)
    
    v1 -> v2:
     - fix build issue with !CONFIG_IPV6_MULTIPLE_TABLES
     - fix potential race when fib6_has_custom_rules is set
       while processing a packet batch
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    197dbf24
ip6_input.c 14.4 KB