Saúde da Interface de Rede
Use este skill quando um sintoma de rede puder ser causado por um link físico, porta de switch, cabo, transceptor, configuração de duplex ou interface congestionada.
Quando Usar
- Um host ou VLAN apresenta perda de pacotes, picos de latência ou conectividade intermitente.
- Uma interface de switch ou roteador mostra CRCs, runts, giants, drops, resets ou flaps.
- Você precisa comparar ambas as extremidades de um link antes de substituir hardware.
- Uma janela de mudança precisa de evidências de contadores de interface antes/depois.
- O monitoramento relata aumento de
ifInErrors,ifOutErrorsouifOutDiscards.
Como Funciona
Os contadores de interface são evidências, mas a tendência importa mais do que o número absoluto. Capture uma linha de base, aguarde um intervalo de medição, capture novamente e compare os incrementos.
show interfaces <interface>
show interfaces <interface> status
show logging | include <interface>|changed state|line protocol
Em hosts Linux:
ip -s link show <interface>
ethtool <interface>
ethtool -S <interface>
Referência de Contadores
| Contador | Significado | Causa comum |
|---|---|---|
| CRC | Soma de verificação do quadro recebido falhou | Cabo ruim, fibra suja, óptica ruim, incompatibilidade de duplex |
| input errors | Agregado de erros do lado receptor | Verifique subcontadores antes de concluir |
| runts | Quadros abaixo do tamanho mínimo Ethernet | Incompatibilidade de duplex, domínio de colisão, NIC com defeito |
| giants | Quadros maiores que o MTU esperado | Incompatibilidade de MTU ou limite de jumbo-frame |
| input drops | Dispositivo não pôde aceitar pacotes recebidos | Rajada, oversubscription, caminho da CPU, pressão na fila |
| output drops | Fila de saída descartou pacotes | Congestionamento, política de QoS, uplink subdimensionado |
| resets | Reset de hardware da interface | Flapping, keepalive, driver, óptica, energia |
| collisions | Contador de colisão Ethernet | Half duplex ou incompatibilidade de negociação |
Fluxo de Diagnóstico
CRCs ou Erros de Entrada
- Confirme que os contadores estão incrementando, não apenas históricos.
- Verifique ambas as extremidades do link. Erros do lado receptor geralmente apontam para o sinal que chega naquele lado, não necessariamente para a porta que relata o erro.
- Substitua o cabo de conexão ou limpe/substitua fibra e ópticas.
- Confirme que as configurações de velocidade/duplex coincidem em ambos os lados.
- Verifique logs para eventos de flap próximos ao mesmo timestamp.
Drops
- Separe drops de entrada de drops de saída.
- Compare a taxa da interface com a capacidade.
- Verifique política de QoS, contadores de fila e se o link é um uplink sobresscrito.
- Trate o ajuste de fila como secundário. Primeiro, prove se o link está congestionado.
Duplex e Velocidade
Prefira auto-negociação em links Ethernet modernos quando ambos os lados a suportarem. Se um lado precisar ser fixo, configure ambos os lados explicitamente e documente o motivo. Nunca misture velocidade/duplex fixo de um lado com auto do outro.
show interfaces <interface> | include duplex|speed
Exemplo de Parser Seguro
Divida cada bloco de interface de um cabeçalho ao próximo. Não use uma janela de caracteres arbitrária; blocos grandes de interface podem fazer com que contadores sejam perdidos ou atribuídos à porta errada.
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
Exemplos
CRCs em Uma Porta de Switch
- Capture contadores na porta local.
- Capture contadores na porta remota conectada.
- Substitua o cabo ou a óptica antes de alterar regras de roteamento ou firewall.
- Limpe os contadores apenas após registrar a linha de base.
- Verifique novamente após um intervalo fixo.
Internet Lenta, Mas LAN Está Bem
- Verifique drops/erros na interface WAN.
- Verifique utilização do uplink LAN e drops de saída.
- Verifique CPU do gateway se o link WAN estiver limpo, mas a taxa de transferência ainda estiver baixa.
- Compare testes com e sem fio antes de culpar o serviço upstream.
Anti-Padrões
- Limpar contadores antes de salvar uma linha de base.
- Olhar apenas um lado de um link.
- Assumir que todos os CRCs históricos são problemas ativos sem uma janela de tempo.
- Misturar auto-negociação de um lado com velocidade/duplex fixo do outro.
- Tratar drops de saída como problema de cabo antes de verificar congestionamento.
Veja Também
- Agente:
solucionador-de-problemas-de-rede - Skill:
validacao-de-configuracao-de-rede - Skill:
configuracao-de-rede-homelab