Entendendo o protocolo OSPF de uma vez por todas

O Open Shortest Path First (OSPF) é um protocolo de roteamento dinâmico. Seu desenvolvimento inicial começou em 1987 pelo Grupo de Trabalho do OSPF da IETF (Internet Engineering Task Force). O protocolo é aberto, ou seja, de domínio público, padronizado pelo IETF, independente e não proprietário, podendo ser utilizado gratuitamente por qualquer fabricante.

A principal vantagem deste protocolo é a possibilidade de realizar os cálculos pelo algoritmo SPF, também conhecido como algoritmo de Dijkstra, que leva em consideração o custo através da largura de banda, na procura da melhor rota. As especificações do protocolo OSPF são definidas pela RFC² 1247 e podem ser consultada acessando-se a página web IETF.

Broadcast x multicast

O OSPF foi desenvolvido tendo em vista a sua utilização em grandes redes. Diferente de alguns protocolos de roteamento que utilizam broadcast, o OSPF utiliza a transmissão multicast. O multicast envia pacotes com atualizações necessárias apenas para roteadores vizinhos, que estejam utilizando o protocolo. O broadcast envia para todos, independentemente da configuração do roteador, sendo inviável o uso dele em redes de grande porte, pois ocorre a propagação de pacotes desnecessários que acabam ocasionando uma lentidão na rede. A figura descreve a diferença entre o broadcast, unicast e multicast:

 Acesso em abril de 2015.

<https://mars.tekkom.dk/mediawiki/index.php/CCNA_Explorer_3_Basic_Switch_Con cepts_and_Configuration> Acesso em abril de 2015.

Lógica de atuação do OSPF

A lógica de atuação do OSPF é dividida em três categorias principais: vizinhos, troca de dados e cálculo de rotas. Na primeira etapa, o protocolo forma uma relação de vizinhos através de uma descoberta com o envio de mensagens de “Hello”, por todas as suas interfaces ativas. Depois que os roteadores se tornam vizinhos, ocorre a troca de dados sobre a topologia da rede, armazenados no banco de dados do roteador. Por fim, o rotador, com informações de topologia, analisa sua tabela e calcula as rotas utilizando o algoritmo SPF (Shortest Path First). Com isso, são encontradas as melhores rotas e acrescentadas em sua tabela de roteamento.

Vizinhos OSPF

“… uma definição geral do que vem a ser um vizinho OSPF é, na perspectiva de um roteador, outro roteador que se conecta ao mesmo link de dados com o qual o primeiro roteador pode e deve trocar informações de roteamento utilizando OSPF. “

(Odom, 2008, CCNA ICND2, p. 251)

Segundo Odom (2008), para que o OSPF funcione corretamente, primeiro, o vizinho antes de trocar informações, confere as definições básicas do protocolo, que devem combinar umas com as outras. O segundo processo do roteador tem a função de manter-se sempre informado sobre os estados dos seus vizinhos, ou seja, se a conexão com o seu vizinho está integra ou foi perdida. Com essas informações, o roteador saberá quando deve recalcular as entradas feitas na tabela de roteamento para convergir a um novo conjunto de rotas.

Processo “HELLO” timers do OSPF

“O processo OSPF Hello através do qual novas relações de vizinhos são formadas funciona de forma bastante parecida a quando você muda para uma nova casa e é apresentado aos seus vários vizinhos. Ao se encontrarem do lado de fora, vocês podem ir um à casa do outro, cumprimentar-se e saber o nome um do outro. Depois de conversar um pouco, 27 você cria uma primeira impressão, principalmente se você vai gostar de conversar com esse vizinho ocasionalmente ou se é melhor simplesmente acenar para ele e não gastar seu tempo conversando na próxima vez que o vir do lado de fora.”

(Odom, 2008, CCNA ICND2, p. 252)

A analogia, citada acima por Odom, é muito semelhante ao cenário real do OSPF, no qual todo o processo se inicia com uma mensagem chamada Hello OSPF. Essa mensagem apresenta aos roteadores da rede o seu RID (Router ID ou ID do roteador), ou seja, um nome ou identificador único para cada roteador.

“Os RIDs do OSPF são números de 32 bits escritos na forma decimal, com pontos, de tal forma que utilizar o endereço IP é uma excelente maneira de encontrar o RID padrão. Outra alternativa é configurar o RID do OSPF diretamente.”

(Odom, 2008, CCNA ICND2, p. 252)

Disponível em: Acesso em abril de 2015.

Disponível em: <https://blog.ccna.com.br/2008/06/27/tutorial-ospf-parte-5/> Acesso em
abril de 2015.

São diversos os motivos pelos quais o OSPF precisa de um RID para identificar exclusivamente cada roteador. Um dos motivos é que os vizinhos só reconhecem quem enviou uma determinada mensagem através do RID. Após definir o seu RID OSPF, o roteador fica pronto para conhecer seus vizinhos, enviando um pacote multicast de Hello por todas as suas intefaces ativas para descobrir outros roteadores que utilizam o OSPF. Com isso, o roteador espera receber pacotes Hello dos outros roteadores conectados a uma de suas interfaces. Segundo Odom (2008), a mensagem Hello inclui o RID do roteador de envio, o ID da área, o intervalo Hello, o intervalo morto (dead interval), a prioridade do roteador, o RID do roteador designado, o RID do roteador designado para backup e uma lista de vizinhos que o roteador de envio já conhece na sub-rede. Todos os itens citados serão vistos com mais detalhes ao longo deste trabalho.

No final do processo, o rotador verifica as informações contidas na mensagem Hello e assegura se os dois deverão se tornar vizinhos. Os dois roteadores precisam concordar com vários parâmetros, como máscara de sub-rede, número de sub-rede, o intervalo Hello (Hello timer), o intervalo morto (dead interval) e o ID OSPF da área. Caso sejam utilizadas verificações de autenticação, os parâmetros citados devem ser aprovados. Do contrário, se qualquer um desses parâmetros não concordarem, os roteadores não se tornarão vizinhos.

Estados entre os vizinhos OSPF

Os parâmetros são de extrema importância para o OSPF, pois ajudam na comunicação entre os vizinhos definindo os estados entre os dois. Os roteadores devem estar sempre informados sobre os estados de cada um dos seus vizinhos. Tudo isso ocorre através da definição de um grande conjunto de possíveis ações utilizadas para comunicar-se uns com os outros.

“Para manter o processo, os roteadores OSPF colocam cada vizinho em um de vários estados OSPF entre vizinhos. O estado OSPF entre os vizinhos é a percepção que o roteador tem de quanto trabalho foi concluído nos processos normais executados por dois roteadores vizinhos.”

(Odom, 2008, CCNA ICND2, p. 254)

O Intervalo Hello é um espaço definido de tempo usado pelos roteadores OSPF para enviar mensagens Hello, esperando uma resposta vinda do vizinho. Quando o roteador destinatário não responde um Hello do vizinho durante um determinado espaço de tempo, definido pelo intervalo morto, ele acredita que o vizinho não seja mais alcançável, marcando o atual roteador silencioso como “down” em sua tabela de vizinhos e converge à rede.

Segundo Odom (2008, p. 254) “ao entender os estados OSPF entre os vizinhos e seus significados, o engenheiro pode determinar mais facilmente se um vizinho OSPF está funcionando normalmente ou se existe um problema”. Existem dois iniciais tipos de estados, o estado down e o estado int. O estado down, como explicado anteriormente, é quando o roteador vizinho já conhece o roteador que está o enviando pacote Hello, mas por algum motivo, o outro roteador vizinho não responde, fazendo com o vizinho silencioso seja listado em estado de down pelo outro roteador. Já o estado int é o contrário. Significa que a relação entre os vizinhos está sendo inicializada, ou seja, assim que o roteador fica com sua interface ativa, o roteador pode receber e enviar pacotes Hellos passando seu estado para int.

Existe ainda o estado two-way, através do qual o roteador já está pronto para trocar informações de topologia de rede. Segue em que condições o roteador passa do estado Int para two-way:

“Um roteador passa do estado Int para o estado two-way quando dois importantes fatos são verdadeiros: quando uma Hello recebida apresenta o RID do roteador como tendo sido visto e quando aquele roteador verificou todos os parâmetros relativos ao vizinho e ele aparentemente não apresentam problemas. Esses dois fatos significam que o roteador está querendo comunicar com esse vizinho. Para que o processo funcione, quando cada roteador recebe um Hello de um novo vizinho, o roteador verifica os detalhes de configuração do vizinho. Se aparentemente tudo estiver certo, o próximo Hello do vizinho apresenta o RID do vizinho na lista de roteadores “vistos”. Depois que ambos os roteadores tiverem verificado os parâmetros e enviado um Hello apresentando o RID do outro roteador como “visto”, ambos os roteadores deverão ter atingido o estado two-way.”

(Odom, 2008, CCNA ICND2, p. 254)

Troca de bancos de dados da topologia OSPF

Os roteadores OSPF utilizam um banco de dados chamado de Link State Database (LSDB), onde ficam todos os dados referentes à topologia de rede. Para que os roteadores tenham conhecimento sobre a topologia da rede, cada vizinho precisa compartilhar entre eles uma cópia exata do conteúdo de seus LSDB.

A troca de informações de topologia nem sempre são realizadas pelos roteadores ao se tornarem vizinhos e atingirem o estado two-way. Os dois vizinhos devem decidir, através de diversos fatores, se a troca de informações de topologia será direta ou indiretamente realizada através de LSAs (Link State Advertisement). As LSAs são anúncios enviados pelos roteadores OSPF com atualizações sobre topologia. Depois que dois roteadores se tornam vizinhos e a troca de dados da topologia é realizada, o par de vizinhos fica em um estado de manutenção silenciosa, atento a alterações na rede e redistribuindo LSAs periodicamente.

Quando os roteadores vizinhos verificam que há necessidade de troca de banco de dados, não é enviado o conteúdo do banco de dados inteiro. Ambos os roteadores, trocam entre si uma única lista LSAs em seus respectivos banco de dados. Assim, cada roteador compara seu próprio LSDB com a lista do outro. O LSA, no qual o rotador não tenha uma cópia, solicita ao vizinho essa cópia e o vizinho envia o LSA inteiro. No final de todo o processo, os dois vizinhos consideram que a troca de banco de dado foi totalmente concluída, fazendo com que o OSPF mude o estado entre vizinhos para full.

Os vizinhos continuam executando trabalhos de manutenção quando chegam ao estado full. Além disso, são enviados pacotes Hellos, de tempos em tempos, para saber se o vizinho continua disponível. Quando ocorre a ausência de pacotes Hellos, a cada intervalo do pacote, por um tempo igual ao intervalo morto, significa que a conexão com o vizinho falhou. Caso ocorra alguma alteração na topologia, os vizinhos ficam informados, através de novos envios de cópias dos LSAs alterados, de forma que os vizinhos possam atualizar seus LSDBs. Assim, o roteador também poderá utilizar o algoritmo SPF para recalcular, novamente, qualquer rota afetada.

Mesmo que não ocorra nenhuma alteração na rede, pacotes são enviados, por padrão, a cada 30 minutos, por roteadores que tem a responsabilidade de redistribuir o LSA. Diferente do conceito de vetor distância, o protocolo OSPF não envia todas as rotas a cada 30 minutos. Ou seja, cada LSA possui um timer separado, com base em quando o LSA foi criado. Portanto, quando o OSPF, em algum momento, precisar redistribuir todos os LSAs, o roteador que criou o LSA redistribui a cada 30 minutos.

Roteadores designados (DRs)

Em redes de multiacesso, o protocolo OSPF elege um Designated Router (DR) ou roteador designado. A função do DR é receber ou realizar a troca de informações sobre topologia com outro DR de diferentes sub-redes. O DR é responsável por encaminhar todas as LSAs obtidas de outro DR, para os respectivos roteadores de sua própria sub-rede. Além do DR, outro roteador é eleito também, sendo o Backup DR (BDR). Como o próprio nome diz, o BDR é utilizado como backup, ou seja, em caso de falha do DR, o BDR assume todas as funções do mesmo. A figura ilustra o processo de atualizações entre DR e vizinhos:

Disponível em: <https://www.comutadores.com.br/ospf-roteador-designado-dr-eroteador-designado-de-backup-bdr/>
Acesso em abril de 2015.

O processo de eleição do DR e BDR é realizado através de datagramas Hello enviados por cada roteador na rede. Através do valor da prioridade da interface OSPF, informados pelos datagramas Hello, o roteador com a maior prioridade é eleito DR e a segunda maior como BDR.

Caso a definição de valor da prioridade mais alta ocorra de dois ou mais roteadores empatarem, o desempate é feito através do RID mais alto, informados através de novos envios de pacotes hellos. O RID seria o maior valor IP configurado no roteador ou IP de interface virtual loopback. Por este motivo, quando for necessário escolher um roteador manualmente para ser DR, é recomendável configurar interfaces virtuais loopback, pois as mesmas têm preferência sobre as interfaces físicas. O intervalo de valores permitidos para que o roteador seja candidato vai de 1 a 255, sendo o valor padrão da prioridade o 1 (um). Quando o valor de prioridade é 0 (zero), o roteador não participa da eleição, podendo nunca se tornar DR ou BDR. Se um novo roteador futuro existir com prioridade mais alta que o atual DR e BDR, os mesmos não serão substituídos.

Fonte: CCDA 640-864 OfficialCertGuide (4th Edition), p 396.

Fonte: CCDA 640-864 OfficialCertGuide (4th Edition), p 396.

Segundo Odom (2008, p. 256), “o conceito de DR impede a sobrecarga de uma sub-rede que tenha muito tráfego OSPF quando muitos roteadores estão em uma sub-rede”. Ou seja, quando muitos roteadores estão anexados a uma LAN, necessita-se da eleição de DR. O DR é tão importante para a troca de informações que a perda do mesmo poderia causar retardos na convergência.

Tabela de roteamento IP

Como visto anteriormente, os roteadores OSPF enviam dados sobre a topologia para seus vizinhos armazenando informações na tabela de topologia OSPF, ou seja, no banco de dados conhecido como LSBD. Depois de todo o processo de troca de mensagem, os roteadores OSPF executam o algoritmo SPF, com relação às informações obtidas sobre a topologia, escolhendo a melhor rota.

“O banco de dados da topologia OSPF consiste em listas de números de sub-rede (chamados de links, daí o nome banco de dados link-state). Ele contém também listas de roteadores, junto com os links (sub-redes) aos quais cada roteador está conectado. Munido do conhecimento de links e roteadores, o roteador pode executar o algoritmo de SPF para computar as melhores rotas até todas as sub-redes. O conceito é bastante semelhante a juntar as peças de um quebra-cabeças. A cor e o formato de cada peça o ajudam a identificar quais peças se encaixam uma ao lado da outra. Analogamente, as informações detalhadas em cada LSA – tais como o LSA de um link apresentando os roteadores anexado à sub-rede e o LSA de um roteador apresentando seus endereços IP e suas máscaras – dá ao algoritmo SPF informações suficientes para saber quais roteadores se conectam a cada sub-rede e criar o equivalente matemático de um diagrama de rede.”

(Odom, 2008, CCNA ICND2, p. 257)

No LSDB, cada roteador independente utiliza o algoritmo SPF para encontrar o menor trajeto, ou seja, a melhor rota que vai daquele rotador até o destino informado no pacote. Encontrando o melhor trajeto, o roteador coloca a melhor rota na sua tabela de roteamento IP. O custo é a métrica utilizada pelo protocolo OSPF. O calculo do custo feito pelo protocolo está associado a cada interface de saída incluída em uma árvore SPF. Já o custo total é a soma de todas as interfaces de saída, conforme o caminho evolui. Quanto menor o custo entre o roteador e uma sub-rede, maior será sua prioridade em questões de uso na tabela de roteamento IP. Os fabricantes permitem que esses custos sejam alterados, mas é altamente desaconselhável. A tabela apresenta os valores padrões dos custos:

Fonte: CCDA 640-864 OfficialCertGuide (4th Edition), p 392.

Fonte: CCDA 640-864 OfficialCertGuide (4th Edition), p 392.

Áreas OSPF

Em redes de grande porte, é necessário um planejamento maior de como serão utilizados os recursos do OSPF, pois a quantidade de processamento necessário para executar o algoritmo do SPF pode deixar o tempo de convergência lento e os roteadores, com falta de memória. Utilizar o recurso de áreas do OSPF resolvem muitos dos principais problemas. As áreas configuradas no roteador são dividas em redes, de forma que o mesmo saiba menos informações sobre a topologia das sub-redes da outra área. Com menos informações, consequentemente o banco de dados de topologia ficará menor e o roteador consome menos recursos como memória e CPU, levando menos tempo de processamento para executar o SPF.

Um roteador dentro de uma área recebe informações dos LSAs somente daquela sub-rede que está vinculada àquela área. Além disso, essas informações são recebidas de forma mais resumidas ou sumarizadas. Rotas sumarizadas são configuradas no OSPF, reduzindo o número de subredes e o tamanho do esforço de cálculo do SPF. Através da divisão de áreas, o protocolo permite uma hierarquização de uma rede.

“Imagine cada router em uma área construindo uma árvore – como uma árvore genealógica – onde o router é a raiz e todas as outras redes são arranjadas nos galhos remanescentes. Essa seria a árvore SPF (SPF tree) usada pelo router para inserção de rotas na tabela de roteamento.”

(Filippetti, Marco Aurélio, CCNA 4.1, página 274, 2008)

Conforme explicado anteriormente, o Area Border Router (ABR) é responsável pelo tráfego entre as áreas, repassando toda a informação obtida para os demais roteadores da área na qual pertence. A área conhecida como backbone area ou área 0 (zero) sempre deverá existir em redes com mais de uma área, pois todas as outras áreas devem se conectar a ela. Caso essa regra não seja obedecida, o OSPF não funcionará corretamente. Além disso, é recomendado que os roteradores utilizados na área zero sejam mais robustos com porte e capacidades adequados ao cenário.

Fonte: CCDA 640-864 OfficialCertGuide (4th Edition), p 398.

Fonte: CCDA 640-864 OfficialCertGuide (4th Edition), p 398.

Uma solução temporária, para interligar duas áreas sem a necessidade de passar pela área zero, é usar o artifício “virtual-links”, que fará um túnel “enganando” o OSPF, fazendo com que protocolo entenda que a área está diretamente conectada à backbone area. Em ocasiões de falhas no link WAN ou qualquer outro motivo, a conexão com a área zero pode ser interrompida. Como solução, podemos utilizar o “virtual-links” para resolver o problema temporariamente.

 Links Virtuais

Fonte: CCDA 640-864 OfficialCertGuide (4th Edition), p 399.

Referência

Póvoa, Thiago Cavalcanti. Utilização do Protocolo OSPF em uma Rede de Enlaces de Rádio / Thiago Cavalcanti Póvoa; Patrick Chaves Dielenseger; Leonardo Matheus Lima. — 2015. 50 f. ; 30 cm. Trabalho de Conclusão de Curso (Graduação em Gestão da Tecnologia da Informação) — Instituto Infnet, Rio de Janeiro, 2015. Bibliografia: f. 49. Orientador: Luiz Paulo Maia

Thiago C. Póvoa

Formado em Gestão da Tecnologia da Informação. Busca, através do blog, colaborar com profissionais da área, compartilhando conhecimento. Iniciou sua carreira em um provedor de internet, especialista em serviços de telecomunicações, onde obteve bastante experiência em Administração de Redes.