BFD - Troubleshooting

Método general (de lo mínimo a lo complejo)

  1. ¿Ambos extremos tienen BFD configurado en la interfaz? (es bidireccional).
  2. ¿La sesión sube? show bfd neighbors → estado Up.
  3. ¿Hay un cliente que use la sesión? show bfd neighbors details (Registered protocols).
  4. ¿Los timers son compatibles entre extremos?
  5. ¿El cliente reacciona al caer BFD?

Comando base:

Router# show bfd neighbors details

Caso 1 — No se crea la sesión BFD

Síntoma: show bfd neighbors no lista al vecino.

Causas:

  • Falta BFD en el otro extremo (bidireccional).
  • No hay ningún cliente que “encienda” la sesión: BFD no arranca solo; necesita una ruta estática o un protocolo asociado.

Diagnóstico:

Router# show bfd neighbors
Router# show running-config interface gigabitEthernet 0/0 | include bfd

Solución: configurar los timers en ambos extremos y asociar un cliente.

Router(config)# interface gigabitEthernet 0/0
Router(config-if)# bfd interval 300 min_rx 300 multiplier 3
Router(config)# ip route static bfd gigabitEthernet 0/0 10.0.0.2
Router(config)# ip route 192.168.2.0 255.255.255.0 10.0.0.2

Caso 2 — La sesión BFD está Up pero el protocolo no la usa

Síntoma: show bfd neighbors muestra Up, pero al caer el enlace el protocolo tarda igual que siempre.

Causa: el protocolo no está asociado a BFD (falta bfd all-interfaces, ip ospf bfd, neighbor ... fall-over bfd o standby bfd).

Diagnóstico:

Router# show bfd neighbors details    ! ¿aparece el protocolo en "Registered protocols"?

Solución: asociar el cliente correspondiente.

Router(config)# router ospf 1
Router(config-router)# bfd all-interfaces

Caso 3 — La sesión “aletea” (sube y baja)

Síntoma: la sesión BFD cambia de estado constantemente y provoca reconvergencias.

Causa: timers demasiado agresivos para el enlace (CPU/latencia no los soportan), o un enlace físicamente inestable.

Diagnóstico:

Router# show bfd neighbors details | include Interval|State

Solución: aflojar los timers (subir el intervalo o el multiplier) o estabilizar el medio.

Router(config-if)# bfd interval 500 min_rx 500 multiplier 4

Caso 4 — Timers incompatibles entre extremos

Síntoma: la sesión no llega a Up o negocia valores inesperados.

Causa: valores muy dispares o no soportados por una de las plataformas (algunos equipos tienen mínimos distintos).

Diagnóstico:

Router# show bfd neighbors details    ! comparar Tx/Rx negociados

Solución: usar timers iguales y soportados en ambos extremos (BFD negocia al valor más conservador).

Router(config-if)# bfd interval 300 min_rx 300 multiplier 3

Caso 5 — BFD no soportado por hardware/software

Síntoma: el comando bfd interval no existe, o la sesión nunca sube pese a estar bien.

Causa: la plataforma/imagen IOS no soporta BFD en esa interfaz, o requiere modo asíncrono/echo específico.

Diagnóstico:

Router# show bfd neighbors details | include echo|mode

Solución: verificar soporte en la documentación de la plataforma; si el modo echo causa problemas, desactivarlo.

Router(config)# no bfd echo

Recuerda el orden: BFD en ambos extremos, un cliente que encienda la sesión, sesión Up, el protocolo/ruta registrado en la sesión, y timers compatibles. Si el protocolo no converge rápido, casi siempre falta asociarlo (Registered protocols vacío).