Bei Cisco-Switches kann es passieren, dass ein Port plötzlich nicht mehr arbeitet und im Status err-disabled landet. Der Port wird dabei automatisch deaktiviert, um das Netzwerk vor Problemen wie Schleifen, Fehlkonfigurationen oder Hardwarefehlern zu schützen. In diesem Artikel möchte ich kurz auf die Bedeutung der Schutzfunktion eingehen, wie man sie erkennt, die Ursachen bewertet und den Port wieder reaktiviert.
Einleitung
Der Zustand err-disable ist ein Schutzmechanismus von Cisco-Switches. Erkennt der Switch ein kritisches Problem auf einem Port, wird dieser in den Status err-disabled gesetzt und automatisch administrativ deaktiviert. Der Port verarbeitet ab diesem Zustand keinen Traffic mehr. Im Gegensatz zu einem normalen shutdown wurde der Port dabei nicht manuell, sondern durch eine interne Schutzfunktion deaktiviert.
Für Außenstehende wirkt das oft zunächst wie ein kaputter Port, tatsächlich handelt es sich aber im Regelfall um eine bewusst ausgelöste Sicherheits- oder Schutzfunktion. Häufig tritt dann der Fall ein, dass mehrere Ports am Switch getestet werden und somit eine große Zahl an Ports unabsichtlich gesperrt werden.
Typische Symptome
- Geräte verlieren plötzlich die Verbindung
- Der Link scheint „down“
- LEDs verhalten sich ungewöhnlich
- Der Port erscheint im Status
err-disabled
Switch# show interface status
Port Name Status Vlan
Gi1/0/1 err-disabled 10
Ziel und Zweck
Der err-disabled-Status ist also in vielen Fällen ein Schutzmechanismus für das gesamte Netzwerk.
- Netzwerkschleifen verhindern
- Broadcast-Stürme verhindern
- Fehlkonfigurationen erkennen
- Port-Security-Verstöße
- Hardwareprobleme isolieren
Ursachen
| Ursache | Beschreibung |
|---|---|
| Port-Security | Ein Port wurde limitiert nur eine MAC-Adresse gleichzeitig besitzen zu dürfen. Es wird nun ein Gerät angeschlossen, dass mehrere MAC-Adressen hat oder mehrere Geräte sternförmig oder kaskadiert verbindet. Dadurch sind mehrere Geräte am gleichen Port zu sehen. |
| BPDU Guard | Sobald an einem BPDU-Guard aktivierten Port STP-BPDUs auftauchen, geht der Switch davon aus, dass jemand einen anderen Switch angeschlossen hat, der eine Schleife erzeugen könnte oder die Netzwerktopologie ungewollt verändert. |
| EtherChannel Fehlkonfigurationen | Falsche EtherChannel-Konfigurationen können ebenfalls err-disabled auslösen. Typische Ursachen sind unterschiedliche tagged oder native VLAN oder unterschiedliche Channel-Protokolle. |
| UDLD (Unidirectional Link Detection) | UDLD erkennt einseitige Leitungsprobleme, wie TX funktioniert, aber RX funktioniert nicht. Dies ist besonders bei Protokollen wichtig, die zur Topologieerkennung genutzt werden. |
| Loopback-Erkennung | Ein Patchkabel verbindet zwei Ports desselben Switches, die Frames laufen im Kreis und Broadcast-Storm entsteht. Dies würde auch gelten, wenn die Schleife über ein Gerät läuft, welches die zur Loopback-Erkennung genutzten Frames weiterleitet. |
| Sicherheitsfunktionen | Verstöße gegen Mechanismen wie DHCP Snooping oder Dynamic ARP Inspection können je nach Konfiguration ebenfalls Ports deaktivieren. |
| Link- oder Hardwarefehler | Beispiele:
|
Diagnose
Prüfung der Err-Disabled-Konfiguration
show errdisable detect zeigt die aktuellen Einstellungen der Errdisable-Erkennung sowie, falls sich Ports derzeit im err-disabled-State befinden, den jeweiligen Grund für die automatische Deaktivierung des Ports an.
Switch# show errdisable detect
ErrDisable Reason Detection Mode
----------------- --------- ----
arp-inspection Enabled port
bpduguard Enabled port
channel-misconfig Enabled port
community-limit Enabled port
dhcp-rate-limit Enabled port
dtp-flap Enabled port
evpn-mh-core-isolation Enabled port
gbic-invalid Enabled port
iif-reg-failure Enabled port
inline-power Enabled port
invalid-policy Enabled port
l2ptguard Enabled port
link-flap Enabled port
link-monitor-failure Enabled port
loopback Enabled port
loopdetect Enabled port
lsgroup Enabled port
oam-remote-failure Enabled port
mac-limit Enabled port
pagp-flap Enabled port
port-mode-failure Enabled port
pppoe-ia-rate-limit Enabled port
psecure-violation Enabled port/vlan
security-violation Enabled port
sfp-config-mismatch Enabled port
sgacl_limitation:enforcem Enabled port
sgacl_limitation:multiple Enabled port
storm-control Enabled port
udld Enabled port
psp Enabled port
dual-active-recovery Enabled port
evc-lite input mapping fa Enabled port
vsl-and-non-vsl-port-pair Enabled port
fasthello-and-non-fasthel Enabled port
mvrp Enabled port
mrp-miscabling Enabled port
show errdisable recovery Zeigt den Zeitraum an, nach dem Ports bei bestimmten Errdisable-Ursachen automatisch wieder aktiviert werden. Außerdem werden die konfigurierten Errdisable-Recovery-Mechanismen angezeigt.
Switch# show errdisable recovery
ErrDisable Reason Timer Status
----------------- --------------
arp-inspection Disabled
bpduguard Disabled
channel-misconfig Disabled
dhcp-rate-limit Disabled
dtp-flap Disabled
evpn-mh-core-isolation Disabled
gbic-invalid Disabled
inline-power Disabled
l2ptguard Disabled
link-flap Enabled
mac-limit Disabled
link-monitor-failure Disabled
loopback Disabled
loopdetect Disabled
oam-remote-failure Disabled
pagp-flap Disabled
port-mode-failure Disabled
pppoe-ia-rate-limit Disabled
psecure-violation Disabled
security-violation Disabled
sfp-config-mismatch Disabled
storm-control Enabled
udld Enabled
psp Disabled
dual-active-recovery Disabled
evc-lite input mapping fa Disabled
mrp-miscabling Disabled
Timer interval: 900 seconds
Interfaces that will be enabled at the next timeout:
Status des Ports prüfen
Zunächst sollte geprüft werden, in welchem Zustand sich die Ports befinden.
Mit folgendem Befehl erhält man eine Übersicht aller Ports und deren aktuellen Status:
Switch# show interface status
Oder man lässt sich einen Port im Detail anzeigen.
Switch# show interface Gi1/0/1
Dabei lassen sich unter anderem folgende Zustände erkennen:
- err-disabled
- connected
- notconnect
- disabled
Err-disabled Ports gezielt anzeigen
Um ausschließlich Ports im err-disabled-Status inklusive Ursache anzuzeigen, kann folgender Befehl verwendet werden:
Switch# show interfaces status err-disabled
Port Name Status Reason Vlans
Gi1/0/1 ERRORPORT err-disabled psecure-violation 10
Event- und System-Logs prüfen
Für die eigentliche Fehleranalyse sind die System- und Event-Logs besonders wichtig. Dort protokolliert der Switch in der Regel sehr genau, warum ein Port in den err-disabled-State versetzt wurde.
Die Logs können mit folgendem Befehl angezeigt werden:
Switch# show logging
Die Logmeldungen liefern meist bereits den entscheidenden Hinweis auf die eigentliche Ursache des Problems und sollten daher immer als einer der ersten Schritte geprüft werden.
Entstörung
Fehlerursache beheben
Vor einem manuellen oder automatischen Recovery sollte immer zuerst die eigentliche Ursache des err-disabled-Status behoben werden, da der Fehler ansonsten unmittelbar erneut auftreten kann.
Ports manuell reaktivieren
Um einen Port aus dem Fehlerstatus zu befreien, muss der betroffene Port einmal deaktiviert und anschließend wieder aktiviert werden.
Switch# configure terminal
Switch(config)# interface Gi1/0/1
shutdown
no shutdown
Ports automatisch reaktivieren
Die folgenden Befehle zeigen, wie die automatische Entstörung konfiguriert wird.
Zunächst lassen wir uns die möglichen Optionen bzw. Ursachen anzeigen, welche wir konfigurieren können.
Switch# configure terminal
Switch(config)# errdisable recovery cause ?
all Enable timer to recover from all causes
arp-inspection Enable timer to recover from arp inspection error
disable state
bpduguard Enable timer to recover from BPDU Guard error disable
state
channel-misconfig Enable timer to recover from channel misconfig disable
state
dhcp-rate-limit Enable timer to recover from dhcp-rate-limit error
disable state
dtp-flap Enable timer to recover from dtp-flap error disable
state
gbic-invalid Enable timer to recover from invalid GBIC error disable
state
l2ptguard Enable timer to recover from l2protocol-tunnel error
disable state
link-flap Enable timer to recover from link-flap error disable
state
link-monitor-failure Enable timer to recover from link monitoring failure
loopback Enable timer to recover from loopback disable state
mac-limit Enable timer to recover from mac limit disable state
oam-remote-failure Enable timer to recover from remote failure detected by
OAM
pagp-flap Enable timer to recover from pagp-flap error disable
state
psecure-violation Enable timer to recover from psecure violation disable
state
security-violation Enable timer to recover from 802.1x violation disable
state
storm-control Enable timer to recover from storm-control error
disable state
udld Enable timer to recover from udld error disable state
unicast-flood Enable timer to recover from unicast flood disable
state
vmps Enable timer to recover from vmps shutdown error
disable state
Danach definieren wir diese dann entweder einzeln oder allgemeingültig über den all-Parameter.
Switch(config)# errdisable recovery cause bpduguard
Über die zuvor genannten show-Befehle lässt sich die nun gültige Konfiguration anzeigen.