[technique] Optimisation du kernel des routeurs

Jérôme Nicolle jerome at ceriz.fr
Dim 30 Sep 04:00:20 CEST 2012


Plop,

On en a déjà vaguement parlé mais j'ai trainé à sortir les éléments
technique, voici donc un récap du problème d'algo de routage sous linux.

Historiquement la table de routage de Linux est une hastable. C'est
simple et ça marche très bien pour des petites tables de routage. Ce
n'est pas fait pour une full view.

Depuis le 2.6.13 le patch fib_trie a été mergé en experimental dans la
stack IPv4 du kernel. Il n'est que très rarement activé car il n'a aucun
intérêt pour tenir trois routes. Cependant depuis le 2.6.39 fib_trie est
devenue l'implémentation par défaut et fib_hash.c a été supprimé.

Dans notre cas par contre,

> root at h3:~# ip r l | wc -l
> 422830

le gain est difficile à estimer, mais avec la maturation du code de
fib_trie.c il pourrait être assez intéressant. Concrètement, ça
permettrait de tenir plus de charge en cas d'attaque en PPS/DoS.

Je n'ai pas trouvé de benchmark factuel pour étayer cette supposition,
j'ai par contre intuitivement la conviction que ça ne peut pas faire de mal.

La config actuelle sur h3 est, sur un 2.6.32 :

> # CONFIG_IP_FIB_TRIE is not set
> CONFIG_IP_FIB_HASH=y

la doc correspondante à l'option fib_trie (notes d’implémentation) est là :

http://www.mjmwired.net/kernel/Documentation/networking/fib_trie.txt

Je recommande de planifier un update des kernels de gw et h3 vers une
version la plus récente possible (derniers comits de fib_trie par Linus
le 23/05/2011, mais peu de mouvement depuis 2010 hors l'ajout global du
prefetching) . Leur mise en place effective devrait se faire de façon
synchrone avec l'upgrade de bird et des configs.

@+

-- 
Jérôme Nicolle
06 19 31 27 14



Plus d'informations sur la liste de diffusion technique