Resumo

  • O OSPFv2 ordena as instâncias de uma LSA em um espaço linear de inteiros de 32 bits com sinal, de 0x80000001 a 0x7fffffff; um retorno direto ao início perderia para qualquer cópia antiga que ainda estivesse no máximo.
  • O originador primeiro republica a instância máxima com MaxAge, espera que a retirada seja reconhecida e removível e, então, origina o valor inicial como começo de outra época.

Antes da linha reta, houve um pirulito

A primeira especificação publicada do OSPF desenhou seu espaço de sequência como um pirulito. Em RFC 1131, de outubro de 1989, uma haste de inicialização entrava em um laço. A haste ajudaria uma nova encarnação do roteador a ultrapassar vestígios anteriores; o círculo permitiria continuar produzindo versões sem encontrar um fim.

O OSPF versão 2 retirou o laço. RFC 1247, de julho de 1991, listou o espaço em forma de pirulito entre os problemas corrigidos. A nova ordem seria a de inteiros de 32 bits com sinal. 0x80000000 ficou reservado, 0x80000001 passou a ser o menor valor utilizável e 0x7fffffff, o maior.

Comparar ficou simples: para duas instâncias da mesma LSA, a sequência maior é mais recente. Mas uma reta tem uma borda. Quando a LSA no máximo precisava mudar outra vez, o protocolo tinha de explicar como um número pequeno voltaria a significar novidade.

O wrap daria vantagem à memória antiga

Uma LSA é identificada pelo LS type, Link State ID e Advertising Router. A sequência não coloca toda a LSDB em uma linha do tempo; ela ordena somente as versões que compartilham essa identidade.

Se o originador pulasse de 0x7fffffff para 0x80000001, um vizinho que preservasse a cópia máxima rejeitaria corretamente a nova. Para sua regra linear, o conteúdo antigo continuaria sendo mais recente. O flooding passaria a defender o passado contra a atualização pretendida.

O silêncio não resolve a disputa. Uma cópia pode permanecer no banco de um vizinho, aguardar retransmissão ou reaparecer durante a sincronização. LS age cresce, mas não é um relógio comum capaz de provar que todos esqueceram.

Por isso, o OSPFv2 não definiu aritmética circular. Ele exigiu um corte explícito entre duas gerações.

A instância máxima carregou a própria retirada

Quando surge a necessidade de incrementar além de MaxSequenceNumber, RFC 2328 manda o originador fixar em MaxAge a idade da instância máxima e inundá-la novamente. Antecipar assim o envelhecimento é premature aging.

A autorização é limitada à origem. Um roteador pode envelhecer prematuramente sua própria LSA; não pode apagar a de outro Advertising Router. Identidade, sequência máxima e checksum de conteúdo permanecem. O campo age muda fora do checksum, pois precisa aumentar no transporte e no armazenamento.

MaxAge, nesse contexto, é uma retirada ativa. Se sequência e checksum empatam, a instância em MaxAge é considerada mais recente que a gêmea ainda viva. O aviso negativo pode substituir a cópia positiva sem esperar a expiração natural em cada nó.

O alcance também é limitado. Retirar uma LSA não prova que um enlace físico caiu, que o roteador sumiu ou que nenhuma rota alternativa exista.

Esquecer exigia evidência de entrega

Receber MaxAge não autoriza descarte imediato. A LSA continua no banco enquanto estiver na lista de retransmissão de algum vizinho. Também permanece se algum vizinho estiver em Exchange ou Loading, pois uma sincronização incompleta ainda pode carregar o estado que está saindo.

No esgotamento da sequência, o originador espera todos os vizinhos adjacentes reconhecerem a retirada. Somente depois que a instância máxima pode ser removida com segurança ele publica InitialSequenceNumber.

A queda do número passa a ter semântica. O mínimo não disputa com o máximo da mesma geração: a anterior foi retirada, atravessou as adjacências e saiu dos intercâmbios pendentes. O valor inicial inaugura uma nova época.

RFC 1247 também ajustou o processo de Database Description para evitar que uma LSA fosse removida enquanto um vizinho ainda aprendia resumos da versão velha. Não é um commit simultâneo em todo o domínio; é evidência suficiente em cada fronteira relevante para os períodos não se misturarem.

Depois do reboot, o vizinho devolvia o passado

Consumir naturalmente todo o contador demora. Reiniciar e perder memória é comum. Um vizinho pode conservar uma LSA auto-originada antes do reboot com sequência bem acima do estado reinicializado. Para o vizinho, aquela réplica é legitimamente mais nova.

RFC 2328 obriga o autor a aceitar essa memória. Se ainda deve originar a LSA, emite uma sequência acima da recebida. Se não deve mais, coloca a identidade em MaxAge e a retira por flooding. Se a cópia devolvida já está no máximo, aplica a limpeza antes de reiniciar.

Esse comportamento costuma ser chamado de LSA fight-back. O nome não prova ataque. O caso normal é um vizinho ter guardado o que o autor esqueceu. Ser o Advertising Router dá autoridade para atualizar ou retirar; não dá licença para rebaixar a evidência distribuída.

Três critérios decidiam a novidade

Primeiro vem a sequência. Em empate, vence o checksum de maior valor sem sinal. Com sequência e checksum iguais, MaxAge e diferenças de idade previstas na norma ainda resolvem casos; idades próximas são tratadas como a mesma instância.

Cada campo protege uma fronteira. A sequência marca uma nova origem intencional. O checksum revela conteúdos divergentes com o mesmo número. A idade faz a retirada vencer a cópia viva sem transformar atraso comum em novas versões.

Nenhum deles é data global. Comparar números de LSAs diferentes inventaria uma autoridade que o protocolo nunca lhes deu.

DoNotAge cortou renovação, não revogação

O OSPFv2 comum renova LSAs auto-originadas a cada 30 minutos, antes do MaxAge de uma hora. Isso gasta flooding e sequência mesmo sem mudanças. Para circuitos sob demanda, RFC 1793 criou DoNotAge; RFC 4136 ampliou a redução de refresh em topologias estáveis.

DoNotAge elimina a renovação rotineira, não a obrigação de propagar mudança nem a possibilidade de retirada. Conteúdo alterado continua sendo reoriginado; MaxAge continua sendo a negação explícita.

RFC 5340 preservou o núcleo de flooding e recência no OSPFv3 para IPv6, embora formatos e escopos tenham mudado. O conflito nasce da memória distribuída, não do formato do endereço.

Outros números tinham outras funções

Pacotes Database Description têm sequência própria durante a sincronização. Pacotes autenticados também podem usar sequência antirreplay. RFC 6863 separa esse mecanismo de segurança do número interno da LSA.

Uma sequência LSA pergunta qual versão de uma afirmação de roteamento vence. A sequência de autenticação pergunta se um pacote protegido já foi visto no contexto de uma chave. Donos, duração e falha de rollover são diferentes; juntá-las num único alarme apaga o diagnóstico.

O desaparecimento fazia parte do acordo

O OSPF não aumentou o contador nem esperou que o tempo apagasse tudo. A máxima virou o veículo da própria retirada. Reconhecimentos, retransmissões e estado de sincronização mostraram quando a época velha parou de circular. Só então o menor valor legal pôde voltar a significar “novo”.

A lição histórica está nessa definição de esquecimento. Em um sistema distribuído, ausência de mensagem não equivale a remoção. É preciso saber quem revogou, por onde a revogação passou e quando terminou. O intervalo aparentemente vazio entre duas épocas executou trabalho real de protocolo.

Fontes e limites da evidência

As normas estabelecem a máquina de estados e sua evolução. Não medem a frequência atual do esgotamento, não revelam padrões de fabricante nem explicam um incidente particular. MaxAge retira uma LSA no OSPF, não certifica indisponibilidade global. A correção de uma LSA auto-originada após reboot também não prova, sozinha, injeção hostil.