README.md 3,34 ko
Newer Older
Hamadou Ba's avatar
Hamadou Ba a validé
# 🚀 Réseaux - TP 4 :  Simulation de Routage
## Informations du Projet
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
### 👨‍💻 Auteur
Hamadou BA 🇸🇳
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
## 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.
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
## 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
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
## Structure du Projet
Hamadou Ba's avatar
Hamadou Ba a validé
```
Hamadou Ba's avatar
Hamadou Ba a validé
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
Hamadou Ba's avatar
Hamadou Ba a validé
```

Hamadou Ba's avatar
Hamadou Ba a validé
## Prérequis
- Java 8 ou supérieur
- Bibliothèque GraphStream (pour la visualisation)
Hamadou Ba's avatar
Hamadou Ba a validé

## Installation
Hamadou Ba's avatar
Hamadou Ba a validé
```bash
# Cloner le dépôt
git clone https://github.com/username/tp-reseaux.git
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
# Accéder au répertoire
cd tp-reseaux
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
# Compiler
javac -cp .:lib/gs-core-2.0.jar:lib/gs-ui-swing-2.0.jar tp/reseaux/*.java
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
# Exécuter
java -cp .:lib/gs-core-2.0.jar:lib/gs-ui-swing-2.0.jar tp.reseaux.Main
```
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
## Utilisation
Au lancement du programme, vous aurez le choix entre:
1. Charger une topologie depuis un fichier
2. Utiliser l'exemple prédéfini
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
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
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
### 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
```
Hamadou Ba's avatar
Hamadou Ba a validé

Hamadou Ba's avatar
Hamadou Ba a validé
## 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.