Projet de fin d'année Logiciel
< Description du logiciel < > Autres logiciels > |
L'algorithme de construction suppose que le réseau dont on veut déterminer la topologie ne comporte pas de boucle. Pour cela, il effectue si nécessaire une scission des équipements responsables du problème.
Vient ensuite la construction de l'arbre représentant le réseau à partir des informations obtenues. Il s'agit de déterminer les liaisons directes entre équipements, du type nud1-port1 vers nud2-port2. Les liaisons entre équipements ne sont normalement pas orientées et le sont juste pendant la construction de l'arbre pour les besoins de l'algorithme.
Dans un premier temps, seuls les nuds internes de l'arbre sont pris en compte pour la construction, puis les équipements de type station qui sont les feuilles de l'arbre sont finalement placées. Ceci permet de réduire, souvent de manière significative, le nombre d'équipements lors de la construction de l'arbre.
L'algorithme commence pqr positionner tous les équipements dans l'état non testé. Puis une racine est choisie pour l'arbre: il s'agit de la machine depuis laquelle est lancé le programme. C'est depuis cette racine qu'est ensuite lancée la construction.
D'un point de vue global, l'algorithme de construction place des équipements dans l'arbre puis s'appelle récursivement sur les fils directs du nud sur lequel il vient d'être appelé, après modification de l'arbre due aux traitements effectués.
Plus précisément, il est appelé sur un équipement donné que l'on nomme N, et procède par étapes:
La routine host_place_son prend en paramètre un nud N et un autre nud F et se charge de placer ce dernier dans l'arborescence enracinée en N.
Ici, on positionne un marqueur permettant de s'assurer que l'on ne rencontre pas deux nuds F qui sont plus proches de N que F: ceci est bien sûr impossible, car cela signifierait que F a deux pères alors que l'on s'est assuré d'avoir un arbre et non un graphe. Si malgré tout, on se retrouve dans ce cas avec le marqueur positionné, on n'effectue alors aucun traitement.
En ce qui concerne le positionnement relatif de deux fils d'un même nud, la fonction more_direct_son regarde sur quels ports chaque fils voit son père et l'autre fils. Si pour l'un deux les ports sont différents, alors cet équipements se trouve entre les deux autres dans l'arbre.
Une fois l'ossature de l'arbre réalisée, on récupère l'ensemble des nuds internes de l'arbre, et on place les feuilles de chacun d'eux grâce à la fonction host_place_all_leaf.
Cette fonction prend pour seul paramètre le nud N pour lequel elle doit placer les feuilles.
Projet de fin d'année Logiciel
< Description du logiciel < > Autres logiciels > |