FBOSS ist Facebooks Software-Stack zur Steuerung und Verwaltung von Netzwerk-Switches.
FBOSS besteht aus einer Reihe von User-Space-Anwendungen, Bibliotheken und Dienstprogrammen.
Die erste Open-Source-Version von FBOSS besteht hauptsächlich aus dem Agent-Daemon, wir arbeiten jedoch auch an der Veröffentlichung zusätzlicher Teile und Funktionen.
Einer der zentralen Bestandteile von FBOSS ist der Agent-Daemon, der auf jedem Switch läuft und den Hardware-Weiterleitungs-ASIC steuert. Der Agent-Daemon sendet Weiterleitungsinformationen an die Hardware und implementiert einige Protokolle der Steuerungsebene wie ARP und NDP. Der Agent stellt Thrift-APIs für die Routenverwaltung bereit, damit externe Routing-Steuerungsprozesse ihre Routing-Informationen in die Hardware-Weiterleitungstabellen programmieren können.
Den Code für den Agenten finden Sie in fboss/agent
Der Agent benötigt eine JSON-Konfigurationsdatei, um seine Port- und VLAN-Konfiguration anzugeben. Einige Beispielkonfigurationsdateien finden Sie unter fboss/agent/configs. Diese Dateien sind nicht wirklich für den menschlichen Gebrauch bestimmt – bei Facebook verfügen wir über Tools, die diese Dateien für uns generieren.
Der FBOSS-Agent verwaltet die Weiterleitungstabellen im Hardware-ASIC, muss jedoch über Thrift-APIs über die aktuellen Routen informiert werden.
Unsere erste Open-Source-Version enthält noch keinen Routing-Protokoll-Daemon, der mit dem Agenten kommunizieren kann. Der Routing-Protokoll-Daemon, den wir bei Facebook verwenden, ist eher spezifisch für unsere Umgebung und wird für die Open-Source-Community wahrscheinlich nicht so nützlich sein. Für eine allgemeinere Nutzung außerhalb von Facebook sollte es möglich sein, vorhandene Open-Source-Routing-Tools so zu modifizieren, dass sie mit dem FBOSS-Agenten kommunizieren, wir haben dies jedoch noch nicht implementiert. In der Zwischenzeit haben wir in fboss/agent/tools ein kleines Beispiel-Python-Skript eingefügt, mit dem Routen manuell hinzugefügt und entfernt werden können.
Offensichtlich sind zusätzliche Tools und Dienstprogramme erforderlich, um mit dem FBOSS-Agenten zu interagieren, seinen Status zu melden, Konfigurationsdateien zu generieren und Probleme zu debuggen.
Im Moment sind viele unserer Tools noch nicht für die Open-Source-Veröffentlichung bereit, aber wir hoffen, in den kommenden Wochen weitere davon verfügbar machen zu können. In der Zwischenzeit kann der Thrift-Compiler automatisch ein Python-Remote-Skript generieren, um den manuellen Aufruf der verschiedenen Thrift-Schnittstellen des Agenten zu ermöglichen.
Anweisungen zum Erstellen von FBOSS finden Sie im Dokument BUILD.md.
FBOSS wurde speziell für die Anforderungen der Rechenzentrumsnetzwerke von Facebook entwickelt, wir hoffen jedoch, dass es auch für die breitere Community nützlich sein kann. Beachten Sie jedoch, dass diese erste Version von FBOSS wahrscheinlich Änderungen und zusätzliche Entwicklungen erfordert, um andere Netzwerkkonfigurationen zu unterstützen, die über die von Facebook verwendeten Funktionen hinausgehen. Bis es ausgereifter ist, wird FBOSS wahrscheinlich in erster Linie für Netzwerksoftwareentwickler von Interesse sein und nicht für Netzwerkadministratoren, die es als schlüsselfertige Lösung nutzen möchten.
Wir freuen uns auf das Feedback der Community und hoffen, dass FBOSS als Ausgangspunkt für andere Benutzer dienen kann, die Netzwerk-Switches programmieren möchten.
Die Entwicklung von FBOSS läuft bei Facebook weiter und wir planen, weiterhin weitere Komponenten, zusätzliche Funktionen und Verbesserungen der bestehenden Tools zu veröffentlichen.
Siehe LIZENZ.