Santé de l'interface réseau
Utilisez cette compétence lorsqu'un symptôme réseau pourrait être causé par un lien physique, un port de commutateur, un câble, un émetteur-récepteur, un réglage de duplex ou une interface congestionnée.
Quand l'utiliser
- Un hôte ou un VLAN présente des pertes de paquets, des pics de latence ou une atteignabilité intermittente.
- L'interface d'un commutateur ou d'un routeur affiche des CRC, des runts, des giants, des pertes, des réinitialisations ou du flapping.
- Vous devez comparer les deux extrémités d'un lien avant de remplacer le matériel.
- Une fenêtre de changement nécessite des preuves de compteurs d'interface avant/après.
- La surveillance signale une augmentation de
ifInErrors,ifOutErrorsouifOutDiscards.
Comment ça fonctionne
Les compteurs d'interface sont des preuves, mais la tendance est plus importante que le nombre absolu. Capturez une référence, attendez un intervalle de mesure, capturez à nouveau, puis comparez les incréments.
show interfaces <interface>
show interfaces <interface> status
show logging | include <interface>|changed state|line protocol
Sur les hôtes Linux :
ip -s link show <interface>
ethtool <interface>
ethtool -S <interface>
Référence des compteurs
| Compteur | Signification | Cause fréquente |
|---|---|---|
| CRC | La somme de contrôle de la trame reçue a échoué | Mauvais câble, fibre sale, mauvais optique, décalage de duplex |
| input errors | Agrégat d'erreurs côté réception | Vérifier les sous-compteurs avant de conclure |
| runts | Trames en dessous de la taille minimale Ethernet | Décalage de duplex, domaine de collision, NIC défectueux |
| giants | Trames plus grandes que le MTU attendu | Décalage de MTU ou limite de trames Jumbo |
| input drops | Le périphérique n'a pas pu accepter les paquets entrants | Rafale, sur-abonnement, chemin CPU, pression de file d'attente |
| output drops | La file d'attente de sortie a supprimé des paquets | Congestion, politique QoS, liaison montante sous-dimensionnée |
| resets | Réinitialisation matérielle de l'interface | Flapping, keepalive, pilote, optique, alimentation |
| collisions | Compteur de collisions Ethernet | Demi-duplex ou décalage de négociation |
Flux de diagnostic
CRC ou Erreurs d'entrée
- Confirmer que les compteurs s'incrémentent, pas seulement historiques.
- Vérifier les deux extrémités du lien. Les erreurs côté réception indiquent généralement le signal arrivant de ce côté, pas nécessairement le port signalant l'erreur.
- Remplacer le câble de brassage ou nettoyer/remplacer la fibre et les optiques.
- Confirmer que les réglages de vitesse/duplex correspondent des deux côtés.
- Vérifier les journaux pour des événements de flapping autour du même timestamp.
Pertes
- Distinguer les pertes d'entrée des pertes de sortie.
- Comparer le taux de l'interface avec la capacité.
- Vérifier la politique QoS, les compteurs de file d'attente, et si le lien est une liaison montante sur-abonnée.
- Traiter le réglage de file d'attente comme secondaire. D'abord prouver si le lien est congestionné.
Duplex et Vitesse
Préférez l'auto-négociation sur les liaisons Ethernet modernes lorsque les deux côtés la supportent. Si un côté doit être fixe, configurez les deux côtés explicitement et documentez pourquoi. Ne mélangez jamais vitesse/duplex fixe d'un côté avec auto de l'autre.
show interfaces <interface> | include duplex|speed
Exemple d'analyseur sécurisé
Découpez chaque bloc d'interface d'un en-tête au suivant. N'utilisez pas de fenêtre de caractères arbitraire ; les grands blocs d'interface peuvent entraîner des compteurs manqués ou attribués au mauvais port.
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
Exemples
CRC sur un port de commutateur
- Capturez les compteurs sur le port local.
- Capturez les compteurs sur le port distant connecté.
- Remplacez le câble ou l'optique avant de modifier les règles de routage ou de pare-feu.
- Effacez les compteurs uniquement après avoir enregistré la référence.
- Revérifiez après un intervalle fixe.
Internet lent mais LAN correct
- Vérifiez les pertes/erreurs sur l'interface WAN.
- Vérifiez l'utilisation de la liaison montante LAN et les pertes de sortie.
- Vérifiez le CPU de la passerelle si le lien WAN est propre mais le débit toujours faible.
- Comparez les tests filaires et sans fil avant d'incriminer le service en amont.
Anti-patrons
- Effacer les compteurs avant de sauvegarder une référence.
- Regarder un seul côté d'une liaison.
- Supposer que tous les CRC historiques sont des problèmes actifs sans fenêtre temporelle.
- Mélanger l'auto-négociation d'un côté avec une vitesse/duplex fixe de l'autre.
- Traiter les pertes de sortie comme un problème de câble avant de vérifier la congestion.
Voir aussi
- Agent :
network-troubleshooter - Compétence :
network-config-validation - Compétence :
homelab-network-setup