Wie organisiert Spanning Tree ein Ethernet-Netzwerk?

germina, 123RF

Der Baum im Netzwerk

Ethernet ist so beliebt, weil es einfach funktioniert und nicht viel kostet. Doch die Seite des Administrators sieht etwas komplizierter aus: Damit das Netzwerk rundläuft, muss er wichtige Entscheidungen treffen und den Spanning Tree planen.
ADMIN 03/14 stellt Erste-Hilfe-Tipps zu Windows-Rettung, Backup und Recovery bei Datenbanken vor und verrät wie man Linux-Systeme vollständig sichert und ... (mehr)

Spanning Tree ist eins der grundlegenden Protokolle in Ethernet-Netzwerken. Es sorgt dafür, dass keine Netzwerkschleifen (Loops) entstehen, denn durch einen Broadcast-Sturm führen sie innerhalb kürzester Zeit zur Überlastung eines Netzwerksegments. Ethernet-Frames haben im Gegensatz zu IP-Paketen keine maximale Lebensdauer (Time to Live, TTL) und bewegen sich deshalb potenziell unendlich lange im Kreis.

Das Spanning-Tree-Protokoll erreicht die Schleifenfreiheit, indem es bestimmte Verbindungen zwischen Switches deaktiviert. Abbildung 1 zeigt drei Beispiele (A, B, C) für Netzwerktopologien, die ohne die Blockade einiger Switchports durch Spanning Tree zum Zusammenbruch des Netzwerks führen würden.

Abbildung 1: Das Spanning-Tree-Protokoll verhindert Schleifen in Netzwerktopologien.

Variante A in Abbildung 1 bringt technisch keinen Vorteil und entsteht normalerweise nur aus Unachtsamkeit, meist über mehrere Switches hinweg. Die Varianten B und C hingegen sind oft gewünscht, um die Bandbreite zwischen zwei Switches zu vergrößern (Variante B), beziehungsweise um eine Redundanz für den Fall eines Kabelausfalls durch äußere Einflüsse – beispielsweise Bauarbeiten zwischen zwei Gebäuden – zu erreichen (Variante C). Die Blockade durch Spanning Tree in Variante B hebt die Bandbreitenbündelung zunächst auf.

Die Switch-Hersteller haben verschiedene, teils zueinander inkompatible Lösungen entwickelt, etwa »EtherChannel« , »PortChannel« , »virtual PortChannel« (Cisco) und »Trunk« (HP). Diese Technologien bündeln mehrere physische Ethernet-Verbindungen zu einer logischen (Variante D in Abbildung 1). Der Spanning Tree nimmt diese logische Verbindung beispielsweise als eine 2-GBit-Verbindung statt als zwei separate 1-GBit-Verbindungen wahr und blockiert daher keine der beiden.

Variante C lässt sich durch diese Technologien allerdings nicht optimieren. Hier empfiehlt sich der Einsatz einer anderen physischen Verkabelung, die die Dreiecksverbindung zwischen den Switches ersetzt.

Für jedes VLAN, also ein logisches Netzwerksegment, wird ein eigener Spanning Tree berechnet. Dieser Artikel beschränkt sich deshalb auf ein VLAN. Das Spanning-Tree-Protokoll existiert heute hauptsächlich in den Ausprägungen »Rapid Spanning Tree« (RST) und »Rapid per VLAN Spanning Tree« oder »Multiple Spanning Tree« (MST), da die ursprüngliche Form des Spanning Trees zu hohen Konvergenzzeiten und damit in komplexen Topologien zu Ausfällen von 30 bis 50 Sekunden führt.

Wahlen ohne Demokratie

Die Berechnung des Spanning Trees erfolgt in drei wesentlichen Schritten:

  • Wahl der Root Bridge,
  • Wahl der Root Ports,
  • Wahl der Designated Ports.

Es gibt verschiedene Rollen und Zustände (siehe Kasten "Rollen und Zustände der Switchports"), die ein Switchport einnehmen kann. Die Variante Rapid Spanning Tree fasst »Disabled« , »Blocking« und »Listening« zu »Discarding« zusammen.

Rollen und Zustände der Switchports

In einem Spanning Tree nimmt jeder Port eines Switches eine von vier möglichen Rollen ein:

  • Root Port: aktiver Switchport, dessen Upstream in Richtung Root Bridge zeigt. Jeder Switch besitzt höchstens einen Root Port.
  • Designated Port: aktiver Port, der weg von der Root Bridge (Downstream) zeigt.
  • Alternate Port (nur bei Rapid Spanning Tree): Zeigt ebenfalls zur Root Bridge, ist aber nicht aktiv (»Blocked« ).
  • Backup Port (nur bei Rapid Spanning Tree): Verbindung zu einem anderen Switch, der über einen anderen Switchport günstiger erreicht werden kann; ebenfalls nicht aktiv (»Blocked« ).

Neben den beschriebenen Rollen gibt es vier Zustände, die ein Port nacheinander einnimmt: »Blocking« , »Listening« , »Learning« und »Forwarding« . Im zusätzlichen Zustand »Disabled« verwirft ein Port sämtliche Pakete. Das gilt auch in den ersten drei genannten Zuständen; in ihnen empfängt und verarbeitet ein Port ausschließlich sogenannte BPDUs (Bridge Protocol Data Units), die Informationen über das Netz und den Spanning Tree transportieren. In den Zuständen »Listening« und »Learning« überträgt ein Port solche Pakete auch weiter, in letzterem lernt er dazu die Adressen anderer Netzwerkteilnehmer. Nur im »Forwarding« -Modus schließlich leitet ein Port darüber hinaus auch Datenpakete weiter.

Damit Spanning Tree die Gesamttopologie berechnen kann, wird zunächst die »Root Bridge« gewählt. Sie bildet den Referenzpunkt des gesamten Spanning Tree und berechnet die Pfade und Einstellungen des Baums. Die Wahl der Root Bridge erfolgt aufgrund der »Bridge-ID« , die sich aus drei Bestandteilen zusammensetzt:

  • Bridge Priority
  • System-ID-Extension
  • MAC-Adresse

Die Bridge Priority liegt zwischen 0 und 61440 und ist in Schritten von 4096 konfigurierbar. Die System-ID und die MAC-Adresse sind nicht frei wählbar; MAC-Adressänderungen sind zwar möglich, aber nicht empfohlen. Je höher der Wert der Bridge Priority liegt, desto weniger kommt der entsprechende Switch als Root Bridge in Frage. Ein Switch mit der Bridge Priority 0 übernimmt höchstwahrscheinlich die Root Bridge, es sei denn, ein weiterer Switch im Netz hat ebenfalls diesen Wert.

Sollte mehr als ein Switch die gleiche minimale Bridge Priority besitzen, geben System-ID-Extension und MAC-Adresse den Ausschlag bei der Wahl zur Root Bridge. Dabei gewinnt der Kandidat mit den niedrigsten Werten. Erstere entspricht der VLAN-Nummer.

Bei den MAC-Adressen unterbieten ältere Switches oft ihre aktuellen Nachfolger, da viele Hersteller sie aufsteigend vergeben. Dadurch besteht die Gefahr, dass der älteste und potenziell schwächste Switch zur Root Bridge wird. Da Spanning-Tree-Berechnungen in großen Netzen aufwendig ausfallen, sollte hingegen ein möglichst leistungsfähiger Switch die Rolle der Root Bridge übernehmen.

Design-Guides der Hersteller empfehlen, die Root Bridge in der Aggregations- bzw. Distributionsebene zu platzieren, um kurze Konvergenzzeiten bei Ausfällen zu erreichen (Abbildung 2).

Abbildung 2: Die Root Bridge eines Netzwerks sollte in der Aggreations-/Distributionsebene Platz finden.

Auf Cisco-Switches erfolgt die Konfiguration der Bridge Priority mittels »spanning-tree vlan VLAN priority« oder alternativ mit dem Root-Bridge-Makro »spanning-tree vlan VLAN root [primary | secondary]« . Es konfiguriert die Priorität automatisch anhand der aktuell im Netz vorhandenen Root Bridge, läuft aber nur einmalig beim Aufruf und nicht dauerhaft im Hintergrund.

Putsch gegen die Root Bridge

Der Austausch der Informationen über die Spanning-Tree-Topologie zwischen verschiedenen Switches erfolgt über sogenannte BPDUs (Bridge Protocol Data Unit). Grundsätzlich sendet und empfängt jeder Switchport BPDUs. Diese Eigenschaft bietet allerdings Angreifern die Möglichkeit, die Topologie auszulesen und mit gefälschten BPDUs zu verändern. Gegenmaßnahmen heißen BPDU-Guard und -Filter (siehe Kasten "BPDU-Guard und -Filter").

BPDU-Guard und -Filter

  • BPDU-Guard deaktiviert einen Switchport, sobald er ein BPDU-Paket empfängt. Die Ursache kann in einem Angriff oder im unerlaubten Anschließen eines Switches liegen. Optional aktiviert der BPDU-Guard einen abgeschalteten Switchport mit einem Timer nach Ablauf einer gewissen Zeit automatisch wieder. BPDU-Guard sollte auf jedem Access-Switchport konfiguriert sein. Das geschieht im Interface mit »spanning-tree bpduguard enable« oder global mit »spanning-tree portfast bpduguarddefault« .
  • BPDU-Filter verhindert, dass ein Switch BPDUs über einen Switchport verschickt. Auch dieses Feature sollte auf jedem Access-Port aktiviert sein mit »spanning-tree bpdu-filter enable« im Interface oder global mit »spanning-tree portfast bpdufilter default« .

Auch nachdem die Root Bridge gewählt und der gesamte Spanning Tree aktiv ist, können weitere Switches dem Netzwerk beitreten, beispielsweise bei der Installation eines neuen Stockwerk-Switches. Hat eins der neuen Geräte eine niedrigere Bridge Priority, würde es dann zur neuen Root Bridge. Das zöge allerdings eine Änderung der gesamten Netzwerktopologie und damit möglicherweise suboptimale Pfade sowie Performance-Engpässe nach sich.

Schutz gegen eine versehentliche oder auch böswillige Änderung der Root Bridge bietet der Root Guard [1].

Abbildung 3 zeigt eine Ausgangslage, in der Switch D zum Netzwerk hinzukommt. Unterbietet dessen Bridge Priority aus einem der genannten Gründe die der bisherigen Root Bridge, ändert sich die Topologie daraufhin wie in Abbildung 4.

Abbildung 3: Hat der neue Switch D eine niedrigere Bridge-Priority als Switch A…
Abbildung 4: … ändert Spanning Tree die Netzwerktopologie.

Um diese Umstellung zu verhindern, konfiguriert man den Root Guard auf dem in Richtung Switch D weisenden Port von Switch C. Das Feature deaktiviert den betreffenden Switchport, sobald er eine BPDU mit einer zu niedrigen Bridge Priority empfängt.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023