Diagnóstico BGP de Rede
Use esta skill quando uma sessão BGP estiver inativa, flapping, estabelecida com rotas ausentes ou anunciando prefixos inesperados. O fluxo de trabalho padrão é a coleta de evidências somente leitura; ações de política e reset pertencem a uma janela de mudança revisada.
Quando Usar
- Vizinhos BGP estão presos em Idle, Connect, Active, OpenSent ou OpenConfirm.
- Uma sessão está Established, mas prefixos esperados estão ausentes.
- Um route-map, prefix-list, limite max-prefix ou política de AS path pode estar filtrando rotas.
- Você precisa de evidências antes/depois para uma alteração BGP.
- Você está revisando automação que analisa a saída do resumo BGP.
Fluxo de Triagem Somente Leitura
- Identifique o vizinho exato, a família de endereços, a VRF e os ASNs local/remoto.
- Capture o estado do resumo e o motivo do último reset.
- Comprove a alcançabilidade até o endereço de origem do peer.
- Verifique as referências de política de rota antes de presumir falha de transporte.
- Compare as rotas anunciadas, recebidas e instaladas onde a plataforma suporta esses comandos.
show bgp summary
show bgp neighbors <peer>
show ip route <peer>
show tcp brief | include <peer>|:179
show logging | include BGP|<peer>
show running-config | section router bgp
show ip prefix-list
show route-map
Use comandos específicos de família de endereços da plataforma quando o dispositivo usar VRFs, IPv6, VPNv4 ou EVPN. Não assuma IPv4 unicast global.
Interpretação de Estado
| Estado | Primeiras verificações |
|---|---|
| Established com contagem de prefixos | A troca de rotas está ativa; inspecione a política e a seleção de tabela |
| Established com zero prefixos | Verifique política de entrada, max-prefix, rotas anunciadas e AFI/SAFI |
| Active | A sessão TCP não está sendo concluída; verifique roteamento, origem, ACLs e alcançabilidade do peer |
| Connect | A conexão TCP está em andamento; verifique caminho e listener remoto |
| OpenSent/OpenConfirm | TCP funciona; verifique ASN, autenticação, timers, capacidades e logs |
| Idle | O vizinho pode estar desabilitado, com configuração ausente, bloqueado por política ou timer de backoff |
Verificações de Transporte
ping <peer> source <local-source>
traceroute <peer> source <local-source>
show ip route <peer>
show bgp neighbors <peer> | include BGP state|Last reset|Local host|Foreign host
Se o peer for originado de um loopback, confirme que ambas as direções roteiam para os endereços de loopback e que a configuração do vizinho usa a origem de atualização esperada.
Evite desabilitar ACLs ou política de firewall como atalho de diagnóstico. Leia primeiro os contadores de hit, logs e estado do caminho.
Verificações de Política de Rota
show bgp neighbors <peer> advertised-routes
show bgp neighbors <peer> routes
show ip prefix-list <name>
show route-map <name>
show bgp <prefix>
Algumas plataformas exigem configuração adicional antes que received-routes esteja disponível. Não adicione essa configuração durante a triagem de incidentes, a menos que o operador aprove a alteração.
Revisão de AS Path e Prefixo
show bgp regexp _65001_
show bgp regexp ^65001$
show bgp <prefix>
show bgp neighbors <peer> advertised-routes | include Network|Path|<prefix>
Use regex de AS-path com cuidado. _65001_ corresponde ao AS 65001 como um token. 65001 simples pode corresponder a ASNs mais longos ou texto não relacionado.
Padrão de Parser
import re
from typing import Any
BGP_SUMMARY_RE = re.compile(
r"^(?P<neighbor>\d{1,3}(?:\.\d{1,3}){3})\s+"
r"(?P<version>\d+)\s+"
r"(?P<remote_as>\d+)\s+"
r"(?P<msg_rcvd>\d+)\s+"
r"(?P<msg_sent>\d+)\s+"
r"(?P<table_version>\d+)\s+"
r"(?P<input_queue>\d+)\s+"
r"(?P<output_queue>\d+)\s+"
r"(?P<uptime>\S+)\s+"
r"(?P<state_or_prefixes>\S+)$",
re.M,
)
def parse_bgp_summary(raw: str) -> list[dict[str, Any]]:
rows = []
for match in BGP_SUMMARY_RE.finditer(raw):
state_or_prefixes = match.group("state_or_prefixes")
if state_or_prefixes.isdigit():
state = "Established"
prefixes_received = int(state_or_prefixes)
else:
state = state_or_prefixes
prefixes_received = None
rows.append({
"neighbor": match.group("neighbor"),
"remote_as": int(match.group("remote_as")),
"state": state,
"prefixes_received": prefixes_received,
"uptime": match.group("uptime"),
})
return rows
Prefira saída de parser estruturada quando disponível, mas armazene a saída bruta com o registro do incidente porque os formatos de resumo BGP variam por plataforma e família de endereços.
Apenas em Janela de Mudança
Estas ações podem afetar o roteamento e não devem ser sugeridas como diagnósticos automáticos:
- Limpar uma sessão BGP.
- Alterar autenticação de vizinho, timers, origem de atualização, route-maps ou prefix-lists.
- Habilitar armazenamento adicional de rotas recebidas.
- Relaxar firewall, ACL ou política de plano de controle.
Se um reset for aprovado, prefira a opção soft ou route-refresh menos disruptiva suportada pela plataforma e documente exatamente por que é seguro.
Anti-Padrões
- Assumir que
Activesempre significa que o lado remoto está inativo. - Ignorar diferenças de VRF, família de endereços ou origem de atualização.
- Usar regex de AS-path amplo sem limites de token.
- Resetar um peer antes de ler o motivo do último reset e logs.
- Tratar a saída ausente de
received-routescomo prova de que nenhuma rota chegou.
Veja Também
- Skill:
cisco-ios-patterns - Skill:
network-config-validation - Skill:
network-interface-health