|
Il s'agit d'écrire un programme (ou un ensemble de programmes) permettant d'effectuer des traceroute automatiquement, en tâche de fond ; et pendant que se font ces traceroute, de rassembler des informations sur le graphe d'Internet. En particulier, pour chaque noeud du graphe (on assimilera un noeud à son adresse IP), on souhaite pouvoir connaître ses voisins, ainsi que sa distance minimale à l' « origine » (la distance n'est pas forcément constante, par exemple entre le noeud A et le noeud B, le noeud X peut apparaître en 5è position ; et le même noeud X peut apparaître en 8è position entre le noeud A et le noeud C -- c'est surprenant, mais c'est possible!). Il est indispensable de pouvoir : * avoir plusieurs traceroute s'effectuant simultanément, afin de rassembler des informations le plus vite possible ; * pouvoir choisir à la volée combien de traceroute on souhaite exécuter en parallèle) ; * ajouter de nouvelles « cibles » pour traceroute pendant que l'ensemble fonctionne ; * ajouter des cibles « aléatoires » (en tirant des adresses IP au hasard) ; * visualiser des statistiques indiquant le nombre d'adresses IP « explorées » (nombre total, et classement par distance par rapport à l'origine) ; * indiquer les « voisins » d'un noeud donné par son adresse IP ; * exporter (et importer) l'état du graphe, sous forme de deux fichiers CSV : un contenant la liste des sommets (adresses IP) avec leur distance minimale à la source, et un autre contenant une liste de couples d'adresses IP ; * fournir un rapport expliquant les structures algorithmiques utilisées, avec une indication de leurs limites (mémoire, CPU, occupation disque...) -- c'est-à-dire une étude de la complexité des algorithmes utilisés ; * présenter un code propre et lisible, autant que faire ce peu. Informations techniques Une adresse IP = 4 octets. Généralement on la représente sous la forme 134.157.0.129 (sous forme de 4 nombres entiers, en décimal, séparés par des points). Les plages d'adresses suivantes sont « privées », c'est-à-dire internes : * 10.0.0.0 à 10.255.255.255 * 172.16.0.0 à 172.31.255.255 * 192.168.0.0 à 192.168.255.255 La plage 224.0.0.0 à 239.255.255.255 est réservée au multicast. Les adresses de 240.0.0.0 à 255.255.255.255 sont réservées. Toutes ces plages (adresses privées, multicast, réservées) doivent être traitées de manière spéciale ; il est parfaitement acceptable de ne pas les stocker dans le graphe (de les considérer comme les « * » qui apparaissent parfois dans traceroute). Le format CSV à utiliser, pour la liste des noeuds : adresse IP, distance 1.2.3.4,17 134.157.0.129,8 193.55.63.92,2 Le format CSV à utiliser, pour la liste des arêtes : adresse IP1, adresse IP2 1.2.3.4,1.2.3.5 134.157.0.129,134.157.254.1 193.55.63.1,193.55.63.29 On utilisera \n comme séparateur de lignes. |
-