Thèse de doctorat (2025)
Résumé
Les réseaux traditionnels étaient construits à l’aide de matériel à fonction fixe et d’un couplage étroit entre les plans de contrôle et de données, ce qui les rendait peu flexibles face à l’évolution des exigences. Le concept de réseau défini par logiciel ou Software-Defined Networking (SDN) a émergé pour répondre à cette limitation en découplant les plans de contrôle et de données, avec OpenFlow comme l’un des premiers protocoles permettant un contrôle centralisé. Toutefois, OpenFlow et les approches similaires offraient une programmabilité limitée du plan de données. Pour dépasser ces limites, des langages de programmation du plan de données tels que P4 ont été introduits, offrant un traitement des paquets à la fois flexible et performant. À mesure que les programmes P4 sont devenus plus complexes, la nécessité de disposer d’un code modulaire, réutilisable et maintenable est devenue cruciale pour le développement de fonctions réseau évolutives et robustes. Cependant, malgré sa flexibilité, P4 ne prend pas en charge la modularité de manière native. Dans sa forme standard, les programmes P4 sont souvent développés sous forme de bases de code monolithiques, dans lesquelles l’ensemble de l’analyse de protocoles, des définitions d’en-têtes, de la logique de contrôle et du traitement de données est implémenté dans un seul fichier fortement couplé. Cette structure monolithique présente plusieurs défis. Premièrement, les développeurs doivent souvent dupliquer du code pour implémenter des fonctionnalités similaires dans différents programmes P4, ce qui entraîne une charge de maintenance accrue et des implémentations plus sujettes aux erreurs. Deuxièmement, les composants P4 tels que les analyseurs (parsers), les tables et les actions ne peuvent pas être facilement réutilisés entre différents programmes, obligeant les développeurs à les répliquer et à les intégrer manuellement. Troisièmement, à mesure que les programmes P4 gagnent en complexité, leur maintenance et leur mise à jour deviennent de plus en plus difficiles, en particulier lorsque les modifications doivent être soigneusement propagées à travers plusieurs sections interdépendantes. Enfin, l’intégration de deux ou plusieurs programmes P4 dans une seule base de code unifiée nécessite un effort manuel considérable pour résoudre les conflits, ce qui est à la fois chronophage et susceptible d’introduire des bogues. Ces défis limitent la possibilité d’étendre à l’échelle et la maintenabilité des programmes P4, en particulier dans les environnements réseau modernes où la capacité de déployer rapidement des fonctions réseau personnalisables et riches en fonctionnalités est essentielle. Cette recherche s’attaque à ces limitations en proposant une stratégie complète pour améliorer la modularité dans P4, tout en maintenant la compatibilité avec les programmes P4 existants. La première contribution de cette thèse présente P4Muse (P4 Modularity and Unification for Seamless Extensibility), une extension à source ouverte du compilateur P4C qui permet le développement modulaire de programmes P4 sans introduire de nouvelle syntaxe ou d’annotations spécifiques. P4Muse repose sur l’intégration de nouvelles passes de compilation qui analysent et fusionnent automatiquement plusieurs fichiers source P4, facilitant ainsi la réutilisation de composants tels que les analyseurs, les en-têtes, les actions et les tables. En préservant la structure et la sémantique des programmes originaux, P4Muse garantit une compatibilité ascendante et une intégration fluide. L’approche est évaluée à travers trois catégories de cas d’usage : la réutilisabilité du code, la composition de pipelines, et l’interopérabilité entre fournisseurs et clients. Ces cas sont démontrés à l’aide de six études de cas détaillées utilisant l’architecture V1Model et le commutateur logiciel BMv2, mettant en évidence la capacité de P4Muse à soutenir le développement de programmes P4 évolutifs, maintenables et extensibles. La deuxième contribution de cette thèse introduit P4O2 (P4 Object-Oriented-Inspired), une extension légère et intuitive du compilateur P4C qui améliore la modularité du langage P4 grâce à des constructions syntaxiques explicites et structurées. Inspirée des paradigmes classiques de programmation orientée objet et modulaire, P4O2 permet aux développeurs de définir et d’étendre progressivement des composants réutilisables tels que les en-têtes, les analyseurs, les contrôles et les dé-analyseurs. Cette conception modulaire facilite le développement de bibliothèques évolutives de fonctionnalités réseau standard, simplifie l’intégration de logiques spécifiques aux applications, et réduit la duplication de code. En soutenant la composition modulaire au niveau du langage, P4O2 favorise la séparation des préoccupations, améliore la maintenabilité du code et permet un contrôle précis sur la réutilisation des composants. L’efficacité de P4O2 est démontrée à travers trois études de cas impliquant des piles de protocoles et des applications réseau, toutes évaluées sur le commutateur logiciel BMv2 avec l’architecture V1Model. Cette recherche démontre que la modularité dans P4 peut être significativement améliorée grâce à deux approches complémentaires : la fusion de composants réutilisables au niveau du compilateur, et une extension légère du langage inspirée de la programmation orientée objet. Les évaluations expérimentales montrent que ces deux approches conduisent à des améliorations mesurables en termes de modularité du code, y compris une réduction de la duplication, une latence plus faible et un débit plus élevé. En particulier, la conception orientée objet permet la création d’un plus grand nombre de modules réutilisables, mettant en évidence son potentiel pour construire des programmes de plan de données évolutifs et maintenables dans des réseaux programmables modernes.
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements
