From: Eric Dumazet <redacted>
Date: Thu, 17 Feb 2011 07:25:15 +0100
Thanks David for this work in progress.
It was my pleasure :-)
If I remember my works in last October/November, I also know fib_hash
was a bit faster than fib_trie (around 20%)...
Right, if table is small hash can be faster.
I just wrote a hack that puts fib_lookup() results into the the
flow cache, and hooked it only into the one fib_lookup() call
that happens in ip_route_output_slow().
This pointed out another costly thing we do when resolving output
routes. If the flow key's source is not INADDR_ANY, we validate the
source address is our's by doing a fib table lookup in the local
table, with the address in the flow key's destination field.
So even on output we were doing 3 fib lookups :-/
Therefore, the flow cache hack gets rid of 2 of those 3.