Routage compact Sujet proposé par Gilles Schaeffer Gilles.Schaeffer@lix.polytechnique.fr URL de suivi : http://www.enseignement.polytechnique.fr/profs/informatique/ Gilles.Schaeffer/INF431/projetX06.html 1 Préambule On s intéresse à la programmation des routeurs dans un réseau de communication : en chaque nœud du réseau, un routeur reçoit les messages et choisi en fonction de leur destination un voisin auquel les retransmettre ; quelle information donner à chaque routeur pour lui permettre de faire son travail, sans forcément lui demander de connaître tout le réseau. Si on est sur une grille, on peut facilement donner au routeur un sens de l orientation : il lui suffit de comparer les coordonnées du point courant à celle de la destination pour savoir par où envoyer le message... Attention : du point de vue de la programmation il s agit essentiellement d un projet d algorithmique sur les graphes, ne nécessitant aucune compétence particulière en réseau (pas de sockets ou autres). 2 Détail du sujet 2.1 Un modèle de routage On modélise un réseau de communication point à point par un graphe non orienté connexe dans lequel on veut pouvoir faire circuler un message d un sommet à un autre à l aide de routeurs indépendants placés sur les sommets. L objectif de ce projet est d implanter et de comparer des politiques de routage dans un tel réseau. Une politique de routage est constituée de : L algorithme de routage qui sera appliqué par chaque routeur pour décider lorsqu un message lui arrive à quel voisin le renvoyer. L algorithme d initialisation du réseau qui, étant donné un graphe G = (V, E), construit un annuaire : chacun des n sommets du graphe est renuméroté par un entier de {1,..., n}, et ces étiquettes seront utilisées dans l entête des messages pour indiquer la destination ; 1
et initialise les routeurs en donnant à chacun l information sur G dont il a besoin. L algorithme de routage est le même pour tous les routeurs mais chaque routeur reçoit à l initialisation une information différente, qu il utilise par la suite pour faire son travail. Lorsqu on veut envoyer un message à partir d un point du réseau, il faut payer l accès à l annuaire pour connaître l étiquette de la destination, inscrire cette étiquette dans l entête du message, et donner le message à un premier routeur. Celui ci applique l algorithme local de routage et le message part alors vers un voisin qui a son tour, en fonction de l entête, le transmettra à un de ces voisins, et ainsi de suite jusqu à ce que le message rejoigne la destination. L entête n est jamais modifié et l annuaire n est consulté qu une fois au début par l expéditeur. 2.2 Routage par tables de routage Une première méthode de routage consiste à donner à chaque routeur la connaissance de tout le graphe et à lui faire calculer un plus court chemin vers la destination pour choisir le voisin auquel transmettre un message. Plutôt que de refaire ce calcul à chaque fois qu un message arrive il paraît naturel de le faire une bonne fois pour toute au début, ou autrement dit de faire faire le calcul à l initialisateur et de stocker au niveau de chaque noeud une table de routage qui indique pour chaque destination possible, le numéro du voisin. Cette méthode est appelée routage par tables de routage. 2.3 Compacité du routage et routage par intervalles Dans le routage par tables de routage, on fabrique une table à n entrée pour chaque sommet, soit au total un espace Õ(n2 ) (le tilde indique qu on travaille aux facteurs logarithmiques près : il faudrait tenir compte du fait qu il faut log n bits pour indiquer un voisin, soit une table de taille Θ(n log n) en chaque sommet). Le problème du routage compact consiste à chercher une politique dans laquelle on stocke moins d information au niveau de chaque routeur. Une première idée pour compacter l information de routage est d essayer de regrouper sur chaque sommet les étiquettes qui partagent une même arête de sortie en intervalles et d étiqueter les arêtes par ces intervalles au lieu de stocker la table explicitement. On peut appliquer cette méthode à n importe quel étiquetage, il y aura alors plusieurs intervalles pour chaque arête de sortie, et la compacité effective de cette méthode dépend du fait que les étiquettes soient bien choisies (pour que le nombre d intervalles soit petit). 2.4 Routage par intervalles le long d un arbre et élongation Si le graphe du réseau est un arbre il existe un routage par intervalle tel qu il y ait exactement un intervalle sur chaque arête incidente à un sommet (on considère des intervalles modulo n). En effet enracinons l arbre en un sommet x et numérotons les sommets par un parcours préfixe en profondeur d abord de sorte à avoir la propriété fondamentale suivante. Si les fils 2
d un sommet x numéroté a ont les étiquettes a 1,..., a k (a 1 = a + 1), alors les étiquettes des sommets du i-ème sous-arbre de x forment l intervalle [a i, a i+1 1] pour 1 i < k et [a k, b] pour le dernier sous-arbre, où b est l étiquette du premier frère de x après lui. De plus les sommets qui ne sont pas dans le sous-arbre enraciné en x forment l intervalle cyclique [b, a 1] (autrement dit [b, a 1] = [b, n] [1, a 1]). Avec cet étiquetage, l arête qu il faut emprunter à partir du sommet x pour rejoindre un sommet z d étiquette k est donnée par l intervalle contenant k. Puisqu il y a un unique chemin entre toute paire de sommets sur un arbre ce schéma donne un routage par plus court chemin. On peut montrer cependant qu il n existe pas pour les graphes quelconque de politique utilisant ainsi des plus courts chemins et un espace total significativement plus faible que les tables de routages. Pour compacter l information de routage on décide donc d autoriser l utilisation de chemins non optimaux. La méthode du routage par intervalles sur les arbres s étend alors immédiatement à un graphe quelconque en effectuant le routage sur le long d un arbre couvrant. Étant donné une politique de routage, on mesure la qualité des chemins qu elle utilise par son facteur d élongation : le maximum du rapport entre (longueur du chemin utilisé de u à v) et (distance de u à v), le maximum étant pris sur toutes les paires de sommets dans tous les graphes possibles. Le but est alors de trouver les meilleurs compromis possibles entre la mémoire utilisée par les routeurs et le facteur d élongation. Le routage le long d un arbre est à un extrème du spectre : il n y qu un intervalle par arête (c est donc très compact), mais il n y a pas de borne sur l élongation (on cherchera des exemples). 2.5 Routage par intervalles avec pivots Il s agit d un algorithme basé sur la notion de pivot qui fournit un étiquetage et des intervalles garantissant un facteur d élongation de 5 pour un nombre d intervalle par sommet qui est Õ( n). Cet algorithme est décrit dans l article Compact rooting schemes with low stretch factor de T. Eilam, C. Gavoille et D. Peleg, paru à la revue Journal of Algorithms en 2003, et disponible à l adresse http://dept-info.labri.fr/~gavoille/article/egp03. 3 Travail demandé L implantation d un schéma de routage prendra la forme de 2 exécutables : un initialiseur, qui prend en entrée le nom d un fichier où sera donné le graphe décrivant le réseau et qui construit l annuaire et les données fournies à chaque routeur un routeur, qui prend en entrée l étiquette du routeur courant et l étiquette de la destination, et qui renvoit l étiquette du routeur suivant auquel le message est envoyé. Il est demandé d implanter en premier lieu deux schémas de routage qui feront une renumérotation triviale lorsque les étiquettes des sommets sont déjà les entiers {1,..., n} (et qui numérote les sommets arbitrairement sinon) : d une part le routage par tables de routage, 3
et d autre part le routage par intervalles. Il faut donc ici écrire 2 paires (initialiseur, routeur). Dans un deuxième temps on utilisera la possibilité de renuméroter les sommets pour implanter le routage par intervalles le long d un arbre couvrant. Enfin, optionnellement on écrira un routeur par intervalles avec pivot. Dans les 2 cas, il doit suffire ici de réécrire un initialiseur, le routeur par intervalles restant inchangé. Ces algorithmes seront complétés par 2 exécutables nécessaires au test des schémas de routage : un générateur qui construit des graphes aléatoires : de type Erdös-Renyi : étant donné un entier n et un réel 0 < p < 1, le graphe aléatoire G n,p a n sommets étiquetés {1,..., n} et contient l arête (i, j) avec probabilité p, indépendamment pour tous i < j dans {1,..., n} et de type attachement préférentiel : le graphe est construit en ajoutant les sommets un à un ; chaque nouveau sommet est connecté à un sommet déjà existant ; pour déterminer où on s attache on choisit uniformément une arête déjà existante et on s attache à l une des 2 extrémités avec proba 1/2 pour chaque côté. (Ces deux types de graphes sont les modèles de réseaux aléatoires les plus célèbres.) un simulateur, qui prend un sommet origine et un sommet destination et qui simule le trajet d un message dans le graphe à l aide d appels successifs à l exécutable routeur ; La sortie de la simulation est laissée à votre appréciation. 3.1 Format d entrée et sortie Les formats d entrée et de sortie seront normalisés de façon à ce que les schémas de routage puissent être testés avec d autres graphes et simulateurs que celui du binôme. Ainsi l initialisateur doit pouvoir être invoqué en ligne de commande par un appel du type initialiseur mongraphe.graphml où le fichier mongraphe.graphml décrit le graphe du réseau au format graphml disponible à l adresse http://graphml.graphdrawing.org/primer/graphml-primer.html (ce format est très complet mais il n est demandé que de savoir gérer les balises <graph>, <node> et <edge>) L initalisateur doit créer différents fichiers dans le répertoire courant : Le fichier annuaire : une ligne par sommet : identifiant-graphml ; numéro. Pour chaque i dans {1,..., n}, un fichier table-i.data contenant les données fournies au routeur numéro i (format à votre convenance). Le routeur doit pouvoir être invoqué en ligne de commande (ou par un appel système) du type routeur numero message où numero est le numero du routeur appelé et message est le numéro du sommet destination (pour les besoins de la simulation on a bien sûr pas besoin de donner un contenu au message). Le routeur utilisera le numero pour accéder à son fichier table-numero.data (et n a le droit d accéder à aucun autre fichier). 4
3.2 Critères d évaluation En plus des critères standards d évaluation du projet rappelés sur la page web des projets, on sera attentif aux critères suivants : Compacité du schéma : la somme de la taille des fichiers mis à disposition des routeurs ; c est l information qu on doit distribuer dans le réseau. Simplicité du code routeur : ce code va être implanté sur plein de petits routeurs. Élongation des chemins : mesure l efficacité du schéma de routage. 4 Extensions possibles Comme déjà dit plus haut, une extension bienvenue mais pas obligatoire est d implanter la politique d Eilam, Gavoille et Peleg donnant un schéma de routage par intervalle avec élongation au plus 5 et mémoire totale en Õ(n3/2 ) (aux facteurs logarithmiques près). Cet algorithme fournit un schéma de routage par intervalle : si le routeur par intervalle a bien été écrit, il n y a donc qu à réécrire un nouvel initialisateur. 5