GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Faucet:Ein Open-Source-SDN-Controller für Hochgeschwindigkeits-Produktionsnetzwerke

Dank Open-Source-Software können wir jetzt das Verhalten fast jeder Komponente in einem IT-System kontrollieren und ändern. Wir können alles vom Netzwerk-Stack im Kernel bis hinunter zum Webserver-Code im Userspace modifizieren, um Verbesserungen vorzunehmen oder neue Features zu implementieren.

Die letzte Hürde für die vollständige Kontrolle über unseren Hardware- und Software-Stack ist die physische Netzwerkhardware. Diese Geräte werden normalerweise aus den von uns geliebten Open-Source-Tools erstellt, aber sie werden als Black Boxes präsentiert, die von Netzwerkbetreibern nicht einfach modifiziert werden können.

Offene Standards wie OpenFlow und P4 versprachen, die Landschaft zu verbessern, indem sie den Zugriff auf diese Geräte über eine programmierbare API öffneten, aber sie erfordern immer noch jemanden, der einen Controller schreibt, um die normale Switch-Funktionalität wie Weiterleitung und Routing in einem Multi- Anbieter, standardkonformer Weg. Dies veranlasste unsere Gruppe dazu, den Faucet-Controller für softwaredefinierte Netzwerke (SDN) zu schreiben, der es jedem ermöglicht, den Traum von programmierbaren Netzwerken vollständig zu verwirklichen.

So funktioniert Faucet

Faucet ist ein kompakter Open-Source-OpenFlow-Controller, der es Benutzern ermöglicht, ihre Netzwerke genauso zu betreiben wie Server-Cluster. Faucet macht das Networking für alle zugänglich, indem es den DevOps-Workflow in das Networking bringt. Dies geschieht, indem Netzwerkfunktionen (wie Routing-Protokolle, Neighbor Discovery und Switching-Algorithmen) einfach zu verwalten, zu testen und zu erweitern sind, indem sie auf reguläre Software verschoben werden, die auf einem Server ausgeführt wird, im Gegensatz zum traditionellen Ansatz, diese Funktionen in die Firmware einzubetten eines Switches oder Routers. Faucet nimmt eine YAML-Konfigurationsdatei auf, die die Netzwerktopologie und die erforderliche Netzwerkfunktionalität darstellt, und erledigt die Arbeit, um jedes Gerät im Netzwerk mit OpenFlow zu programmieren.

Die Geschichte von Faucet begann im September 2015, als REANNZ die erste Version von Faucet basierend auf einem Prototypcode der WAND Network Research Group an der University of Waikato schrieb. Seitdem haben sich diese Gruppen und viele andere in Neuseeland und darüber hinaus zusammengeschlossen, um einen funktionalen OpenFlow-Controller zu schreiben und zu warten, der von der Masse verwendet werden kann. Wir haben uns seit dem ersten Tag verpflichtet, ein Open-Source-Projekt zu sein, da wir der Meinung sind, dass dies der beste Weg ist, unsere Beiträge zur Verfügung zu stellen, um der Community zu helfen, und wir freuen uns, dass wir bis heute Codeänderungen von über 40 verschiedenen Entwicklern erhalten haben.

Testen und herstellerübergreifende Kompatibilität

Beim Schreiben von Netzwerkcontrollern ist es entscheidend, mit jeder Version funktionierenden Code bereitzustellen, der Produktionsbereitstellungen nicht unterbricht, wenn sie aktualisiert werden. Testbarkeit ist daher eines der wichtigsten Leitprinzipien von Faucet. Wir haben eine umfassende Testsuite, die nicht nur die Codequalität mit Linting und statischer Analyse testet, sondern wir testen auch eine große Anzahl von Netzwerktopologien mit verschiedenen aktivierten Faucet-Funktionen. Dieser Test wird automatisch bei jeder Codeänderung durchgeführt.

Unsere Testsuite ermöglicht es uns auch, die Hardwaregeräte zu qualifizieren, die alle Funktionen von Faucet unterstützen. Dies hat die herstellerübergreifende SDN-Kompatibilität zu einer echten Möglichkeit gemacht, da eine Reihe von Anbietern die Faucet-Testsuite als Teil ihres QA-Prozesses ausführen, um zu überprüfen, ob ihre Firmware Faucet unterstützt. Dadurch können wir auch vermeiden, zusätzliche Treiber oder Anbietererweiterungen zu schreiben, um neue Geräte zu programmieren, was den zusätzlichen Vorteil hat, dass unsere Codebasis klein und konsistent bleibt.

Wasserhahn in der realen Welt

Faucet wurde in vielen verschiedenen Netzwerken auf der ganzen Welt eingesetzt. Vor kurzem haben wir uns mit der Konferenz ACM/IEEE Supercomputing Conference 2018 (SC18) zusammengetan, um ein großes Faucet-Netzwerk als Teil des SCinet-Netzwerks bereitzustellen, das Terabit pro Sekunde Internet an die Stände auf der Ausstellungsfläche liefert. Das von uns aufgebaute Netzwerk bestand aus Hardware von Allied Telesis, Cisco und NoviFlow, und wir konnten eine Kapazität von über 9 Terabit pro Sekunde erreichen.

Ein NoviFlow-Gerät, auf dem ein anwendungsspezifischer integrierter Schaltkreis (ASIC) von Barefoot Tofino P4 lief, war der zentrale Router des Netzwerks. NoviFlow hat OpenFlow als P4-Anwendung geschrieben, wodurch Faucet OpenFlow als Laufzeit-API zusätzlich zu P4 verwenden konnte. Wir haben einen Ansible-Automatisierungscode geschrieben, um ihn in die SC18-Kundenverbindungsdatenbank zu integrieren und die Faucet-Konfiguration im Handumdrehen zu generieren. Die Datenbank weist jeder Kabine ein VLAN und Subnetzinformationen zu.

Die Aufgabe von Faucet bestand darin, das Inter-VLAN-Routing auf dem Core-Router und dem Border Gateway Protocol (BGP)-Peer mit den beiden SCinet-Core-Routern durchzuführen, damit Kabinen ins Internet routen konnten. Die Implementierung des Link Aggregation Control Protocol (LACP) in Faucet ermöglichte es uns, 2x100G-Links zu jedem Upstream-Router zu bündeln, um Ausfallsicherheit zu ermöglichen (falls es ein Glasfaserproblem gab). Jeder Stand erhielt eine Internetverbindung – 1 Gb, 10 Gb oder 100 Gb – über einen Access Switch (bereitgestellt von einem der Anbieter), der ebenfalls von Faucet gesteuert wurde. Die Access-Switches führten Weiterleitungen durch und implementierten Sicherheitsrichtlinien auf jedem Access-Port, um das Netzwerk zu schützen. Zusätzliche Netzwerksicherheit wurde durch Poseidon von CyberReboot bereitgestellt, ein Tool für maschinelles Lernen, das in Faucet integriert ist und verdächtige Endhosts im Netzwerk identifizieren kann. Alle Dienste im Netzwerk, wie z. B. DHCP (Dynamic Host Configuration Protocol) und BGP, wurden von Open-Source-Daemons (z. B. dhcpd und BIRD) bereitgestellt, die als NFV-Dienste (Network Functions Virtualization) auf einem Linux-Server ausgeführt wurden.

Wir glauben, dass die SC18-Bereitstellung die Reife von Faucet und OpenFlow für den Betrieb echter, großer Produktionsnetzwerke demonstriert. Wir hoffen auch, dass andere die Herausforderung annehmen, die Kontrolle über ihre Netzwerke zu übernehmen, indem sie SDN einsetzen. Um mehr über Faucet und seine Bereitstellung zu erfahren, besuchen Sie bitte unsere Website, die Links zu Tutorials, Dokumentation und Mailinglisten für Benutzerdiskussionen enthält. Für diejenigen, die daran interessiert sind, sich an unserem Open-Source-Projekt zu beteiligen, haben wir einen Entwicklerleitfaden, um Erstautoren zu helfen. Um unsere Fortschritte und Ankündigungen zukünftiger Konferenzen, Tutorials oder Bereitstellungen ähnlich wie bei SC18 zu verfolgen, folgen Sie uns schließlich auf Twitter.


Brad Cowie wird vom 21. bis 25. Januar in Christchurch, Neuseeland, auf linux.conf.au einen Vortrag über Using an open source SDN controller to deploy a high-speed production network halten.


Linux
  1. Das Gesetz von Linus für Open-Source-Sicherheit verstehen

  2. 10 leichtgewichtige Open-Source-Webbrowser für Linux

  3. Kdenlive – Ein Open-Source-Editor für nichtlineare Videos für Profis und Anfänger

  4. Die 10 besten Open-Source-Buchhaltungssoftware für Linux

  5. Pixelorama – Open-Source-Editor für Pixel Art

Top 12 Open-Source-Backup-Tools für Linux-Systeme

Top 6 Open-Source-Shells für Linux

FreeTube – Ein Open-Source-Desktop-YouTube-Player für datenschutzbewusste Menschen

10 kostenlose Open-Source-Video-Editoren für Linux [in 2021]

qBittorrent – ​​ein Open-Source-BitTorrent-Client für Linux

Koodo Reader:Ein Open-Source-eBook-Reader für Linux