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.
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.
Histoire 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.
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.
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.
Architecture FRRouting adopte une architecture modulaire reposant sur plusieurs processus indépendants communiquant entre eux via un daemon central appelé Zebra.
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.
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.
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. Protocoles pris en charge FRRouting prend en charge plusieurs protocoles de routage et de mécanismes associés, notamment:
BGP4 OSPF v2 OSPF v3 RIP v1 et v2 RIPng IS-IS PIM Sparse Mode LDP Babel BFD VRRP EVPN Segment Routing MPLS Segment Routing v6 (SRv6) BGP FlowSpec BGP Monitoring Protocol (BMP) RPKI Policy Based Routing (PBR)
Fonctionnement 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.
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.
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.
Cas d'utilisation FRRouting est utilisé dans de nombreux contextes:
Routeurs logiciels Infrastructures de centres de données Réseaux opérateur Réseaux d'entreprise Laboratoires de recherche Plateformes de virtualisation Infrastructures cloud Software-Defined Networking (SDN)
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.
Fonctionnalités Parmi les principales fonctionnalités de FRRouting firurent:
Routage multiprotocole Prise en charge simultanée d'IPv4 et d'IPv6 Equal-Cost Multi-Path (ECMP) Bidirectional Forwarding Detection (BFD) Filtrage des routes Politiques de routage Communautés BGP Route Reflector Confédérations BGP MPLS EVPN / VXLAN Segment Routing Intégration avec le noyau Linux Prise en charge de RPKI pour la validation des préfixes BGP
Développement 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.
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.
Voir aussi Quagga BIRD OpenBGPD VyOS
Références
Catégorie:Logiciel libre sous licence GPL