El conjunto de documentos para este producto aspira al uso de un lenguaje no discriminatorio. A los fines de esta documentación, "no discriminatorio" se refiere al lenguaje que no implica discriminación por motivos de edad, discapacidad, género, identidad de raza, identidad étnica, orientación sexual, nivel socioeconómico e interseccionalidad. Puede haber excepciones en la documentación debido al lenguaje que se encuentra ya en las interfaces de usuario del software del producto, el lenguaje utilizado en función de la documentación de la RFP o el lenguaje utilizado por un producto de terceros al que se hace referencia. Obtenga más información sobre cómo Cisco utiliza el lenguaje inclusivo.
Cisco ha traducido este documento combinando la traducción automática y los recursos humanos a fin de ofrecer a nuestros usuarios en todo el mundo contenido en su propio idioma. Tenga en cuenta que incluso la mejor traducción automática podría no ser tan precisa como la proporcionada por un traductor profesional. Cisco Systems, Inc. no asume ninguna responsabilidad por la precisión de estas traducciones y recomienda remitirse siempre al documento original escrito en inglés (insertar vínculo URL).
Este documento describe cómo diagnosticar el problema de convergencia de BGP lento en los routers Cisco IOS® XR que ocurre debido a políticas de ruta no óptimas.
El tiempo de convergencia BGP consta de varios factores. Uno de ellos es el momento de procesar las actualizaciones BGP de ingreso o egreso mediante políticas de ruta configuradas. Hay varias maneras de escribir una política de ruta para realizar una tarea específica. Una manera óptima ayuda a mejorar la convergencia de BGP, minimizar las pérdidas potenciales de tráfico y evitar loops de ruteo temporales. Cisco IOS® XR incluye una herramienta de definición de perfiles que mide el tiempo empleado por una política de ruta específica para estimar su tiempo de procesamiento.
La convergencia BGP lenta es a veces el resultado de políticas de ruta escritas de una manera no óptima.
Hay una herramienta de definición de perfiles de políticas para las políticas de ruta que se puede utilizar sin impacto en el rendimiento para medir el tiempo empleado en cada sentencia de una política de ruta en un punto de conexión específico. Puede verificar el tiempo de ejecución de la política de ruta en este punto de conexión específico. De forma predeterminada, el perfil se habilita sólo para las estadísticas de políticas de ruta agregadas.
router bgp 65000
neighbor 10.0.54.6
remote-as 65000
update-source Loopback0
address-family ipv4 unicast
route-policy INGRESS-ROUTE-POLICY in
!
neighbor 10.0.54.11
remote-as 65001
ebgp-multihop 255
update-source Loopback0
address-family ipv4 unicast
route-policy EGRESS-ROUTE-POLICY out
RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile
Policy profiling data
Policy : INGRESS-ROUTE-POLICY
Pass : 1440233
Drop : 0
# of executions : 1440233
Total execution time : 57095msec <===========
RP/0/RSP1/CPU0:XR1#show bgp ipv4 unicast neighbors 10.0.54.11 | i Update group
Update group: 0.3 Filter-group: 0.5 No Refresh request being processed
RP/0/RSP1/CPU0:XR1#
RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile
Policy profiling data
Policy : EGRESS-ROUTE-POLICY
Pass : 726751
Drop : 0
# of executions : 726751
Total execution time : 108099msec <===========
RP/0/RSP1/CPU0:XR1#
Verá la cantidad acumulativa de tiempo empleado para procesar INGRESS-ROUTE-POLICY y EGRESS-ROUTE-POLICY.
La generación de perfiles se puede aplicar para la política de ruta de ingreso o egreso para cualquier punto de conexión.
RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 ?
debug-policy Attachpoint name
permnet Attachpoint name
import Attachpoint name
export Attachpoint name
interafi-import Attachpoint name
source-rt Attachpoint name
interafi-export Attachpoint name
retain-rt Attachpoint name
addpath Attachpoint name
neighbor-in-dflt Attachpoint name
neighbor-in-vrf Attachpoint name
neighbor-out-dflt Attachpoint name
neighbor-out-vrf Attachpoint name
orf-dflt Attachpoint name
orf-vrf Attachpoint name
dampening-dflt Attachpoint name
dampening-vrf Attachpoint name
default-originate-dflt Attachpoint name
default-originate-vrf Attachpoint name
clear-policy Attachpoint name
show-policy-node0_RSP1_CPU0 Attachpoint name
aggregation-dflt Attachpoint name
aggregation-vrf Attachpoint name
nexthop Attachpoint name
allocate-label Attachpoint name
label-mode Attachpoint name
l2vpn-import Attachpoint name
l2vpn-export Attachpoint name
redistribution-dflt Attachpoint name
redistribution-vrf Attachpoint name
rib-install-dflt Attachpoint name
rib-install-vrf Attachpoint name
network-dflt Attachpoint name
network-vrf Attachpoint name
redistribution-dflt Attachpoint name
redistribution-vrf Attachpoint name
rib-install-dflt Attachpoint name
rib-install-vrf Attachpoint name
network-dflt Attachpoint name
network-vrf Attachpoint name
l2vpn-export-mp2mp Attachpoint name
l2vpn-export-vfi Attachpoint name
l2vpn-export-evi Attachpoint name
l2vpn-export-mspw Attachpoint name
l2vpn-export-instance Attachpoint name
WORD Attachpoint name
RP/0/RSP1/CPU0:XR1#
Puede borrar las estadísticas según sea necesario.
RP/0/RSP1/CPU0:XR1#clear pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile
RP/0/RSP1/CPU0:XR1#clear pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile
Si habilita debug pcl profile detail, obtendrá estadísticas detalladas por entrada de política de ruta.
RP/0/RSP1/CPU0:XR1#debug pcl profile detail
Estos resultados se recopilaron después de que se recibiera y propagara más la escala de tabla BGP de Internet completa.
RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile
Policy profiling data
Policy : INGRESS-ROUTE-POLICY
Pass : 720100
Drop : 0
# of executions : 720100
Total execution time : 222788msec <============== about 3.7 minutes to process ingress updates
Node Id Num visited Exec time Policy engine operation
--------------------------------------------------------------------------------
PXL_0_1 720100 221796msec if as-path aspath-match ... then <==============
PXL_0_3 3525 3msec set local-preference 150 3525 0msec
PXL_0_2 716575 225msec set local-preference 50 716575 82msec
RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile
Policy profiling data
Policy : EGRESS-ROUTE-POLICY
Pass : 720105
Drop : 0
# of executions : 720105
Total execution time : 221975msec <============== about 3.7 minutes to process egress updates
Node Id Num visited Exec time Policy engine operation
--------------------------------------------------------------------------------
PXL_0_1 720105 3005msec if as-path aspath-match ... then
PXL_0_5 0 0msec set med 70 0 0msec
PXL_0_2 720105 218008msec if as-path aspath-match ... then <==============
PXL_0_3 25 0msec set med 80 25 0msec
PXL_0_4 720080 145msec set med 90 720080 76msec
RP/0/RSP1/CPU0:XR1#
Como puede ver, la línea PXL_0_1 para INGRESS-ROUTE-POLICY y PXL_0_2 para EGRESS-ROUTE-POLICY requieren mucho tiempo y ralentizan la convergencia.
Si los correlaciona con las políticas de ruta, puede ver que AS-PATH-SET-11 en INGRESS-ROUTE-POLICY y AS-PATH-SET-22 en EGRESS-ROUTE-POLICY causan el problema. Cada conjunto de trayectoria AS está hecho de 100 líneas de expresión regulares, lo que es una manera bastante ineficiente de escribir una política ya que no aprovecha ninguna optimización posible o el poder del regex.
route-policy INGRESS-ROUTE-POLICY if as-path in AS-PATH-SET-11 then set local-preference 150 else set local-preference 50 endif end-policy
route-policy EGRESS-ROUTE-POLICY if as-path in AS-PATH-SET-21 then set med 70 elseif as-path in AS-PATH-SET-22 then set med 80 else set med 90 endif end-policy
as-path-set AS-PATH-SET-11 ios-regex '^65101 65201_', ios-regex '^65102 65202_', ios-regex '^65103 65203_', ios-regex '^65104 65204_', ios-regex '^65105 65205_', --- removed 90 similar lines --- ios-regex '^65195 65295_', ios-regex '^65196 65296_', ios-regex '^65197 65297_', ios-regex '^65198 65298_', ios-regex '^65199 65299_' end-set as-path-set AS-PATH-SET-21 ios-regex '^$' end-set as-path-set AS-PATH-SET-22 ios-regex '^65169(_65169)*$', ios-regex '^65392(_65392)*$', ios-regex '^65133(_65133)*$', ios-regex '^65231(_65231)*$', ios-regex '^65161(_65161)*$', --- removed 90 similar lines --- ios-regex '^65281(_65281)*$', ios-regex '^65336(_65336)*$', ios-regex '^65238(_65238)*$', ios-regex '^65381(_65381)*$', ios-regex '^65103(_65103)*$' end-set
Para mejorar el rendimiento de las políticas, puede evaluar la configuración de los conjuntos de rutas AS con la operación de coincidencia como trayectoria nativa en lugar de la expresión regular. Alternativamente, puede utilizar expresiones regulares dentro de las políticas de ruta de una manera colapsada, reduciendo así el número de líneas de expresión regulares utilizadas.
Esta tabla enumera los criterios de coincidencia de ruta AS ofrecidos por el lenguaje de políticas de ruta (RPL). Las funciones de coincidencia nativas utilizan un algoritmo de coincidencia binario que ofrece un mejor rendimiento comparado con el motor de coincidencia de expresiones regulares. La mayoría de los escenarios comunes de coincidencia ios-regex podrían escribirse con ellos (o sus combinaciones).
Comando |
Descripción |
is-local |
Determina si el router (u otro router dentro de este sistema autónomo o confederación) originó la ruta |
longitud |
Realiza una verificación condicional basada en la longitud de la trayectoria AS |
neighbor-is |
Comprueba el número o números del sistema autónomo en la parte superior de la trayectoria AS con una secuencia de uno o más valores o parámetros integrales. |
originates-from |
Prueba una trayectoria AS contra la secuencia AS desde el iniciocon el número de AS que originó una ruta. |
transferencia |
Prueba para saber si el entero o parámetro especificado aparece en cualquier lugar de la trayectoria AS o si aparece la secuencia de enteros y parámetros. |
longitud única |
Realiza verificaciones específicas basadas en la longitud de la ruta AS que ignora los duplicados |
Estas son políticas de ruta reorganizadas escritas con la ayuda de criterios de coincidencia nativos. Esto reduce considerablemente el tiempo de procesamiento.
route-policy INGRESS-ROUTE-POLICY if as-path in AS-PATH-SET-11 then set local-preference 150 else set local-preference 50 endif end-policy route-policy EGRESS-ROUTE-POLICY if as-path is-local then set med 70 elseif as-path in AS-PATH-SET-22 and as-path unique-length is 1 then set med 80 else set med 90 endif end-policy as-path-set AS-PATH-SET-11 neighbor-is '65101 65201', neighbor-is '65102 65202', neighbor-is '65103 65203', neighbor-is '65104 65204', neighbor-is '65105 65205', --- removed 90 similar lines --- neighbor-is '65195 65295', neighbor-is '65196 65296', neighbor-is '65197 65297', neighbor-is '65198 65298', neighbor-is '65199 65299' end-set as-path-set AS-PATH-SET-22 originates-from '65169', originates-from '65392', originates-from '65133', originates-from '65231', originates-from '65161', --- removed 90 similar lines --- originates-from '65281', originates-from '65336', originates-from '65238', originates-from '65381', originates-from '65103' end-set
Estos resultados se recopilan después de que se reciba la escala de tabla BGP de Internet completa y se propague más.
RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile
Policy profiling data
Policy : INGRESS-ROUTE-POLICY
Pass : 720100
Drop : 0
# of executions : 720100
Total execution time : 9612msec <============== about 10 seconds to process ingress updates
Node Id Num visited Exec time Policy engine operation
--------------------------------------------------------------------------------
PXL_0_1 720100 8540msec if as-path aspath-match ... then
PXL_0_3 7128 2msec set local-preference 150 7128 1msec
PXL_0_2 712972 276msec set local-preference 50 712972 80msec
RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile
Policy profiling data
Policy : EGRESS-ROUTE-POLICY
Pass : 720126
Drop : 0
# of executions : 720126
Total execution time : 12399msec <============== about 12 seconds to process egress updates
Node Id Num visited Exec time Policy engine operation
--------------------------------------------------------------------------------
PXL_0_1 720126 190msec if as-path is-local then
PXL_0_7 0 0msec set med 70 0 0msec
PXL_0_2 720126 11190msec if as-path aspath-match ... then
PXL_0_4 262734 65msec if as-path unique-length is 1 then
PXL_0_5 25 0msec set med 80 25 0msec
PXL_0_6 720101 164msec set med 90 720101 57msec
GOTO : PXL_0_6
RP/0/RSP1/CPU0:XR1#
Alternativamente, las líneas ios-regex podrían colapsarse. Esto también ayuda a mejorar el rendimiento.
route-policy INGRESS-ROUTE-POLICY if as-path in (ios-regex '^(65101_65201|65102_65202|65103_65203|65104_65204|65105_65205|65106_65206|65107_65207|65108_65208|65109_65209|65110_65210)') then set local-preference 150 endif if as-path in (ios-regex '^(65111_65211|65112_65212|65113_65213|65114_65214|65115_65215|65116_65216|65117_65217|65118_65218|65119_65219|65120_65220)') then set local-preference 150 endif if as-path in (ios-regex '^(65121_65221|65122_65222|65123_65223|65124_65224|65125_65225|65126_65226|65127_65227|65128_65228|65129_65229|65130_65230)') then set local-preference 150 endif if as-path in (ios-regex '^(65131_65231|65132_65232|65133_65233|65134_65234|65135_65235|65136_65236|65137_65237|65138_65238|65139_65239|65140_65240)') then set local-preference 150 endif if as-path in (ios-regex '^(65141_65241|65142_65242|65143_65243|65144_65244|65145_65245|65146_65246|65147_65247|65148_65248|65149_65249|65150_65250)') then set local-preference 150 endif if as-path in (ios-regex '^(65151_65251|65152_65252|65153_65253|65154_65254|65155_65255|65156_65256|65157_65257|65158_65258|65159_65259|65160_65260)') then set local-preference 150 endif if as-path in (ios-regex '^(65161_65261|65162_65262|65163_65263|65164_65264|65165_65265|65166_65266|65167_65267|65168_65268|65169_65269|65170_65270)') then set local-preference 150 endif if as-path in (ios-regex '^(65171_65271|65172_65272|65173_65273|65174_65274|65175_65275|65176_65276|65177_65277|65178_65278|65179_65279|65180_65280)') then set local-preference 150 endif if as-path in (ios-regex '^(65181_65281|65182_65282|65183_65283|65184_65284|65185_65285|65186_65286|65187_65287|65188_65288|65189_65289|65190_65290)') then set local-preference 150 else set local-preference 50 endif end-policy route-policy EGRESS-ROUTE-POLICY if as-path in (ios-regex '^$') then set med 70 endif if as-path in (ios-regex '^65169(_65169)*$|^65392(_65392)*$|^65133(_65133)*$|^65231(_65231)*$|^65161(_65161)*$') then set med 80 endif if as-path in (ios-regex '^65354(_65354)*$|^65331(_65331)*$|^65342(_65342)*$|^65295(_65295)*$|^65208(_65208)*$') then set med 80 endif if as-path in (ios-regex '^65149(_65149)*$|^65350(_65350)*$|^65115(_65115)*$|^65300(_65300)*$|^65322(_65322)*$') then set med 80 endif if as-path in (ios-regex '^65102(_65102)*$|^65329(_65329)*$|^65237(_65237)*$|^65218(_65218)*$|^65153(_65153)*$') then set med 80 endif if as-path in (ios-regex '^65263(_65263)*$|^65116(_65116)*$|^65112(_65112)*$|^65114(_65114)*$|^65378(_65378)*$') then set med 80 endif if as-path in (ios-regex '^65105(_65105)*$|^65296(_65296)*$|^65211(_65211)*$|^65317(_65317)*$|^65115(_65115)*$') then set med 80 endif if as-path in (ios-regex '^65371(_65371)*$|^65214(_65214)*$|^65325(_65325)*$|^65354(_65354)*$|^65384(_65384)*$') then set med 80 endif if as-path in (ios-regex '^65220(_65220)*$|^65277(_65277)*$|^65219(_65219)*$|^65213(_65213)*$|^65336(_65336)*$') then set med 80 endif if as-path in (ios-regex '^65249(_65249)*$|^65112(_65112)*$|^65314(_65314)*$|^65385(_65385)*$|^65152(_65152)*$') then set med 80 endif if as-path in (ios-regex '^65196(_65196)*$|^65252(_65252)*$|^65162(_65162)*$|^65271(_65271)*$|^65357(_65357)*$') then set med 80 endif if as-path in (ios-regex '^65317(_65317)*$|^65360(_65360)*$|^65198(_65198)*$|^65256(_65256)*$|^65246(_65246)*$') then set med 80 endif if as-path in (ios-regex '^65356(_65356)*$|^65359(_65359)*$|^65302(_65302)*$|^65118(_65118)*$|^65346(_65346)*$') then set med 80 endif if as-path in (ios-regex '^65225(_65225)*$|^65307(_65307)*$|^65313(_65313)*$|^65189(_65189)*$|^65288(_65288)*$') then set med 80 endif if as-path in (ios-regex '^65381(_65381)*$|^65292(_65292)*$|^65145(_65145)*$|^65325(_65325)*$|^65361(_65361)*$') then set med 80 endif if as-path in (ios-regex '^65156(_65156)*$|^65184(_65184)*$|^65367(_65367)*$|^65302(_65302)*$|^65290(_65290)*$') then set med 80 endif if as-path in (ios-regex '^65351(_65351)*$|^65116(_65116)*$|^65341(_65341)*$|^65123(_65123)*$|^65258(_65258)*$') then set med 80 endif if as-path in (ios-regex '^65397(_65397)*$|^65302(_65302)*$|^65188(_65188)*$|^65187(_65187)*$|^65358(_65358)*$') then set med 80 endif if as-path in (ios-regex '^65217(_65217)*$|^65107(_65107)*$|^65203(_65203)*$|^65377(_65377)*$|^65381(_65381)*$') then set med 80 endif if as-path in (ios-regex '^65219(_65219)*$|^65308(_65308)*$|^65364(_65364)*$|^65277(_65277)*$|^65396(_65396)*$') then set med 80 endif if as-path in (ios-regex '^65281(_65281)*$|^65336(_65336)*$|^65238(_65238)*$|^65381(_65381)*$|^65103(_65103)*$') then set med 80 else set med 90 endif end-policy
Estos resultados se recopilaron después de que se reciba y se propague más a fondo la escala de tabla BGP de Internet.
RP/0/RSP1/CPU0:XR1#show pcl protocol bgp speaker-0 neighbor-in-dflt default-IPv4-Uni-10.0.54.6 policy profile
Policy profiling data
Policy : INGRESS-ROUTE-POLICY
Pass : 720100
Drop : 0
# of executions : 720100
Total execution time : 30119msec <============== about 30 seconds to process ingress updates
Node Id Num visited Exec time Policy engine operation
--------------------------------------------------------------------------------
PXL_0_1 720100 4434msec if as-path aspath-match ... then
PXL_0_2 361 0msec set local-preference 150 PXL_0_3 720100 3039msec if as-path aspath-match ... then
--- removed lines --- GOTO : PXL_0_3 RP/0/RSP1/CPU0:XR1#
show pcl protocol bgp speaker-0 neighbor-out-dflt default-IPv4-Uni-UpdGrp-0.3-Out policy profile Policy profiling data Policy : EGRESS-ROUTE-POLICY Pass : 720110 Drop : 0 # of executions : 720110 Total execution time : 106566msec <============== about 1.8 minutes to process egress updates Node Id Num visited Exec time Policy engine operation -------------------------------------------------------------------------------- PXL_0_1 720110 2958msec if as-path aspath-match ... then
PXL_0_2 0 0msec set med 70 PXL_0_3 720110 5222msec if as-path aspath-match ... then
PXL_0_4 3 0msec set med 80 PXL_0_5 720110 4979msec if as-path aspath-match ... then
PXL_0_6 set med 80
--- removed lines --- GOTO : PXL_0_3 RP/0/RSP1/CPU0:XR1#
El rendimiento de una política de ruta se puede mejorar con la coincidencia como ruta nativa o patrones de expresión regular colapsados.
Revisión | Fecha de publicación | Comentarios |
---|---|---|
2.0 |
31-Jan-2022 |
Edición secundaria |
1.0 |
14-Jan-2022 |
Versión inicial |