UniDirectional Link Detection
Abkürzung: UDLD
Was ist UDLD?
UDLD steht für UniDirectional Link Detection. Es handelt sich um ein Layer-2-Protokoll zur Erkennung einseitiger oder fehlerhafter bidirektionaler Verbindungen zwischen Netzwerkgeräten, typischerweise Switches. Ein unidirektionaler Link liegt vor, wenn ein Gerät Daten sendet und der Partner sie empfängt, der Rückweg jedoch physikalisch oder logisch unterbrochen ist. UDLD erkennt diesen Zustand und kann den betroffenen Port je nach Konfiguration warnend markieren oder vollständig deaktivieren. Das Protokoll verhindert so die Bildung gefährlicher Forwarding-Schleifen im Spanning-Tree, die durch asymmetrische Links entstehen könnten und mit anderen Mitteln kaum zu diagnostizieren sind.
Die Gefahr unidirektionaler Verbindungen
Ein klassisches Szenario für einen unidirektionalen Link ist ein Glasfaserpaar, bei dem eine der beiden Fasern gebrochen, verschmutzt oder nicht korrekt gesteckt ist. Ein Switch sendet über die intakte Faser, der Partner empfängt die Daten, aber der Rückkanal ist tot. Spanning Tree erkennt diesen Fehler nicht, da BPDUs auf der funktionierenden Faser weiterhin ankommen und der empfangende Switch den Port im Forwarding-Status belässt. Sendet der Switch nun Daten auf den eigentlich defekten Link, gelangen sie nie zum Ziel, während gleichzeitig über den intakten Rückweg eine Schleife mit einem anderen Pfad entstehen kann. Die Folge sind Broadcast-Stürme, MAC-Adresstabellen-Instabilitäten und im schlimmsten Fall ein kompletter Netzausfall. UDLD schließt diese Lücke, indem es die Bidirektionalität auf Layer 2 aktiv überprüft.
Funktionsweise im Detail
Ein Interface mit aktiviertem UDLD sendet periodisch spezielle UDLD-Frames an eine reservierte Multicast-Adresse. Diese Frames enthalten die eigene Gerätekennung (Device ID) und die Port-Identifikation des sendenden Interfaces. Empfängt der Linkpartner diese Frames und unterstützt UDLD, so sendet er die empfangenen Informationen mit seiner eigenen Gerätekennung versehen als Echo zurück. Der ursprüngliche Sender prüft das Echo auf Gültigkeit und korrekte Daten. Ein Link gilt als bidirektional und gesund, solange beide Seiten die Frames des Partners zurücksenden und inhaltlich korrekte Echos eingehen. Bleiben die Echos aus oder fehlt die eigene Gerätekennung im Echo, interpretiert UDLD dies als Fehler auf der Rückrichtung.
Die UDLD-Frames werden in regelmäßigen Intervallen gesendet, standardmäßig alle 15 Sekunden, konfigurierbar als Message Time. Bleibt eine konfigurierbare Anzahl von Echoversuchen erfolglos, tritt die konfigurierte Aktion in Kraft.
Die beiden Modi: Normal und Aggressive
UDLD kennt zwei Betriebsmodi, die sich in der Reaktion auf einen erkannten unidirektionalen Link unterscheiden.
- Normal Mode: Wird ein einseitiger Link erkannt, deaktiviert UDLD den Port nicht. Das Interface wird in den Zustand „undetermined“ versetzt und ein Syslog-Eintrag sowie eine SNMP-Trap erzeugt. Der Port bleibt administrativ aktiv und leitet weiterhin Daten weiter. Dieser Modus dient vor allem der Überwachung und Diagnose, ohne sofort in den laufenden Betrieb einzugreifen. Der Administrator wird gewarnt und kann manuell eingreifen.
- Aggressive Mode: Im aggressiven Modus wird der fehlerhafte Port nach einer definierten Zeit ohne gültiges Echo in den Zustand err-disable versetzt. Der Port ist damit logisch abgeschaltet und leitet keine Daten mehr weiter. Auch hier werden Syslog-Meldungen und SNMP-Traps generiert. Der aggressive Modus bietet Schutz vor Schleifen und Störungen, erfordert jedoch eine manuelle oder automatische Wiederherstellung des Ports.
Der Aggressive Mode arbeitet mit einem erweiterten Erkennungsverfahren. Er versucht aktiv, den Partner auf einem potenziell einseitigen Link zu erreichen, und deaktiviert den Port, wenn über mehrere Intervalle keine gültige Antwort eintrifft. Der Normal Mode hingegen markiert den Link nur als fehlerhaft und warnt den Administrator.
Technischer Ablauf und Timer
Der UDLD-Prozess läuft in mehreren Phasen ab. Nach der Aktivierung auf einem Interface sendet der Switch UDLD-Hello-Frames. Sobald er ein gültiges Echo empfängt, gilt der Link als bidirektional und der UDLD-Nachbar wird registriert. Die eingestellte Message Time bestimmt das Sendeintervall. Ein Hold-Timer definiert, wie lange das System auf ein Echo wartet, bevor es einen Fehlerzustand annimmt. Im aggressiven Modus folgt nach mehreren fehlgeschlagenen Versuchen die Errdisable-Aktion.
Medienunabhängigkeit
UDLD funktioniert sowohl auf Kupferkabeln als auch auf Lichtwellenleitern. Auf Kupferstrecken mit Auto-MDI/MDI-X, bei denen Sende- und Empfangsadern innerhalb des Kabels fest verdrahtet sind, sind unidirektionale Links physikalisch seltener, aber durch defekte Transceiver oder fehlerhafte Ports trotzdem möglich. Auf Glasfaserstrecken mit getrennten Sende- und Empfangsfasern sind einseitige Verbindungen die häufigste Ursache für UDLD-Ereignisse. UDLD erkennt unabhängig vom Medium die logische Bidirektionalität und ergänzt damit die rein physikalische Link-Erkennung auf Layer 1, die einen einseitigen Faserbruch nicht bemerkt.
Konfiguration auf Cisco-Switches
Cisco hat UDLD fest in das Betriebssystem IOS und NX-OS integriert und bietet Konfigurationsmöglichkeiten global und auf einzelnen Ports an. Standardmäßig ist UDLD auf allen Glasfaser-Ports deaktiviert und muss explizit eingeschaltet werden.
Globale Aktivierung im Aggressive Mode mit einer Message Time von 10 Sekunden: Switch(config)# udld enable aggressive message time 10
Diese globale Einstellung wirkt sich auf alle Glasfaser-Ports aus, die nicht individuell konfiguriert sind. Die Message Time kann zwischen 7 und 90 Sekunden eingestellt werden.
Aktivierung auf einem bestimmten Interface im Normal Mode: Switch(config-if)# udld enable
Aktivierung auf einem bestimmten Interface im Aggressive Mode: Switch(config-if)# udld aggressive
Deaktivierung von UDLD auf einem Interface, das von der globalen Konfiguration ausgenommen werden soll: Switch(config-if)# no udld enable
Überwachung und Statusabfrage
Cisco-Switches bieten umfangreiche Show-Kommandos zur Anzeige des UDLD-Status.
- `show udld [interface]`: Zeigt den UDLD-Status aller oder eines bestimmten Interfaces an, einschließlich Nachbarinformationen, Modus und Timer.
- `show udld neighbors`: Listet alle erkannten UDLD-Nachbarn mit ihren Gerätekennungen und Port-IDs auf.
- `debug udld events`: Aktiviert die detaillierte Ereignisprotokollierung für UDLD zu Diagnosezwecken.
Ein typischer Syslog-Eintrag bei einem erkannten unidirektionalen Link lautet: %UDLD-4-DISABLE: Unidirectional link detected on interface Gi1/0/1. Port disabled
Errdisable Recovery
Wird ein Port im Aggressive Mode aufgrund eines UDLD-Ereignisses in den Zustand err-disable versetzt, bleibt er so lange deaktiviert, bis ein Administrator ihn manuell zurücksetzt oder eine automatische Wiederherstellung eintritt. Die manuelle Reaktivierung erfolgt mit den Befehlen shutdown gefolgt von no shutdown auf dem betroffenen Interface. Für die automatische Wiederherstellung kann der Administrator das Feature Errdisable Recovery konfigurieren:
Switch(config)# errdisable recovery cause udld Switch(config)# errdisable recovery interval 300
Damit wird der Port nach 300 Sekunden (5 Minuten) automatisch wieder aktiviert. Eine automatische Wiederherstellung sollte nur mit Bedacht eingesetzt werden, da ein flatternder Port das Netzwerk weiter belasten kann.
Abgrenzung zu anderen Protokollen
UDLD wird häufig mit anderen Spanning-Tree-Schutzmechanismen verwechselt, dient jedoch einem spezifischen Zweck.
- Loop Guard: Schützt vor dem Ausfall von BPDUs auf einem als Designated Port arbeitenden Interface und verhindert, dass ein Blocked Port in den Forwarding-Status wechselt. UDLD erkennt physisch einseitige Links, die trotz funktionierender BPDU-Übertragung gefährlich sind. Beide Protokolle ergänzen sich idealerweise.
- BPDU Guard: Deaktiviert einen Port sofort, wenn eine BPDU auf einem für Endgeräte vorgesehenen Port empfangen wird. UDLD ist ein Erkennungsprotokoll für Verbindungen zwischen Switches und arbeitet auf einer anderen Ebene.
- STP Root Guard: Verhindert das Eindringen eines Switches mit höherer Priorität über einen Port. UDLD hingegen sichert die physikalische Verbindung selbst ab.
Einsatzszenarien und Best Practices
UDLD sollte auf allen Switch-zu-Switch-Verbindungen aktiviert werden, insbesondere auf Glasfaserstrecken. In Rechenzentren und Verteilerschränken mit vielen optischen Verbindungen ist der Aggressive Mode die empfohlene Einstellung. Die Message Time kann in gut ausgebauten Netzen bei 10 bis 15 Sekunden belassen werden. In Umgebungen mit hohen Latenzen, etwa über weite Entfernungen oder Richtfunk, sollte die Message Time auf 30 bis 60 Sekunden erhöht werden, um Fehlalarme zu vermeiden. Kupferports in kontrollierten Umgebungen können mit Normal Mode betrieben werden, um bei einem Defekt gewarnt zu werden, ohne den Port sofort abzuschalten. Es wird empfohlen, UDLD zusammen mit Loop Guard und Root Guard als Teil eines mehrschichtigen Spanning-Tree-Schutzkonzepts zu betreiben.
Grenzen und Fehlerquellen
UDLD erkennt nur einseitige Verbindungen zwischen zwei UDLD-fähigen Geräten. Ein Gerät ohne UDLD-Unterstützung ignoriert die UDLD-Frames, und der sendende Switch kann keine Bidirektionalität verifizieren. In solchen Fällen wird der Link als „unknown“ markiert und bleibt aktiv. UDLD schützt nicht vor Fehlern, bei denen beide Richtungen eines Links auf unterschiedliche Weise gestört sind, etwa durch einen teilweisen Faserbruch, der intermittierende Fehler verursacht und sowohl die BPDU- als auch die UDLD-Übertragung beeinträchtigt. In stark ausgelasteten Netzen können UDLD-Frames durch Überlast verloren gehen, was zu falsch-positiven Erkennungen führt. Eine zu kurze Message Time in solchen Umgebungen kann zu wiederholten und unnötigen Port-Deaktivierungen führen. Die korrekte Einstellung der Timer ist für einen stabilen Betrieb entscheidend.