Resumo

  • Um falante BGP escuta TCP 179 e também inicia. Se ambos começarem juntos, duas conexões completas podem representar um peering; a RFC 4271 exige fechar uma.
  • Permanece a conexão iniciada pelo falante com maior BGP Identifier. Para pares externos com Identifiers iguais, a RFC 6286 usa o maior número de AS.
  • A ordem é determinística, não autenticadora. Valores únicos e estáveis, proteção de transporte e um canário que prevê o socket vencedor tornam o resultado auditável.

Ao terminar a manutenção, A abre para B e B abre para A. Cada tentativa chega ao listener oposto. Por instantes há duas quádruplas espelhadas, dois espaços de sequência TCP, dois FSMs BGP e dois OPENs.

Não é o simultaneous open do TCP, no qual SYNs cruzados convergem em uma conexão. Aqui já existem duas conexões independentes. Seus temporizadores e históricos não podem ser fundidos; manter ambas criaria duas autoridades para o mesmo peering.

Escolha compartilhada, não corrida de latência

A RFC 4271 define colisão quando origem e destino de uma conexão são o inverso da outra para os mesmos falantes. O OPEN revela o Identifier remoto e permite associar os FSMs.

Os valores são comparados como inteiros sem sinal de quatro octetos. Sobrevive a conexão iniciada pelo falante de Identifier maior. Se o local é menor, fecha sua conexão OpenConfirm existente e aceita a iniciada pelo remoto; caso contrário, fecha a nova.

“Nova” e “existente” mudam conforme o ponto de vista, mas a regra comum leva ambos ao mesmo transporte. Número maior não representa roteador superior; apenas impede que o atraso dê autoridade ao acaso.

A RFC 4486 reserva Cease 7, Connection Collision Resolution. O código explica o fechamento, porém a prova também precisa seguir a quádrupla sobrevivente por OPEN, KEEPALIVE e rotas.

Paralelo não significa colisão

Dois roteadores podem configurar vários peerings por pares de endereços distintos. Sessões por loopback e interface podem ter políticas independentes. Agrupar apenas por ASN destrói redundância; separar apenas por porta efêmera esconde a colisão.

O inventário une endereços, instância e política. Ativo e passivo são papéis TCP temporários. Depois de Established, a semântica BGP não depende de quem utilizou a porta 179.

A RFC 6286 separou o Identifier do IPv4

A revisão define um inteiro não nulo de quatro octetos, único dentro do AS, sem exigir endereço IPv4 unicast. Valores antigos continuam válidos.

ASes diferentes podem usar a mesma cifra. Em colisão externa com igualdade, fica a conexão iniciada pelo maior AS. Isso não vale dentro do AS, onde duplicidade viola a regra; uma confederação inteira conta como um AS. A igualdade externa só é segura quando os dois lados comprovam suporte à RFC 6286.

O pequeno valor atravessa outras superfícies

O Identifier participa de agregação, Route Reflection e algumas comparações finais. Mudar não é cosmética: sessão, identidade refletida e diagnóstico podem mudar.

O FRRouting expõe bgp router-id e alerta que, sem informações de interface, o automático pode ficar no inválido 0.0.0.0. O BIRD também exige não zero e unicidade no AS, com seleção diferente. Por isso, valor efetivo, processo, VRF, AS, origem e vida devem ser registrados.

Clones, substituições e interfaces tardias podem duplicar ou mover o valor. A intenção configurada e o Identifier observado no OPEN precisam ser comparados.

Limpeza determinística ainda pode oscilar

Uma colisão única pode ser saudável: aparecem dois sockets, um fecha e o outro chega a Established. Contar todo Cease como queda gera falso incidente. Observar apenas o final oculta repetição.

Identifier instável, firewall contra o vencedor, configuração divergente ou automação repetitiva produzem o ciclo conectar–descartar–falhar–repetir. Cada volta pode retirar rotas e consumir CPU, logs e estado TCP.

A regra garante acordo sobre quem deveria sobreviver, não autenticação, firewall ou KEEPALIVE. A telemetria reúne dois sockets e dois OPENs em um episódio e alerta por recorrência, falha do vencedor e churn.

Ordenar não é autenticar

O Identifier no OPEN é uma declaração. A RFC 4272 descreve um ataque limitado: quem completar a sequência TCP/BGP no momento certo e escolher valor vencedor pode derrubar a conexão legítima. Um OPEN arbitrário não basta; sequência, tempo, admissão e autenticação continuam barreiras.

A RFC 2385 define TCP MD5 e a RFC 5925 TCP-AO. Elas protegem segmentos sob chaves, não validam UPDATE nem impedem duplicidade por par legítimo. Cobertura de endereços, custódia, rotação e alarmes integram a mesma mudança.

O canário prevê antes de observar

Primeiro documentar um peering: endereços, ASes, Identifiers e chaves, excluindo sessão paralela intencional. Depois iniciar ambos em ambiente limitado e capturar SYN, quádruplas, OPEN e FSM.

Antes do resultado, calcular o vencedor por Identifier ou, na igualdade externa compatível, por AS. Registrar Cease 7, fechamento, descarte do FSM e retry. A conexão prevista deve chegar a Established.

Por fim verificar importação, exportação, ausência de duplicatas e retiradas, FIB e pacotes quando houver alegação de continuidade. Rollback restaura valor único, chaves conhecidas e um par documentado; não repete clear até dar certo.