Open / R: Open Routing für moderne Netzwerke-Facebook Engineering

  • Wir sind Open Sourcing Open / R, eine erweiterbare Netzwerk-Routing-Plattform, die schnelle Innovationen in Netzwerkfunktionen und-anwendungen ermöglicht.
  • Open / R wird in Facebooks Backbone-und Rechenzentrumsnetzwerken verwendet.
  • Die Plattform unterstützt verschiedene Netzwerktopologien (wie WANs, Data Center Fabrics und Wireless Meshes) sowie mehrere zugrunde liegende Hardware-und Softwaresysteme (FBOSS, Arista EOS, Juniper JunOS, Linux Routing usw.).).,
  • Open / R bietet eine Plattform zur Verbreitung von Informationen über das Netzwerk und ermöglicht den Aufbau neuer Anwendungen. Es bietet auch Schnittstellen nach Norden, um die Integration mit externen Controllern zu ermöglichen.
  • Open / R unterstützt Funktionen wie automatische IP-Präfixzuordnung, RTT-basierte Kostenmetriken, anmutigen Neustart, schnelle Konvergenz und Drain/Undrain-Operationen.,
  • Wir haben mit externen Partnern und Betreibern zusammengearbeitet, um Open/R zu unterstützen und zu nutzen, und wir laden weitere Betreiber, ISPs, Anbieter, Systemintegratoren und Forscher ein, Open/R als Plattform für die Implementierung neuer Netzwerkrouting-Ideen und-Anwendungen zu nutzen.

Open-Sourcing Open / R

Da immer mehr Menschen online gehen und reichhaltigere Inhalte konsumieren, wächst auch die Komplexität der Netzwerke, die dem Informationsfluss zugrunde liegen., Während traditionelle Routingprotokolle in den letzten 30 Jahren gut funktioniert haben, kann es schwierig und zeitaufwendig sein, Erweiterungen oder völlig neue Protokolle schnell in Netzwerkgeräte zu übertragen. Neue Fortschritte beim Routing erfordern häufig eine sorgfältige Erweiterung eines vorhandenen Protokolls oder das Entwerfen neuer Overlay-Erweiterungen. Darüber hinaus wurden die meisten Protokolle ursprünglich auf der Grundlage eingeschränkter Hardware-und Softwareumgebungsannahmen von vor Jahrzehnten entwickelt. Um weiterhin umfassende, Echtzeit-und hochgradig ansprechende Benutzererfahrungen über Netzwerke bereitzustellen, ist es wichtig, Innovationen im Routing-Bereich zu beschleunigen.,

Heute sind wir Open-Sourcing Open / R, eine Routing-Plattform, die schnelle Innovationen in Netzwerkfunktionen ermöglicht. Open / R wurde ursprünglich für das drahtlose Backhaul-Netzwerk von Terragraph entwickelt, aber wir haben schnell sein Potenzial für das Backbone von Facebook erkannt, wo es eine effizientere und präzisere Steuerung eines globalen Glasfasernetzes bietet. Jetzt fangen wir sogar an, es in unsere Data Center Fabrics zu rollen, die in FBOSS und auf unserer Open Compute Project Networking Hardware wie Wedge 100 laufen., Open / R ist eine einzige Plattform, die eine Vielzahl von Netzwerkdomänen und-designs umfasst, und wir möchten sie in noch mehr Anwendungsfällen anwenden.

Facebook hat einen softwarezentrierten Ansatz für die Zukunft unseres Netzwerks verfolgt und in den letzten Jahren haben wir unsere Erkenntnisse mit der Netzwerkgemeinschaft geteilt. Zum Beispiel haben wir gemeinsam genutzten Code von Facebook Open Switching System (FBOSS); Details über unser Netzwerk-Design, Management und Monitoring-Tools wie Robotron, FCR und fbflow; und Designs unserer intelligenten Verkehrskontrollsysteme wie Express Backbone und Edge Fabric., Mit der Veröffentlichung der modernen, leicht erweiterbaren und bewährten Open / R-Plattform wollen wir den Stand der Technik in der Netzwerk-Community weiter vorantreiben.

In diesem Sinne freuen wir uns, Ihnen mitteilen zu können, dass wir mit mehreren externen Partnern zusammengearbeitet haben, um Open/R sowohl innerhalb des Facebook-Netzwerks als auch extern in die Produktion zu bringen. Open / R läuft jetzt auf Arista Switching-Plattformen und integriert sich in das Open Source EOS SDK sowie auf den Juniper QFX-und PTX-Routing-Plattformen mit gRPC-basierten APIs., WiLine Networks, ein drahtloser ISP, hat mit Tieto zusammengearbeitet, um Open/R in seinem kommerziellen Netzwerk in Produktion zu bringen. Wir laden andere Anbieter, Betreiber, ISPs, Systemintegratoren und Forscher ein, Open/R als Plattform für die Implementierung neuer Ideen für Routingdomänen zu nutzen, um die nächste Generation von Netzwerken effizienter, intelligenter und einfacher zu bedienen.

Anwendbarkeit über verschiedene Netzwerkdomänen hinweg

Wir waren sehr glücklich zu entdecken, dass Open / R flexibel und erweiterbar genug ist, um viele Arten von Netzwerktechnologien und-topologien zu handhaben., Alles begann mit Terragraph, das traditionelle Netzwerkprotokolle vor eine Herausforderung stellte: Tausende von drahtlosen Knoten kommunizieren im Freien mit Wetter, Laub und anderen Hindernissen, die ständig die Konnektivität stören. Ein großes Layer-2-Netz wäre nicht so effizient und widerstandsfähig, während herkömmliche Layer-3-Protokolle, die hauptsächlich auf grundlegende Konnektivität und Erreichbarkeit ausgelegt sind, für sehr variable und dynamische Außenbedingungen schlecht geeignet sind., „Alles zentral steuern“ schien eine einfache Designlösung zu sein, war jedoch angesichts des Mangels an Out-of-Band-Management und der großen Größe des drahtlosen Netzes unpraktisch. Daher haben wir Open/R als verteilte Netzwerkplattform auf dem Terragraph-Netzwerk konzipiert, die große und schnelle Änderungen bewältigen und eine schnelle Erweiterbarkeit ermöglichen kann.

Als wir anfangs teilten, dass wir Open/R entwickelten, wandten sich mehrere Mitglieder der Netzwerkgemeinschaft an, um mehr zu erfahren, insbesondere im drahtlosen Bereich., Wireless-Netzwerk-Designer stehen alle vor der gleichen Herausforderung: wie Informationen über das zugrunde liegende Netzwerk schnell und häufig genug zu verbreiten, da, wie schnell drahtlose Netzwerke ändern können. WiLine Networks hatte begonnen, bestehende Protokolle als Grundlage für seine Plattform zu ändern, aber als Vertreter von Open/R erfuhren, engagierten sie und Tieto sich mit Facebook, um zu sehen, ob Open/R ihre Bedürfnisse erfüllen konnte. Ihr spezielles Netzwerkdesign hatte einige neue, interessante Herausforderungen für Open / R, aber zusammen konnten wir Open/R erweitern, um den neuen Anforderungen gerecht zu werden., Open / R ist jetzt Teil ihres Produktionsnetzwerks. In ähnlicher Weise sahen andere Anbieter von Millimeterwellennetzen der nächsten Generation die direkte Anwendbarkeit von Open/R, und wir haben Gespräche mit Mitgliedern des Telecom Infra Project (TIP) aufgenommen.

Intern haben wir gesehen, dass Open / R einige der Herausforderungen im Facebook-Backbone-Netzwerk angehen könnte. Während das Backbone eine völlig andere Domäne als ein drahtloses Metro-Mesh ist (das Backbone hat Tausende von Meilen Glasfaser, die Kontinente überspannen, Ozeane überqueren und den Globus umkreisen), steht es aus Netzwerksicht vor ähnlichen Problemen., Unser neues Express-Backbone erforderte die Kontrolle des Verkehrs und des Routings über viele sehr unterschiedliche Pfade und eine schnelle Reaktion auf Ausfälle. Anstatt ein traditionelles Routing-Protokoll wie IS-IS zu verwenden, haben wir uns entschieden, Open/R als verteilte Steuerebene für das Netzwerk in das Express-Backbone einzuführen, wo es mit einem zentralisierten Controller zusammenarbeiten würde. Hier bietet Open/R grundlegende Konnektivität in einem Netzwerk, schnelle Reaktionen auf Netzwerkereignisse und einen „verteilten Informationsbus“, um neue Informationen an die Steuerung und Agenten auf den Netzwerkknoten zu exportieren.,

Zuletzt haben wir unsere Aufmerksamkeit auf die Facebook Data Center Fabrics gerichtet-wieder eine Domain, die sich stark von Terragraph und dem globalen Backbone unterscheidet. Durch Design ist der Stoff sehr gleichmäßig und dicht vernetzt, mit vielen möglichen Wegen zu berücksichtigen und Hebelwirkung. Seit vielen Jahren betreibt Facebook diese großformatigen Stoffe ausschließlich mit Border Gateway Protocol (BGP). Während BGP seine Stärken einbringt, insbesondere in Bezug auf die Durchsetzung und Skalierung von Richtlinien, sahen wir Möglichkeiten, das Design zu verbessern und zu vereinfachen, indem Open/R und BGP zusammenarbeiten., Open / R in diesem Teil des Netzwerks läuft auf FBOSS und auf unserer eigenen OCP-Netzwerkhardware wie Wedge 100.

Routing in einer modernen Hardware-und Softwareumgebung

Viele traditionelle Routingprotokolle wurden in der Vergangenheit entwickelt, mit einem starken Fokus auf die Optimierung für hardwarebegrenzte Embedded-Systeme wie CPUs und RAM. Darüber hinaus wurden Protokolle als speziell entwickelte Lösungen entwickelt, um das besondere Problem des Routings für die Konnektivität zu lösen, und nicht als flexible Softwareplattform zum Aufbau neuer Anwendungen im Netzwerk.,

CPU-und RAM-Einschränkungen sind heute kein großer Engpass mehr; Gleichzeitig entwickeln sich die Anwendungsanforderungen und Anwendungsfälle, die Netzwerke erfüllen müssen, rasant. Diese Änderungen haben den Fokus von Netzwerktechnikern von der Optimierung von Protokollen auf die schnelle Erstellung neuer Anwendungen verlagert, was zusätzlich zu bestehenden Protokollen schwierig sein kann. Die Open / R-Plattform ermöglicht die schnelle Innovation, die erforderlich ist, um moderne Netzwerkdesigns zu unterstützen und gleichzeitig die betriebliche Komplexität zu reduzieren.

Wir haben Open/R für die Ausführung auf mehreren Hardwareplattformen entwickelt., Alle hardware-und systemabhängigen Teile wurden über RPC-Schnittstellen abstrahiert (z. B. Routenprogrammierung und Link – /Adresserkennung). Dies hat es uns ermöglicht, dieselbe Open/R-Implementierung auf verschiedenen Arten von Hardwaregeräten mit unterschiedlichen ASICs oder sogar unterschiedlichen CPU-Familien auszuführen. Diese Flexibilität bietet eine Ebene der Homogenität auf heterogenen Netzwerkgeräten, wodurch das Netzwerk einfacher zu steuern und zu verwalten ist.,

Das Entwerfen für eine schnelle Iteration machte es notwendig, robuste Testverfahren einzubeziehen, die bei jeder Codeänderung und jeder neuen Feature-Version Vertrauen und Klarheit schaffen. Wir bemühen uns, eine 100-prozentige Codeabdeckung zu haben, um jede Zeile der Code-Logik zu validieren und Fehler so früh wie möglich abzufangen. Unit-Tests allein reichen jedoch eindeutig nicht aus. Bei jeder Änderung des Codes testen wir das tatsächliche Verhalten von Open/R in einer großen emulierten Netzwerktopologie mit Tausenden von Knoten, führen Regressionstests durch und überprüfen den gesamten Satz von Funktionen, um die Abwärtskompatibilität sicherzustellen., Zu diesem Zweck haben wir ein Framework entwickelt, mit dem große virtuelle Topologien mithilfe von Lightweight-Containern als Knoten auf mehreren physischen Computern erstellt werden können. Wir werden auch Open-Sourcing dieses Emulations-Framework zusammen mit der Open/R-Plattform.

Open / R Design updates

Wie bereits beschrieben, nutzt Open/R vorhandene Open Source Codebasen für zwei Kernfunktionen. Zunächst erfolgt die Codierung und Decodierung von Datenstrukturen der Steuerebene unter Verwendung von Sparsamkeit. Zweitens wird die Logik zum Datenaustausch zwischen Netzwerkknoten mit ZeroMQ implementiert., Diese Design-Wahl half uns, eine Menge technischen Overhead zu beseitigen und Open/R schnell zu entwickeln, wobei wir uns eher auf übergeordnete Funktionen als auf die Low-Level-Sanitär konzentrierten. Darüber hinaus ermöglichte die Verwendung vorhandener Technologien die Erstellung von Tools und Bibliotheken in anderen Sprachen als C++ zur Interaktion mit Open/R. Ein Beispiel ist das Breeze CLI-Tool, das in Python geschrieben ist und Möglichkeiten zur Interaktion mit den verschiedenen Open/R-Modulen bietet.

Seit unserem ersten Beitrag, der die Architektur von Open/R beschreibt, wurden mehrere Verbesserungen und neue Funktionen hinzugefügt., Eine wesentliche architektonische Verbesserung ist die Einführung des Plattformmoduls. Es abstrahiert systemabhängige Teile und stellt APIs bereit, um Low-Level-Informationen an andere Module weiterzuleiten oder die spezifische zugrunde liegende Hardware zu programmieren. Für Vanille-Linux-Knoten mit Software-Routing bietet es Standardhandler zur Adressierung der FIB-Programmierung (Forwarding Information Base) und Benachrichtigungen zum Ändern des Schnittstellenzustands für Open / R., Für Systeme, die in der Lage sind, die Paketweiterleitung direkt in der Hardware durchzuführen (z. B. unsere Terragraph-Knoten oder Express-Backbone-Router), implementiert das Modul FIB-Handler, die mit den spezifischen Hardware-SDKs interagieren. In unserer Wedge 100-Plattform implementiert der FBOSS Agent beispielsweise direkt die FIB-Programmierschnittstelle von Open/R.

Das folgende Diagramm fasst die High-Level-Architektur von Open/R zusammen:

  • KV-STORE: fungiert als replizierter Schlüsselwertspeicher, der verteilte Kommunikation und Zustandsreplikation ermöglicht.,
  • Spark: Führt die Nachbarerkennung auf Schnittstellen mit linklokalem Multicast durch und meldet Nachbaraktivitäten.
  • LinkMonitor: Überwacht Systemschnittstellen über die Plattform, verwaltet Spark-Sitzungen auf diesen und wirbt für entdeckte Nachbarn im KV-STORE.
  • PrefixManager: Führt die automatische Präfix-Unterzuweisung für die Ad-hoc-Konfiguration durch.
  • Entscheidung: Berechnet Routing-Informationen basierend auf den topologischen Informationen, die über KV-STORE gelernt wurden.
  • FIB: Dient als Proxy für die Programmierung berechneter Routen über die Plattform und behält den Weiterleitungsstatus (berechnete Routen) bei.,
  • Plattform: Implementiert Routenprogrammierung und Schnittstellenerkennungslogik für die Zielhardwareplattform.

Emulation und CLI

Open / R-Tests basieren auf der Fähigkeit, große virtuelle Netzwerke schnell einzurichten, ohne dass eine tatsächliche Hardware erforderlich ist. Um dies zu erleichtern, haben wir eine generische Emulationsbibliothek erstellt — einen leichten Wrapper über systemd-nspawn – und ein Emulationstool, das Tausende von Linux-Containern startet und mit einem einzigen Befehl ein Netz von Tunneln bildet., Um Paketverlust, Verzögerung oder Jitter zu emulieren, unterstützt das Tool die Erstellung verschiedener Netzwerkumgebungen wie WAN oder drahtlose Netzwerke durch Konfigurieren von Verkehrskonditionierern. Dies macht es einfach, das Verhalten von Open/R unter verschiedenen Szenarien zu testen, und hilft Entwicklern, die neu in Open/R sind, einen sicheren Weg zum Experimentieren zu bieten.

Die Plattform wird mit der Breeze CLI geliefert, einem Befehlszeilenschnittstellentool für Netzwerkingenieure, mit dem Sie mit dem Netz offener/R-Instanzen interagieren können., Es ermöglicht die Überprüfung laufender Statusinformationen wie Adjazenzen, Knoten, Präfixe, Routen, Zähler und aktuelle Konvergenzstatistiken sowie die Durchführung von Steuervorgängen wie dem Entleeren und Abbauen von Knoten, dem Festlegen benutzerdefinierter Metriken für Links und dem Ankündigen und Zurückziehen von Präfixen., Eine nützliche Funktion ist beispielsweise die Möglichkeit, eine Echtzeitinspektion der replizierten Statusdatenbank der Plattform (KV-STORE) durchzuführen, mit der Ingenieure jede Aktivität im gesamten Netzwerk überprüfen können (Knoten kommen auf, Adjacenzen reißen ab oder Metrikwerte ändern sich), indem sie einfach eine Verbindung zu einem einzelnen Knoten herstellen.

Open / R und zentrale Steuerung

Der verteilte Aspekt ist wichtig für die Netzwerkzuverlässigkeit. Dennoch werden intelligente Entscheidungen optimal getroffen, wenn sie an eine zentrale Steuerung, beispielsweise für verkehrstechnische Zwecke, entladen werden., Dazu stellt Open/R APIs bereit, mit denen Remote-Agenten den Linkstatus ermitteln oder Datenbankaktualisierungen abonnieren können, z. B. Benachrichtigungen über eine Änderung der Linkkapazität. Dies könnte beispielsweise verwendet werden, um Label-Switched-Pfade zu berechnen und sie von einem zentralen Ort aus im Netzwerk zu programmieren. Diese Funktionalität ermöglicht die Kombination von „lokaler“ Ereignisbehandlung (im Netzwerk) mit zentralisierter Logik, wie wir sie erfolgreich in unserem Express-Backbone-Projekt implementiert haben.,

Zusammenfassung der Funktionen

Während Open / R viele Funktionen implementiert, die denen herkömmlicher Protokolle wie IS-IS und OSPF ähneln, werden auch einige eigene Funktionen eingeführt.

Hier ist eine kurze Zusammenfassung:

  • IPv6 zuerst IPv6 Link-lokale Adressen nutzen Zero-Touch-Konfiguration zu erreichen. Es ist keine spezielle Netzwerkkonfiguration erforderlich.
  • Unterstützung für natives IPv4-Routing bei Bedarf.
  • Ad-hoc – Netzwerkpräfixzuordnung und IP-Konfiguration für Knoten im Netzwerk aus einem größeren Aggregatpräfix.,
  • Ein anmutiger Neustart, der Live-Software-Updates ermöglicht, ohne die Verkehrsweiterleitung zu stören.
  • Unterstützung für das Entleeren und Abbauen von Knoten und Links.
  • Dynamische link RTT metriken berechnet und geglättet von aktiven Sonden.
  • Die Möglichkeit, benutzerdefinierte Metrikwerte statisch oder dynamisch festzulegen.
  • Schnelle Netzwerkkonvergenz mit intelligenten Back-Off-Timern für Link-oder Knotenfehler.
  • Kontinuierliche Gesundheitsprüfung des Netzwerks durch Live-Erreichbarkeitsprüfung.
  • Eine API zur Integration mit zentralen Controllern.,
  • Eine Python-Bibliothek zur Interaktion mit allen wichtigen Open / R-Prozessen.
  • Die Möglichkeit, die Plattform zu erweitern, um alle möglichen zusätzlichen Informationen zu verbreiten und sogar Verbesserungen oder Variationen der Pfadberechnungslogik einzuführen.

Schlussfolgerung

Während traditionelle Routingprotokolle in den letzten Jahrzehnten zum Fortschritt der Technologie beigetragen haben, nähern wir uns dem Punkt, an dem sich Netzwerke noch schneller entwickeln müssen., Open / R ist eine offene Plattform, die es einfach macht, neue Ideen in großem Maßstab schnell zu testen und bereitzustellen, wodurch unsere Netzwerke effizienter, schneller und einfacher zu verwalten sind.

Wir ermutigen Netzbetreiber, Forscher, Anbieter, Ingenieure und die gesamte Netzwerkgemeinschaft nachdrücklich, Open/R zu nutzen, um ihre Ideen umzusetzen und moderne Netzwerke aufzubauen, die offener sind und sich schneller als je zuvor entwickeln können.

Und schließlich ein großes Dankeschön geht an die vielen Teams, die mit der Core Development Group zusammengearbeitet haben, um Open/R zu diesem wichtigen Meilenstein zu bringen., Dazu gehören das Terragraph-Team, das Express Backbone-Team, das Data Center Network Engineering, das FBOSS-Team, das Facebook Infrastructure Partnerships-Team und unsere externen Partner.

Share

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.