FBOSS est la pile logicielle de Facebook pour contrôler et gérer les commutateurs réseau.
FBOSS se compose d'un certain nombre d'applications, de bibliothèques et d'utilitaires d'espace utilisateur.
La version open source initiale de FBOSS comprend principalement le démon d'agent, mais nous travaillons également à la publication d'éléments et de fonctionnalités supplémentaires.
L'un des éléments centraux de FBOSS est le démon d'agent, qui s'exécute sur chaque commutateur et contrôle l'ASIC de transfert matériel. Le démon de l'agent envoie des informations de transfert au matériel et implémente certains protocoles de plan de contrôle tels que ARP et NDP. L'agent fournit des API économiques pour la gestion des itinéraires, afin de permettre aux processus de contrôle de routage externes de programmer leurs informations de routage dans les tables de transfert matérielles.
Le code de l'agent se trouve dans fboss/agent
L'agent nécessite un fichier de configuration JSON pour spécifier sa configuration de port et de VLAN. Certains exemples de fichiers de configuration peuvent être trouvés sous fboss/agent/configs. Ces fichiers ne sont pas vraiment destinés à la consommation humaine : chez Facebook, nous disposons d'outils qui génèrent ces fichiers pour nous.
L'agent FBOSS gère les tables de transfert dans l'ASIC matériel, mais il doit être informé des routes actuelles via des API d'épargne.
Notre version open source initiale ne contient pas encore de démon de protocole de routage capable de communiquer avec l'agent. Le démon du protocole de routage que nous utilisons chez Facebook est plutôt spécifique à notre environnement et ne sera probablement pas aussi utile à la communauté open source. Pour une utilisation plus générale en dehors de Facebook, il devrait être possible de modifier les outils de routage open source existants pour communiquer avec l'agent FBOSS, mais nous ne l'avons pas encore implémenté. En attendant, nous avons inclus un petit exemple de script Python dans fboss/agent/tools qui peut ajouter et supprimer manuellement des routes.
Évidemment, des outils et utilitaires supplémentaires sont nécessaires pour interagir avec l'agent FBOSS, signaler son état, générer des fichiers de configuration et déboguer les problèmes.
Pour le moment, nous n'avons pas beaucoup de nos outils prêts à être publiés en open source, mais nous espérons en rendre davantage disponibles dans les semaines à venir. En attendant, le compilateur Thrift peut générer automatiquement un script python-remote pour permettre l'invocation manuelle des différentes interfaces Thrift de l'agent.
Consultez le document BUILD.md pour obtenir des instructions sur la façon de créer FBOSS.
FBOSS a été conçu spécifiquement pour répondre aux besoins des réseaux de centres de données de Facebook, mais nous espérons qu'il pourra également être utile à la communauté au sens large. Cependant, notez que cette version initiale de FBOSS nécessitera probablement des modifications et des développements supplémentaires pour prendre en charge d'autres configurations réseau au-delà des fonctionnalités utilisées par Facebook. Jusqu'à ce qu'il mûrisse davantage, FBOSS intéressera probablement principalement les développeurs de logiciels réseau, plutôt que les administrateurs réseau qui espèrent l'utiliser comme solution clé en main.
Nous attendons avec impatience les commentaires de la communauté et espérons que FBOSS pourra servir de point de départ pour d'autres utilisateurs souhaitant programmer des commutateurs réseau.
Le développement de FBOSS est en cours chez Facebook et nous prévoyons de continuer à publier davantage de composants, de fonctionnalités supplémentaires et d'améliorations des outils existants.
Voir LICENCE.