Quantcast
Channel: Zugschlusbeobachtungen (Entries tagged as netzwerk)
Viewing all articles
Browse latest Browse all 15

MSTP mit HP ProCurve

$
0
0

Das Spanning Tree Protocol (STP) ist ein Protokoll, das den Betrieb von lokalen Netzen (z.B. auf Ethernet-Basis) mit Redundanzen erleichtern soll. Diesen Job macht es “reasonably well”, ich möchte an dieser Stelle aber nicht unerwähnt lassen, dass es auch schon zu grauen Haaren beim einen oder anderen Netzwerker geführt hat. Es gibt es in vielen verschiedenen Darreichungsformen, und in diesem Artikel möchte ich versuchen, die Grundlagen so weit aufzuarbeiten dass ich dann zu meinem aktuellen Projekt, MSTP, auch noch etwas schreiben kann.

Ein gewaltiger Fallstrick beim Betrieb von Ethernet ist, dass das Protokoll keinen Time-To-Live-Mechanisus hat, und ein Frame, das sich aus irgendwelchen Gründen zwischen zwei oder mehr Geräten im Kreis dreht, dies somit bis zum Ausfall des Netzes oder manuellem Eingriff weiter tut, bis in alle Ewigkeit.

Dieses Verhalten gepaart mit dem Wunsch vieler Netzwerkbetreiber nach üblicherweise durch den Bau von Ringen ausgedrückter Redundanz im Netz, der Eigenschaft von IP over Ethernet, dass Switches Broadcastpakete auf allen Ports rausflooden müssenund der Tatsache, dass das für IP essentiell notwendige Address Resolution Protocol (ARP) zwingend mit Broadcasts arbeitet, führt in der Abwesenheit von Sicherungsmechanismen wie STP zu Broadcaststürmen, deren Auftreten sich in aller Regel massiv negativ auf den Netzwerkbetrieb auswirkt.

Das Heilmittel gegen solche Katastrophen heißt wie schon in diesem Artikel erwähnt Spanning Tree. STP erkennt in einer Netzwerkstruktur Zyklen und trennt diese Zyklen durch Abschalten einzelner Ports auf, so dass ein zyklenfreier Graph aus Netzwerklinks entsteht. Wenn nun dieser zyklenfreie Graph durch Störungen in zwei Teile zerfällt, wird das von STP erkannt und die abgeschalteten Ports wieder so eingeschaltet, dass der Graph wieder zusammenhängend ist. Er sieht dann zwar anders aus als zuvor, aber er ist wieder zusammenhängend und die Kommunikation kann wieder funktionieren.

Das heute in einfachen Netzen eingesetzte Spanning Tree Protokoll ist üblicherweise Rapid Spanning Tree, das sich vom klassischen STP - der Name lässt dies schon vermuten - dadurch unterscheidet, dass es nach Topologieänderungen schneller wieder einen stabilen Zustand erreicht.

STP und RSTP arbeiten allerdings auf Portbasis. Das wird dann interessant, wenn VLANs im Einsatz sind, denn diese beiden einfachen Protokolle schalten Ports ab, ohne sich für die auf den Ports konfigurierten VLANs zu interessieren. Hier ein Beispiel:

 ---------
 | sw11  |---------------------|
 ---------  1                  |
     |  2          Data        |
     |             Center      |
     | 401,403                 | 401,402,403
     |                         |
     |                         |
     |  2                      | 1
 ---------   401,402,403   ---------
 | sw12  |-----------------| sw 13 |
 --------- 13           13 ---------
Wir haben hier drei Switche, in einem Ring aufgebaut, mit drei VLANs: 401, 402 und 403. Nun ist VLAN 402 auf dem Link zwischen Switch 11 und Switch 12 nicht konfiguriert. Entscheidet sich RSTP nun dazu, zur Auflösung des Rings den Link zwischen Switch 12 und Switch 13 abzuschalten, ist Switch12 in VLAN 402 nicht mehr erreichbar - ein Zustand, den wir üblicherweise nicht haben wollen.

Das hat mich seinerzeit bei meinem ersten komplexeren Netzprojekt mit HP ProCurve-Switchen überrascht, weil sich die Cisco-Switche, mit denen ich davon gearbeitet habe, anders verhalten: Cisco benutzt sein proprietäres Protokoll PVST (Per-VLAN Spanning Tree), was für jedes VLAN einen eigenen Spanning Tree verwendet. Im oben gezeichneten Beispiel würde PVST also für die VLANS 401 und 403 je einen Ring sehen und diesen Ring auftrennen. VLAN 402 würde PVST jedoch in Ruhe lassen, denn VLAN 402 hat keine Zyklen. Erster Lerninhalt: Das was Cisco macht, ist proprietär und funktioniert nur mit Cisco. Zweiter Lerninhalt: Wenn man RSTP mit HP-Gear macht, muss man auf allen Interswitchlinks alle VLANs transportieren, sonst passieren grausame Dinge. Auf einem so einfachen Netz mit drei Switches ist das natürlich kein Problem. Wohl aber, wenn man z.B. VLANs benutzt, um nicht alle Daten an allen Stellen im Netz zugänglich zu haben.

Wenn man das Ergebnis von PVST mit HP-Gear nachbauen will, verwendet man MSTP, das Multiple Spanning Tree Protocol. Beim MSTP definiert man unterschiedliche Spanning-Tree-Instanzen und ordnet ein oder mehrere VLANs den Instanzen zu. Leider ist das so komplex, dass man in einem so einfachen Setup mit nur drei Switchen wie oben gezeichnet mit MSTP nicht weit kommt; wenn man das wirklich am Fliegen sehen möchte, sollte man mehrere Ringe bauen können. Netterweise hat $KUNDE hierfür sieben Switche bereitgestellt, die mir für einige Wochen zum Testen zur Verfügung standen. Meine Testumgebung würde auch mit zwei Switchen weniger funktionieren, aber das Werfen von mehr Hardware hat noch ein bisschen besseren Einblick gegeben.

Und so sah das ganze Spiel aus:

 Access
      | 9
 ---------
 | sw11  |---------------------|
 ---------  1                  |
     |  2          Data        |
     |             Center      |
     | 401-403t                | 401-403t
     | 1u                      | 1u
     |                         |
     |  2                      | 1
 ---------   401-403t      ---------
 | sw12  |-----------------| sw 13 |
 --------- 13  1u       13 ---------
     | 24                   25 |
     |                         |
     | 401t, 403t              | 401t, 403t
     | 1u                      | 1u
     |                         |
     | 24                   25 |
 ---------                 ---------
 | sw24  |                 | sw 25 |
 ---------                 ---------
     | 26                   27 |
     |                         |
     | 401t, 403t              | 401t, 403t
     | 1u           offices    | 1u
     |                         |
     | 26                   27 |
 ---------    401t,403t    ---------
 | sw26  |-----------------| sw 27 |
 --------- 28    1u     28 ---------
Die Switches 11, 12 und 13 stehen in einem simulierten Rechenzentrum und bilden für sich einen Ring. Die Switches mit den Zwanziger-Nummern sind über ein gedachtes Gebäude verteilt und binden die Arbeitsplatzrechner an. Das VLAN 402 transportiert rechenzentrums-interne Daten; seine Inhalte sollten in den Büroräumen nicht abgreifbar sein. Das VLAN 1 dient dem Switchmanagement und wird auf allen Links “untagged” transportiert.

Daraus entstand dann die folgende Switch-Konfiguration (in der für ProCurve 2848 relevanten Notation; die neueren 2810-48G weichen hier in Details ab) für alle Switche:

vlan 1
   name “DEFAULT_VLAN”
   untagged 1,2,9,13,24,25,26,27,28
   ip address 10.3.1.<switch> 255.255.255.0
   exit
vlan 401
   name “VLAN401”
   ip address 10.3.11.<switch> 255.255.255.0
   tagged 1,2,9,13,24,25,26,27,28
   exit
vlan 403
   name “VLAN403”
   ip address 10.3.13.<switch> 255.255.255.0
   tagged 1,2,9,13,24,25,26,27,28
   exit
spanning-tree
spanning-tree protocol-version MSTP
spanning-tree config-revision 2
spanning-tree instance 1 vlan 401 403
Die 10er-Switche haben noch zusätzlich:
vlan 402
   name “VLAN402”
   ip address 10.3.12.<switch> 255.255.255.0
   tagged 1,2,9,13
   exit
spanning-tree instance 2 vlan 402

Diese Materialschlacht funktioniert so wie beabsichtigt: Obwohl das VLAN 402 nicht mehr auf allen Switchen konfiguriert ist, sind alle Switche im Normalbetrieb in allen VLANs erreichbar. Auch das Ziehen einzelner Patchkabel stört den Betrieb nicht; der simulierte Ausfall eines ganzen Switches (Stromstecker raus) macht nur den einzelnen Switch unerreichbar. Die durch die Rekonfiguration des Spanning Tree zweifellos entstehende Unterbrechung ist kurz genug, dass ein im Sekundentakt abgesetztes ping die Störung nicht bemerkt.

Anders ist es allerdings, wenn man die so erzeugte Störung behebt: Dabei verschluckt sich der Spanning Tree für etwa fünfzehn Sekunden, bevor wieder alle Switche erreichbar sind. Während dieses Verschluckens kommt es regelmäßig vor, dass auch Switche in der näheren Umgebung der Störung kurz nicht mehr erreichbar sind. Das ist wenig schön, aber in diesem Zeitrahmen IMO akzeptabel.

So lange mir die Testhardware noch zur Verfügung steht, werde ich eine Prozedur entwickeln, ein Netz im laufenden Betrieb auf MSTP umzustellen.

Sehr hilfreich bei dieser Operation war übrigens mein serieller Konsolen-Server für Arme, denn es debugged sich deutlich leichter, wenn man die Konsolenausgabe aller Switche gleichzeitig im Blickfeld hat. Syslog bringt’s hier nicht, denn wenn der Switch grad nicht erreichbar ist, wird er auch keine syslog-Einträge los. Das Gegenstück zu Ciscos “term mon”heißt bei HP übrigens

debug destination session
debug all
no debug lldp

Konfigurationsfehler verhindert man dadurch, dass man die Konfiguration nicht manuell vornimmt, sondern für alle Switche mit einem kleinen Shellscript generiert und per tftp auf die Switche schiebt. Das hat den Vorteil, dass Fehler wenigstens systematisch auf allen Switches gemacht werden (was mich drei Tage für die Fehlersuche gekostet hat, **grml**).


Viewing all articles
Browse latest Browse all 15