Software Defined Networking (SDN) – OpenFlow- und OVSDB-Verbindung

Dieser Artikel basiert auf OpenFlow und OVSDB-Verbindung zwischen SDN-Controller und Openflow-basierten Switches und enthält Details zum Verbindungslebenszyklus. Wir werden Open-Source-SDN-Controller verwenden. d.h. Opendaylight (ODL) Kohlenstofffreisetzung und Openflow virtueller Switch d.h. OpenVswitch (OVS) Version 2.6.0 zu beschreiben über OVSDB und Openflow-Verbindung.

Der SDN-Controller verwaltet die zugrunde liegenden Openflow-Switches über zwei Arten von Verbindungen:

  • OVSDB
  • Openflow

OVSDB- und Openflow-Anschluss

OVSDB ist das OVS-Datenbankmanagementprotokoll, das Schema für die OVS-Datenbank und Spezifikation für die Kommunikation zwischen Steuerung und Switch definiert. Der SDN-Controller verwendet dieses Protokoll, um den OVS-Switch zu steuern, indem er seine Datenbank mit der gewünschten Konfiguration füllt.

Typischerweise läuft der SDN-Controller im passiven Modus, um auf OVSDB- und Openflow-Verbindungen von OVS auf den Ports 6640 und 6653 zu warten.

Also lassen Sie uns zunächst den ODL-Controller starten, Sie können ihn herunterladen unter hier. Es ist Voraussetzung, dass Sie die Umgebungsvariable JAVA_HOME in Ihrem System auf die neueste Java-Version setzen. Die Ausführung von ODL ist so einfach, dass Sie einfach die folgenden Schritte ausführen müssen:

  1. Laden Sie die ODL-Distribution herunter von hier.
  2. Entpacken Sie die ODL-Verteilung.
  3. Geben Sie die „bin Unterverzeichnis, das sich unter dem obersten Verzeichnis des heruntergeladenen Pakets befindet.
  4. Führen Sie den folgenden Befehl aus, um Ihren Controller hochzufahren: karaf

Unten ist das Bild für die oben ausgeführten Schritte:

OpenDaylight installieren

Da wir OVS-Switches verwalten müssen, zu denen OVSDB- und Openflow-Verbindungen hergestellt werden, müssen Openflow- und OVSDB-Plugins in ODL installiert werden. was zu tun ist Dies kann wie unten gezeigt erfolgen:

Openflow- und OVSDB-Plugin-Installation

Sobald die Plugins Openflow und OVSDB installiert sind, beginnt ODL mit der Suche nach Openflow- und OVSDB-Verbindungen am Port 6653 bzw. 6640. Dies kann am Controller durch Ausführen der folgenden Befehle überprüft werden:

netstat -a | grep 6653
netstat -a | grep 6640

Nettoergebnis

Es wird darauf hingewiesen, dass der OVS-Switch bereits laufen sollte, bevor ein OVS-Befehl ausgeführt wird. Um OVS auf Ubuntu auszuführen, führen Sie den folgenden Befehl mit root-Rechten aus:

sudo /etc/init.d/openvswitch-switch start

Es ist als Dienst verfügbar, so dass Sie auch den Status überprüfen können.

sudo /etc/init.d/openvswitch-switch status

Sobald OVS läuft, können Sie auch seine CLI-Befehle ausführen. Zum Beispiel,

sudo ovs-vsctl show

Unten ist das Bild für die Ausgabe der obigen Befehlsausführung:

ovs-vsctl show

Auf der OVS-Seite wird der folgende Befehl ausgeführt, um die OVSDB-Verbindung mit dem Controller herzustellen:

ovs-vsctl set-manager tcp:<controller-IP>:6640

Um zu bestätigen, dass die Verbindung hergestellt ist, kann der folgende Befehl ausgeführt werden, der Folgendes anzeigt ‚is_connected“ ist verbunden Flag wird in der Ausgabe auf true gesetzt.

sudo ovs-vsctl show

Verbindungs is_connected Flag

Die Openflow-Verbindung wird auf Bridge hergestellt, so dass Sie entweder Bridge auf OVS erstellen können oder ODL kann auch Bridge auf OVS erstellen, indem Sie die Konfiguration über OVSDB-Verbindung an OVS senden. Über die Brücke in OVS kann der folgende Befehl ausgeführt werden, um die Brücke mit ODL zu verbinden, die Folgendes festlegt Aufbau einer Openflow-Verbindung zwischen ODL und OVS.

ovs-vsctl set-controller <bridge name> tcp:<controller-IP>:6653

Nachfolgend finden Sie die Verbindungsdaten.

Verbindungsdaten

Wie wir von der OVS-Seite gesehen haben, wurden OVSDB- und Openflow-Verbindungen hergestellt und können auf der ODL-Seite durch Ausführen der folgenden Befehle überprüft werden.

netstat -a | grep 6653
netstat -a | grep 6640

Siehe untenstehende Abbildung für die Ausgabe der Befehle, die den Zustand der Verbindung ESTABLISHED bestätigt:

Verbindungen hergestellt

Da OVSDB und Openflow-Verbindung wie basieren auf TCP, der Nachrichtenaustausch zwischen ODL und OVS kann über die Wireshark-Software einfach erfasst werden. Siehe untenstehendes Bild zur Paketerfassung, das die während des Verbindungsaufbaus ausgetauschten Nachrichten anzeigt.

Wireshark

In den Wireshark-Paketerfassungsprotokollen sehen Sie verschiedene Openflow-Nachrichten, die während des Verbindungsaufbaus zwischen Controller und OVS ausgetauscht werden.

Wie Sie beim Verbindungsaufbau sehen, hat ODL FEATURES_REQUEST Openflow-Nachrichten gesendet und als Antwort darauf hat ODL FEATURES_REPLY von OVS erhalten. Innerhalb von FEATURES_REPLY-Nachrichten erhält ODL die Datenpfad-ID (d.h. die eindeutige Kennung) der OVS-Bridge, die sich um die Weiterleitung (basierend auf den von OFL konfigurierten Openflow-Regeln) des Datenverkehrs zwischen den virtuellen Maschinen kümmert, die mit den Ports von OVS verbunden sind.

Auf der OVS-Seite kann der folgende Befehl ausgeführt werden, um Details der Brücke anzuzeigen.

sudo ovs-ofctl show br-int -OOpenFlow13

Siehe untenstehende Abbildung für die Ausgabe des Befehls:

ovfs-ofctl Kommandoergebnis

Hier sehen Sie FEATURE_REPLY zeigt die Datenpfad-ID (im Hex-Format) der Bridge auf OVS.

Sogar ODL hat das Dashboard DLUX-Funktion, die dem ODL-Controller eine GUI-Webschnittstelle an der URL gibt. http://localhost:8181/index.html auf dem sich ein ODL-Benutzer anmelden kann (standardmäßig ist Benutzername und Passwort ‚admin‘) und überprüfen Sie die Netzwerktopologie im Browser des Systems, auf dem ODL ausgeführt wird. Überprüfen Sie untenstehende Bilder auf Gleiches.

ODL hat eine Dashboard DLUX-Funktion.

Topology

Im obigen Bild sehen Sie, dass der OVS-Switch in der Netzwerktopologie dargestellt ist, die vom ODL-Controller verwaltet wird. Da wir nur einen Switch angeschlossen haben, wird nur ein Openflow-Knoten angezeigt. Hier wird der OVS-Switch mit seiner Datenpfad-ID im Dezimalformat dargestellt.

Um die Openflow-Verbindung mit ODL zu löschen, kann der folgende Befehl in OVS ausgeführt werden:

ovs-vsctl del-controller <bridge name>

Um die OVSDB-Verbindung mit ODL zu löschen, kann der folgende Befehl in OVS ausgeführt werden:

ovs-vsctl del-manager

Nachdem die Verbindung gelöscht wurde, verschwindet das Flag’is_conncted‘, das beim Verbindungsaufbau’true‘ war, aus der Ausgabe des CLI-Befehls’ovs-vsctl show‘ von OVS.

Siehe untenstehende Abbildung für das Löschen von OpenFlow- und OVSDB-Verbindungen, das von der OVS-Seite aus gestartet wurde:

OpenFlow- und OVSDB-Anschluss

Für Debugging und Fehlerbehebung können Sie die in ODL und OVS gepflegten Protokolldateien überprüfen.

ODL-Protokollierungspfad

Wenn die ODL-Distribution (die Sie heruntergeladen haben) entpackt ist und Sie den ‚Karaf‘ Karaf‘. binäre ausführbare Datei, dann ‚log‘ Unterverzeichnis wird erstellt, das Folgendes enthält karaf.log Dateien und deren generischer Pfad ist: ~/distribution-karaf-<version-number>-<release name>/data/log.

Siehe untenstehende Abbildung für ODL-Seitenprotokolldateien.

ODL-Protokollierungspfad

OVS-Protokollierungspfad

Wenn OVS läuft, erzeugt es eine OVSDB-Protokolldatei mit dem Namen ovsdb-server.log‘ und eine Openflow-Protokolldatei mit dem Namen ovs-vswitchd.log‘ im Pfad:

/var/log/openvswitch

Siehe untenstehendes Bild für OVS-Seitenprotokolldateien für OVSDB (ovsdb-server.log) und Openflow-Module (ovs-vswitchd.log) von OVS.

OVS-Protokollierungspfad

                                                   +===+
This article is co-authored by Tarun Thakur.

Referenzen:

Das könnte Dich auch interessieren …