# 🚀 Réseaux - TP 4 : Simulation de Routage ## Informations du Projet ### 👨‍💻 Auteur Hamadou BA 🇸🇳 ## Description Ce projet est une application Java permettant de simuler le fonctionnement d'un réseau informatique. Il implémente différents algorithmes de routage et offre une visualisation graphique des topologies de réseau. L'application permet de charger des réseaux depuis un fichier ou d'utiliser un exemple prédéfini, puis d'effectuer diverses opérations de routage. ## Fonctionnalités - Création et manipulation de topologies réseau (noeuds, liens, interfaces) - Recherche de chemins les plus courts entre deux noeuds (algorithme de Dijkstra) - Génération de tables de routage - Établissement de circuits virtuels - Visualisation graphique des réseaux et des chemins - Chargement de topologies depuis des fichiers ## Structure du Projet ``` tp/reseaux/ ├── Main.java # Point d'entrée du programme ├── Reseau.java # Classe principale de gestion du réseau ├── Noeud.java # Classe abstraite représentant un noeud ├── Machine.java # Classe représentant une machine (PC) ├── Commutateur.java # Classe représentant un commutateur/routeur ├── Interface.java # Classe représentant une interface réseau ├── Lien.java # Classe représentant une connexion entre deux noeuds └── GrapheVisualisation.java # Classe de visualisation graphique ``` ## Prérequis - Java 8 ou supérieur - Bibliothèque GraphStream (pour la visualisation) ## Installation ```bash # Cloner le dépôt git clone https://github.com/username/tp-reseaux.git # Accéder au répertoire cd tp-reseaux # Compiler javac -cp .:lib/gs-core-2.0.jar:lib/gs-ui-swing-2.0.jar tp/reseaux/*.java # Exécuter java -cp .:lib/gs-core-2.0.jar:lib/gs-ui-swing-2.0.jar tp.reseaux.Main ``` ## Utilisation Au lancement du programme, vous aurez le choix entre: 1. Charger une topologie depuis un fichier 2. Utiliser l'exemple prédéfini Ensuite, un menu vous proposera plusieurs options: - Trouver le chemin le plus court entre deux noeuds - Générer les tables de routage - Établir un circuit virtuel - Quitter ### Format du fichier de topologie ``` #NOEUDS type,id machine,PC-A machine,PC-B commutateur,R1 commutateur,R2 #LIENS noeud1,interface1,noeud2,interface2,poids PC-A,eth0,R1,eth0,1 PC-B,eth0,R2,eth0,1 R1,eth1,R2,eth1,10 ``` ## Algorithmes implémentés - **Dijkstra**: Utilisé pour trouver le chemin le plus court entre deux noeuds - **Tables de routage**: Génération automatique basée sur les chemins les plus courts - **Circuits virtuels**: Établissement de connexions point à point ## Exemple de réseau prédéfini L'application inclut un exemple prédéfini avec la topologie suivante: - 4 machines: PC-A, PC-B, PC-C, PC-D - 4 commutateurs: R1, R2, R3, R4 - Liens entre les machines et les commutateurs - Liens entre les commutateurs avec différents poids ## Captures d'écran (Insérer captures d'écran ici) ## Contribution 1. Forker le projet 2. Créer une branche (`git checkout -b amelioration-fonctionnalite`) 3. Commiter vos changements (`git commit -m 'Ajout d'une nouvelle fonctionnalité'`) 4. Pousser vers la branche (`git push origin amelioration-fonctionnalite`) 5. Ouvrir une Pull Request ## Licence Ce projet est distribué sous licence MIT.