- Nous sommes open-sourcing Open/R, une plate-forme de routage réseau extensible qui permet une innovation rapide dans les fonctions et applications réseau.
- Open / R est utilisé dans les réseaux dorsaux et de centres de données de Facebook.
- la plate-forme prend en charge différentes topologies de réseau (telles que les Wan, les tissus de Centre de données et les maillages sans fil) ainsi que plusieurs systèmes matériels et logiciels sous-jacents (fboss, Arista EOS, Juniper JunOS, routage Linux, etc.).,
- Open / R fournit une plate-forme pour diffuser l’État à travers le réseau et permet à de nouvelles applications d’être construites dessus. Il fournit également des interfaces northbound pour permettre l’intégration avec des contrôleurs externes.
- Open/R prend en charge des fonctionnalités telles que l’allocation automatique de préfixe IP, les métriques de coût basées sur RTT, le redémarrage gracieux, la convergence rapide et les opérations de drain / undrain.,
- Nous avons travaillé avec des partenaires externes et des opérateurs pour soutenir et utiliser Open/R, et nous invitons davantage d’opérateurs, de Fai, de fournisseurs, d’intégrateurs de systèmes et de chercheurs à utiliser Open/R comme plate-forme pour mettre en œuvre de nouvelles idées et applications de routage réseau.
open-sourcing Open/R
à mesure que de plus en plus de gens se connectent et consomment un contenu plus riche, la complexité des réseaux sous-jacents au flux d’informations augmente également., Alors que les protocoles de routage traditionnels ont bien fonctionné au cours des 30 dernières années, il peut être difficile et fastidieux de pousser rapidement des extensions ou des protocoles entièrement nouveaux dans les périphériques réseau. Les nouvelles avancées dans le routage nécessitent souvent d’étendre soigneusement un protocole existant ou de concevoir de nouvelles extensions de superposition. En outre, la plupart des protocoles ont été initialement conçus sur la base d’hypothèses d’environnement matériel et logiciel contraint d’il y a des décennies. Pour continuer à offrir des expériences utilisateur riches, en temps réel et très attrayantes sur les réseaux, il est important d’accélérer l’innovation dans le domaine du routage.,
Aujourd’hui, nous sommes open-sourcing Open / R, une plate-forme de routage qui permet une innovation rapide dans les fonctions réseau. Open / R a été construit à l’origine pour le réseau de liaison terrestre sans fil Terragraph, mais nous avons rapidement vu son utilisation potentielle pour le backbone de Facebook, où il fournit un contrôle plus efficace et plus précis d’un réseau fibre optique mondial. Maintenant, nous commençons même à le déployer dans nos tissus de Centre de données, en cours d’exécution à L’intérieur de FBOSS et sur notre matériel de réseau de projet de calcul ouvert comme Wedge 100., Open / R est une plate-forme unique qui couvre une grande variété de domaines et de conceptions de réseau, et nous cherchons à l’appliquer dans encore plus de cas d’utilisation.
Facebook a adopté une approche centrée sur le logiciel pour l’avenir de notre réseau, et au cours des dernières années, nous avons partagé nos apprentissages avec la communauté du réseau. Par exemple, nous avons partagé le code du système de commutation ouvert de Facebook (Fboss); des détails sur nos outils de conception, de gestion et de surveillance du réseau tels que Robotron, FCR et fbflow; et les conceptions de nos systèmes de contrôle du trafic intelligents tels que Express Backbone et Edge Fabric., Maintenant, en libérant la plate-forme Open/R moderne, facilement extensible et bien testée, nous avons l’intention de pousser davantage l’état de l’art dans la communauté des réseaux.
dans cet esprit, nous sommes heureux d’annoncer que nous avons travaillé avec plusieurs partenaires externes pour mettre Open/R en production, à la fois au sein du réseau Facebook et à l’extérieur. Open / R fonctionne désormais sur les plates-formes de commutation Arista, intégrant le SDK open source EOS, ainsi que sur les plates-formes de routage Juniper QFX et PTX utilisant des API basées sur gRPC., WiLine Networks, un FAI sans fil, a travaillé avec Tieto pour déployer Open / R en production dans son réseau commercial. Nous invitons d’autres fournisseurs, opérateurs, FAI, intégrateurs de systèmes et chercheurs à utiliser Open/R comme plate-forme pour mettre en œuvre de nouvelles idées de domaine de routage afin de rendre la prochaine génération de réseaux plus efficace, plus intelligente et plus facile à utiliser.
applicabilité à différents domaines de réseau
Nous avons été très heureux de découvrir Qu’Open / R est suffisamment flexible et extensible pour gérer de nombreux types de technologies et de topologies de réseau., Tout a commencé avec Terragraph, qui a présenté un défi aux protocoles réseau traditionnels: des milliers de nœuds sans fil communiquant à l’extérieur avec la météo, le feuillage et d’autres obstacles interférant constamment avec la connectivité. Un grand maillage de couche 2 ne serait pas aussi efficace et résilient, tandis que les protocoles de couche 3 traditionnels, conçus principalement pour la connectivité de base et l’accessibilité, sont mal adaptés aux conditions extérieures très variables et dynamiques., « Contrôler tout cela de manière centralisée » semblait être une solution de conception facile, mais peu pratique compte tenu du manque de gestion hors bande et de la Grande Taille du maillage sans fil. Ainsi, nous avons conçu Open / R pour être la plate-forme de réseau distribuée au-dessus du réseau Terragraph qui pourrait faire face à ses changements à grande échelle et rapides, et permettre une extensibilité rapide.
lorsque nous avons initialement partagé que nous développions Open / R, plusieurs membres de la communauté de réseautage ont tendu la main pour en savoir plus, en particulier dans l’espace sans fil., Les concepteurs de réseaux sans fil sont tous confrontés au même défi: comment diffuser des informations sur le réseau sous-jacent rapidement et assez fréquemment, étant donné la rapidité avec laquelle les réseaux sans fil peuvent changer. WiLine Networks avait commencé à essayer de modifier les protocoles existants comme base pour sa plate-forme, mais lorsque les représentants ont appris à propos D’Open/R, ils et Tieto engagés avec Facebook pour voir si Open/R pourrait répondre à leurs besoins. Leur conception de réseau particulière présentait de nouveaux défis intéressants pour Open / R, mais ensemble, nous avons pu étendre Open/R pour répondre aux nouvelles exigences., Open / R fait maintenant partie de leur réseau de production. Dans la même veine, d’autres fournisseurs de réseaux à Ondes millimétriques de nouvelle génération ont vu l’applicabilité directe D’Open / R, et nous avons entamé des discussions avec les membres du projet Telecom Infra (TIP).
en interne, nous avons vu Qu’Open / R pouvait relever certains des défis du réseau dorsal Facebook. Alors que le backbone est un domaine entièrement différent d’un maillage sans fil metro (le backbone a des milliers de kilomètres de fibres qui couvrent les continents, traversent les océans et font le tour du globe), du point de vue du réseau, il est confronté à des problèmes similaires., Notre nouveau Backbone Express nécessitait le contrôle du trafic et du routage sur de nombreux chemins très différents et une réponse rapide aux pannes. Au lieu d’utiliser un protocole de routage traditionnel tel que IS-IS, nous avons décidé d’introduire Open/R dans le Backbone Express en tant que plan de contrôle distribué pour le réseau, où il fonctionnerait avec un contrôleur centralisé. Ici, Open / R fournit une connectivité de base dans un réseau, des réactions rapides aux événements du réseau et un « bus d’informations distribuées” pour exporter de nouvelles informations vers le contrôleur et les agents sur les nœuds du réseau.,
plus récemment, nous avons porté notre attention sur les tissus des centres de données Facebook — encore une fois, un domaine très différent de Terragraph et de l’épine dorsale mondiale. De par sa conception, le tissu est très uniforme et densément maillé, avec de nombreux chemins possibles pour tenir compte et tirer parti. Depuis de nombreuses années, Facebook exploite ces tissus à grande échelle uniquement avec Border Gateway Protocol (BGP). Bien que BGP apporte ses forces, en particulier en ce qui concerne l’application des politiques et l’échelle, nous avons vu des opportunités d’améliorer et de simplifier la conception en faisant travailler ensemble Open/R et BGP., Open / R dans cette partie du réseau fonctionne sur FBOSS et sur notre propre matériel de réseau OCP tel que Wedge 100.
routage dans un environnement matériel et logiciel moderne
de nombreux protocoles de routage traditionnels ont été conçus dans le passé, avec un fort accent sur l’optimisation pour les systèmes embarqués limités en matériel tels que les processeurs et la RAM. En outre, les protocoles ont été conçus comme des solutions spécialement conçues pour résoudre le problème particulier du routage pour la connectivité, plutôt que comme une plate-forme logicielle flexible pour créer de nouvelles applications dans le réseau.,
Aujourd’hui, les limitations de CPU et de RAM ne sont plus un goulot d’étranglement majeur; dans le même temps, les exigences applicatives et les cas d’utilisation que les réseaux doivent satisfaire évoluent rapidement. Ces changements ont déplacé l’attention des ingénieurs réseau de l’optimisation des protocoles à la création de nouvelles applications rapidement, ce qui peut être difficile à faire en plus des protocoles existants. La plate-forme Open/R permet l’innovation rapide nécessaire pour prendre en charge les conceptions de réseau modernes tout en réduisant la complexité opérationnelle.
Nous avons conçu Ouvrir/R pour fonctionner sur plusieurs plates-formes matérielles., Toutes les pièces dépendantes du matériel et du système ont été abstraites via des interfaces RPC (par exemple, la programmation de routage et la découverte de liens/adresses). Cela nous a permis d’exécuter la même implémentation Open/R sur différents types de périphériques matériels, avec différentes ASIC ou même différentes familles de processeurs. Cette flexibilité fournit une couche d’homogénéité au-dessus des périphériques réseau hétérogènes, ce qui rend le réseau plus facile à contrôler et à gérer.,
La conception pour une itération rapide a rendu nécessaire d’inclure des procédures de test robustes qui fournissent confiance et clarté autour de chaque changement de code et nouvelle version de fonctionnalité. Nous nous efforçons d’avoir une couverture de code à 100% pour valider chaque ligne de logique de code et détecter les erreurs le plus tôt possible. Cependant, les tests unitaires à eux seuls ne sont manifestement pas suffisants. Pour chaque modification du code, nous testons le comportement réel D’Open/R dans une grande topologie de réseau émulée de milliers de nœuds, en exécutant des tests de régression et en vérifiant l’ensemble des fonctionnalités pour assurer la rétrocompatibilité., Pour ce faire, nous avons construit un cadre pour faire tourner de grandes topologies virtuelles en utilisant des conteneurs légers comme nœuds sur plusieurs machines physiques. Nous allons également open-sourcing ce cadre d’émulation avec la plate-forme Open/R.
Open/R design updates
Comme nous l’avons décrit précédemment, Open / R exploite les bases de code open source existantes pour deux fonctions principales. Tout d’abord, l’encodage et le décodage des structures de données du plan de contrôle sont effectués à l’aide de Thrift. Deuxièmement, la logique d’échange de données entre les nœuds du réseau est implémentée à L’aide de ZeroMQ., Ce choix de conception nous a aidés à éliminer beaucoup de frais généraux techniques et à développer Open/R rapidement, en nous concentrant sur les fonctionnalités de niveau supérieur plutôt que sur la plomberie de bas niveau. De plus, l’utilisation de technologies existantes nous a permis de créer des outils et des bibliothèques dans des langages autres que C++ Pour interagir avec Open/R. Un exemple est L’outil Breeze CLI, qui est écrit en Python et fournit des moyens d’interagir avec les différents modules Open/R.
Depuis notre premier article décrivant L’architecture D’Open / R, plusieurs améliorations et nouvelles fonctionnalités ont été ajoutées., Une amélioration architecturale majeure est l’introduction du module de plate-forme. Il résume les parties dépendantes du système et expose des API pour alimenter des informations de bas niveau vers d’autres modules ou pour programmer le matériel sous-jacent spécifique. Pour les nœuds Linux vanilla avec routage logiciel, il fournit des gestionnaires par défaut pour adresser la programmation de la base d’informations de transfert (FIB) et les notifications de changement D’état de L’interface pour Open/R., Pour les systèmes capables de transférer des paquets directement dans le matériel (par exemple, nos nœuds Terragraph ou nos routeurs Express Backbone), le module implémente des gestionnaires FIB qui interagissent avec les SDK matériels spécifiques. Par exemple, dans notre plate-forme Wedge 100, L’agent FBOSS implémente directement L’interface de programmation FIB D’Open/R.
le diagramme suivant résume L’architecture de haut niveau D’Open/R:
- KV-STORE: fonctionne comme un magasin de clé-valeur répliquée qui active les communications distribuées et la réplication d’état.,
- Spark: effectue la découverte du voisin sur les interfaces à l’aide de la multidiffusion locale de liaison et signale les activités du voisin.
- LinkMonitor: surveille les interfaces système via la plate-forme, gère les sessions Spark sur celles-ci et annonce les voisins découverts dans KV-STORE.
- PrefixManager: effectue une sous-allocation automatique de préfixe pour une configuration ad hoc.
- décision: calcule les informations de routage sur la base des informations topologiques apprises via KV-STORE.
- FIB: Sert de proxy pour la programmation des routes calculées via la plate-forme, maintient l’état de transfert (routes calculées).,
- plate-forme: implémente la programmation de routage et la logique de découverte d’interface pour la plate-forme matérielle cible.
Emulation et CLI
Open / R testing repose sur la possibilité de configurer rapidement de grands réseaux virtuels sans avoir besoin de matériel réel. Pour faciliter cela, nous avons construit une bibliothèque d’émulation Générique – un wrapper léger sur systemd-nspawn
— et un outil d’émulation qui démarre des milliers de conteneurs Linux et forme un maillage de tunnels entre eux avec une seule commande., Pour émuler une perte de paquets, un retard ou une gigue, l’outil prend en charge la création de différents environnements réseau, tels que des réseaux WAN ou sans fil, en configurant des conditionneurs de trafic. Cela facilite le test du comportement D’Open/R dans différents scénarios, et aide à accélérer les développeurs nouveaux Pour Open/R, fournissant un moyen sûr d’expérimenter.
la plate-forme est livrée avec la CLI Breeze, un outil d’interface en ligne de commande permettant aux ingénieurs réseau d’interagir avec le maillage des instances Open / R., Il permet d’inspecter les informations d’état en cours d’exécution, telles que les contiguïtés, les nœuds, les préfixes, les routes, les compteurs et les dernières statistiques de convergence, ainsi que d’effectuer des opérations de contrôle telles que le drainage et le désentraînement des nœuds, la définition de métriques personnalisées sur les liens et l’annonce et le retrait des préfixes., Par exemple, une fonctionnalité utile est la possibilité d’effectuer une inspection en temps réel de la base de données d’état répliquée de la plate-forme (le KV-STORE), ce qui permet aux ingénieurs d’inspecter toute activité dans l’ensemble du réseau (nœuds à venir, contiguïtés démolies ou valeurs métriques changeantes) simplement en se connectant à un seul nœud.
Open/R et contrôle centralisé
l’aspect distribué est important pour la fiabilité du réseau. Pourtant, les décisions intelligentes sont prises de manière optimale lorsqu’elles sont déchargées vers un contrôleur centralisé, par exemple à des fins d’ingénierie du trafic., Pour cela, Open / R fournit des API permettant aux agents distants d’apprendre l’état du lien ou de s’abonner aux mises à jour de la base de données, telles que les notifications d’un changement de capacité de lien. Par exemple, cela pourrait être utilisé pour calculer des chemins commutés par étiquette et les programmer sur le réseau à partir d’un emplacement central. Cette fonctionnalité permet de combiner la gestion des événements” locaux » (en réseau) avec une logique centralisée, comme nous l’avons implémenté avec succès dans notre projet Express Backbone.,
résumé des fonctionnalités
bien que Open / R implémente de nombreuses fonctionnalités similaires à celles trouvées dans les protocoles traditionnels comme IS-IS et OSPF, il introduit également quelques fonctionnalités uniques.
Voici un résumé rapide:
- IPv6 tout d’abord, en tirant parti des adresses locales de liaison IPv6 pour obtenir une configuration sans contact. Aucune configuration réseau spéciale n’est requise.
- prise en charge du routage IPv4 natif en cas de besoin.
- attribution ad hoc de préfixe de réseau et configuration IP pour des noeuds dans le réseau d’un préfixe agrégé plus grand.,
- un redémarrage gracieux qui permet des mises à jour logicielles en direct sans perturber le transfert du trafic.
- prise en charge du drainage et du désentraînement des nœuds et des liens.
- métriques RTT Dynamic link calculées et lissées à partir de sondes actives.
- la possibilité de définir des valeurs métriques personnalisées, statiquement ou dynamiquement.
- convergence rapide du réseau avec des temporisateurs intelligents pour les pannes de liaison ou de nœud.
- vérification continue de l’état du réseau par sondage d’accessibilité en direct.
- Une API pour l’intégration avec des contrôleurs centralisés.,
- Une bibliothèque Python pour interagir avec tous les principaux processus Open / R.
- la possibilité d’étendre la plate-forme pour diffuser toutes sortes d’informations supplémentaires, et même d’introduire des améliorations ou des variations dans la logique de calcul de chemin.
Conclusion
alors que les protocoles de routage traditionnels ont joué un rôle déterminant dans le progrès de la technologie au cours des dernières décennies, nous approchons du point où les réseaux doivent évoluer encore plus rapidement., Open / R est une plate-forme ouverte qui permet de tester et de déployer rapidement de nouvelles idées à grande échelle, ce qui rend nos réseaux plus efficaces, plus rapides à déployer et plus faciles à gérer.
nous encourageons fortement les opérateurs de réseau, les chercheurs, les fournisseurs, les ingénieurs et l’ensemble de la communauté de réseau à utiliser Open / R pour mettre en œuvre leurs idées et construire des réseaux modernes plus ouverts et pouvant évoluer plus rapidement que jamais.
et enfin, un grand merci aux nombreuses équipes qui ont travaillé avec le core development group afin d’ouvrir/R à cette étape importante., Cela inclut L’équipe Terragraph, L’équipe Express Backbone, L’ingénierie réseau du Centre de données, L’équipe FBOSS, L’équipe Facebook Infrastructure Partnerships et nos partenaires externes.