L`utilisation d`un réseau de neurones pour optimiser la gestion d`un
Transcription
L`utilisation d`un réseau de neurones pour optimiser la gestion d`un
L’utilisation d’un réseau de neurones pour optimiser la gestion d’un firewall Réza Assadi et Karim Khattar École Polytechnique de Montréal Le 1 mai 2002 Résumé Les réseaux de neurones sont utilisés dans différents domaines pour leurs capacités variées et leur performance. Dans cet article on parlera de leurs aptitudes à faire du « load balancing » lors de la gestion de différents paquets à l’entrée d’un firewall. Dans les deux premières parties on donnera un aperçu historique des réseaux de neurones ainsi que des firewalls. Une simulation de la gestion des paquets sera faites suivant une variété de règles fantaisiste pour contrôler le flot des paquets. Une étude sur l’optimisation du chemin qu’un paquet emprunte pour traverse un firewall afin de minimiser le temps de traitement sera mise en évidence. Elle sera suivit d’un exposé sur les résultats obtenus lors des simulations, afin de discuter de la validité de notre hypothèse. Enfin pour finir, une étude sur d’autres hypothèses, qui pourrait complémenter notre hypothèse, sont faites. Mots-clés : Réseau de neurones, Load Balancing, Firewall Introduction Réseaux de neurones, intelligence artificielle, machines intelligentes, de nos jours ces mots sont devenus de plus en plus courants et familiers. Mais qu’est ce qu’un réseau de neurones ? Une définition scientifique d’un réseau de neurones serait: Une entité formée d’une structure d’éléments en parallèle et densément reliés. Cette entité a une capacité intrinsèque de mémoriser de l’information et surtout de nous permettre de la réutiliser au besoin. C’est en 1943 que les réseaux de neurones tel que nous les connaissons, ont officiellement vu le jour, dans un article écrit par McCulloch et Pitts. Mais c’est principalement dans les deux dernières décennies que les réseau de neurones ont évolué et que beaucoup d’études et d’argent leurs ont été consacrés. Plus qu’une simple machines à calculer, un réseau de neurones est un outil qui s’avère souvent très puissant et très utile dans différents domaines : reconnaissance de formes, classification, prédictions,… Dans le présent article, nous verrons comment les réseaux de neurones peuvent être utilisé dans le monde des télécommunications dans le but d’optimiser le transport et la gestion de paquets TCP/IP. . 1 Problématique Dans les années 60 l’armée étasunienne développe ARPANET, l’ancêtre de l’internet. Les années 70 voit apparaître le protocole TCP/IP, tandis que la fin des années 80 voit l’Europe inventé le « World Wide Web » (WWW). Quelques années plus tard le monde entier se connecte à l’internet, l’information devient accessible, l’ère de l’internet, de l’information prend son envole. Mais avec l’accès facile à l’information le problème de sécurité informatique devient de plus en plus une réalité dans le secteur privé. L’apparition de Hackers, Crackers, Phreaks et Cyberpunks rend la tache difficile. Pour contrer à leurs « attaques », c’est a dire leur accès illégale à l’information, l’industrie à du mettre au point des techniques, autant au niveau du logiciel qu’au niveau du matériel informatique, de « défense ». Une de ces techniques est le garde-barrière, mieux connu sous son nom anglais “firewall”, une suite de règles qui contrôle l’autorisation d’accès d’un usager externe au système qu’il protége. Or, avec l’avancement des télécommunications et la croissance continuelle de la charge sur le réseau internet, et donc sur les firewalls, qui devient de plus en plus important, la technologie sera bientôt incapable de gérer les vitesses qui lui seront imposer. C’est pour quoi il faut optimiser le passage de l’information à travers ceux-ci, la seule protection qu’un réseau possède contre toutes intrusions frauduleuse. Lorsque l’information arrive au firewall il est sous forme de paquet TCP/IP et se sont les entête de ces derniers que le firewall fait passé à travers ses règles. C’est alors sur ce passage qu’on doit optimiser, et c’est ici qu’on utilisera un réseau de neurones. Ce réseau servira à faire ce qu’on appel du « Load Balancing ». Le but ultime étant de minimiser le temps qu’un paquet passe dans le firewall en s’assurant que ceux-ci sont envoyer a des règles non occuper et à celle qui on le plus de chance de la sortir du firewall. Plusieurs structures de réseaux étaient à notre disposition, après avoir procédé à l’analyse de notre problème, et avoir subdivisé les caractéristiques en sous problèmes, on a opté pour la topologie étudiée dans cette article. Explication Lorsqu’un paquet arrive on veut essayer de lui faire passer le moins de temps possible dans le firewall. Il serait, donc, utile d’avoir un ou plusieurs réseaux neuronaux qui seraient capable de faire une analyse de la suite binaire contenu dans l’entête de chaque paquet afin d’avoir une idée quand a la probabilité qu’un paquet soit accepté ou rejeté par tel ou tel règle. Afin d’exemple, supposons que la sortie d’un réseau signifie que le paquet X semble avoir de grande chance d’être rejeté par le règle # i, alors il est préférable d’envoyé, en premier, ce paquet X à la règle # i. Cependant la probabilité qu’un certain paquet soit rejeté ou accepté par une certaine règle n’est pas le seul critère à étudier afin de donner un bon cheminement aux paquets. En effet il existe d’autres points importants tel que l’occupation de chacune des règles et le 2 nombre de paquets en attente dans le tampon, ces derniers points apportent de l’information concernant l’état du système. Comme dans l’exemple donné plus haut, si on a un paquet X qui à de grande chance d’être rejeté par la règle #i mais que cette dernière ainsi que son tampon sont pleins ; alors il faudrait envoyer à une règle qui est moins occupée. Un dernier critère, de grande importance à prendre en considération, lors de l’assignation d’une règle à un paquet est de s’assurer qu’un paquet ne passe pas deux fois par une même règle. Dans notre cas, nous ferons une étude sur un paquet de 8bits. Mais ce cas particulier pourrait être généralisé à plusieurs bits. Le tableau ci-après nous donne les règles a faire valider/rejeter par notre firewall avant d’accepter/rejeter un paquet. De plus chacune de ses règles à un temps moyen de traitement. 2 cycles Règle 1 ABC 000 001 010 011 100 101 110 111 Vitesse d'exécution par règle 3 cylces 1 cycle 3 cylces Règle 2 Règle 3 Règle 4 DEF ADG CFH 000 000 000 001 001 001 010 010 010 011 011 011 100 100 100 101 101 101 110 110 110 111 111 111 2 cycles Règle 5 BE 00 01 10 11 Tableau 1. Règles utilisées pour la vérification du réseau. NOTE1: Les cases ombragées représente les cas ou la règle accepte le paquet. NOTE2: Le paquet arrive sous la forme suivante (A B C D E F G H). Étant donné les règles que nous avons défini il est possible grâce à certain algorithme (ex Algorithme de Bellman) de définir des cheminements optimaux. Ces cheminements ne tiennent évidemment pas compte de l’état du système, mais seulement de la séquence binaire elle-même et du temps moyen d’analyse de chacune des règles. Dans notre cas nous avons obtenu deux cheminements différents : CheminOpt1 Æ 6 – 4 – 5 – 3 – 2 CheminOpt2 Æ 5 – 3 – 6 – 4 – 2 NOTE : Nous encoderons CheminOpt1 par +1 CheminOpt2 par -1. On a assigné une certaine adresse (codé sur 3 bits) à chacune des règles. Le but de notre réseau qui va faire de « load balancing » est donc de trouver la séquence optimale de règles à suivre par un paquet afin d’être analysé le plus vite possible. Cette séquence devra dépendre du paquet étudier, de l’état du système aussi bien que des paquets qui suivent. 3 Si par exemple au paquet #i le réseau assigne la séquence suivante 3-5-2-4-6 alors c’est par la 3ième règle que le paquet #i devrait être d’abord valider ensuite par la 5ième , et ainsi de suite jusqu`a la 6ième. Nos principaux critères étant énuméré nous allons maintenant expliquer la topologie choisie. Dans la figure-1 on voit la forme générale de notre réseau. Les réseaux (#1, #2) sont semblables et représenté à la figure-2 Chacun des experts est un MLP à deux couches (Entrée /Sortie). La couche d’entrée, est formée de deux neurones tandis que celle de sortie est formée d’un seul neurone. Chacun des neurones d’entrée ayant un nombre d’entrées égale au nombre de bits qui doit être analysés par le réseau. La sortie de chacun des experts (+1/-1) donne un estimé de la probabilité que le paquet soit accepté ou rejeté par la règle en question. (-1 signifie une grande probabilité de rejet, et +1 un grande probabilité d’acceptation. Finalement le réseau#4 est un MLP à 3 couches (25 20 15). Réseau #1 Réseau #2 Expert #1 Réseau #4 Expert #2 Perceptron Entrée #3 Expert #5 Figure-1 Figure-2 : Réseaux # 1,2et3 Ce réseau a le rôle du « load balancing ». Les entrées représentent, codé sur un bit, le cheminement du paquet présent et du futur. Les deux cheminements possibles (CheminOpt1 et CheminOpt2) sont générés respectivement par les réseaux #1 et #2 de la figure 1. L’autre entrée, cheminement du dernier paquet a être sortie du réseau, est codé sur 15 bits (3 bits/règle*5règle=15 bits). Simulation Dans le but de pouvoir confirmer ou infirmer notre hypothèse, on a dû avoir recours à des simulations. Pour commencer on du créer et entraîner nos différents experts. Cette ne fut pas très ardue; en effet on a utilisé le tableau 1 afin de générer des vecteurs d’entraînement à nos différents experts. Par exemple pour l’expert #1 qui simule la règle 1 voici deux vecteurs d’entraînement possible : Entrée=011 Æ Sortie=1 Entrée=010 Æ Sortie=0 4 Ces différents experts ont bien performés lors des tests et ont donc une bonne capacité de généralisation. Le perceptron que l’on voit à la figure-2 a pour seul rôle d’associer CheminOpt1ou CheminOpt2 aux différentes entrées. Cette association ce fait en respectant les résultats obtenus par l’algorithme de recherche de l’arbre optimale (i.e : L’algorithme qui a générer CheminOpt1 et CheminOpt2). L’entraînement du MLP a nécessité beaucoup de travail. En effet, étant donné notre hypothèse, afin de pouvoir créer des vecteurs d’entraînement pour ce réseau on doit avoir le cheminement optimal d’un paquet étant donné le paquet qui l’a précédé et celui qui va le suivre. Afin de pouvoir obtenir ces différents cheminements on a codé un algorithme qui prends en considération les 5 différentes règles ainsi qu’un tampon dont la taille permet d’emmagasiner deux paquets et qui génère le cheminement optimal d’un paquet étant donné le paquet qui le suit et celui qui le précède. Ceci fait, c’est le choix de la structure du MLP qui restait à faire. Un algorithme qui permet de tester le résultat du MLP nous a permis, après plusieurs tentatives, de pouvoir opter pour celui-ci. Résultats 1 = 12 12 Résultats 3 = 0 12 0 12 Résultats 2 = 18.0000 18.0000 17.0000 16.0000 16.0000 17.0000 17.0000 18.0000 0.0400 0.0200 0.0200 0.0200 0.0200 0.0200 0.0400 0.0200 18.0400 18.0200 17.0200 16.0200 16.0200 17.0200 17.0400 18.0200 13.0000 13.0000 13.0000 13.0000 0 0 14.0000 15.0000 16.0000 14.0000 16.0000 15.0000 18.0000 15.0000 16.0000 16.0000 0 0 13.0000 0.0100 13.0100 0.0900 13.0900 0.1000 13.1000 0.0200 13.0200 0 0 0 0 0.0100 14.0100 0.0100 15.0100 0.0100 16.0100 0.0100 14.0100 0.0100 16.0100 0.0100 15.0100 0.0100 18.0100 0.0100 15.0100 0.0100 16.0100 0.0100 16.0100 0 0 0 0 0.0100 13.0100 Tableau 2. Résultats des simulations NOTE : La première colone représente le nombre de cycle le paquet a du passé dans la machine, la deuxieme colone represente le temps que le paquet à passé dans la machine et finalement la troisieme est la somme des deux premieres. 5 Discussion Le résultat 1 représente les performances lorsqu’on envoie, tout seul, un des deux chemins optimal dans la machine. Le résultat 2 représente celles qui sont obtenu lorsque trois paquets sont envoyés sans optimisation. Finalement, le troisième est obtenu lorsque trois paquets sont envoyés dans la machine après optimisation. On remarque bien que le résultat 3 est beaucoup plus rapide que le résultat 2, tant au niveau des cycles qu’au niveau des temps. Ceci, montre bien l’amélioration que le réseau de neurones a pu amener à l’exécution des paquets. On peut également remarquer que le résultat 1 représente une borne inférieure à l’exécution des paquets, puisqu’il est le résultat du meilleur chemin à travers la machine tout seul. Il est aussi à remarquer l’effet de l’information supplémentaire apporté par les paquets « passé » et « future » ont un effet marqué sur la performance du trajet utilisé par le parquet. De ceci on peut extrapoler l’hypothèse que la performance de la gestion des paquets est directement liée à l’information que le réseau a à sa disposition au moment de la prise de décision sur le trajet que doit emprunter le paquet. Conclusion Nous avons émis l’hypothèse qu’un réseau de neurones a la capacité d’optimiser la gestion de paquets TCP/IP, or dans cet article les simulations ont été faites avec des paquets relativement petits (1 octet), cependant la capacité modulaire de notre réseau permet la parallélisation afin d’accommoder des longueurs quelconques de paquets. Cette particularité permet également d’augmenter la performance de la gestion des paquets lors de l’ajout de paquets à priori (« passé ») et à posteriori (« futur ») dans la prise de décision. Déjà, l’ajout d’un seul paquet à priori emmène beaucoup d’information, car celui-ci renferme également de l’information sur sont priori et ainsi de suite, ceci implique alors qu’un seul paquet à priori amène de l’information sur l’historique des paquets. La plus grande lacune de notre topologie est l’absence d’un apprentissage continue en temps réel. En effet, une rétropropagation de l’état du système en tout temps serait très bénéfique à la prise de décision du réseau. Cependant, une telle architecture rendrait l’apprentissage très difficile et pourrait ralentir le système, ou encore le rendre instable. Mais, avec les développements toujours plus rapide en microélectronique, un système avec rétropropagation pourrait un jour être une solutions concevable. Références [1] Haykin, S., NEURAL NETWORKS A comprehensive foundation, second edition, Prentice Hall, 1999 [2] Gauvin, J-J., Leçons de programmation mathématiques, Éd. École Poly. 1994 6