Newer
Older
# 🚀 Réseaux - TP 4 : Simulation de Routage
## Informations du Projet
## 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
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)
```bash
# Cloner le dépôt
git clone https://github.com/username/tp-reseaux.git
# 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.