next up previous contents
Next: Redirection pour le scanner Up: Filtrage des paquets Previous: Recherche des ports   Contents

Optimisation de la recherche

Le filtrage des paquets étant effectué en continu, il paraît évident que cela doit être une des étapes les plus optimisée.
Dans cette optique, nous avons pris conscience que la recherche sur les ports (pour déterminer si le port est autorisé ou pas) était des plus banale, en effet, il s'agissait d'un simple parcours de tableau.
Donc, pour augmenter la performance de cette recherche, nous avons recherché parmi tous les algorithmes que nous connaissons pour trouver le plus adapté.
Dans notre cas, lorsque nous recevons une donnée, il est plutôt rare qu'elle ne soit pas divisée en plusieurs paquets. Donc, lorsque l'on reçoit un paquet sur un port, il est courant que le suivant soit du même port.
Plus généralement, la recherche qui nous intéresse, est une recherche dite auto-adaptative (plus un port est utilisé, plus on doit le retrouver vite).
Après cette étude, il paraît évident d'utiliser une recherche qui rapprochera la donnée vers le début à chaque fois qu'elle est demandée. Lorsqu'un port est trouvé, nous calculons un pivot situé exactement entre le début et la position de la donnée, puis nous échangeons la donnée avec celle située au pivot, ce qui a pour effet de rapprocher du début à une vitesse raisonnable de manière à ce que lorsqu'un port n'est demandé qu'une seule fois, il ne se rapproche pas trop vite.

next up previous contents
Next: Redirection pour le scanner Up: Filtrage des paquets Previous: Recherche des ports   Contents
root 2002-06-23