Mensajes de error de BGP
Descripción del control de errores para mensajes de actualización de BGP
Un mensaje BGP se considera mal formado cuando cualquiera de los atributos del mensaje está mal formado. Cuando un enrutador que participa en una sesión BGP recibe un mensaje de actualización con formato incorrecto, toda la sesión se restablece de forma predeterminada. Esto no es deseable porque los mensajes de actualización con rutas válidas también se ven afectados. Para evitar este comportamiento no deseado, es necesario modificar el control de errores para los mensajes de actualización de BGP.
Para configurar el control de errores para los mensajes de actualización de BGP, configure la bgp-error-tolerance
instrucción en el nivel , o [edit protocols bgp group group-name neighbor address]
jerárquico[edit protocols bgp]
[edit protocols bgp group group-name]
.
bgp-error-tolerance { malformed-route-limit number; malformed-update-log-interval seconds; no-malformed-route-limit; }
Si un atributo contiene indicadores de atributo que entran en conflicto con el valor del campo Tipo de atributo, los indicadores de atributo se restablecen al valor correcto y se procesa el mensaje de actualización. El valor del bit de longitud extendida en los indicadores de atributo no cambia porque este valor define si la longitud del atributo es uno o dos octetos. Por lo tanto, el valor del indicador de atributo afecta a cómo se analiza el paquete de actualización BGP.
No hay ninguna especificación explícita para el valor de indicador de atributo para los atributos de ruta.
Los mensajes de actualización con formato incorrecto se tratan caso por caso, dependiendo de los valores de los atributos contenidos en los mensajes. Hay tres formas de controlar los mensajes de actualización de BGP con formato incorrecto, enumerados en orden decreciente de gravedad.
Notification message approach: el error del mensaje con formato incorrecto se registra localmente, se envía un mensaje de actualización del código de error a la administración del par y se restablece toda la sesión del BGP.
Este enfoque se elige cuando:
El mensaje de actualización de BGP contiene el atributo MP reach o el atributo MP unreach.
El campo NLRI o el mensaje de actualización de BGP no se pueden analizar correctamente debido a una discrepancia entre la longitud del atributo y el valor del campo de longitud del atributo.
Treat-as-withdraw approach: todas las rutas del mensaje de actualización con formato incorrecto se tratan como rutas ocultas, a menos que la
keep none
instrucción esté configurada, en cuyo caso las rutas se descartan. En ausencia de lakeep none
instrucción, el número de rutas ocultas mal formadas se configura con un límite, que cuando se excede descarta las rutas y evita que se oculten otras rutas mal formadas. Junos OS elimina las rutas mal formadas recién recibidas cuando se alcanza el límite de rutas mal formadas.Attribute discard approach: se descartan los atributos con formato incorrecto en el mensaje de actualización; sin embargo, el mensaje se procesa. No se recomienda utilizar este enfoque si los atributos que se van a descartar pueden afectar a la selección o instalación de rutas.
Nota:Si un atributo aparece más de una vez en un mensaje de actualización, se descartarán todas las apariciones del atributo que no sean la primera y se procesará el mensaje.
Los mensajes de actualización de BGP se analizan en busca de los siguientes atributos y se tratan como mal formados en función de los valores de estos atributos:
The origin attribute—Manejado por el enfoque de tratar como retirar.
The AS path attribute—Manejado por el enfoque de tratar como retirar.
The AS 4 path attribute: se maneja mediante el enfoque de descarte de atributos. Si algún atributo tiene indicadores de atributo que entran en conflicto con el código de tipo de atributo, Junos OS restablece los indicadores de atributo al valor correcto. El mensaje de actualización continúa procesándose.
Junos OS no cambia el valor del bit de longitud extendida en los indicadores de atributos. Este bit define si la longitud del atributo es un octeto o dos octetos. El valor de este indicador afecta al modo en que se analiza el paquete BGP. No hay ninguna especificación explícita de este valor para los atributos de ruta.
The aggregator attribute: se maneja mediante el enfoque de descarte de atributos.
The aggregator 4 attribute: se maneja mediante el enfoque de descarte de atributos.
The next-hop attribute—Manejado por el enfoque de tratar como retirar.
The multiple exit discriminator attribute—Manejado por el enfoque de tratar como retirar.
The local preference attribute—Manejado por el enfoque de tratar como retirar.
The atomic aggregate attribute: se maneja mediante el enfoque de descarte de atributos.
The community attribute—Manejado por el enfoque de tratar como retirar.
The extended community attribute—Manejado por el enfoque de tratar como retirar.
The originator attribute—Manejado por el enfoque de tratar como retirar.
The cluster attribute—Manejado por el enfoque de tratar como retirar.
The PMSI attribute—Manejado por el enfoque de tratar como retirar.
The MP reach attribute: se maneja mediante el enfoque de mensaje de notificación.
The MP unreach attribute: se maneja mediante el enfoque de mensaje de notificación.
The attribute set attribute—Manejado por el enfoque de tratar como retirar.
The AIGP attribute—Manejado por el enfoque de tratar como retirar.
Unknown attribute: si el indicador BGP no indica que se trata de un atributo opcional, el enfoque de mensaje de notificación controla este atributo con formato incorrecto.
Cuando un mensaje de actualización de BGP contiene varios atributos mal formados, se sigue el enfoque más grave desencadenado por uno de los atributos.
Consulte también
Ejemplo: Configuración del control de errores para mensajes de actualización de BGP
En este ejemplo se muestra cómo configurar el control de errores de BGP.
Requisitos
Antes de empezar:
Configure las interfaces del enrutador.
Configure un protocolo de puerta de enlace interior (IGP).
Configure BGP.
Configure las políticas de enrutamiento.
Descripción general
Cuando un dispositivo de enrutamiento recibe un mensaje de actualización con un atributo mal formado, se requiere que el enrutador restablezca la sesión. Esto se especifica en RFC 4271, Protocolo de puerta de enlace de borde 4 (BGP-4). Los restablecimientos de sesión impactan no solo a las rutas con el atributo ofensivo, sino también a otras rutas válidas intercambiadas durante la sesión. Además, este comportamiento puede presentar una vulnerabilidad de seguridad potencial en el caso de atributos transitivos opcionales. Para minimizar el impacto en el enrutamiento realizado por mensajes de actualización con formato incorrecto, el borrador de Internet draft-ietf-idr-error-handling-01.txt, Revisión de errores para mensajes BGP UPDATE especifica modificaciones para controlar el mensaje de actualización BGP con atributos mal formados. El nuevo manejo de errores permite mantener la sesión establecida y mantener las rutas válidas intercambiadas, al tiempo que elimina las rutas transportadas en el mensaje UPDATE mal formado.
Topología
En Figura 1, el dispositivo R1 tiene una sesión de emparejamiento BGP interna con el dispositivo R0 y una sesión de emparejamiento BGP externa con el dispositivo R2.
Para protegerse contra mensajes de actualización con formato incorrecto que causen inestabilidad en la red, el dispositivo R1 tiene configurado el control de errores de BGP, como se muestra a continuación:
bgp-error-tolerance { malformed-update-log-interval 10; malformed-route-limit 5; }
De forma predeterminada, un mensaje BGP se considera mal formado cuando cualquiera de los atributos del mensaje está mal formado. Cuando un enrutador que participa en una sesión BGP recibe un mensaje de actualización con formato incorrecto, se restablece toda la sesión. La bgp-error-tolerance
instrucción reemplaza este comportamiento para que el siguiente control de errores BGP esté en efecto:
En el caso de errores graves, Junos OS envía un mensaje de notificación titulado Mensaje de actualización del código de error y restablece la sesión BGP. Un error en el atributo MP_{UN}REACH se considera fatal. La presencia de varios atributos MP_{UN}REACH en una actualización de BGP también se considera un error grave. Junos OS restablece la sesión BGP si no puede analizar correctamente el campo NLRI o la actualización del BGP. No se puede analizar el paquete de actualización BGP cuando la longitud del atributo no coincide con la longitud del valor del atributo.
Para algunos errores no graves, Junos OS trata todas las rutas contenidas en el mensaje de actualización de BGP con formato incorrecto como rutas retiradas y las instala como ocultas, a menos que la
keep none
instrucción se incluya en la configuración de BGP. Junos OS utiliza este enfoque de control de errores para los casos que implican cualquiera de los siguientes atributos: ORIGIN, AS_PATH, NEXT_HOP, MULTI_EXIT_DISC, LOCAL_PREF, ORIGINATORS, CLUSTER, ATTRSET, PMSI, comunidad y comunidad extendida. Además, si falta alguno de los atributos de ruta conocidos obligatorios, Junos OS trata la actualización del BGP como mal formada. Para limitar el uso de memoria de estas rutas ocultas mal formadas, Junos OS detiene la instalación de nuevas rutas ocultas mal formadas después de alcanzar el número máximo de dichas rutas ocultas mal formadas. En este ejemplo, el número máximo se establece en 5, utilizando lamalformed-route-limit
instrucción. El valor predeterminado es 1000. Opcionalmente, puede permitir un número ilimitado de rutas ocultas debido a atributos mal formados. Para ello, incluya lano-malformed-route-limit
instrucción.Para otros errores no graves, Junos OS descarta los atributos de ruta con formato incorrecto y continúa procesando el mensaje de actualización del BGP. No es seguro utilizar este enfoque en los atributos de ruta que pueden afectar a la selección o instalación de rutas. Junos OS utiliza este enfoque de control de errores para los casos que implican cualquiera de los siguientes atributos: ATOMIC_AGGREGATE, AGGREGATOR, AGGREGATOR4 y AS4PATH.
Para facilitar la solución de problemas de paquetes con formato incorrecto, Junos OS registra el error al enumerar el código de atributo de ruta con formato incorrecto, la marca, la longitud, la información sobre el par y la familia, y el primer prefijo de la actualización del BGP con formato incorrecto. El registro de los paquetes con formato incorrecto puede ralentizar el rendimiento de Junos OS si se recibe un número significativo de paquetes con formato incorrecto en poco tiempo. Para limitar el impacto en el rendimiento, Junos OS implementa un algoritmo para registrar una actualización con formato incorrecto, suprimir el registro durante un intervalo y registrar un resumen. Cuando expira el temporizador de supresión de registros, el software registra el número total de atributos con formato incorrecto recibidos durante el intervalo. En este ejemplo, el temporizador se establece en 10 segundos, utilizando la malformed-update-log-interval
instrucción. El valor predeterminado es 300 segundos (5 minutos).
Configuración rápida de CLI muestra la configuración de todos los dispositivos en Figura 1.
En la sección #d202e116__d202e307 se describen los pasos del dispositivo R1.
Configuración
Configuración rápida de CLI
Para configurar rápidamente este ejemplo, copie los siguientes comandos, péguelos en un archivo de texto, elimine los saltos de línea, cambie los detalles necesarios para que coincidan con su configuración de red y, a continuación, copie y pegue los comandos en la CLI en el nivel de [edit]
jerarquía.
Dispositivo R0
set interfaces fe-1/2/0 unit 0 description to-R1 set interfaces fe-1/2/0 unit 0 family inet address 172.16.10.5/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set protocols bgp group internal-peers type internal set protocols bgp group internal-peers local-address 192.168.0.3 set protocols bgp group internal-peers export local-direct set protocols bgp group internal-peers neighbor 192.168.0.1 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement local-direct from protocol [local direct] set policy-options policy-statement local-direct then accept set routing-options autonomous-system 64510 set routing-options router-id 192.168.0.3
Dispositivo R1
set interfaces fe-1/2/1 unit 0 description to-R2 set interfaces fe-1/2/1 unit 0 family inet address 10.10.10.1/30 set interfaces fe-1/2/0 unit 0 description to-R0 set interfaces fe-1/2/0 unit 0 family inet address 172.16.10.6/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set protocols bgp bgp-error-tolerance malformed-update-log-interval 10 set protocols bgp bgp-error-tolerance malformed-route-limit 5 set protocols bgp group internal-peers type internal set protocols bgp group internal-peers local-address 192.168.0.1 set protocols bgp group internal-peers export local-direct set protocols bgp group internal-peers neighbor 192.168.0.3 set protocols bgp group external-peers type external set protocols bgp group external-peers export local-direct set protocols bgp group external-peers peer-as 64511 set protocols bgp group external-peers neighbor 10.10.10.2 set protocols ospf area 0.0.0.0 interface fe-1/2/1.0 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement local-direct from protocol [local direct] set policy-options policy-statement local-direct then accept set routing-options autonomous-system 64510 set routing-options router-id 192.168.0.1
Dispositivo R2
set interfaces fe-1/2/1 unit 0 description to-R1 set interfaces fe-1/2/1 unit 0 family inet address 10.10.10.2/30 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp group external-peers type external set protocols bgp group external-peers export local-direct set protocols bgp group external-peers peer-as 64510 set protocols bgp group external-peers neighbor 10.10.10.1 set protocols ospf area 0.0.0.0 interface fe-1/2/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement local-direct from protocol [local direct] set policy-options policy-statement local-direct then accept set routing-options autonomous-system 64511 set routing-options router-id 192.168.10.2
Procedimiento
Procedimiento paso a paso
En el ejemplo siguiente, debe explorar por varios niveles en la jerarquía de configuración. Para obtener información acerca de cómo navegar por la CLI, consulte Uso del editor de CLI en modo de configuración en la Guía del usuario de CLI de Junos OS.
Para configurar el control de errores de BGP:
Configure las interfaces del enrutador.
[edit interfaces] user@R1# set fe-1/2/1 unit 0 description to-R2 user@R1# set fe-1/2/1 unit 0 family inet address 10.10.10.1/30 user@R1# set fe-1/2/0 unit 0 description to-R0 user@R1# set fe-1/2/0 unit 0 family inet address 172.16.10.6/30 user@R1# set lo0 unit 0 family inet address 192.168.0.1/32
Configure un protocolo de puerta de enlace interior (IGP), como OSPF o IS-IS.
[edit protocols ospf area 0.0.0.0] user@R1# set interface fe-1/2/1.0 user@R1# set interface fe-1/2/0.0 user@R1# set interface lo0.0 passive
Configure el número de sistema autónomo (AS) y ID del enrutador.
[edit routing-options] user@R1# set autonomous-system 64510 user@R1# set router-id 192.168.0.1
Configure la directiva de enrutamiento.
[edit policy-options policy-statement local-direct] user@R1# set from protocol [local direct] user@R1# set then accept
Configure la sesión de EBGP.
[edit protocols bgp group external-peers] user@R1# set type external user@R1# set export local-direct user@R1# set peer-as 64511 user@R1# set neighbor 10.10.10.2
Configure las sesiones de IBGP.
[edit protocols bgp group internal-peers] user@R1# set type internal user@R1# set local-address 192.168.0.1 user@R1# set export local-direct user@R1# set neighbor 192.168.0.3
Habilite la tolerancia a errores de BGP.
[edit protocols bgp] user@R1# set bgp-error-tolerance
(Opcional) Configure el intervalo de registro.
[edit protocols bgp bgp-error-tolerance] user@R1# set malformed-update-log-interval 10
(Opcional) Configure un límite para el número de rutas ocultas que se van a almacenar.
[edit protocols bgp bgp-error-tolerance] user@R1# set malformed-route-limit 5
Resultados
Desde el modo de configuración, escriba los comandos , , y , para show routing-options
confirmar la show interfaces
configuración. show protocols
show policy-options
Si el resultado no muestra la configuración deseada, repita las instrucciones en este ejemplo para corregir la configuración.
user@R1# show interfaces
fe-1/2/0 {
unit 0 {
description to-R0;
family inet {
address 172.16.10.6/30;
}
}
}
fe-1/2/1 {
unit 0 {
description to-R2;
family inet {
address 10.10.10.1/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.0.1/32;
}
}
}
user@R1# show protocols
bgp {
bgp-error-tolerance {
malformed-update-log-interval 10;
malformed-route-limit 5;
}
group internal-peers {
type internal;
local-address 192.168.0.1;
export local-direct;
neighbor 192.168.0.3;
}
group external-peers {
type external;
export local-direct;
peer-as 64511;
neighbor 10.10.10.2;
}
}
ospf {
area 0.0.0.0 {
interface fe-1/2/1.0;
interface fe-1/2/0.0;
interface lo0.0 {
passive;
}
}
}
user@R1# show policy-options
policy-statement local-direct {
from protocol [local direct];
then accept;
}
user@R1# show routing-options
router-id 192.168.0.1;
autonomous-system 64510;
Si ha terminado de configurar los dispositivos, ingrese commit
desde el modo de configuración.
Verificación
Confirme que la configuración funcione correctamente.
- Comprobación de las sesiones de vecino de BGP
- Comprobación de rutas ocultas
- Verificación del origen de las rutas ocultas
Comprobación de las sesiones de vecino de BGP
Propósito
Compruebe que la tolerancia a errores de BGP esté habilitada y muestre los contadores relacionados con los atributos de ruta de acceso con formato incorrecto.
Acción
user@R1# show bgp neighbor Peer: 10.10.10.2+50058 AS 64511 Local: 10.10.10.1+179 AS 64510 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ local-direct ] Options: <Preference PeerAS Refresh> Holdtime: 90 Preference: 170 Number of flaps: 0 Malformed attributes log interval: 10 route limit: 5 Attribute: ORIGIN(1) Last Received: 0 Total Received: 3 Attribute: LOCAL_PREF(5) Last Received: 0 Total Received: 2 Peer ID: 192.168.10.2 Local ID: 192.168.10.1 Active Holdtime: 90 Keepalive Interval: 30 Group index: 0 Peer index: 0 BFD: disabled, down Local Interface: fe-1/2/1.0 NLRI for restart configured on peer: inet-unicast NLRI advertised by peer: inet-unicast NLRI for this session: inet-unicast Peer supports Refresh capability (2) Stale routes from peer are kept for: 300 Peer does not support Restarter functionality NLRI that restart is negotiated for: inet-unicast NLRI of received end-of-rib markers: inet-unicast NLRI of all end-of-rib markers sent: inet-unicast Peer supports 4 byte AS extension (peer-as 64511) Peer does not support Addpath Table inet.0 Bit: 10000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 3 Accepted prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 2 Last traffic (seconds): Received 25 Sent 17 Checked 73 Input messages: Total 2702 Updates 10 Refreshes 0 Octets 51652 Output messages: Total 2701 Updates 6 Refreshes 0 Octets 51571 Output Queue[0]: 0 Peer: 192.168.10.3+179 AS 64510 Local: 192.168.10.1+51127 AS 64510 Type: Internal State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ local-direct ] Options: <Preference LocalAddress Refresh> Local Address: 192.168.10.1 Holdtime: 90 Preference: 170 Number of flaps: 0 Malformed attributes log interval: 10 route limit: 5 Peer ID: 192.168.10.3 Local ID: 192.168.10.1 Active Holdtime: 90 Keepalive Interval: 30 Group index: 1 Peer index: 0 BFD: disabled, down NLRI for restart configured on peer: inet-unicast NLRI advertised by peer: inet-unicast NLRI for this session: inet-unicast Peer supports Refresh capability (2) Stale routes from peer are kept for: 300 Peer does not support Restarter functionality NLRI that restart is negotiated for: inet-unicast NLRI of received end-of-rib markers: inet-unicast NLRI of all end-of-rib markers sent: inet-unicast Peer supports 4 byte AS extension (peer-as 64510) Peer does not support Addpath Table inet.0 Bit: 10001 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 3 Accepted prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 2 Last traffic (seconds): Received 5 Sent 24 Checked 51 Input messages: Total 417 Updates 3 Refreshes 0 Octets 8006 Output messages: Total 421 Updates 2 Refreshes 0 Octets 8136 Output Queue[0]: 0
Significado
El campo Atributos con formato incorrecto muestra que la tolerancia a errores está habilitada. Los campos Intervalo de registro y Límite de ruta muestran los valores configurados.
Los contadores de atributos muestran que en la conexión EBGP se recibieron varios atributos con formato incorrecto del dispositivo R2.
Comprobación de rutas ocultas
Propósito
Vea información sobre rutas ocultas y descubra por qué están ocultas.
Acción
user@R1> show route hidden detail inet.0: 42 destinations, 45 routes (36 active, 0 holddown, 6 hidden) 10.0.0.0/32 (1 entry, 0 announced) BGP Next hop type: Router Address: 0x93d8b0c Next-hop reference count: 5 Source: 10.10.10.2 Next hop type: Router, Next hop index: 782 Next hop: via fe-1/2/1.0, selected Session Id: 0x1 State: <Hidden Ext> Local AS: 1 Peer AS: 1 Age: 5:32 Metric2: 1 Validation State: unverified Task: BGP_1.10.10.5.62+56218 AS path: I (MalformedAttr) Router ID: 192.168.0.2 10.0.0.1/32 (1 entry, 0 announced) BGP Next hop type: Router Address: 0x93d8b0c Next-hop reference count: 5 Source: 10.10.10.2 Next hop type: Router, Next hop index: 782 Next hop: via fe-1/2/1.0, selected Session Id: 0x1 Indirect next hop: 953c000 - INH Session ID: 0x3 State: <Hidden Int Ext> Local AS: 1 Peer AS: 1 Age: 5:32 Metric2: 1 Validation State: unverified Task: BGP_1.10.10.5.62+56218 AS path: I (MalformedAttr) Router ID: 192.168.0.2
Significado
Las rutas ocultas mal formadas se marcan con MalformedAttr en el campo de ruta del AS.
Puede eliminar las rutas ocultas ejecutando el clear bgp neighbor 10.10.10.2 malformed-route
comando.
Verificación del origen de las rutas ocultas
Propósito
Vea información sobre rutas ocultas y descubra por qué están ocultas.
Acción
user@R1> show route receive-protocol bgp 10.10.10.2 detail hidden inet.0: 42 destinations, 45 routes (36 active, 0 holddown, 6 hidden) 10.0.0.0/32 (1 entry, 0 announced) Nexthop: 10.10.10.2 Localpref: 100 AS path: I (MalformedAttr) 10.0.0.1/32 (1 entry, 0 announced) Nexthop: 10.10.10.2 Localpref: 100 AS path: I (MalformedAttr)
Significado
Junos OS muestra MalformedAttr en el campo de ruta del AS en la salida del show route receive-protocol bgp 10.10.10.2 detail hidden
comando.
Puede eliminar las rutas ocultas ejecutando el clear bgp neighbor 10.10.10.2 malformed-route
comando.