Der Switch

Der Switch, was macht er und warum brauchen wir ihn ?
Zu Anfang der Zeiten als Netzwerke entstanden, wurde noch alle Computer an einer langen Leitung angeschlossen, das bekannteste dürfte das BNC Kabel sein, welches wir u.a. heute noch als Antennenkabel kennen.
Dort wo ein Computer stand wurde das Kabel unterbrochen, ein T-Stück wurde eingesetzt und der Computer wurde an den freien Abgang angeschlossen.
Da in einem Netzwerk immer nur ein Computer senden darf, da es sonst zu Kollisionen kommt, wurde ein Verfahren entwickelt das sich CSMA/CD nennt.
CSMA/CD bedeutet, Carrier Sense Multiple Access/Collision Detection.
Dieses bedeutet das viele Computer Zugriff auf die Leitung haben und auf diese „hören“ und wenn diese frei ist, es also keine Datenübertragung statt findet, dann sendet der Computer die Daten.
Dabei kann es aber passieren und je mehr Computer sich in einem Netzwerk befinden, desto öfter passiert dieses, das mehr als ein Computer zur gleichen Zeit senden.
Dann findet eine Kollision von Datenpaketen statt. Die Daten werden dadurch unbrauchbar.
Das CSMA/CD Verfahren erkennt diese Kollisionen und die Computer die gesendet haben warten nun eine bestimmte Zeit bis sie es wieder probieren.

Aus der BNC Verkabelung die sehr unpraktisch im verlegen war entstand dann die Stern Verkabelung. D.h. alle Leitungen von einem Computer führten zu einem Zentralen (Stern) Punkt und wurde dort miteinander verbunden.
Dieses geschah in den Anfangsjahren mit Hubs.
Hubs sind kleine elektronische Geräte an die Netzwerkleitungen mit einem RJ45 Stecker angschlossen werden und alle eingehenden Signale auf allen anderen Ports gesendet werden.
Im Prinzip also nichts anderes als die BNC Leitung, und daher mussten sich alle angeschlossenen Computer auch die vorhandene Bandbreite von damals 10MBit/s teilen, denn es konnte ja immer nur ein Computer senden.
Da neben dem ganz normalen gewollten Datenverkehr, den wir mit unseren Anwendungen erzeugen, aber noch weiterer Datenverkehr auf der Leitung unterwegs ist, wurde die Bandbreite noch weiter eingeschränkt.
Alle an einem HUB angeschlossenen Computer befinden sich in einer Kollisionsdomäne. Wird diese zu gross dann ist kaum noch Datenverkehr möglich.
Dieses musste man also irgendwie begrenzen, denn die Netzwerke wuchsen rasant.
Man behalf sich mit einer Bridge.
Eine Bridge wird zwischen zwei Hubs geschaltet und trennt den Datenverkehr so ab, das nur der Datenverkehr durchgelassen wird, der auch in das andere Netzwerk rein darf.
Wenn also ein Computer in Netzwerk 1 Daten an einen 2. Computer in Netzwerk 1 sendet, dann bekommt das Netzwerk 2 auf der anderen Seite der Bridge davon nichts mit.
Man halbierte also damit die Anzahl der Computer pro Kollisionsdomäne und konnte somit auch die Bandbreite erhöhen.
Wenn jetzt aber ein Computer aus dem Netzwerk 1 Daten an einen Computer in Netzwerk 2 sendet, dann erkennt die Bridge das an der verwendeten MAC Adresse und speichert die Datenpakete zwischen, hört auf die Leitung in Netzwerk 2 und sobald sie frei ist, werden die Daten an den Computer in Netzwerk 2 ausgeliefert.

Bridges boten also den folgenden Vorteil für das Netzwerk
Bridges unterteilen Netzwerkgeräte in Gruppen, die als Kollisionsdomänen bezeichnet werden
Bridges verringern die Anzahl der auftretenden Kollisionen, da Frames nicht auf die andere Seite der Bridge durchgelassen werden
Bridges erhöhen die Bandbreite die jeder Kollisionsdomäne zur Verfügung steht, da es mehr als einen Sender gleichzeitig geben kann.

Der Schritt zum Switch

Im Prinzip ist ein Switch ein Hub kombiniert mit einer Bridge.
Im Prinzip!
Natürlich kommt noch einiges mehr an Intelligenz hinzu, denn es sollen ja nicht nur 2 Kollisionsdomänen aufgebaut werden, sondern es soll erreicht werden das immer 2 Computer miteinander direkt kommunizieren können und das am besten sogar per Vollduplex.

Was unterscheidet jetzt aber einen Switch von einem Hub mit einer Bridge, zum einen ist beides in einem Gerät untergebracht und die Intelligenz des Switches geht dahin das er erkennt von wem das Datenpaket kommt und wo es hin soll.
Das kann eine Bridge auch, aber der Switch kann für jede Kommunikation zwischen Computern die direkt angeschlossen sind einen direkte Beziehung schalten, die die andere Kommunikation nicht beeinflusst.
Es können als im Prinzip an einem 8 Port Switch 4 Computer direkt miteinander Daten austauschen.
Wie arbeitet der Switch nun ?

Der Switch lernt auf dem Port an dem der Frame ankommt die MAC Adresse des angeschlossenen Computers, speichert die in seiner Tabelle und leitet den Frame an den Port weiter an dem der Zielcomputer angeschlossen ist.
Kennt er das Ziel noch nicht, weiss also nicht an welchem Port der Zielcomputer angeschlossen ist, so leitet er den Frame an alle Ports weiter, ausser an den vom der er den Frame empfangen hat.
Ist der Zielcomputer angeschlossen, so antwortet dieser und der Switch lernt in diesem Moment die MAC Adresse des Zielcomputers uns speichert auch diese in seiner Tabelle.
Beim nächsten Datenpaket für den Zielcomputer weiss er an welchem Port dieser angeschlossen ist und kann den Frame direkt weiter leiten.
Sind mehrere Switche hintereinander geschaltet und es kommt ein Frame mit unbekannter MAC Adresse an, so wird der Frame natürlich auch an den nachgeschalteten Switch weiter geleitet.
Jeder Switch für sich entscheidet was er mit dem Frame macht.
Dadurch ist es auch möglich über Switche hinweg eine Kommunikation aufzubauen.

Für jeden Eintrag in seiner Switchingtabelle erstellt der Switch einen Inaktivitätstimer.
Dieser Timer wird auf 0 gesetzt und zählt hoch. Jedesmal wenn der Switch wieder ein Paket von dieser MAC Adresse bekommt, wird der Timer auf Null zurück gesetzt.
Sollte die Switchingtabelle so langsam den Speicherplatz ausschöpfen, so weiss der Switch von welcher MAC Adresse er am längsten kein Datenpaket bekommen hat und kann diese MAC Adresse aus seiner Tabelle entfernen und dadurch Speicherplatz frei geben.

Wie verarbeitet der Switch jetzt die ankommenden Frames ?
Dazu gibt es drei Verfahren, das store-and-forward-switching, das cut-trough-Switchung und das Fragment-free-switching.
Das am meisten zum Einsatz kommende Verfahren ist das store-and-forward-Switching. Dabei empfängt der Switch den gesamten Frame, liest ihn aus, lernt wenn noch nicht geschehen die Source MAC Adresse und speichert sie in seiner Switching Tabelle  und entscheidet dann was damit passiert.
Ob der Frame an eine bekannte MAC Adresse auf einem benutzen Port weitergeleitet wird oder ob der Frame auf alle Ports geflutet (floating) wird, ausser auf dem, auf dem er empfangen wurde.

Das Cut-Through-Switching, startet den Vorgang des Switchings zum frühst möglichen Zeitpunkt, das ist der Zeitpunkt wenn der Header komplett empfangen wurde und die Destination MAC Adresse ausgelesen werden kann. Das verringert die Latenzen, also die Zeit die das Paket braucht um vom Sender beim Empfänger anzukommen, hat aber den Nachteil das nicht erkannt wird ob der Frame beschädigt ist, denn das FCS (FrameCheckSequenz) ist im Ethernet Trailer, also am Ende des Paketes.
Der Gewinn der verringerung der Latenz wird also dadurch erkauft, das beschädigte Pakete zweimal gesendet werden müssen.

Fragment-Free-Switching arbeitet ähnlich den Cut-Trough-Switching, wartet aber ab bis die ersten 64Bytes empfangen wurden. Die 64 Bytes hängen mit dem CSMA/CD Verfahren zusammen, das besagt das eine Kollision auf den ersten 64 Bytes erkannt werden muss.
Die Latenz ist dadurch zwar etwas höher als beim Cut-Through-Switching, aber geringer als beim Store-and-Forward-Switching.
Bei der heutigen Geschwindigkeit der Netze und der Switche sind die Latenzen fast zu vernachlässigen, so das man beim Store-and-Forward-Switching bleibt und nur bei speziellen Anforderungen auf das Cut_Through-Switching oder Fragment-Free-Switching zurück greift.