Este artigo foi escrito para mim mesmo, para que, se necessário, atualize rapidamente minha memória e entenda a teoria. Eu decidi publicá-lo, talvez seja útil para alguém, ou talvez eu esteja enganado em alguma coisa.
Neste artigo, tentaremos entender a teoria do protocolo OSPF. Não vamos nos aprofundar na história e no processo de criação do protocolo; essas informações são abundantes em quase todos os artigos sobre OSPF. Vamos tentar entender com mais detalhes como o OSPF funciona e como ele constrói sua tabela de roteamento. É importante fornecer uma definição geral do protocolo:
O OSPF (Open Shortest Path First) é um protocolo de roteamento dinâmico baseado na tecnologia do estado do link e usa o algoritmo Dijkstra para encontrar o caminho mais curto.
Surge imediatamente a pergunta: o que é a tecnologia de rastreamento de canais? Eu acho que esse nome não é totalmente bem-sucedido. Aconteceu que existem dois tipos de protocolos de roteamento dinâmico: Link-state e Distance-Vector. Considere seus princípios de trabalho:
Nos protocolos de vetor de distância, o roteador reconhece as informações de rota por meio de roteadores conectados diretamente ao mesmo segmento de rede. Ou seja, o roteador tem informações sobre a topologia apenas dentro dos limites dos roteadores vizinhos e não tem idéia de como a topologia por trás desses roteadores é organizada, concentrando-se apenas nas métricas. Nos protocolos Link-state, cada roteador não deve conhecer facilmente as melhores rotas para todas as redes remotas, mas também deve ter na memória um mapa de rede completo com todas as conexões existentes entre outros roteadores, inclusive. Isso é conseguido através da construção de uma base especial de LSDB, mas mais sobre isso posteriormente.
Então, vamos começar como é construído o LSDB a partir do qual o roteador aprende sobre todas as rotas? Construímos a topologia inicial para o estudo. É assim:

Vamos configurar o OSPF. Onde o OSPF começa? C estabelecendo uma vizinhança entre roteadores - depois de ativar o OSPF nas interfaces do roteador, os roteadores começam a enviar mensagens de saudação. Esta mensagem é enviada para o endereço multicast - 224.0.0.5 a cada 10 segundos (Hello Timer). Ativaremos o OSPF no roteador vIOS1 primeiro.
Vamos ver como é o pacote Hello:

Na mensagem, é importante prestar atenção a campos como ID da área, roteador OSPF de origem. Quando o processo OSPF é iniciado, o ID do roteador é selecionado, o que é necessário para identificar o roteador entre outros roteadores OSPF. As regras para escolher este parâmetro são as seguintes:
1. Configurado por um comando especial de identificação de roteador ABCD - no formato de endereço IP.
2. Uma interface de loopback e várias interfaces com endereços diferentes estão configuradas:
- O endereço atribuído à interface de loopback será o ID do roteador.
3. Configurou várias interfaces de loopback com vários endereços IP em cada um:
- O endereço IP mais alto atribuído a qualquer uma das interfaces de loopback será o ID do roteador.
4. Configurou várias interfaces com um endereço IP em cada uma:
- O maior endereço IP de todas as interfaces ativas será o ID do roteador.
Agora vamos para o campo ID da área - este é um conceito mais importante e fundamental no OSPF. Para trabalhar com um grande número de roteadores, o OSPF usa zonas. Cada uma das interfaces do roteador deve pertencer a qualquer zona. Em nossa topologia, as interfaces Gi0 / 0 dos roteadores vIOS1, vIOS2, vIOS3, vIOS4 pertencem à zona 0. A área 0 é chamada Backbone e é o centro de todas as outras zonas. Cada outra zona deve estar conectada à zona de Backbone (o link virtual ainda não é considerado). Em uma análise mais aprofundada, esses conceitos se tornarão mais claros.
Então, ativamos o OSPF no vIOS1 e ele começou a enviar pacotes Hello a cada 10 segundos. Ative o OSPF no vIOS2 e veja como os relacionamentos vizinhos são estabelecidos.

Então, monitoramos cuidadosamente a sequência de mensagens. Primeiro, o Hello envia apenas o roteador 1.1.1.1 (192.168.1.1), assim que ativar o OSPF em 192.168.1.2, um pacote Hello será enviado. O vIOS1 e o vIOS2 receberão pacotes Hello um do outro e, para que o bairro ocorra, é importante que os seguintes parâmetros sejam idênticos na configuração do OSPF nos dois roteadores:
- Intervalo Hello - frequência de envio de mensagens Hello
- Intervalo de falha do roteador - o período após o qual o vizinho é considerado indisponível se não houver um Olá.
- ID da área - a vizinhança pode ser estabelecida apenas através de interfaces em uma zona.
- Autenticação - a senha usada para autenticação e o tipo de autenticação, se houver.
- Sinalizador de área de stub - um sinalizador opcional que é definido em todos os roteadores que pertencem à área de stub
Se você observar o pacote Hello mostrado acima, todos esses parâmetros serão indicados no pacote Hello. Assim que um dos roteadores (vIOS1) recebe um novo pacote Hello e verifica todas as condições, ele envia imediatamente um pacote Hello onde indica o endereço do novo roteador (vIOS2) no campo Vizinho Ativo, o vIOS2 se recebe e se vê no campo vizinho, adiciona o vIOS1 aos vizinhos e enviará o pacote unicast para 192.168.1.1 (vIOS1), onde o indicará como vizinho. Por assim dizer, eles se tornaram vizinhos e agora a diversão começa - a troca de informações e a construção do LSDB básico. Sobre o estabelecimento de um bairro, aconselho você a ler o seguinte
artigo .
A base do LSDB conterá informações sobre rotas e esse LSDB após o estabelecimento da vizinhança deve ser idêntico em todos os roteadores na mesma zona. E, antes de tudo, os roteadores após o estabelecimento de uma vizinhança iniciam o processo de sincronização dos bancos de dados entre si (vIOS1 com vIOS2). Como você pode ver, tudo começa com a troca de mensagens DB Description (DBD). Para deixar mais claro, vamos falar sobre os tipos de mensagens que o OSPF usa:
- Olá - usado para descobrir vizinhos, verificar parâmetros, criar relações de vizinhança com eles e monitorar a disponibilidade.
- DBD (Database Description) - Verifica o status da sincronização do banco de dados nos roteadores.
- Solicitação de estado do link (LSR) - solicita registros específicos sobre o status dos canais do roteador para o roteador para sincronização.
- Atualização do estado do link (LSU) - envia registros de status de canal específicos em resposta a uma solicitação.
- Confirmação de estado do link (LSAck) - confirma o recebimento de outros tipos de pacotes.
Também é importante introduzir um conceito como o LSA:
Anúncio de estado de link (LSA) - uma unidade de dados que descreve o estado local de um roteador ou rede. Muitos dos LSAs que descrevem roteadores e redes formam um Link State Database (LSDB). O LSDB consiste em vários tipos de LSA. Muito detalhado sobre cada LSA está escrito
neste artigo. As mensagens DBD usam muitos sinalizadores para determinar o estado da sincronização, e essas mensagens contêm informações sobre seu próprio banco de dados. Ou seja, o vIOS1 informa nessas mensagens que, no meu banco de dados, há informações sobre redes como 192.168.0 / 24, 1.1.1.0/24 (LSA tipo 1) e o vIOS2, por sua vez, informa que possui registros sobre Redes: 192.168.2.0/24, 2.2.2.0/24 (LSA tipo 1). Após receber as mensagens DBD, cada roteador envia o LSAck como confirmação da mensagem recebida e compara as informações no banco de dados vizinho com as suas. Se for constatado que não há informações disponíveis, o roteador envia uma solicitação LS, onde solicita informações completas sobre qualquer LSA. Por exemplo, o vIOS1 solicitou o LS Request do vIOS2, o vIOS2 responde com o LS Update, que já contém informações detalhadas sobre cada rota. Abaixo está a atualização LS:

Como você pode ver, neste post, o vIOS2 fala sobre as sub-redes conhecidas por ele e as informações associadas a elas. Além disso, o vIOS1 fala sobre seu LSDB. E, no final, os roteadores têm o mesmo LSDB. Após a conclusão do processo, o algoritmo do Dijkstra (primeiro caminho mais curto) é iniciado. Ele calcula todas as rotas conhecidas do LSDB e coloca as melhores na tabela de roteamento. O melhor com a métrica mais baixa, mas mais sobre isso mais tarde.
Vamos pensar na pergunta: o que acontece se ativarmos o OSPF no vIOS3? Como o vIOS3 precisará criar o LSDB e sincronizá-lo com outros roteadores, surge a pergunta com quem exatamente sincronizar? Com vIOS1 ou vIOS2? Com cada um individualmente? Quão ideal é isso? Portanto, no OSPF existe um roteador designado por DR. Introduzimos este conceito:
Roteador dedicado (roteador designado, DR) - gerencia o processo de distribuição do LSA na rede. Cada roteador de rede estabelece um relacionamento de vizinhança com o DR. As informações sobre alterações na rede são enviadas pelo DR, o roteador que detectou essa alteração e o DR é responsável por garantir que essas informações sejam enviadas para os outros roteadores na rede.
Em outras palavras, se um novo roteador aparecer no segmento de rede, ele sincronizará seu LSDB com o DR. Também é importante observar que não apenas os novos, mas todos os outros roteadores informarão o DR sobre isso quando a rede mudar ou uma nova rota aparecer, e o restante receberá essas informações do DR. Mas então surgem perguntas - O que acontecerá se o DR falhar? Como o DR é selecionado?
Quando falha, um novo DR deve ser selecionado. Novas relações de vizinhança devem ser formadas e, até que os bancos de dados do roteador sejam sincronizados com o novo banco de dados de DR, a rede não estará disponível para o encaminhamento de pacotes. Para eliminar essa desvantagem, selecione BDR - Roteador designado para backup:
Roteador designado de backup (BDR). Cada roteador de rede estabelece um relacionamento de vizinhança não apenas com o DR, mas também com o BDR. DR e BDR também estabelecem relações de vizinhança entre si. Quando o DR falha, o BDR se torna o DR e executa todas as suas funções. Como os roteadores de rede estabeleceram relações de vizinhança com os BDRs, o tempo de indisponibilidade da rede é minimizado. Assim, em nossa rede, obtemos não apenas DR, mas também BDR. Outros roteadores receberão e reportarão informações relevantes sobre a rede somente através deles. DR e BDR só podem ser selecionados em um segmento, não em uma zona! Ou seja, para os roteadores vIOS1, vIOS2, vIOS3, vIOS4, um DR e BDR serão selecionados e, por exemplo, entre o vIOS e o vIOS1, seu DR e BDR serão determinados em relação ao segmento de rede, mesmo se estiverem na mesma área 0. Para comunicação com DR e BDR, os roteadores usam um endereço multicast de 224.0.0.6.
A próxima pergunta é: Como o DR / BDR é selecionado? Os seguintes critérios se aplicam:
- DR: roteador de prioridade mais alta da interface OSPF.
- BDR: roteador com a segunda maior prioridade da interface OSPF.
- Se as prioridades das interfaces OSPF forem iguais, o ID do roteador mais alto será usado para fazer a seleção. Como dissemos, os roteadores definem seu ID de roteador. No início, quando o OSPF foi lançado no vIOS1 e vIOS2, além de estabelecer uma vizinhança, também ocorreram eleições para DR / BDR. O VIOS2 com o ID - 2.2.2.2 venceu nesta disputa, quando o vIOS1 teve o ID - 1.1.1.1. O vIOS1 foi selecionado como o BDR. É importante observar que o processo de seleção de DR e BDR não ocorre imediatamente após o recebimento dos primeiros pacotes Hello do segundo roteador. Para fazer isso, há um timer especial igual ao intervalo morto do roteador - 40 segundos. Se durante esse período um pacote Hello com o melhor ID não for recebido, uma seleção será feita com base nos pacotes Hello existentes.
Somente agora podemos voltar à pergunta - o que acontecerá se ativarmos o OSPF no vIOS3? Após ativar o OSPF, o vIOS3 começará a enviar e ouvir pacotes Hello. Ele receberá pacotes Hello dos vIOS1 e vIOS2, que indicarão quais roteadores são DR e BDR e entenderão com quem eles devem sincronizar o LSDB. É importante observar que, quando um roteador com um ID melhor aparece, o DR / BDR não muda até que um deles trate. Depois disso, o vIOS3 começa a sincronizar seu LSDB com esses roteadores.

Após receber novas informações do vIOS3, o DR envia mensagens LS Update para todos os roteadores para o endereço 224.0.0.5, para o qual outros roteadores, após receberem um pacote, enviam o LS Acknowledge para o DR, mas para o endereço 224.0.0.6 (endereço para DR / BDR).
De acordo com o mesmo esquema, também conectamos o vIOS4. Após a sincronização, todos os roteadores têm o mesmo LSDB. Vamos ver a aparência dos estados vizinhos do vIOS3. Mostre o comando ip ospf neighbour:

Como podemos ver, o DR é 2.2.2.2, o BDR é 1.1.1.1 e 2WAY / DROTHER é selecionado com o vIOS4. Os estados de vizinhança foram mencionados
acima .
E aqui estão os estados vizinhos no vIOS1 com o bairro estabelecido com o vIOS:

Como você pode ver, ele tem dois DRs porque tem um vizinho em outro segmento da rede.
Multizones
Considere como o OSPF funciona quando várias zonas são usadas. Mude nossa topologia adicionando novos roteadores:

Para começar, configuraremos o OSPF no vIOS1 e no vIOS para que suas interfaces Gi0 / 1 no vIOS e no vIOS1 estejam na zona 1. Vamos ver o que muda. O vIOS1 agora possui interfaces na Área 0 (Gi0 / 0) e na Área 1 (Gi0 / 0). Esse roteador é chamado ABR - Area Border Router (abaixo, damos uma definição mais correta de ABR). O ABR enviará informações de rota de uma zona para outra. Isso é feito através do LSA tipo 3:
LSA tipo 3 - Resumo da rede LSA - anúncio resumido do status dos canais de rede:
- Propagação por roteadores de borda
- Anúncio descreve rotas para redes fora da área local
- Contém informações sobre redes e o custo do caminho para essas redes, mas não envia informações sobre a topologia de rede
- Por padrão, o roteador de borda envia um anúncio separado para cada rede que conhece. Se necessário, na rede ABR pode ser resumido
- ID do estado do link - número da rede de destino.
Na sua essência, entre zonas, o princípio de operação do protocolo se assemelha ao do protocolo vetor de distância, transmitindo apenas informações de rota com métricas. Aqui está a atualização LS do vIOS1 na área 0, que contém 3 partes do tipo 3 do LSA:

Na sua essência, a estrutura do LSA Tipo 3 não é muito diferente do LSA Tipo 1, mas eles afetam o protocolo de maneiras diferentes. Quando um LSA atualizado é recebido ou se algum LSA tipo 1 e 2 é perdido, o SPF (algoritmo de caminho mais curto) é reiniciado e recalcula o LSDB.
Após o recebimento do LSA Tipo 3, esse processo não ocorre - é obtida uma rota com uma métrica no LSA Tipo 3. Esse LSA armazena dados pelos quais o ABR recebeu uma determinada rota (o ABR é especificado no campo Advertising Router) e uma métrica para atingir esse ABR já está disponível no LSDB. Assim, a métrica do LSA Tipo 3 é resumida com a métrica da rota para o ABR e obtemos a rota finalizada sem reiniciar o SPF. Esse processo é chamado de
cálculo do SPF parcial . Isso é muito importante porque em redes grandes, os tamanhos de LSDB podem ser muito grandes e a execução de SPFs geralmente não é boa. Além disso, a criação do LSA tipo 3 sugere que alterar e recalcular os LSDBs é uma área. O ABR apenas relata que, com alguma rota, o que mudou.
Também é importante observar que qualquer rota de uma zona diferente de zero para qualquer zona diferente de zero passa pela Área 0. Se houver um ABR, ele não poderá ser conectado à Área 0 (excluímos a opção com link virtual). A área 0 é o núcleo que conecta todas as outras zonas e fornece roteamento entre as zonas. A definição de ABR é assim:
Roteador de borda (ABR) - conecta uma ou mais zonas à zona de tronco e atua como um gateway para o tráfego entre zonas. Um roteador de borda sempre tem pelo menos uma interface na zona de tronco. Para cada zona conectada, o roteador mantém um banco de dados de status do canal separado.
Lidamos com o estabelecimento do bairro, a criação de LSDB e SPF, com a zona habitual. Agora, vejamos a convergência e resposta do OSPF às mudanças na topologia.
Vamos dar uma olhada em nossa topologia e imaginar que o vIOS3 parou de funcionar (o estado dos canais não mudou). Isso ajudará na reconstrução da topologia do Dead Interval Timer - 40 segundos. Se durante esse intervalo, o roteador não receber um pacote Hello de um vizinho, o bairro entrará em colapso. No nosso caso, o DR enviará o LS Update com o LSA Tipo 2, o que indica que não há vIOS3 entre os roteadores conectados; isso fará com que o SPF inicie e conte novamente o LSDB sem o LSA recebido do vIOS3. É importante observar que, em um roteador vIOS4 comum, mesmo o esgotamento do temporizador de intervalo morto e a perda de proximidade com o vIOS3 não levam ao recálculo da topologia, é a mensagem LS Update com LSA Type 2 que inicia esse processo.
LSA tipo 2 - LSA de rede - Anúncio de status de
link de rede :
- Distribuído por DR em várias redes de acesso
- O LSA de rede não é criado para redes nas quais o DR não está selecionado
- Distribuído apenas dentro de uma zona
- ID do estado do link - endereço IP da interface DR
Portanto, a desconsideração dos dados que pararam de funcionar ocorre com a ajuda desta mensagem. É essa indicação de vizinhos que é o gatilho para descartar rotas irrelevantes.
Ligue o vIOS3 novamente e estabeleça a vizinhança novamente. O próximo experimento será uma reação à desativação da interface Gi0 / 1 no vIOS3. Assim que o vIOS3 detecta quedas de links, ele envia instantaneamente o LS Update para o DR para o endereço 224.0.0.6, onde é relatado que determinadas rotas caíram ao definir um sinalizador no LSA - LS Age igual a 3600 segundos. Para o LSDB, essa é a idade máxima e todos os LSAs com idade máxima não são levados em consideração no SPF; portanto, eles não estarão na tabela de roteamento. A questão é: quando o Age LSA atinge naturalmente o Max Age, o que acontece? Para fazer isso, o OSPF possui LSRefreshTime - igual à metade da Idade máxima, a cada 1800 segundos, a atualização do LS é enviada do roteador para atualizar os dados do timer:

Além disso, após o processamento da atualização LS, o DR envia o LS LS para todos os outros roteadores para o endereço 224.0.0.5. Assim que os roteadores obtêm novas informações - eles enviam o LSAck. Isso garante uma boa convergência no OSPF.
Escolhendo a melhor rota
O roteador seleciona a melhor rota com base no menor valor métrico. No entanto, o OSPF também leva em consideração vários outros fatores ao escolher uma rota. Nesse caso, a origem da rota e seu tipo são importantes. A seleção de rota prioritária é a seguinte:
- Rotas internas de uma zona (intra-área)
- Rotas entre zonas (entre áreas)
- Rotas externas tipo 1 (E1)
- Rotas externas tipo 2 (E2)
Embora o custo da rota E2 não seja alterado ao transferi-lo por zonas (o custo do caminho para o ASBR não é adicionado), quando o custo das rotas E2 coincide, o custo do caminho para o ASBR que anuncia a rota é comparado. A métrica é levada em consideração quando você precisa escolher as rotas do mesmo tipo. Como métrica, é usado um conceito como custo. É calculado pela fórmula:cost = largura de banda de referência / largura de banda de link. Largura de banda de referência - a base da largura de banda. Por padrão, na Cisco, é igual a 100Mbit.Prevenção de Loop ABR.Como dissemos acima, entre zonas, o princípio da operação OSPF é semelhante ao protocolo de vetor de distância. Usando os mecanismos de prevenção de loop, podemos concluir que o caminho não ideal é escolhido. Por exemplo, entre zonas, existe uma regra como Split Horizon a partir de protocolos de vetor de distância. Considere isso como um exemplo, se
alterarmos nossa topologia na borda das zonas 0 e 4 da seguinte forma: então o vIOS18 escolherá um caminho não ideal com a métrica 100 através da interface Gi0 / 0. Isso ocorre devido ao fato de que o vIOS18 não levará em consideração o LSA Tipo 3 recebido e não da zona 0. Além disso, a regra acima proíbe transferir esse LSA Tipo 3 de volta para a zona 0.