Progression des performances de la table de routage IPv6 sous Linux

Vincent Bernat

Dans un précédent article, j’expliquais comment Linux stockait les routes IPv6. Le graphique suivant montre l’évolution des performances de Linux depuis le noyau 2.6.39 :

Progression des performances de recherche de routes pour IPv6
Temps de recherche de routes IPv6 pour différentes versions du noyau. La recherche est effectuée sur une table de 40 000 routes. Les changements notables sont mis en valeur. Les zones ombragées représentent l'écart absolu médian.

Tous les noyaux sont compilés avec GCC 4.9 (issu de Debian Jessie). Cette version est compatible avec des noyaux antiques ainsi qu’avec les noyaux les plus récents. La configuration du noyau est celle par défaut avec les options CONFIG_SMP, CONFIG_IPV6, CONFIG_IPV6_MULTIPLE_TABLES et CONFIG_IPV6_SUBTREES activées. D’autres options mineures sont activées pour permettre de prendre les mesures.

Il y a trois changements notables :

  • Avec Linux 3.1, Eric Dumazet retarde la copie des métriques pour corriger le partage involontaire entre toutes les entrées du cache (commit 21efcfa0ff27). Chaque route en cache dispose désormais de ces propres métriques, ce qui explique l’impact sur les performances pour les scénarios autres que celui en /128.
  • Avec Linux 3.9, Yoshifuji Hideaki retire l’enchevêtrement entre les entrées de routage et le sous-système des voisins (commit 887c95cc1da5). Cela aurait dû apporter un gain en performance.
  • Avec Linux 4.2, Martin KaFai Lau élimine la création des entrées dans le cache pour la plupart des routes à l’exception des routes dont le PMTU est différent du MTU de l’interface sous-jacente. Les gains proviennent essentiellement du commit 4b32b5ad31a6 et du commit 45e4fd26683c.

MISE À JOUR (11.2017) : Voici un graphique pour des noyaux plus récents. Les mesures ont été effectuées dans des conditions similaires. La légère amélioration de performance dans Linux 4.14 provient de mon commit feca7d8c135b.

Performance de la table de routage IPv6 sur des noyaux récents
Temps de recherche de routes IPv6 pour différentes versions du noyau. La recherche est effectuée sur une table de 40 000 routes. Les zones ombragées représentent l'écart absolu médian.

Partager cet article