Ce projet vise à évaluer les performances du protocole de routage OSPF (Open Shortest Path First) dans une constellation de satellites LEO (Low Earth Orbit) de type Starlink, en utilisant le framework d’émulation StarryNet.
StarryNet permet de reproduire une topologie satellite réaliste à partir de données orbitales réelles. Chaque satellite est émulé sous forme de conteneur Docker, exécutant un démon de routage réel (BIRD Internet Routing Daemon), garantissant une implémentation fidèle d’OSPF.
L’objectif principal du projet est d’analyser l’impact de la forte mobilité orbitale sur le comportement d’OSPF à travers plusieurs métriques réseau clés.
Les objectifs de l’étude sont les suivants :
- Évaluer le coût de contrôle (Overhead) induit par les messages OSPF (Hello, LSUpdate, LSAck, etc.).
- Mesurer le temps de convergence après des changements de topologie ou des pannes.
- Quantifier la perte de paquets durant les phases d’instabilité.
- Analyser l’allongement des chemins (Path Stretch Ratio) par rapport à l’optimum théorique.
- Observer l’évolution de la latence de bout en bout (RTT).
Note importante
L'émulation réseau en temps réel sur une constellation à grande échelle est extrêmement gourmande en ressources. Les scripts d'émulation originaux peuvent s'exécuter indéfiniment ou saturer la machine hôte.Pour pallier cela, le projet propose deux approches complémentaires :
Scripts d'Évaluation (
*_eval.pyet.sh)
Lancent l'émulation StarryNet et génèrent des données brutes (logs, pings, captures PCAP, tables de routage).Scripts d'Interprétation (
*_outputs_only.py)
Conçus pour analyser les fichiers de sortie déjà générés sans relancer l'émulation complète, permettant un gain de temps considérable.
-
config.json
Définit les paramètres de la constellation (10 orbites × 25 satellites), l'altitude (550 km) et les politiques de handover.
Contient également les identifiants de connexion SSH pour piloter l'émulation. -
install.sh
Script d'installation des dépendances système et du CLI StarryNet (sn). -
setup.py
Fichier standard pour l'installation du package Pythonstarrynet. -
tools/requirements.txt
Liste des bibliothèques Python requises (paramiko,skyfield,sgp4, etc.).
-
OSPFOverhead.sh
Script Bash automatisé utilisanttcpdumpà l'intérieur des conteneurs Docker pour capturer le trafic OSPF.
Les fichiers PCAP sont ensuite analysés avectsharkafin d’extraire :- Le nombre de messages Hello, LSUpdate et LSAck
- Le volume de données échangées (en octets)
-
ospf_path_latency_eval.py
Lance l'émulation et effectue des mesures de latence entre satellites et stations au sol. -
ospf_loss_convergence_eval.py
Provoque des pannes aléatoires (set_damage) afin d'observer la réaction d’OSPF et mesurer la convergence.
-
path_latency_outputs_only.py
Analyse les résultats de ping afin de calculer le ratio entre la latence mesurée et la distance géodésique idéale. -
ospf_packet_loss_convergence_time_outputs_only.py
Calcule le temps de convergence à partir des interruptions de connectivité observées. -
analyse_outputs_only.py
Regroupe plusieurs analyses afin de fournir une vue d’ensemble des performances d’OSPF. -
reliability_table.py
Génère un tableau de fiabilité du réseau à partir des données de simulation.
Les résultats sont exportés sous plusieurs formats afin de faciliter l'analyse académique :
-
ospf_metrics.csv
(Généré parOSPFOverhead.sh)
Détaille, par satellite, le volume de trafic de contrôle et le nombre estimé de calculs SPF. -
ospf_latency_stretch.csv
Rapport sur l’allongement des chemins par rapport à l’algorithme de Dijkstra optimal. -
plots/
Contient les visualisations graphiques (PNG) de la latence et du path stretch.
- Vérifier que Docker est installé et actif.
- S'assurer que l’utilisateur appartient au groupe
docker. - Vérifier que le serveur SSH accepte les connexions locales.
python3 ospf_path_latency_eval.py