Mensagens de erro do BGP
Entender o manuseio de erros para mensagens de atualização BGP
Uma mensagem BGP é considerada malformada quando qualquer um dos atributos da mensagem é malformado. Quando um roteador que participa de uma sessão BGP recebe uma mensagem de atualização malformada, toda a sessão é redefinida por padrão. Isso é indesejável porque as mensagens de atualização com rotas válidas também são afetadas. Para evitar esse comportamento indesejável, o tratamento de erros para mensagens de atualização BGP precisa ser modificado.
Para configurar o [edit protocols bgp]
manuseio de erros para mensagens de atualização bgp, configure a bgp-error-tolerance
declaração no nível de hierarquia [edit protocols bgp group group-name]
ou [edit protocols bgp group group-name neighbor address]
no nível de hierarquia.
bgp-error-tolerance { malformed-route-limit number; malformed-update-log-interval seconds; no-malformed-route-limit; }
Se um atributo contém bandeiras de atributo que entram em conflito com o valor do campo Do Tipo de Atributo, as bandeiras de atributos são redefinidas para o valor correto e a mensagem de atualização é processada. O valor da bit de Comprimento Estendido nas bandeiras de atributo é inalterado porque esse valor define se o comprimento do atributo é de um ou dois octets. Assim, o valor da bandeira do atributo afeta a forma como o pacote de atualização BGP é analisado.
Não há especificação explícita do valor da bandeira do atributo para os atributos do caminho.
As mensagens de atualização malformadas são tratadas caso a caso, dependendo dos valores dos atributos contidos nas mensagens. Existem três maneiras de lidar com mensagens de atualização BGP malformadas, listadas na ordem de diminuição da gravidade.
Notification message approach— O erro de mensagem malformado é registrado localmente, uma mensagem de atualização de código de erro é enviada para a administração do peer, e toda a sessão BGP é redefinida.
Essa abordagem é escolhida quando:
A mensagem de atualização do BGP contém o atributo de alcance MP ou o atributo MP unreach.
O campo NLRI ou a mensagem de atualização BGP não podem ser analisados corretamente devido a uma incompatibilidade entre o comprimento do atributo e o valor do campo de comprimento do atributo.
Treat-as-withdraw approach— Todas as rotas dentro da mensagem de atualização malformada são tratadas como rotas ocultas, a menos que a
keep none
declaração esteja configurada, nesse caso as rotas são descartadas. Na ausência dakeep none
declaração, o número de rotas malformadas ocultas é configurado com um limite, que quando excedido descarta as rotas e impede que quaisquer outras rotas malformadas sejam ocultas. O Junos OS remove as rotas malformadas recém-recebidas quando o limite de rota malformado é alcançado.Attribute discard approach— Os atributos malformados na mensagem de atualização são descartados; no entanto, a mensagem é processada. Não recomendamos usar essa abordagem se os atributos a serem descartados podem afetar a seleção ou a instalação de rotas.
Nota:Se um atributo aparecer mais de uma vez em uma mensagem de atualização, todas as ocorrências do atributo, exceto a primeira, serão descartadas e a mensagem será processada.
As mensagens de atualização do BGP são digitalizadas para os seguintes atributos e são tratadas como malformadas com base nos valores desses atributos:
The origin attribute— Tratado pela abordagem de tratar como retirada.
The AS path attribute— Tratado pela abordagem de tratar como retirada.
The AS 4 path attribute— Tratada pela abordagem de descarte de atributos. Se algum atributo tiver atributo de bandeiras que conflitam com o código do tipo de atributo, o Junos OS redefiniu as bandeiras de atributo ao valor correto. A mensagem de atualização continua a ser processada.
O Junos OS não altera o valor da bit de comprimento estendido nas bandeiras de atributo. Este bit define se o comprimento do atributo é de um octeto ou dois octetes. O valor dessa bandeira afeta a forma como o pacote BGP é analisado. Não há especificação explícita desse valor para os atributos do caminho.
The aggregator attribute— Tratada pela abordagem de descarte de atributos.
The aggregator 4 attribute— Tratada pela abordagem de descarte de atributos.
The next-hop attribute— Tratado pela abordagem de tratar como retirada.
The multiple exit discriminator attribute— Tratado pela abordagem de tratar como retirada.
The local preference attribute— Tratado pela abordagem de tratar como retirada.
The atomic aggregate attribute— Tratada pela abordagem de descarte de atributos.
The community attribute— Tratado pela abordagem de tratar como retirada.
The extended community attribute— Tratado pela abordagem de tratar como retirada.
The originator attribute— Tratado pela abordagem de tratar como retirada.
The cluster attribute— Tratado pela abordagem de tratar como retirada.
The PMSI attribute— Tratado pela abordagem de tratar como retirada.
The MP reach attribute— Tratado pela abordagem da mensagem de notificação.
The MP unreach attribute— Tratado pela abordagem da mensagem de notificação.
The attribute set attribute— Tratado pela abordagem de tratar como retirada.
The AIGP attribute— Tratado pela abordagem de tratar como retirada.
Unknown attribute— Se a bandeira BGP não indicar que este é um atributo opcional, este atributo malformado é tratado pela abordagem da mensagem de notificação.
Quando uma mensagem de atualização do BGP contém vários atributos malformados, a abordagem mais severa desencadeada por um dos atributos é seguida.
Consulte também
Exemplo: Configuração do manuseio de erros para mensagens de atualização BGP
Este exemplo mostra como configurar o manuseio de erros do BGP.
Requisitos
Antes de começar:
Configure interfaces de roteador.
Configure um protocolo de gateway interior (IGP).
Configure BGP.
Configure políticas de roteamento.
Visão geral
Quando um dispositivo de roteamento recebe uma mensagem de atualização com um atributo malformado, o roteador é necessário para redefinir a sessão. Isso é especificado no RFC 4271, A Border Gateway Protocol 4 (BGP-4). As redefinições de sessão impactam não apenas rotas com o atributo ofensivo, mas também outras rotas válidas trocadas durante a sessão. Além disso, esse comportamento pode apresentar uma vulnerabilidade de segurança em potencial no caso de atributos transitivos opcionais. Para minimizar o impacto no roteamento feito por mensagens de atualização malformadas, o rascunho da Internet draft-ietf-idr-error-handling-01.txt, o manuseio revisado de erros para mensagens DE ATUALIZAÇÃO BGP especifica modificações para o manuseio de mensagens de atualização BGP com atributos malformados. O novo manuseio de erros permite manter a sessão estabelecida e manter as rotas válidas trocadas, ao mesmo tempo em que remove as rotas realizadas na mensagem de ATUALIZAÇÃO malformada.
Topologia
In Figura 1, o Dispositivo R1 tem uma sessão interna de peering BGP com o Dispositivo R0, e uma sessão externa de peering BGP com o Dispositivo R2.
Para se proteger contra mensagens de atualização malformadas que causam instabilidade na rede, o Dispositivo R1 tem o manuseio de erros do BGP configurado, como mostrado aqui:
bgp-error-tolerance { malformed-update-log-interval 10; malformed-route-limit 5; }
Por padrão, uma mensagem BGP é considerada malformada quando qualquer um dos atributos da mensagem é malformado. Quando um roteador que participa de uma sessão BGP recebe uma mensagem de atualização malformada, toda a sessão é reiniciada. A bgp-error-tolerance
declaração substitui esse comportamento para que o seguinte tratamento de erro BGP esteja em vigor:
Para erros fatais, o Junos OS envia uma mensagem de notificação intitulada Mensagem de atualização do código de erro e reinicia a sessão BGP. Um erro no atributo MP_{UN}REACH é considerado fatal. A presença de vários atributos MP_{UN}REACH em uma atualização BGP também é considerada um erro fatal. O Junos OS reinicia a sessão BGP se não puder analisar o campo NLRI ou a atualização BGP corretamente. A falha em analisar o pacote de atualização BGP pode acontecer quando o comprimento do atributo não corresponde ao comprimento do valor do atributo.
Para alguns erros nãofatais, o Junos OS trata todas as rotas contidas na mensagem de atualização BGP malformada como rotas retiradas e as instala como ocultas, a menos que a
keep none
declaração seja incluída na configuração do BGP. O Junos OS usa essa abordagem de tratamento de erros para os casos que envolvem qualquer um dos seguintes atributos: ORIGEM, AS_PATH, NEXT_HOP, MULTI_EXIT_DISC, LOCAL_PREF, ORIGINÁRIO, CLUSTER, ATTRSET, PMSI, Comunidade e Comunidade Estendida. Além disso, se algum dos atributos de caminho bem conhecidos obrigatórios estiver faltando, o Junos OS trata a atualização bgp como malformada. Para limitar o uso de memória dessas rotas ocultas malformadas, o Junos OS para de instalar novas rotas ocultas malformadas após o número máximo de rotas ocultas malformadas ser alcançada. Neste exemplo, o número máximo é definido para 5, usando amalformed-route-limit
declaração. O valor padrão é 1000. Opcionalmente, você pode permitir um número ilimitado de rotas ocultas devido a atributos malformados. Faça isso incluindo ano-malformed-route-limit
declaração.Para outros erros não-fetais, o Junos OS descarta os atributos de caminho malformados e continua a processar a mensagem de atualização do BGP. Não é seguro usar essa abordagem nos atributos de caminho que podem afetar a seleção ou a instalação da rota. O Junos OS usa essa abordagem de tratamento de erros para os casos que envolvem qualquer um dos seguintes atributos: ATOMIC_AGGREGATE, AGREGADOR, AGGREGATOR4 e AS4PATH.
Para facilitar a solução de problemas de pacotes malformados, o Junos OS registra o erro listando o código de atributo de caminho malformado, a bandeira, o comprimento, as informações sobre o peer e a família, e o primeiro prefixo da atualização BGP malformada. O registro dos pacotes malformados pode retardar o desempenho do Junos OS se um número significativo de pacotes malformados for recebido em pouco tempo. Para limitar o impacto no desempenho, o Junos OS implementa um algoritmo para registrar uma atualização malformada, suprimir o registro por um intervalo e registrar um resumo. Quando o temporizador de supressão de registro expira, o software registra o número total de atributos malformados recebidos durante o intervalo. Neste exemplo, o timer é definido para 10 segundos, usando a malformed-update-log-interval
declaração. O valor padrão é de 300 segundos(5 minutos).
Configuração rápida da CLI mostra a configuração de todos os dispositivos em Figura 1.
A seção #d202e116__d202e307 descreve as etapas do dispositivo R1.
Configuração
Configuração rápida da CLI
Para configurar este exemplo rapidamente, copie os seguintes comandos, cole-os em um arquivo de texto, remova qualquer quebra de linha, altere os detalhes necessários para combinar com a configuração da sua rede e, em seguida, copie e cole os comandos no CLI no nível de [edit]
hierarquia.
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
Procedimento
Procedimento passo a passo
O exemplo a seguir exige que você navegue por vários níveis na hierarquia de configuração. Para obter informações sobre como navegar na CLI, consulte Usando o Editor de CLI no modo de configuração no Guia de usuário do Junos OS CLI.
Para configurar o manuseio de erros do BGP:
Configure as interfaces do roteador.
[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 um protocolo de gateway interior (IGP), como OSPF ou 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 o número do sistema autônomo (AS) e o ID do roteador.
[edit routing-options] user@R1# set autonomous-system 64510 user@R1# set router-id 192.168.0.1
Configure a política de roteamento.
[edit policy-options policy-statement local-direct] user@R1# set from protocol [local direct] user@R1# set then accept
Configure a sessão 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 as sessões do 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 a tolerância a erros do BGP.
[edit protocols bgp] user@R1# set bgp-error-tolerance
(Opcional) Configure o intervalo de log.
[edit protocols bgp bgp-error-tolerance] user@R1# set malformed-update-log-interval 10
(Opcional) Configure um limite para o número de rotas ocultas para armazenar.
[edit protocols bgp bgp-error-tolerance] user@R1# set malformed-route-limit 5
Resultados
A partir do modo de configuração, confirme sua configuração inserindo os show interfaces
comandos , show protocols
show policy-options
e show routing-options
, Se a saída não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.
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;
Se você terminar de configurar os dispositivos, entre no commit
modo de configuração.
Verificação
Confirme se a configuração está funcionando corretamente.
- Verificando as sessões de vizinhos bgp
- Verificação de rotas ocultas
- Verificando a origem das rotas ocultas
Verificando as sessões de vizinhos bgp
Propósito
Verifique se a tolerância a erros do BGP está habilitada e exibir os contadores relacionados a atributos de caminho malformados.
Ação
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
O campo de atributos malformados mostra que a tolerância a erros está habilitada. Os campos de intervalo de log e limite de rota exibem os valores configurados.
Os contadores de atributos mostram que, na conexão EBGP, vários atributos malformados foram recebidos do Dispositivo R2.
Verificação de rotas ocultas
Propósito
Veja informações sobre rotas ocultas e saiba por que elas estão ocultas.
Ação
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
As rotas ocultas malformadas estão marcadas com MalformedAttr no campo de caminho AS.
Você pode remover as rotas ocultas executando o clear bgp neighbor 10.10.10.2 malformed-route
comando.
Verificando a origem das rotas ocultas
Propósito
Veja informações sobre rotas ocultas e saiba por que elas estão ocultas.
Ação
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
O Junos OS exibe o MalformedA no campo de caminho AS na saída do show route receive-protocol bgp 10.10.10.2 detail hidden
comando.
Você pode remover as rotas ocultas executando o clear bgp neighbor 10.10.10.2 malformed-route
comando.