Aller au contenu

FRRouting

Un article de Wikipédia, l'encyclopédie libre.
FRRouting
Informations
Développé par Fondation LinuxVoir et modifier les données sur Wikidata
Première version
Dernière version 10.7.0 ()[1]Voir et modifier les données sur Wikidata
Dépôt https://github.com/frrouting/frr
Écrit en C
Système d'exploitation LinuxVoir et modifier les données sur Wikidata
Type Logiciel de routageVoir et modifier les données sur Wikidata
Licence GPLv2
Documentation https://docs.frrouting.org/
Site web https://frrouting.org/

FRRouting (FRR) est une suite logicielle open-source de protocoles de routage. Elle permet à un système d'exploitation de remplir les fonctions d'un routeur en mettant en œuvre plusieurs protocoles de routage dynamique ainsi que différents mécanismes associés au plan de contrôle. Développé principalement pour les systèmes Linux et BSD, FRRRouting peut également être intégré à des équipements réseau, des systèmes embarqués et des plateformes de virtualisation[2].

Le projet est distribué sous licence libre et est développé par une communauté de contributeurs ainsi que plusieurs organisations impliquées dans le développement de logiciels réseau. Il est utilisé dans les centres de données, les réseaux opérateurs, les laboratoires de recherche et les environnements de cloud computing[3].

FRRouting est issu d'un fork du projet Quagga réalisé en 2016. A cette époque, plusieurs développeurs et entreprises souhaitaient accélérer le développement du logiciel, améliorer le processus de revue de code et intégrer plus rapidement de nouvelles fonctionnalités destinées aux réseaux modernes[4].

Le nouveau projet adopte un modèle de développement communautaire ouvert et reçoit rapidement le soutien de plusieurs acteurs de l'industrie des réseaux. Depuis sa création, FRRouting connaît un rythme de développement soutenu et remplace progressivement Quagga dans de nombreuses distributions Linux ainsi que dans plusieurs systèmes d'exploitation réseau[3].

Au fil des versions, le projet ajoute la prise en charge de nombreux protocoles récents, notamment Segment Routing, EVPN, BGP FlowSpec, BFD ou encore diverses extensions de MPLS[5].

Architecture

[modifier | modifier le code]

FRRouting adopte une architecture modulaire reposant sur plusieurs processus indépendants communiquant entre eux via un daemon central appelé Zebra[6].

Le démon Zebra assure l'interface entre les protocoles de routage et le noyau du système d'exploitation. Il reçoit les routes calculées par les différents protocoles, sélectionne les meilleures routes selon les informations reçues et les installe dans la table de routage du système au moyen des interfaces du noyau[7],[6].

Chaque protocole est implémenté par un daemon dédié, permettant une séparation des responsabilités et une isolation des composants. Cette architecture facilite également le développement de nouvelles fonctionnalités et limite les conséquences d'une défaillance d'un protocole sur les autres services de routage[8].

Les différents processus sont administrés à travers une interface en ligne de commande commune inspirée de celle des équipements Cisco IOS. Les versions récentes utilisent un daemon de gestion centralisé (mgmtd) permettant une configuration unifiée de l'ensemble des protocoles[9].

Protocoles pris en charge

[modifier | modifier le code]

FRRouting prend en charge plusieurs protocoles de routage et de mécanismes associés, notamment[2]:

Fonctionnement

[modifier | modifier le code]

Chaque daemon échange les informations de routage avec ses voisins selon le protocole correspondant. Les routes apprises sont transmises au daemon Zebra, qui les compare aux routes existantes et sélectionne les meilleurs chemins en fonction des métriques, des distances administratives et des règles de sélection propres à chaque protocole[2].

Une fois la décision prise, Zebra installe les routes retenues dans la table de routage du kernel Linux au moyen de l'interface Netlink[6],[7].

FRRouting intervient uniquement dans le plan de contrôle du réseau. Le transfert effectif des paquets est assuré par le noyau du système d'exploitation, ce qui permet de bénéficier des performances du plan de données du système hôte[6].

Cas d'utilisation

[modifier | modifier le code]

FRRouting est utilisé dans de nombreux contextes:

Il est notamment employé comme composant de routage dans plusieurs distributions réseau, plateformes Kubernetes, solutions de virtualisation réseau et systèmes d'exploitation spécialisés[2].

Fonctionnalités

[modifier | modifier le code]

Parmi les principales fonctionnalités de FRRouting firurent[2]:

Développement

[modifier | modifier le code]

Le développement de FRRouting est coordonné sur une plateforme publique de gestion de code source (Git). Le projet suit un cycle de publication régulier comprenant des versions de maintenance ainsi que des versions majeures introduisant de nouvelles fonctionnalités[8].

Le code source est principalement écrit en langage C et fait l'objet d'une intégration continue comprenant des tests automatisés, des analyses statiques et des tests d'interopérabilité avec différents protocoles de routage[4].

Références

[modifier | modifier le code]
  1. « Release 10.7.0 », (consulté le )
  2. 1 2 3 4 5 « FRRouting User Guide — FRR latest documentation », sur docs.frrouting.org (consulté le )
  3. 1 2 « FRRouting », sur frrouting.org (consulté le )
  4. 1 2 FRRouting/frr, FRRouting, (lire en ligne)
  5. « Releases – FRRouting », sur frrouting.org (consulté le )
  6. 1 2 3 4 « Zebra — FRR latest documentation », sur docs.frrouting.org (consulté le )
  7. 1 2 « Netlink Handbook — The Linux Kernel documentation », sur docs.kernel.org (consulté le )
  8. 1 2 « FRRouting Developer’s Guide — FRR latest documentation », sur docs.frrouting.org (consulté le )
  9. « MGMTd (Management Daemon) — FRR latest documentation », sur docs.frrouting.org (consulté le )