Av. Reina Mercedes s/n, 41012 (Seville)
Some of our customers have been observing IPv6 performance problems on their high load routers; these could be tracked down to IPv6 route lookup and its scaling to higher number of CPU.
To get an idea how serious the problem is, we performed series of microbenchmarks of IPv4 and IPv6 route lookup. While IPv4 route lookup is really efficient in recent kernels and scales nicely both with respect to size of FIB and to the number of benchmark threads running in parallel, IPv6 results were disappointing. Even single-thread lookups are much slower and with higher number of threads (16 and more), the performance is sometimes worse than if all lookups were run in one thread.
This direct comparison of IPv4 and IPv6 route lookup performance suggests one possible solution: to redesign IPv6 data structures and algorithms to follow the LPC trie implementation used for IPv4.
The talk presents benchmark results, attempts to explain the difference and presents results with a proof of concept implementation based on the IPv4 FIB.