Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Wie ein Learning Switch MAC-Adressen lernt

Nach dieser Lektion: Ich kann erklären, wie ein Switch lernt, an welchem Port eine MAC-Adresse hängt.

Lektion, 50 Min.7 BefehleLab für Software-defined Networking: Open vSwitch, Mininet und ein OpenFlow-Controller in einer VM

Ein Switch, der selbst lernt

Ein Learning Switch lernt selbst, an welchem Port welches Gerät hängt, indem er die Absenderadresse jedes Frames mitliest. Dadurch muss niemand eine Tabelle von Hand pflegen.

Kennt er ein Ziel noch nicht, schickt er den Frame an alle anderen Ports, bis eine Antwort zurückkommt. Diese Lektion zeigt, wie das Lernen Schritt für Schritt abläuft.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie ein Switch lernt, an welchem Port eine MAC-Adresse hängt.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
MAC-Adressedie feste Hardware-Adresse einer Netzwerkkarte02:00:00:00:00:0a
Frameein Datenpaket auf der Ebene der MAC-Adressen
Lerntabelleeine Tabelle, die jeder MAC-Adresse einen Port zuordnet
Eingangsportder Port, an dem ein Frame im Switch ankommt
Floodingeinen Frame an alle Ports außer dem Eingangsport schicken
Broadcastein Frame an alle Geräte, mit dem Ziel ff:ff:ff:ff:ff:ff

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Der Switch lernt aus den Absendern

Jeder Frame trägt zwei MAC-Adressen: die des Absenders und die des Ziels. Kommt ein Frame an Port 1 an, weiß der Switch: Der Absender hängt an Port 1. Das trägt er in seine Lerntabelle ein.

Dann sucht er das Ziel in der Tabelle. Findet er es, schickt er den Frame nur dorthin. Findet er es nicht, schickt er ihn an alle anderen Ports. Das ist Flooding.

Beispiel: vier Frames nacheinander

SchrittFrameEingangsportTabelle danachWas der Switch tut
1A an B1A: 1B ist unbekannt, also fluten
2B an A2A: 1, B: 2A ist bekannt, nur an Port 1
3A an B1A: 1, B: 2B ist bekannt, nur an Port 2
4B an C2A: 1, B: 2C ist unbekannt, also fluten

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Drei Sonderfälle, die jeder Switch kennt

Ein Broadcast hat kein einzelnes Ziel. Er wird immer geflutet, und die Adresse ff:ff:ff:ff:ff:ff wird nie gelernt. Wird ein Gerät an einen anderen Port umgesteckt, überschreibt sein nächster Frame den alten Eintrag.

Hängt das Ziel am selben Port, an dem der Frame ankam, verwirft der Switch ihn. Dort hört das Ziel ihn ohnehin.

Die Sonderfälle auf einen Blick

LageWas der Switch tutWarum
Ziel unbekanntFlutenEr weiß nicht, wo es hängt
Ziel ist der BroadcastFluten, nie lernenAlle sollen den Frame bekommen
Absender an neuem PortEintrag überschreibenDas Gerät wurde umgesteckt
Ziel am EingangsportVerwerfenDas Ziel hört den Frame schon

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Im Lab sehen Sie einen echten Lernschalter

Open vSwitch kann selbst ein Learning Switch sein: Die Aktion NORMAL schaltet das ein. Sie legen dazu einen eigenen Switch sw2 mit drei Ports an. In Teil 3 des Labs schreiben Sie das Lernen selbst. Hier schauen Sie nur zu.

Der Befehl fdb/show zeigt die Lerntabelle. Mit fdb/add legen wir einen Eintrag von Hand an, damit der Unterschied zu sehen ist.

Den Switch sw2 anlegen

Befehl
sudo ovs-vsctl --may-exist add-br sw2 -- set bridge sw2 datapath_type=system protocols=OpenFlow13 fail-mode=secure

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Drei Ports anlegen

Befehl
sudo ovs-vsctl --may-exist add-port sw2 q1 -- set interface q1 type=internal ofport_request=1 -- --may-exist add-port sw2 q2 -- set interface q2 type=internal ofport_request=2 -- --may-exist add-port sw2 q3 -- set interface q3 type=internal ofport_request=3

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den eingebauten Lernschalter einschalten

Befehl
sudo ovs-ofctl -O OpenFlow13 add-flow sw2 actions=NORMAL

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Frame an eine unbekannte Adresse

Befehl
sudo ovs-appctl ofproto/trace sw2 in_port=1,dl_src=02:00:00:00:00:01,dl_dst=02:00:00:00:00:02 | grep learned

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Einen Eintrag von Hand in die Lerntabelle legen

Befehl
sudo ovs-appctl fdb/add sw2 q2 0 02:00:00:00:00:02

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Lerntabelle lesen

Befehl
sudo ovs-appctl fdb/show sw2

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Derselbe Frame mit bekanntem Ziel

Befehl
sudo ovs-appctl ofproto/trace sw2 in_port=1,dl_src=02:00:00:00:00:01,dl_dst=02:00:00:00:00:02 | grep learned

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Aus der Tabelle wird ein Flow

Ein klassischer Switch schaut für jeden Frame in seine Lerntabelle. In einem SDN lernt der Controller. Hat er ein Ziel gelernt, schreibt er einen Flow in den Switch, und die folgenden Frames laufen ohne ihn.

Das ist der Schritt, den Sie in der nächsten Lektion lesen. Den Lernschritt selbst schreiben Sie jetzt in Python.

Ein häufiger Fehler

Warnung

Viele denken, ein Switch lerne das Ziel eines Frames. Er lernt aber nur den Absender. Das Ziel schlägt er in der Tabelle nur nach. Ein Gerät, das noch nie gesendet hat, bleibt unbekannt, und Frames an es werden geflutet.

Über dieses Lab und seinen Quellcode: Lab für Software-defined Networking: Open vSwitch, Mininet und ein OpenFlow-Controller in einer VM

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.