Performance progression of IPv6 route lookup on Linux
In a previous article, I explained how Linux implements an IPv6 routing table. The following graph shows the performance progression of route lookups through Linux history:
All kernels are compiled with GCC 4.9 (from Debian Jessie). This version is
able to compile older kernels as well as current ones. The kernel configuration
is the default one with CONFIG_SMP, CONFIG_IPV6,
CONFIG_IPV6_MULTIPLE_TABLES and CONFIG_IPV6_SUBTREES options enabled. Some
other unrelated options are enabled to be able to boot them in a virtual machine
and run the benchmark.
There are three notable performance changes:
- In Linux 3.1, Eric Dumazet delays a bit the copy of route metrics to fix the undesirable sharing of route-specific metrics by all cache entries (commit 21efcfa0ff27). Each cache entry now gets its own metrics, which explains the performance hit for the non-/128 scenarios.
- In Linux 3.9, Yoshifuji Hideaki removes the reference to the neighbor
entry in
struct rt6_info(commit 887c95cc1da5). This should have lead to a performance increase. The small regression may be due to cache-related issues. - In Linux 4.2, Martin KaFai Lau prevents the creation of cache entries for most route lookups. The Continue reading
It’s using Dell, Nutanix, VMware, and CA Technologies.
CC BY 2.0
Image by
Unique governance model allows projects to set their own course.
Windstream has been offering BCN services via wholesale for over a decade.
MongoDB reportedly files for an IPO; ADVA completes acquisition of MRV Communications; Mirantis launches Kubernetes and Docker Bootcamp.
NetApp and Microsoft will reveal more details about their partnership later this year.