Descripción general de la detección de reenvío bidireccional (BFD)

En esta página se describe la detección de reenvío bidireccional (BFD) de Cloud Router.

BFD (RFC 5880, RFC 5881) es un protocolo de detección de interrupciones en rutas de reenvío compatible con la mayoría de los routers comerciales. Con BFD para Cloud Router, puedes habilitar la función de BFD en una sesión de BGP para detectar interrupciones en rutas de reenvío, como eventos de enlace inactivo. Esta función hace que las redes híbridas sean más resilientes.

Cuando te emparejas con Google Cloud desde tu red local mediante una interconexión dedicada o Partner Interconnect, puedes habilitar BFD para detectar rápidamente los fallos de los enlaces y conmutar por error el tráfico a un enlace alternativo que tenga una sesión BGP de copia de seguridad. De esta forma, BFD proporciona una ruta de conectividad de red de alta disponibilidad que puede responder rápidamente a los fallos de los enlaces.

Ventajas de BFD

BFD configurado con los ajustes predeterminados detecta los errores en 5 segundos, frente a los 60 segundos de la detección de errores basada en BGP. Si BFD se implementa en Cloud Router, el tiempo de detección de extremo a extremo puede ser de tan solo 5 segundos.

BFD es un protocolo de saludo de longitud fija en el que cada extremo de una conexión transmite paquetes periódicamente a través de una ruta de reenvío.

BFD es un protocolo de detección basado en UDP que proporciona un método de baja sobrecarga para detectar fallos en la ruta de reenvío entre dos routers adyacentes. Esto incluye la detección de fallos en interfaces, enlaces de datos y planos de reenvío. Puedes habilitar BFD a nivel de protocolo de enrutamiento.

Limitaciones de BFD

Solo puedes habilitar BFD en sesiones de BGP que configures para vinculaciones de VLAN en interconexiones dedicadas o Partner Interconnect. BFD no se admite en sesiones BGP configuradas para túneles de VPN de alta disponibilidad o para el dispositivo de router, que forma parte de Network Connectivity Center.

Establecimiento de sesiones de BFD

Para establecer una sesión de BFD, configura BFD en ambos peers de BGP: un Cloud Router y tu router on-premise que ejecute BFD. Después de habilitar BFD para el protocolo de enrutamiento BGP en el router, se crea una sesión de BFD, se negocian los temporizadores de BFD y los peers de BFD empiezan a enviarse paquetes de control de BFD entre sí en el intervalo negociado.

Al enviar avisos de detección rápida de errores a BGP en el router local para iniciar el proceso de recálculo de la tabla de enrutamiento, BFD contribuye a reducir considerablemente el tiempo de convergencia general de la red.

En el siguiente diagrama se muestra una red sencilla con dos routers que ejecutan BGP y BFD. Estos números representan el proceso de establecimiento de la sesión de BFD:

  1. El vecino de BGP está configurado.
  2. BGP envía una solicitud al proceso de BFD local para iniciar una sesión de vecino de BFD con el router del par o vecino de BGP.
  3. Se ha establecido la sesión de vecino de BFD con el router de vecino de BGP.
Establecimiento de la sesión de BFD.
Establecimiento de sesión de BFD (haz clic en la imagen para ampliarla)

BFD durante un evento de fallo

En la siguiente figura se muestra lo que ocurre cuando se produce un fallo en la red.

En el modo de solo control de BFD, Cloud Router y tu router local se envían paquetes de control de BFD periódicamente. Si el otro router no recibe el número de paquetes de control seguidos configurado en el ajuste bfd multiplier del Cloud Router, la sesión se declara inactiva. A continuación, ocurre lo siguiente:

  1. Se produce un error en el enlace entre Google Cloud y el router local.
  2. Se cierra la sesión de vecino de BFD con el router vecino de BGP.
  3. BFD notifica al proceso BGP local que el vecino de BFD ya no está accesible.
  4. El proceso de BGP local elimina la relación de vecino de BGP.

Si hay una ruta alternativa disponible, los routers empiezan a converger inmediatamente.

BFD durante un evento de fallo.
BFD durante un evento de fallo (haz clic en la imagen para ampliarla)

Amortiguación de BFD

Cloud Router implementa la amortiguación de BFD internamente para suprimir el efecto negativo de las fluctuaciones frecuentes de las sesiones de BFD en BGP. La amortiguación de BFD usa parámetros predeterminados que el usuario no puede modificar.

La amortiguación de BFD usa un sistema de penalización. El valor de la penalización empieza en 0 y aumenta a 1 en la primera aleta. Después del primer cambio, la penalización se duplica cada vez que se produce otro cambio de BFD. Cuando la penalización supera el valor de umbral de 4, BFD suprime las notificaciones a BGP. La penalización se reduce a la mitad cada 10 minutos si no se produce ningún aleteo durante ese periodo.

BFD vuelve a habilitar las notificaciones a BGP cuando la penalización es inferior al umbral de reutilización de 4.

El intervalo de supresión máximo de las notificaciones de BFD a BGP es de 1 hora. De esta forma, las notificaciones de sesión de BFD no se atenúan para siempre.

Modo asíncrono de BFD

Cloud Router admite un modo de funcionamiento asíncrono en el que los sistemas implicados se envían periódicamente paquetes de control de BFD entre sí. Si el otro sistema no recibe un número configurado de esos paquetes seguidos, se declara que la sesión está inactiva.

No se admite el modo de demanda de la operación BFD. En el modo de paquetes, BFD admite el modo de solo control. El modo eco no se admite.

En el modo de funcionamiento asíncrono con el modo de paquetes de solo control, BFD se ejecuta en el plano de control y puede añadir una ligera sobrecarga y tiempo de procesamiento de la CPU.

De forma predeterminada, BFD está inhabilitado en las sesiones BGP de Cloud Router. Para usar BFD, debes habilitarlo.

En el siguiente caso de fallo, los routers tienen los siguientes ajustes:

  • Los intervalos mínimos de recepción y transmisión de BFD de Cloud Router se han configurado en 1000 milisegundos (ms).
  • Los intervalos mínimos de recepción y transmisión de BFD del router de par se han definido en 1000 ms.
  • El protocolo BFD RFC 5880 negocia el intervalo de transmisión acordado con el valor más alto entre el intervalo de transmisión del remitente y el intervalo de recepción del receptor. Por lo tanto, los intervalos de transmisión acordados en ambos lados son de 1000 ms debido a que los ajustes son idénticos.
  • El cálculo del tiempo de detección en Cloud Router es el intervalo de transmisión acordado del router de par multiplicado por el valor del multiplicador de BFD del router de par. En este caso, el tiempo de detección es de 1000 ms * 5 = 5000 ms.
  • El cálculo del tiempo de detección en el router peer es el intervalo de transmisión acordado del Cloud Router multiplicado por el valor del multiplicador BFD del Cloud Router. En este caso, el tiempo de detección es de 1000 ms * 5 = 5000 ms.

El router de Cloud Router negocia con el router de par y espera recibir paquetes de control cada 1000 ms del router de par. Si transcurren 5000 ms sin que el Cloud Router reciba un paquete de control, el temporizador de detección caduca y declara que la sesión de BFD está inactiva.

BFD sin paquetes de eco.
BFD sin paquetes de eco (haz clic en la imagen para ampliarla)

Te recomendamos que hagas lo siguiente al configurar BFD:

  • Para evitar que no coincida el multiplicador de BFD, configura tu router local y Cloud Router con los mismos ajustes de BFD.
  • Para evitar las fluctuaciones de BFD y BGP, debes definir el tiempo de espera mínimo de BFD en 5000 ms como mínimo en cada dirección.

Reinicio sin interrupciones y BFD

Para minimizar el impacto en el tráfico durante los eventos de mantenimiento del software de Cloud Router, te recomendamos que habilites el reinicio graceful de BGP.

Si tanto el reinicio gradual de BGP como BFD están habilitados, cuando Cloud Router se reinicie, intentará desactivar BFD enviando un mensaje AdminDown al router local. Cuando esto ocurre, la sesión de BGP se mantiene activa en el lado local y el router local entra en el modo de reinicio gradual. Mientras el router local está en modo de reinicio graceful, Cloud Router puede reiniciarse sin afectar al tráfico del plano de datos.

Del mismo modo, si el router on-premise envía un mensaje AdminDown antes de que se reinicie su plano de control, Cloud Router entrará en el modo de reinicio graceful. Mientras Cloud Router está en modo de reinicio graceful, el router local puede reiniciarse sin que afecte al tráfico del plano de datos.

Cloud Router define el bit independiente del plano de control en 0 al establecer BFD con su router de par para indicar que su implementación de BFD depende del plano de control. Si se produce un error en una interfaz, es posible que el router del mismo nivel no pueda distinguir entre un error de BFD causado por un error en el plano de control o en el plano de datos. Por ejemplo, un fallo de interfaz puede provocar que el router local entre en modo de reinicio controlado y retrase innecesariamente una conmutación por error del tráfico desde el enlace afectado.

Debido a la posible ambigüedad de los errores de BFD, los diferentes proveedores tratan este escenario específico de forma diferente y ofrecen ajustes de configuración para cambiar el comportamiento predeterminado. Te recomendamos que consultes la documentación del proveedor de tu router y que lo configures para asegurarte de que un evento de fallo de interfaz BFD con un peer BFD dependiente del plano de control active una conmutación por error inmediata cuando se use con el reinicio gradual de BGP.

Ajustes y temporizadores de BFD

En esta sección se describen los ajustes de BFD que puede configurar en Cloud Router.

Modo de inicialización de sesiones de BFD

Descripción Modo de inicialización de sesiones de BFD para este par de BGP.
Comando gcloud --bfd-session-initialization-mode
Campo de la API bgpPeers[].bfd.sessionInitializationMode
Ajuste predeterminado Disabled

Hay tres ajustes del modo BFD: Active, Passive y Disabled. Si no configuras este modo, se establecerá de forma predeterminada en Disabled, con el modo sin eco (solo paquetes de control).

  • Disabled (valor predeterminado): BFD está inhabilitado en este par de BGP.
  • Passive: Cloud Router espera a que el router de par inicie la sesión de BFD para este par de BGP.
  • Active: Cloud Router inicia la sesión de BFD para este par de BGP.

Debes configurar el router en al menos uno de los extremos de una conexión (el router de nube o el router de par) como Active. Cuando configures una sesión de BGP entre dos routers de Cloud Router, define el modo de inicialización de la sesión de BFD de uno de los routers como Active.

Si asignas el valor Active a ambos lados, estos enviarán un paquete de control inicial para negociar los parámetros y, finalmente, se establecerá la sesión.

Si asignas el valor Disabled al modo de inicialización de sesiones de BFD, puedes configurar el resto de los ajustes de BFD. Estos ajustes se aplicarán cuando vuelvas a habilitar BFD.

Intervalo de transmisión mínimo de BFD (paquetes de BFD a un par)

Descripción El intervalo mínimo, en milisegundos, entre los paquetes de control de BFD transmitidos a un par de BGP.
Comando gcloud --bfd-min-transmit-interval
Campo de la API bgpPeers[].bfd.minTransmitInterval
Ajuste predeterminado

1000 ms. Puede especificar un valor entre 1000 y 30.000 ms.

El protocolo BFD RFC 5880 define el intervalo de transmisión acordado como el valor más alto entre el intervalo de transmisión de Cloud Router y el intervalo de recepción del par. Por lo tanto, BFD se admite en sesiones de BGP aunque tu dispositivo local solo admita un intervalo de recepción mínimo inferior a 1000 ms.

Intervalo de recepción mínimo de BFD (paquetes de BFD de un par)

Descripción El intervalo mínimo, en milisegundos, entre los paquetes de control de BFD recibidos de un par de BGP.
Comando gcloud --bfd-min-receive-interval
Campo de la API bgpPeers[].bfd.minReceiveInterval
Ajuste predeterminado

1000 ms. Puedes especificar un valor entre 1000 y 30.000 ms.

El protocolo BFD RFC 5880 define el intervalo de transmisión acordado del router de par como el valor más alto entre el intervalo de transmisión del par y el intervalo de recepción de Cloud Router. Por lo tanto, BFD se admite en sesiones de BGP aunque tu dispositivo local solo admita un intervalo de transmisión mínimo inferior a 1000 ms.

Multiplicador de BFD

Descripción El número de paquetes de control de BFD consecutivos que deben perderse antes de que el BFD declare que un par no está disponible. Este multiplicador se usa para calcular el tiempo de detección en el lado receptor de la siguiente manera:

Tiempo de detección = Intervalo de transmisión acordado * Multiplicador de BFD

Comando gcloud --bfd-multiplier
Campo de la API bgpPeers[].bfd.multiplier
Ajuste predeterminado

5 paquetes. Puede especificar un valor entre 5 y 16 paquetes.

Para conseguir tiempos de detección idénticos en ambas direcciones, define el mismo valor de multiplicador en Cloud Router y en tu router de la otra entidad.

Siguientes pasos