OVH Cloud OVH Cloud

Performances Netfilter

4 réponses
Avatar
Vincent Bernat
Coucou !

Je recherche des données pour optimiser un firewall sous
Netfilter. Par exemple, vaut-il mieux faire des règles à rallonge ou
restreindre les règles à un seul matching et utiliser les chaînes.

Plus précisément, qu'est-ce qui est, a priori, le plus rapide :

iptables -A FORWARD -i eth0 -o eth1 --source machin -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 --destination truc -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -j CHAINE
iptables -A CHAINE --source machin -j ACCEPT
iptables -A CHAINE --destination truc -j ACCEPT
--
Parenthesise to avoid ambiguity.
- The Elements of Programming Style (Kernighan & Plauger)

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

4 réponses

Avatar
Emmanuel Fleury
Bonjour Vincent,

Vincent Bernat wrote:

Je recherche des données pour optimiser un firewall sous
Netfilter. Par exemple, vaut-il mieux faire des règles à rallonge ou
restreindre les règles à un seul matching et utiliser les chaînes.

Plus précisément, qu'est-ce qui est, a priori, le plus rapide :

iptables -A FORWARD -i eth0 -o eth1 --source machin -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 --destination truc -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -j CHAINE
iptables -A CHAINE --source machin -j ACCEPT
iptables -A CHAINE --destination truc -j ACCEPT



Je te conseille d'aller voir du coté de ipset.
Voir: http://ipset.netfilter.org/

Amicalement
--
Emmanuel Fleury

Anyone who has never made a mistake has never tried anything new.
-- Albert Einstein

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Vincent Bernat
OoO Vers la fin de l'après-midi du vendredi 02 décembre 2005, vers
16:44, Emmanuel Fleury disait:

Plus précisément, qu'est-ce qui est, a priori, le plus rapide :

iptables -A FORWARD -i eth0 -o eth1 --source machin -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 --destination truc -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -j CHAINE
iptables -A CHAINE --source machin -j ACCEPT
iptables -A CHAINE --destination truc -j ACCEPT





Je te conseille d'aller voir du coté de ipset.
Voir: http://ipset.netfilter.org/



ipset permet en effet d'accélérer le traitement quand on cherche à
matcher un grand nombre de sources, un grand nombre de destinations,
un grand nombre de ports, etc, mais dans mon cas, c'est beaucoup plus
éthérogène.

Il s'agit de savoir s'il vaut mieux factoriser dans une chaîne
certains matchings (comme dans l'exemple ci-dessus) ou si le fait de
sauter dans une chaîne est assez coûteux.
--
panic("esp_handle: current_SC == penguin within interrupt!");
2.2.16 /usr/src/linux/drivers/scsi/esp.c

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Emmanuel Fleury
Vincent Bernat wrote:

ipset permet en effet d'accélérer le traitement quand on cherche à
matcher un grand nombre de sources, un grand nombre de destinations,
un grand nombre de ports, etc, mais dans mon cas, c'est beaucoup plus
éthérogène.



Oui (mais c'est hétérogène). :)

Il s'agit de savoir s'il vaut mieux factoriser dans une chaîne
certains matchings (comme dans l'exemple ci-dessus) ou si le fait de
sauter dans une chaîne est assez coûteux.



Si on regarde le code du matching sous Netfilter, les règles ne sont pas
factorisées et sont chargées les unes après les autres. Je dirais à vue
de nez que dans un cas tu matches les variables avec une seule règles et
dans l'autre il faut extraire la règle de la structure de données, ce
qui consomme certainement plus de ressources.

Maintenant, ce n'est qu'une théorie, il faudrait faire des benchmarks
sur des exemples plus gros (car au niveau d'une règle la différence
apparaîtra comme non significative).

Amicalement
--
Emmanuel Fleury

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Vincent Bernat
OoO En cette soirée bien amorcée du samedi 03 décembre 2005, vers
22:17, Emmanuel Fleury disait:

Si on regarde le code du matching sous Netfilter, les règles ne sont pas
factorisées et sont chargées les unes après les autres. Je dirais à vue
de nez que dans un cas tu matches les variables avec une seule règles et
dans l'autre il faut extraire la règle de la structure de données, ce
qui consomme certainement plus de ressources.



Cela dépend sans doute de combien de fois je matche sur la partie
factorisable. Si je reprends mon exemple :

iptables -A FORWARD -i eth0 -o eth1 --source machin -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 --destination truc -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 --blabla -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 --bidule -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -j CHAINE
iptables -A CHAINE --source machin -j ACCEPT
iptables -A CHAINE --destination truc -j ACCEPT
iptables -A CHAINE --blabla -j ACCEPT
iptables -A CHAINE --bidule -j ACCEPT

Dans le premier cas, je verifie 4 fois les interfaces d'entrée et de
sortie, dans le second cas, je ne le fais qu'une seule fois mais en
contre-partie, je dois sauter dans une chaine.
--
# Okay, what on Earth is this one supposed to be used for?
2.4.0 linux/drivers/char/cp437.uni

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.