orm@doc-tcpip.org

Erstellt: Oktober 1999 - Letzte Modifikation: Oktober 2001

[ Main | Local ]


Etwas über Bridges

(Das sind ungefähr Switches...)

Warum Bridges?

Alle Arten von LAN Technologien weisen Beschränkungen auf. Die Bandweite ist begrenzt. Es bleibt also im Mittel immer weniger Bandweite pro Station übrig, je mehr Stationen am Netz hängen.

Man kann nicht beliebig viele Stationen an ein LAN anschließen. Das ist speziell bei Token Ring ausschlaggebend, weil jede Station eine Verzögerung des Signals bewirkt - auch wenn sie nicht sendet. Sie gibt das Paket weiter, sendet also eigentlich immer....).

Die Größe eines LANs ist begrenzt, da ja das kleinste mögliche Paket mindestens so lang wie die Rundlaufzeit von einem Ende des Netzes zum anderen (also die Slot Time des Netzes) sein muß (Schicht 3 -Netzwerkschicht).

Router lösen diese Probleme - allerdings können Router nur verschiedene LANs verbinden. Im Fall von IP-Netzen müssen es also Netze mit anderen IP-Adressen und Subnetzmasken sein.

Eine Bridge verbindet nun einzelne Bereiche zu einem großen LAN - und zwar transparent. Das berührt die Netzwerkschicht nicht, zumal es Stationen gibt, deren Software keine Netzwerkschicht bereitstellen.

Heutzutage läuft in der Regel IP, und "Bridges" im weitesten Sinn ermöglichen es, eine Station durch ein solches LAN zu bewegen, ohne die IP zu wechseln.

Bridges

Entwickelt von DEC, standardisiert nach IEEE 802.1.

Eine transparente Bridge verbindet LANs. Jedes LAN liegt auf einem Port der Bridge. Die Bridge hat eine CPU und einen Speicher. Sie nimmt jedes Paket aus dem Netz, speichert es solange, bis das Paket auf einem anderen Port in ein anderes Netz gesendet werden kann. Eine Bridge unterliegt wie jede andere Station der gültigen Methode der Bandbreitenverwaltung (Token oder CSMA/CD). Für die Station und die darauf laufende Software ist das Ganze völlig transparent. Höchstens anhand einer Analyse der Verzögerungszeiten in einem LAN könnte man auf eine transparente Bridge schließen.

Das schafft Abhilfe bezüglich der Größenbeschränkung und der begrenzten Anzahl an Stationen, die sich auf einem Netz tummeln können. Bei Netzen, die Token-Techniken benutzen, kann man einen weiteren Token umlaufen lassen (die Bridge trennt ja das Netz in Teile). Im Fall von Ethernetzen begrenzt eine Bridge eine Kollisions Domäne. Die Bridge speichert die Pakete, die es von einem Segment aufnimmt, und leitet sie nur weiter, wenn sie das Zielnetz als frei erkennt. Es sind also keinerlei Kollisionen zwischen Stationen auf beiden Seiten der Bridge mehr möglich. Diese Stationen können also gleichzeitig senden.

Eine Bridge lernt alle sendenden Stationen aller angeschloßenen LANs kennen. Das geht folgendermaßen:
Die Bridge wertet alle Pakete aus (ist also per se im promiscuos mode). Für jedes Paket speichert die Bridge die Quelladresse und ordnet diese in einer Tabelle dem Port zu, über den das Paket herein kam. Schließlich heißt das nichts anderes, als daß die Bridge für die Adresse A über den Port x erreichbar ist, also aus Sicht der Bridge die Adresse A gleich der Portadresse x ist.

Empfängt die Bridge nun ein Paket, so wird die Tabelle nach einem passenden Eintrag durchsucht, der mit der Zieladresse des Paketes ünereinstimmt. Gibt es so einen Eintrag, dann wird das Paket auf dem zugeordneten Port gesendet und landet somit auf dem LAN-Segment des Empfängers. Ist die so ermittelte Portnummer gleich der Portnummer des Portes, über den das Paket hereingekommen ist, so wird es verworfen. Findet sich kein Eintrag, so wird das Paket auf allen Ports der Bridge gesendet, erreicht also alle angeschloßenen LANs. Das ist das fluten eines Paketes. Beim "Fluten" ist der Ankunftsport des Paketes natürlich ausgenommen.

Die Tabelle mit den Zuordnungen Adresse-Port wird dynamisch geführt. Die Einträge altern und werden so bei nichtbenutzung gelöscht.

LAN1  --(1) Bridge A (3)-- LAN2  -- (1) Bridge B (2) LAN3
{abc}         (2)          {ghi}                     {jkl}
.              |
.             LAN4 {def}
Für die Bridge A sieht das Netz so aus:
Port 1: Stationen a,b,c
Port 2: Stationen d,e,f
Port 3: Stationen g,h,i,j,k,l (Für eine Bridge sind andere Bridges transparent!)

Für die Bridge B sieht das Netz so aus:
Port 1: Stationen a,b,c,d,e,f,g,h,i
Port 2: Stationen j,k,l

Das Ganze funktioniert solange einwandfrei, wie es sich um eine Baumstruktur handelt. Es müßen alle Bridges und somit die LANs kaskadenartig angeordnet sein. In dem Augenblick, wo Schleifen (Loops) entstehen können, gibt es Probleme. Dazu ein Beispiel:

.      / Brigde A . LAN1 - Brigde B - LAN2
.       Brigde C /
Schickt jetzt eine Station ein Pakete an eine bisher noch nicht angesprochene Station (diese Station hat auf keiner Bridge einen Eintrag!), dann nimmt die Katastrophe ihren Lauf:

Alle direkt am Segment dieser Station angeschloßenen Bridges sehen das Paket, schreiben es in ihren Speicher und fügen einen Eintrag für diese Hardwareadresse und den entsprechenden Port in ihre Tabelle (im Cache) ein. Dann wird das Paket auf allen Ports (bis auf den Ankunftsport) geflutet. Dabei ist eine Bridge die schnellste, je nach Typ und Last. Die anderen Bridges sehen nun dieses Paket und ziehen die Schritte von oben nochmals durch. Für diese beiden Brigdes sieht es jetzt natürlich so aus, wie wenn die sendende Station das LAN gewechselt hätte! Beide Stationen werden ihren Eintrag korrigieren und das Paket wieder fluten, wobei eine schneller ist als die Andere, ein neues Paket auf LAN1 entsteht, was die im ersten Durchgang schnellste Bridge veranlasst, den Eintrag zu ändern und wieder zu fluten.... Und so bis in alle Ewigkeit.

Die Pakete vermehren sich explosionsartig, da bei jedem Durchgang durch eine Bridge die anderen Bridges eine Kopie erzeugen. Das Paket selbst wird nie verändert, es ist für die Bridges als unmöglich festzustellen, ob diese Paket schon einmal da war.

[Im Unterschied dazu würde ein Router die Pakete nicht vermehren - "routen" ist senden eines Paketes an eine bestimmte IP-Adresse. Außerdem ändern Router das Paket: die TTL (Time to Live) wird bei jedem Durchgang erniedrigt, sodaß ein Paket nach endlicher Zeit von selbst verschwindet.]

Leider weist jedes Netz eine Menge Loops auf - gerade darin liegt ja die Ausfallsicherheit eines Netzes, das es mehrere alternative Wege zum Ziel gibt. Um dieses Problem in den Griff zu bekommen, müßen die Bridges miteinander reden.

Das realisiert der Spanning Tree Algorithmus. Die Idee ist eigentlich sehr simpel: In einem gegebenen, mehrfach verschleiften Netz kommunizieren die Bridges miteinander und bauen so eine Baumstruktur auf. Es gibt also ein "oben" und ein "unten" und nur einen richtigen Weg. Schleifen fallen weg, das Netz ist aber immer noch redundant ausgelegt.


[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | SMTP | Tracing | GPS ]

Copyright 2001-2014 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )