Was macht Netzwerkschnittstellen-Health?
Verwende dieses Skill, wenn ein Netzwerksymptom durch eine physische Verbindung, einen Switch-Port, ein Kabel, einen Transceiver, eine Duplex-Einstellung oder eine überlastete Schnittstelle verursacht werden könnte.
Wann verwenden
- Ein Host oder VLAN hat Paketverluste, Latenzspitzen oder zeitweise Erreichbarkeitsprobleme.
- Eine Switch- oder Router-Schnittstelle zeigt CRCs, Runts, Giants, Drops, Resets oder Flaps.
- Du musst beide Enden einer Verbindung vergleichen, bevor du Hardware austauschst.
- Ein Änderungsfenster benötigt Vorher-/Nachher-Nachweise der Schnittstellenzähler.
- Das Monitoring meldet steigende
ifInErrors,ifOutErrorsoderifOutDiscards.
Funktionsweise
Schnittstellenzähler sind ein Indiz, aber der Trend ist wichtiger als der absolute Wert. Erfasse eine Baseline, warte ein Messintervall, erfasse erneut und vergleiche dann die Zuwächse.
show interfaces <schnittstelle>
show interfaces <schnittstelle> status
show logging | include <schnittstelle>|changed state|line protocol
Auf Linux-Hosts:
ip -s link show <schnittstelle>
ethtool <schnittstelle>
ethtool -S <schnittstelle>
Zähler-Referenz
| Zähler | Bedeutung | Häufige Ursache |
|---|---|---|
| CRC | Empfangene Rahmen-Prüfsumme fehlgeschlagen | Defektes Kabel, verschmutzte Glasfaser, defekter Optik, Duplex-Mismatch |
| input errors | Aggregierte Empfangsseitenfehler | Vor einer Schlussfolgerung Unterzähler überprüfen |
| runts | Rahmen unterhalb der minimalen Ethernet-Größe | Duplex-Mismatch, Kollisionsdomäne, defekter NIC |
| giants | Rahmen größer als erwartete MTU | MTU-Mismatch oder Jumbo-Frame-Grenze |
| input drops | Gerät konnte eingehende Pakete nicht annehmen | Burst, Überbuchung, CPU-Pfad, Warteschlangendruck |
| output drops | Ausgangswarteschlange verwarf Pakete | Überlastung, QoS-Richtlinie, zu kleine Uplink |
| resets | Hardware-Reset der Schnittstelle | Flapping, Keepalive, Treiber, Optik, Stromversorgung |
| collisions | Ethernet-Kollisionszähler | Halbduplex oder Aushandlungsfehler |
Diagnoseablauf
CRCs oder Eingabefehler
- Bestätige, dass die Zähler steigen, nicht nur historisch sind.
- Überprüfe beide Enden der Verbindung. Empfangsseitige Fehler deuten normalerweise auf das Signal hin, das auf dieser Seite ankommt, nicht unbedingt auf den Port, der den Fehler meldet.
- Ersetze das Patchkabel oder reinige/ersetze Glasfaser und Optiken.
- Bestätige, dass die Geschwindigkeits-/Duplex-Einstellungen auf beiden Seiten übereinstimmen.
- Überprüfe die Logs auf Flap-Ereignisse zum gleichen Zeitstempel.
Drops
- Trenne Eingabe-Drops von Ausgabe-Drops.
- Vergleiche die Schnittstellenrate mit der Kapazität.
- Überprüfe die QoS-Richtlinie, Warteschlangenzähler und ob die Verbindung ein überbuchter Uplink ist.
- Behandle die Warteschlangenoptimierung als sekundär. Beweise zuerst, ob die Verbindung überlastet ist.
Duplex und Geschwindigkeit
Bevorzuge Auto-Aushandlung auf modernen Ethernet-Verbindungen, wenn beide Seiten dies unterstützen. Wenn eine Seite fest eingestellt sein muss, konfiguriere beide Seiten explizit und dokumentiere den Grund. Mische niemals feste Geschwindigkeit/Duplex auf einer Seite mit Auto auf der anderen.
show interfaces <schnittstelle> | include duplex|speed
Sicheres Parser-Beispiel
Trenne jeden Schnittstellenblock von einem Header zum nächsten. Verwende kein willkürliches Zeichenfenster; große Schnittstellenblöcke können dazu führen, dass Zähler übersehen oder dem falschen Port zugeordnet werden.
import re
from typing import Any
HEADER_RE = re.compile(
r"^(?P<name>\S+) is (?P<status>(?:administratively )?down|up), "
r"line protocol is (?P<protocol>up|down)",
re.I | re.M,
)
ERROR_RE = re.compile(r"(?P<input>\d+) input errors, (?P<crc>\d+) CRC", re.I)
DROP_RE = re.compile(r"(?P<output>\d+) output errors", re.I)
DUPLEX_RE = re.compile(r"(?P<duplex>Full|Half|Auto)-duplex,\s+(?P<speed>[^,]+)", re.I)
def parse_show_interfaces(raw: str) -> list[dict[str, Any]]:
headers = list(HEADER_RE.finditer(raw))
interfaces = []
for index, header in enumerate(headers):
end = headers[index + 1].start() if index + 1 < len(headers) else len(raw)
block = raw[header.start():end]
errors = ERROR_RE.search(block)
drops = DROP_RE.search(block)
duplex = DUPLEX_RE.search(block)
interfaces.append({
"name": header.group("name"),
"status": header.group("status"),
"protocol": header.group("protocol"),
"duplex": duplex.group("duplex") if duplex else "unknown",
"speed": duplex.group("speed").strip() if duplex else "unknown",
"input_errors": int(errors.group("input")) if errors else 0,
"crc_errors": int(errors.group("crc")) if errors else 0,
"output_errors": int(drops.group("output")) if drops else 0,
})
return interfaces
Beispiele
CRCs auf einem Switch-Port
- Erfasse die Zähler auf dem lokalen Port.
- Erfasse die Zähler auf dem angeschlossenen entfernten Port.
- Ersetze das Kabel oder die Optik, bevor du Routing- oder Firewall-Regeln änderst.
- Lösche Zähler erst, nachdem die Baseline aufgezeichnet wurde.
- Überprüfe erneut nach einem festgelegten Intervall.
Internet langsam, aber LAN funktioniert
- Überprüfe Drops/Fehler auf der WAN-Schnittstelle.
- Überprüfe die LAN-Uplink-Auslastung und Ausgabe-Drops.
- Überprüfe die Gateway-CPU, wenn die WAN-Verbindung sauber ist, aber der Durchsatz immer noch niedrig ist.
- Vergleiche verkabelte und drahtlose Tests, bevor du den Upstream-Dienst beschuldigst.
Anti-Patterns
- Zähler löschen, bevor eine Baseline gesichert wird.
- Nur eine Seite einer Verbindung überprüfen.
- Alle historischen CRCs als aktive Probleme ansehen, ohne ein Zeitfenster zu berücksichtigen.
- Auto-Aushandlung auf einer Seite mit fester Geschwindigkeit/Duplex auf der anderen mischen.
- Ausgabe-Drops als Kabelproblem behandeln, bevor die Überlastung geprüft wird.
Siehe auch
- Agent:
network-troubleshooter - Skill:
network-config-validation - Skill:
homelab-network-setup