Skip to content

thomas-brl/network-routing-simulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Simulation de routage réseau

Description

Ce projet explore la modélisation et la simulation d’un réseau de communication complexe, inspiré du fonctionnement réel d’Internet. Il met en évidence des concepts tels que le transit IP, le backbone, les niveaux d’opérateurs (Tier 1, Tier 2, Tier 3) ainsi que le peering.

Dans ce modèle, le réseau peut être vu comme un système hiérarchique où chaque nœud joue un rôle dans la transmission des données, à la manière d’un vaste système nerveux numérique.


Concepts réseau simulés

  • Transit IP : service de transport des données entre différentes parties du réseau, assimilé aux grandes autoroutes de l’information.
  • Backbone : infrastructure principale reliant les grandes zones du réseau.
  • Tier 1 / Tier 2 / Tier 3 :
    • Tier 1 : opérateurs de niveau supérieur avec un accès global au réseau
    • Tier 2 : opérateurs intermédiaires connectés aux Tier 1
    • Tier 3 : opérateurs locaux accédant au réseau via les niveaux supérieurs
  • Peering : accord entre opérateurs permettant l’échange de trafic sans facturation directe

Objectif du projet

L’objectif principal est de concevoir une application capable de :

  • Générer un réseau de 100 nœuds
  • Répartir les nœuds en trois niveaux hiérarchiques
  • Construire la table de routage de chaque nœud
  • Déterminer les plus courts chemins entre nœuds

Structures de données utilisées

  • Graphes (NetworkX)
    Le réseau est modélisé sous forme de graphe où :

    • les nœuds représentent les sommets
    • les connexions représentent les arêtes
  • Listes et dictionnaires Python
    Utilisés pour stocker :

    • les informations des nœuds
    • les connexions
    • les tables de routage

Algorithmes et méthodes

Création du réseau

La classe Reseau génère un réseau de 100 nœuds répartis selon une structure hiérarchique et des probabilités de connexion.


Vérification de connexité (BFS)

Un parcours en largeur est utilisé pour vérifier que tous les nœuds sont accessibles depuis un point de départ.


Algorithme de Dijkstra

Utilisé pour calculer les plus courts chemins entre les nœuds et construire les tables de routage.


Visualisation du réseau

La classe ReseauGraphique permet :

  • l’affichage graphique du réseau avec Matplotlib
  • la sélection de deux nœuds
  • l’affichage du chemin le plus court entre eux

Fonctionnement du programme

Lors de l’exécution :

Un réseau de 100 nœuds est généré La connexité du graphe est vérifiée automatiquement Si le graphe n’est pas connexe, un nouveau graphe est généré jusqu’à obtenir un réseau valide L’utilisateur peut ensuite : entrer deux nœuds pour afficher le plus court chemin interagir avec le graphe affiché cliquer sur un nœud pour afficher ses connexions dans le terminal

Le programme guide l’utilisateur via des messages affichés dans le terminal.


Conclusion

Ce projet met en œuvre des notions essentielles de théorie des graphes et de réseaux, notamment :

  • la modélisation de réseaux complexes
  • les algorithmes de parcours de graphe
  • le calcul de plus courts chemins
  • la visualisation de structures réseau

Il permet de simuler de manière simplifiée le fonctionnement des réseaux de communication modernes et de leurs mécanismes de routage.

About

Simulation d’un réseau de communication composé de 100 nœuds, permettant de modéliser le routage des données et le calcul des plus courts chemins à l’aide d’algorithmes de graphes. Le projet inclut également une visualisation du réseau et la génération des tables de routage pour chaque nœud.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages