Favicon
NSI Terminale

Connexion élèves

Choisir le(s) module(s) à installer :

TP Graphes : Simulation d’un réseau de routeurs suivant le protocole RIP

Revoir cette page au besoin pour se rafraîchir la mémoire.

On considère le petit réseau ci-contre pour lequel seuls les routeurs figurent ( et pas les machines qui y sont connectées ).

Le but est de simuler la mise à jour des tables de routage de chaque routeur selon le protocole RIP.

Ces tables de routage contiennent normalement les IP associées aux interfaces des routeurs de destination et passerelle, mais pour simplifier, on se contentera d'y faire figurer le nom des routeurs.

Chaque table de routage ne contiendra que les informations : nom routeur de destination, nom du routeur passerelle, nombre de sauts.

Réseau projet graphes

Pour cette application, une classe pour modéliser un routeur sera créée, et des fonctions manipuleront des objets instanciés à partir de cette classe pour simuler un réseau de routeurs.

Classe Routeur

Attributs

Méthodes

La méthode maj_table est la plus délicate : bien revoir le principe du protocole RIP pour identifier toutes les situations pour lesquels une mise à jour de la table est nécessaire.

Écrire le code de la classe Routeur

class Routeur: def __init__(self, nom: str): pass def get_nom(self)->str: pass def get_table(self)->dict: pass def maj_table(self, voisin): # 'voisin' est lui-même un objet du type 'Routeur' pass

SOLUTION

Le réseau de routeurs

Le réseau lui-même sera modélisé par un graphe, dont les sommets seront des objets instanciés à partir de la classe Routeur; les arêtes seront les liens qui existent entre les routeurs.

  • instancier les 7 objets Routeur.
  • dans un dictionnaire reseau qui modélisera le graphe du réseau de routeurs :
    • créer les sommets du graphe, qui correspondent ici aux objets instanciés à partir de la classe Routeur,
    • créer les arêtes entre les sommets du graphe, correspondant aux liens ( bidirectionnels ! ) entre les routeurs.
  • écrire une fonction rip qui met à jour les tables de routage des routeurs du réseau en suivant le protocole RIP.
  • écrire alors un programme qui simule les mises à jour successives des tables de routage des routeurs; combien de "passes" de ce protocole sont-elles nécessaires pour observer une stabilisation des tables de routage ?

Vous pourrez visualiser les tables de routage de chacun des routeurs à chaque "passe" de protocole; attention à l'identifiant à afficher pour chaque routeur, les sommets du graphe sont des objets !

def rip(reseau: dict)->None: pass

SOLUTION

Prolongement possible

Coder un moyen de simuler un serveur en panne, et voir le nouvel ajustement des tables de routage des autres routeurs.

Attention, il y a plusieurs choses à faire pour cela :

Si tout fonctionne, vous pourrez utiliser ce script pour vérifier vos réponses aux exercices de Bac ! 😀...