Skip to main content


O Cenário até aqui


Até agora, a gente viu cenários onde os roteadores OSPF se comunicam diretamente, via links ponto a ponto, onde cada vizinhança é uma relação simples entre dois roteadores. Só que em redes multiacesso, como Ethernet (em LANs) ou tecnologias como Frame Relay, vários roteadores podem compartilhar o mesmo segmento.


Esse tipo de topologia apresenta um desafio, quanto mais roteadores houver num mesmo link, mais adjacências precisam ser mantidas. Por exemplo, se você tiver quatro roteadores no mesmo segmento, eles vão formar seis adjacências OSPF entre si, e portanto, seis trocas independentes de LSDB (Link-State Database). Isso gera um tráfego de sincronização considerável, aumenta o uso de CPU e consome memória desnecessariamente.


Pra resolver esse problema de escalabilidade, o OSPF adota um mecanismo eficiente, a eleição de um Designated Router (DR) e um Backup Designated Router (BDR). Esses dois atuam como ponto central para a troca de informações de roteamento dentro do segmento, reduzindo o número de adjacências e otimizando a sincronização de LSAs entre os roteadores.


O OSPF cria um pseudonode (ou seja, um roteador virtual) para gerenciar o estado de adjacência com todos os outros roteadores nesse segmento de rede de transmissão.


Para esse cenário, vamos usar a topologia abaixo:


ospf areas




Designated Router - DR


Em redes multiacesso, como Ethernet, o OSPF evita a formação de adjacências completas entre todos os roteadores do segmento usando o conceito de Designated Router (DR). O papel do DR é justamente reduzir o número de adjacências OSPF, em vez de cada roteador formar vizinhança com todos os outros, eles formam adjacência apenas com o DR (e com o BDR, se houver).


Com isso, a troca de LSAs fica muito mais eficiente. Sempre que um roteador precisa anunciar algo, ele envia a atualização para o DR, que então se encarrega de inundar a informação para os demais. Esse modelo evita uma enxurrada de pacotes de sincronização cruzados entre todos os roteadores do segmento.


No ponto de vista do OSPF, o DR representa logicamente o segmento de rede, atuando como um pseudonode, um nó virtual na topologia OSPF. Isso simplifica o cálculo do SPF e deixa a rede mais escalável.



Configurando os equipamentos


Para cada roteador, vou criar uma rede LAN só para podermos ver ela sendo anunciada via OSPF. A ideia é seguir uma lógica numérica simples: o número do roteador define o final dos IPs, o número da rede, da loopback e até do processo OSPF.


Por exemplo:

  • O Router 3 vai usar a rede 192.168.3.0/24,
  • Vai ter uma interface com IP terminando em .3,
  • E o processo OSPF também será o número 3.

Essa estrutura se repete para todos os outros roteadores do cenário, facilitando a identificação e a configuração.


# Para configurar o switch1:

enable
conf t
!
hostname switch1
!
interface e0/0
description uplink para router1
switchport mode access
no shutdown
!
interface e0/1
description uplink para router2
switchport mode access
no shutdown
!
interface e0/2
description uplink para router3
switchport mode access
no shutdown
!
interface e0/3
description uplink para router4
switchport mode access
no shutdown
!
end
!
wr



# Para configurar o router1:

enable
configure terminal
hostname router1
!
interface GigabitEthernet0/0
description interface para OSPF
ip address 10.253.35.1 255.255.255.240
ip ospf network broadcast
ip ospf 1 area 0
no shut
!
interface GigabitEthernet0/1
description FAKE LAN
ip address 192.168.1.1 255.255.255.0
no shut
!
interface Loopback0
ip address 10.255.0.1 255.255.255.255
!
router ospf 1
router-id 10.255.0.1
network 192.168.1.0 0.0.0.255 area 0
passive-interface GigabitEthernet0/1
!
end
wr



# Para configurar o router2:

enable
configure terminal
hostname router2
!
interface GigabitEthernet0/0
description interface para OSPF
ip address 10.253.35.2 255.255.255.240
ip ospf network broadcast
ip ospf 2 area 0
no shut
!
interface GigabitEthernet0/1
description FAKE LAN
ip address 192.168.2.2 255.255.255.0
no shut
!
interface Loopback0
ip address 10.255.0.2 255.255.255.255
!
router ospf 2
router-id 10.255.0.2
network 192.168.2.0 0.0.0.255 area 0
passive-interface GigabitEthernet0/1
!
end
wr



# Para configurar o router3:

enable
configure terminal
hostname router3
!
interface GigabitEthernet0/0
description interface para OSPF
ip address 10.253.35.3 255.255.255.240
ip ospf network broadcast
ip ospf 3 area 0
no shut
!
interface GigabitEthernet0/1
description FAKE LAN
ip address 192.168.3.3 255.255.255.0
no shut
!
interface Loopback0
ip address 10.255.0.3 255.255.255.255
!
router ospf 3
router-id 10.255.0.3
network 192.168.3.0 0.0.0.255 area 0
passive-interface GigabitEthernet0/1
!
end
wr



# Para configurar o router4:

enable
configure terminal
hostname router4
!
interface GigabitEthernet0/0
description interface para OSPF
ip address 10.253.35.4 255.255.255.240
ip ospf network broadcast
ip ospf 4 area 0
no shut
!
interface GigabitEthernet0/1
description FAKE LAN
ip address 192.168.4.4 255.255.255.0
no shut
!
interface Loopback0
ip address 10.255.0.4 255.255.255.255
!
router ospf 4
router-id 10.255.0.4
network 192.168.4.0 0.0.0.255 area 0
passive-interface GigabitEthernet0/1
!
end
wr


Verificando status do OSPF


# Router 1:
router1#sh ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface
10.255.0.2 1 FULL/BDR 00:00:38 10.253.35.2 GigabitEthernet0/0
10.255.0.3 1 FULL/DROTHER 00:00:38 10.253.35.3 GigabitEthernet0/0
10.255.0.4 1 FULL/DROTHER 00:00:35 10.253.35.4 GigabitEthernet0/0



# Router 2:
router2#sh ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface
10.255.0.1 1 FULL/DR 00:00:34 10.253.35.1 GigabitEthernet0/0
10.255.0.3 1 FULL/DROTHER 00:00:30 10.253.35.3 GigabitEthernet0/0
10.255.0.4 1 FULL/DROTHER 00:00:31 10.253.35.4 GigabitEthernet0/0



# Router 3:
router3#sh ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface
10.255.0.1 1 FULL/DR 00:00:33 10.253.35.1 GigabitEthernet0/0
10.255.0.2 1 FULL/BDR 00:00:31 10.253.35.2 GigabitEthernet0/0
10.255.0.4 1 2WAY/DROTHER 00:00:39 10.253.35.4 GigabitEthernet0/0



# Router 4:
router4#sh ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface
10.255.0.1 1 FULL/DR 00:00:30 10.253.35.1 GigabitEthernet0/0
10.255.0.2 1 FULL/BDR 00:00:39 10.253.35.2 GigabitEthernet0/0
10.255.0.3 1 2WAY/DROTHER 00:00:35 10.253.35.3 GigabitEthernet0/0

O estado 2WAY indica que a comunicação bidirecional entre os roteadores foi estabelecida (ambos recebem pacotes Hello um do outro), mas eles não formaram adjacência completa, ou seja, não trocaram LSDB. Isso é normal e esperado para roteadores OSPF do tipo DROTHER em um segmento de rede multiacesso com DR/BDR eleitos.


No OSPF em redes multiacesso (como Ethernet), somente o DR e o BDR formam adjacência completa (FULL) com os outros roteadores. Os DROTHERs (roteadores que não são nem DR nem BDR) formam adjacência FULL apenas com o DR e o BDR, nunca entre si.


Agora vamos ver as rotas:

# Router 1:
router1#show ip route ospf | begin Gateway
Gateway of last resort is not set

O 192.168.2.0/24 [110/2] via 10.253.35.2, 00:01:22, GigabitEthernet0/0
O 192.168.3.0/24 [110/2] via 10.253.35.3, 00:02:03, GigabitEthernet0/0
O 192.168.4.0/24 [110/2] via 10.253.35.4, 00:00:54, GigabitEthernet0/0



# Router 2:
router2#show ip route ospf | begin Gateway
Gateway of last resort is not set

O 192.168.1.0/24 [110/2] via 10.253.35.1, 00:00:28, GigabitEthernet0/0
O 192.168.3.0/24 [110/2] via 10.253.35.3, 00:01:59, GigabitEthernet0/0
O 192.168.4.0/24 [110/2] via 10.253.35.4, 00:00:50, GigabitEthernet0/0



# Router 3:
router3#show ip route ospf | begin Gateway
Gateway of last resort is not set

O 192.168.1.0/24 [110/2] via 10.253.35.1, 00:00:13, GigabitEthernet0/0
O 192.168.2.0/24 [110/2] via 10.253.35.2, 00:01:03, GigabitEthernet0/0
O 192.168.4.0/24 [110/2] via 10.253.35.4, 00:00:31, GigabitEthernet0/0



# Router 4:
router4#show ip route ospf | begin Gateway
Gateway of last resort is not set

O 192.168.1.0/24 [110/2] via 10.253.35.1, 00:00:30, GigabitEthernet0/0
O 192.168.2.0/24 [110/2] via 10.253.35.2, 00:01:20, GigabitEthernet0/0
O 192.168.3.0/24 [110/2] via 10.253.35.3, 00:02:01, GigabitEthernet0/0


Processo de eleição


A eleição de DR (Designated Router) e BDR (Backup Designated Router) acontece sempre que os roteadores estão em um segmento de rede multiacesso, como uma LAN Ethernet. Essa eleição serve para otimizar a troca de LSAs e reduzir o número de adjacências dentro daquele segmento.


Assim que os roteadores OSPF trocam pacotes Hello, eles verificam se estão num tipo de rede onde há necessidade de DR/BDR (como broadcast ou NBMA). A partir daí, a eleição segue essas regras:


  1. Cada roteador anuncia sua Router-ID e prioridade OSPF no campo apropriado do pacote Hello.
  2. A eleição é baseada em dois critérios:
      1. A maior prioridade OSPF.
      1. Em caso de empate, vence o roteador com a maior Router-ID.
  3. O roteador com maior prioridade (ou maior Router-ID, se houver empate) vira DR.
  4. O segundo mais alto vira o BDR.
  5. Todos os demais se tornam DROTHER (nem DR nem BDR).

O valor de prioridade OSPF pode ser configurado manualmente na interface com:

ip ospf priority 100

Por padrão, a prioridade é 1. Se quiser que um roteador não participe da eleição, configure:

ip ospf priority 0

A eleição não é preemptiva. Ou seja, se um roteador com prioridade maior entrar na rede depois da eleição, ele não vai tomar o lugar do DR ou BDR atual. Somente uma falha ou reinicialização forçaria nova eleição. O DR é o ponto central para troca de LSAs do tipo 2 (Network-LSA), e os roteadores DROTHER só formam adjacência completa com o DR e BDR, não entre si.


Exemplo rápido:

  • Roteador A: prioridade 1, Router-ID 10.1.1.1
  • Roteador B: prioridade 10, Router-ID 10.1.1.2
  • Roteador C: prioridade 1, Router-ID 10.1.1.3

Resultado da eleição:

  • DR: B (maior prioridade)
  • BDR: C (empate de prioridade com A, mas maior Router-ID)
  • DROTHER: A

Só para exemplificar ainda mais, quando o OSPF compara Router-IDs (que são no formato de endereços IP), ele faz isso numericamente, da esquerda pra direita, como se fosse comparar um número de 32 bits.


No exemplo da nossa configuração, temos:

  • 10.255.0.4 → equivale a 0A.FF.00.04 em hexadecimal
  • 10.255.0.1 → equivale a 0A.FF.00.01 em hexadecimal

O 0.4 é maior que 0.1, então 10.255.0.4 vence na comparação.