Algoritmo de selección de la mejor ruta de BGP
Los enrutadores del Protocolo de puerta de enlace fronteriza (BGP) suelen recibir varias rutas al mismo destino. El algoritmo de la mejor ruta de BGP decide cuál es la mejor ruta para instalar en la tabla de enrutamiento IP y usarla para el reenvío de tráfico.
Por qué los enrutadores ignoran las rutas
Suponga que todas las rutas que recibe un enrutador para un prefijo particular están organizadas en una lista. La lista es similar a la salida del comando show ip bgp longer-prefixes . En este caso, algunos caminos no se consideran candidatos para el mejor camino. Por lo general, estas rutas no tienen el indicador válido en la salida del comando show ip bgp longer-prefixes . Los enrutadores ignoran las rutas en estas circunstancias:
- Rutas que están marcadas como no sincronizadas en el resultado de show ip bgp longer-prefixes .Si la sincronización BGP está habilitada, debe haber una coincidencia para el prefijo en la tabla de enrutamiento IP para que una ruta BGP interna (iBGP) se considere una ruta válida. Sincronización de BGP está habilitado por defecto en Cisco IOS ® Software. Si la ruta coincidente se aprende de un vecino Open Shortest Path First (OSPF), su ID de enrutador OSPF debe coincidir con la ID de enrutador BGP del vecino iBGP. La mayoría de los usuarios prefieren deshabilitar la sincronización con el uso del subcomando BGP sin sincronización .Nota : La sincronización está inhabilitada de manera predeterminada en el Cisco IOS Software Release 12.2 (8) T y posterior.
- Rutas para las que NEXT_HOP es inaccesible.Asegúrese de que haya una ruta de Protocolo de puerta de enlace interior (IGP) hacia NEXT_HOP que esté asociada con la ruta.
- Rutas de un vecino BGP externo (eBGP) si el sistema autónomo local (AS) aparece en AS_PATH.Tales rutas se niegan al ingresar al enrutador y ni siquiera se instalan en la Base de información de enrutamiento (RIB) de BGP. Lo mismo se aplica a cualquier ruta que sea denegada por una política de enrutamiento que se implemente a través de acceso, prefijo, AS_PATH o listas de la comunidad, a menos que haya configurado la soft-reconfiguration del vecino entrante para el vecino.
- Si habilitó bgp enforce-first-as y UPDATE no contiene el AS del vecino como el primer número AS en AS_SEQUENCE.En este caso, el enrutador envía una notificación y cierra la sesión.
- Caminos que están marcados como (received-only) en el output del show ip bgp longer-prefix.La política ha rechazado estos caminos. Sin embargo, el enrutador ha almacenado las rutas porque ha configurado la soft-reconfiguration de entrada para el vecino que envía la ruta.
Cómo funciona el mejor algoritmo de ruta
BGP asigna la primera ruta válida como la mejor ruta actual. BGP luego compara la mejor ruta con la siguiente ruta de la lista, hasta que BGP llega al final de la lista de rutas válidas. Esta lista proporciona las reglas que se utilizan para determinar la mejor ruta:
- Prefiera el camino con el PESO más alto.Nota : WEIGHT es un parámetro específico de Cisco. Es local al enrutador en el que está configurado.
- Prefiera la ruta con el LOCAL_PREF más alto .Nota : Se considera que una ruta sin LOCAL_PREF tiene el valor establecido con el comando bgp default local-preferencia , o tiene un valor de 100 por defecto.
- Prefiera la ruta que se originó localmente a través de una red o un subcomando BGP agregado o mediante la redistribución desde un IGP.Se prefieren las rutas locales que provienen de la red o los comandos de redistribución a los agregados locales que provienen del comando aggregate-address .Nota : Tenga en cuenta este elemento:
– Si AIGP está configurado Y el comando bgp bestpath aigp ignore no está configurado, el proceso de decisión considera la métrica AIGP. Consulte Configurar el atributo de métrica AIGP para BGP para obtener más detalles.
- Prefiera la ruta con el AS_PATH más corto.Nota : Tenga en cuenta estos elementos:- Este paso se omite si ha configurado el comando bgp bestpath as-path ignore . – Un AS_SET cuenta como 1, sin importar cuántos AS haya en el conjunto. – AS_CONFED_SEQUENCE y AS_CONFED_SET no se incluyen en la longitud AS_PATH.
- Prefiera la ruta con el tipo de origen más bajo.Nota : IGP es menor que el Protocolo de puerta de enlace exterior (EGP) y EGP es menor que INCOMPLETO.
- Prefiera la ruta con el discriminador de múltiples salidas (MED) más bajo .Nota : Tenga en cuenta estos elementos:- Esta comparación solo se produce si el primer AS (el vecino) es el mismo en las dos rutas. Se ignoran los sub-AS de la confederación.
En otras palabras, los MED se comparan solo si el primer AS en AS_SEQUENCE es el mismo para múltiples rutas. Se ignora cualquier AS_CONFED_SEQUENCE anterior.– Si bgp always-compare-med está habilitado, los MED se comparan para todas las rutas. Debe deshabilitar esta opción en todo el AS. De lo contrario, pueden producirse bucles de enrutamiento. – Si bgp bestpath med-confed está habilitado, los MED se comparan para todas las rutas que constan solo de AS_CONFED_SEQUENCE. Estos caminos se originaron dentro de la confederación local.
– El MED de las rutas que se reciben de un vecino con un MED de 4,294,967,295 se cambia antes de la inserción en la tabla BGP. El MED cambia a 4.294.967.294.
– El MED de trayectos que se reciben de un vecino con un MED de 4,294,967,295 se considera válido y se inserta en la tabla BGP con efecto a los códigos corregidos para el Id . De bug Cisco CSCef34800 .
– A las rutas recibidas sin MED se les asigna un MED de 0, a menos que haya habilitado bgp bestpath med missing-as-peor . Si ha habilitado bgp bestpath med missing-as-peor , a las rutas se les asigna un MED de 4.294.967.294. Si ha habilitado bgp bestpath med missing-as-peor, a las rutas se les asigna un MED de 4,294,967,295 con efecto a los códigos corregidos para el Id . de bug Cisco CSCef34800 .
– El comando bgp deterministic-med también puede influir en este paso. Consulte Cómo los enrutadores BGP utilizan el discriminador de salidas múltiples para la selección de la mejor ruta para obtener una demostración.
- Prefiera eBGP sobre rutas iBGP.Si se selecciona la mejor ruta, vaya al paso 9 (multirrutas).Nota : Las rutas que contienen AS_CONFED_SEQUENCE y AS_CONFED_SET son locales de la confederación. Por lo tanto, estas rutas se tratan como rutas internas. No hay distinción entre Confederation External y Confederation Internal.
- Prefiera la ruta con la métrica IGP más baja al siguiente salto BGP.Continúe, incluso si bestpath ya está seleccionado.
- Determine si varias rutas requieren instalación en la tabla de enrutamiento para BGP Multipath .Continúe, si bestpath aún no está seleccionado.
- Cuando ambas rutas son externas, prefiera la ruta que se recibió primero (la más antigua).Este paso minimiza el desvío de ruta porque una ruta más nueva no desplaza a una más antigua, incluso si la ruta más nueva fuera la ruta preferida según los siguientes criterios de decisión (Pasos 11, 12 y 13).Omita este paso si alguno de estos elementos es verdadero:
- Ha habilitado el comando bgp best path compare-routerid .Nota : Las versiones 12.0.11S, 12.0.11SC, 12.0.11S3, 12.1.3, 12.1.3AA, 12.1.3.T y 12.1.3.E del software Cisco IOS introdujeron este comando.
- El ID del enrutador es el mismo para varias rutas porque las rutas se recibieron del mismo enrutador.
- No existe el mejor camino actual.El mejor camino actual se puede perder cuando, por ejemplo, el vecino que ofrece el camino se cae.
- Prefiera la ruta que proviene del enrutador BGP con el ID de enrutador más bajo.La ID del enrutador es la dirección IP más alta en el enrutador, con preferencia a las direcciones de bucle invertido. Además, puede usar el comando bgp router-id para configurar manualmente la ID del enrutador.Nota : Si una ruta contiene atributos de reflector de ruta (RR), la ID del originador se sustituye por la ID del enrutador en el proceso de selección de ruta.
- Si el originador o el ID del enrutador es el mismo para varias rutas, prefiera la ruta con la longitud mínima de la lista de clústeres.Esto solo está presente en entornos BGP RR. Permite a los clientes emparejarse con RR o clientes en otros clústeres. En este escenario, el cliente debe conocer el atributo BGP específico de RR.
- Prefiera la ruta que proviene de la dirección de vecino más baja.Esta dirección es la dirección IP que se utiliza en la configuración del vecino BGP . La dirección corresponde al par remoto que se utiliza en la conexión TCP con el enrutador local.
Ejemplo: selección de la mejor ruta de BGP
En este ejemplo, hay 9 rutas disponibles para la red 10.30.116.0/23. El comando show ip bgp network muestra las entradas en la tabla de enrutamiento BGP para la red dada.
Router R1#show ip bgp vpnv4 rd 1100:1001 10.30.116.0/23 BGP routing table entry for 1100:1001:10.30.116.0/23, version 26765275 Paths: (9 available, best #6, no table) Advertised to update-groups: 1 2 3 (65001 64955 65003) 65089, (Received from a RR-client) 172.16.254.226 (metric 20645) from 172.16.224.236 (172.16.224.236) Origin IGP, metric 0, localpref 100, valid, confed-internal Extended Community: RT:1100:1001 mpls labels in/out nolabel/362 (65008 64955 65003) 65089 172.16.254.226 (metric 20645) from 10.131.123.71 (10.131.123.71) Origin IGP, metric 0, localpref 100, valid, confed-external Extended Community: RT:1100:1001 mpls labels in/out nolabel/362 (65001 64955 65003) 65089 172.16.254.226 (metric 20645) from 172.16.216.253 (172.16.216.253) Origin IGP, metric 0, localpref 100, valid, confed-external Extended Community: RT:1100:1001 mpls labels in/out nolabel/362 (65001 64955 65003) 65089 172.16.254.226 (metric 20645) from 172.16.216.252 (172.16.216.252) Origin IGP, metric 0, localpref 100, valid, confed-external Extended Community: RT:1100:1001 mpls labels in/out nolabel/362 (64955 65003) 65089 172.16.254.226 (metric 20645) from 10.77.255.57 (10.77.255.57) Origin IGP, metric 0, localpref 100, valid, confed-external Extended Community: RT:1100:1001 mpls labels in/out nolabel/362 (64955 65003) 65089 172.16.254.226 (metric 20645) from 10.57.255.11 (10.57.255.11) Origin IGP, metric 0, localpref 100, valid, confed-external, best Extended Community: RT:1100:1001 mpls labels in/out nolabel/362
!--- BGP selects this as the Best Path on comparing
!--- with all the other routes and selected based on lower router ID.
(64955 65003) 65089
172.16.254.226 (metric 20645) from 172.16.224.253 (172.16.224.253)
Origin IGP, metric 0, localpref 100, valid, confed-internal
Extended Community: RT:1100:1001
mpls labels in/out nolabel/362
(65003) 65089
172.16.254.226 (metric 20645) from 172.16.254.234 (172.16.254.234)
Origin IGP, metric 0, localpref 100, valid, confed-external
Extended Community: RT:1100:1001
mpls labels in/out nolabel/362
65089, (Received from a RR-client)
172.16.228.226 (metric 20645) from 172.16.228.226 (172.16.228.226)
Origin IGP, metric 0, localpref 100, valid, confed-internal
Extended Community: RT:1100:1001
mpls labels in/out nolabel/278
BGP selecciona la mejor ruta de estas 9 rutas considerando varios atributos que se explican en este documento. En el resultado que se muestra aquí, BGP compara las rutas disponibles y selecciona la Ruta # 6 como la mejor ruta en función de su ID de enrutador más bajo.
Comparing path 1 with path 2: Both paths have reachable next hops Both paths have a WEIGHT of 0 Both paths have a LOCAL_PREF of 100 Both paths are learned Both paths have AS_PATH length 1 Both paths are of origin IGP The paths have different neighbor AS's so ignoring MED Both paths are internal (no distinction is made between confed-internal and confed-external) Both paths have an IGP metric to the NEXT_HOP of 20645 Path 2 is better than path 1 because it has a lower Router-ID. Comparing path 2 with path 3: Both paths have reachable next hops Both paths have a WEIGHT of 0 Both paths have a LOCAL_PREF of 100 Both paths are learned Both paths have AS_PATH length 1 Both paths are of origin IGP Both paths have the same neighbor AS, 65089, so comparing MED. Both paths have a MED of 0 Both paths are confed-external Both paths have an IGP metric to the NEXT_HOP of 20645 Path 2 is better than path 3 because it has a lower Router-ID. Comparing path 2 with path 4: Both paths have reachable next hops Both paths have a WEIGHT of 0 Both paths have a LOCAL_PREF of 100 Both paths are learned Both paths have AS_PATH length 1 Both paths are of origin IGP Both paths have the same neighbor AS, 65089, so comparing MED. Both paths have a MED of 0 Both paths are confed-external Both paths have an IGP metric to the NEXT_HOP of 20645 Path 2 is better than path 4 because it has a lower Router-ID. Comparing path 2 with path 5: Both paths have reachable next hops Both paths have a WEIGHT of 0 Both paths have a LOCAL_PREF of 100 Both paths are learned Both paths have AS_PATH length 1 Both paths are of origin IGP Both paths have the same neighbor AS, 65089, so comparing MED. Both paths have a MED of 0 Both paths are confed-external Both paths have an IGP metric to the NEXT_HOP of 20645 Path 5 is better than path 2 because it has a lower Router-ID. Comparing path 5 with path 6: Both paths have reachable next hops Both paths have a WEIGHT of 0 Both paths have a LOCAL_PREF of 100 Both paths are learned Both paths have AS_PATH length 1 Both paths are of origin IGP Both paths have the same neighbor AS, 65089, so comparing MED. Both paths have a MED of 0 Both paths are confed-external Both paths have an IGP metric to the NEXT_HOP of 20645 Path 6 is better than path 5 because it has a lower Router-ID. Comparing path 6 with path 7: Both paths have reachable next hops Both paths have a WEIGHT of 0 Both paths have a LOCAL_PREF of 100 Both paths are learned Both paths have AS_PATH length 1 Both paths are of origin IGP Both paths have the same neighbor AS, 65089, so comparing MED. Both paths have a MED of 0 Both paths are internal (no distinction is made between confed-internal and confed-external) Both paths have an IGP metric to the NEXT_HOP of 20645 Path 6 is better than path 7 because it has a lower Router-ID. Comparing path 6 with path 8: Both paths have reachable next hops Both paths have a WEIGHT of 0 Both paths have a LOCAL_PREF of 100 Both paths are learned Both paths have AS_PATH length 1 Both paths are of origin IGP Both paths have the same neighbor AS, 65089, so comparing MED. Both paths have a MED of 0 Both paths are confed-external Both paths have an IGP metric to the NEXT_HOP of 20645 Path 6 is better than path 8 because it has a lower Router-ID. Comparing path 6 with path 9: Both paths have reachable next hops Both paths have a WEIGHT of 0 Both paths have a LOCAL_PREF of 100 Both paths are learned Both paths have AS_PATH length 1 Both paths are of origin IGP The paths have different neighbor AS's so ignoring MED Both paths are internal (no distinction is made between confed-internal and confed-external) Both paths have an IGP metric to the NEXT_HOP of 20645 Path 6 is better than path 9 because it has a lower Router-ID. The best path is #6
Personalizar el proceso de selección de ruta
El atributo de comunidad extendida, que se denomina Comunidad de costos de BGP , proporciona una forma de personalizar el mejor proceso de selección de ruta. Un paso adicional, en el que se comparan las comunidades de costos, se agrega al algoritmo que describe la sección Cómo funciona el mejor algoritmo de ruta . Este paso viene después del paso requerido (punto de inserción) en el algoritmo. Se prefiere la ruta con el valor de costo más bajo.
Nota : Tenga en cuenta estos elementos:
– Este paso se omite si ha emitido el comando bgp bestpath cost-community ignore .
– La cláusula de conjunto de la comunidad de costos se configura con un número de identificación de la comunidad de costos (0 a 255) y un valor de número de costo (0 a 4,294,967,295). El valor del número de costo determina la preferencia por la ruta. Se prefiere la ruta con el valor de número de costo más bajo. A las rutas que no están configuradas específicamente con el valor de número de costo se les asigna un valor de número de costo predeterminado de 2,147,483,647. Este valor es el punto medio entre 0 y 4.294.967.295. A continuación, estas rutas se evalúan en consecuencia mediante el mejor proceso de selección de rutas. Si se configuran dos rutas con el mismo valor de número de costo, el proceso de selección de ruta prefiere la ruta con el ID de comunidad más bajo. Si las rutas tienen comunidades de costo previo a la mejor ruta desiguales, se selecciona la ruta con la comunidad de costo previo a la mejor ruta más baja como la mejor ruta.
– El ABSOLUTE_VALUE se considera el primer paso para determinar el grado de preferencia de una ruta. Por ejemplo, cuando EIGRP se redistribuye a BGP VPNv4, el tipo ABSOLUTE_VALUE se usa para la comunidad de costos. El IGB_Cost se considera después de comparar la distancia interior (IGP) hasta el siguiente salto. Esto significa que las comunidades de costos con el punto de inserción IGP_COST se consideran después del paso 8 del algoritmo en Cómo funciona el algoritmo de mejor ruta .
BGP Multipath
BGP Multipath permite la instalación en la tabla de enrutamiento IP de múltiples rutas BGP al mismo destino. Estas rutas se instalan en la tabla junto con la mejor ruta para compartir la carga. BGP Multipath no afecta la selección de la mejor ruta. Por ejemplo, un enrutador todavía designa una de las rutas como la mejor ruta, según el algoritmo, y anuncia esta mejor ruta a sus vecinos.
Estas son las características de BGP Multipath:
- eBGP Multipath – maximum-paths n
- iBGP Multipath: maximum-paths ibgp n
- eiBGP Multipath – maximum-paths eibgp n
Para ser candidatos para multirrutas, las rutas hacia el mismo destino deben tener estas características iguales a las características de la mejor ruta:
- Weight
- Local preference
- AS-PATH length
- Origin
- MED
- Uno de estos:
- AS vecino o sub-AS (antes de la adición de la función eiBGP Multipath)
- AS-PATH (después de la adición de la función eiBGP Multipath)
Algunas características de BGP Multipath imponen requisitos adicionales a los candidatos multipath.
Estos son los requisitos adicionales para eBGP multipath:
- La ruta debe aprenderse de un vecino externo o de una confederación externa (eBGP).
- La métrica de IGP para el siguiente salto de BGP debe ser igual a la métrica de IGP de la mejor ruta.
Estos son los requisitos adicionales para iBGP multipath:
- La ruta debe aprenderse de un vecino interno (iBGP).
- La métrica IGP para el siguiente salto de BGP debe ser igual a la métrica IGP de mejor ruta, a menos que el enrutador esté configurado para múltiples rutas iBGP de costo desigual.
BGP inserta hasta n rutas recibidas más recientemente de candidatos multirrutas en la tabla de enrutamiento IP. El valor máximo de n es actualmente 6. El valor predeterminado, cuando la multirruta está deshabilitada, es 1.
Para un equilibrio de carga de costo desigual, también puede usar el ancho de banda de enlace BGP.
Nota : El siguiente salto propio equivalente se realiza en la mejor ruta que se selecciona entre las rutas múltiples eBGP antes de que se reenvíe a los pares internos.