SSTIC 2013 - NFTables et évolutions de netfilter

Par Eric Leblond.

La perf de netfilter c’est pas génial en fait, à chaque règle ajoutée on a une dégradation des perfs assez importante quand le jeu de règle augmente. Et in fine ça explose (pas top). En plus ya de plus en plus d’entrées à gérer dans les règles des pare-feux. En plus les jeux de règles doivent évoluer dynamiquement, ce qui n’est pas génial quand on met 1s à re-intégrer une nouvelle règle.

Coté code, ya pas mal de problèmes de duplication de code entre les différents modules de Netfilter. La mise à jour est assez pénible, vu que les échanges sont binaires entre userland et kernelland. In fine, vu qu’il fallait améliorer tout ça, l’équipe netfilter à décidé de mettre en oeuvre un vrai langage de description de règles avec une mise à jour atomique de chaque règle au lieu de tout descendre en userland avant de tout remonter dans le noyau, améliorant significativement les performances.

Le système de règles est bien enrichi de sucre syntaxique comme des opérations ensemblistes etc… et est compilé dans un langage qui est passé à une mini-machine dédiée dans le noyau qui va se charger d’exécuter ce langage de règles.

Bref ça à l’air pas mal comme évolutions…