Skip to main content


Redistribuição de Rotas


A redistribuição de rotas no OSPF ocorre quando um roteador atua como fronteira entre o OSPF e outro domínio de roteamento, seja ele outro protocolo (como RIP, EIGRP, BGP) ou um conjunto de rotas estáticas. Quando isso acontece, o roteador assume o papel de ASBR (Autonomous System Boundary Router) e passa a anunciar essas rotas externas no domínio OSPF.


Esse anúncio é feito por meio de LSAs do tipo 5, que se propagam por todas as áreas normais do OSPF. As rotas redistribuídas são tratadas como externas, e o OSPF classifica essas rotas como E1 ou E2:

  • E2
    Esse é o comportamento padrão da redistribuição no OSPF. A rota externa tem uma métrica fixa (o custo atribuído no momento da redistribuição), e esse valor não muda, independentemente de onde o roteador esteja na topologia. O roteador sempre escolhe o caminho com o menor custo externo, ignorando o caminho interno até o ASBR.
    Por exemplo, se uma rota BGP foi redistribuída no ASBR com custo 20, qualquer roteador no OSPF verá essa rota com custo 20, não importa se o ASBR está perto ou longe.
    Isso nem sempre pode ser bom, porque o roteador pode escolher um ASBR mais distante só porque a métrica externa é menor.

  • E1
    O E1, por outro lado, soma o custo interno do OSPF até o ASBR ao custo externo da rota, oferecendo uma métrica mais ajustada à topologia. Ou seja, o roteador considera dois custos somados, sendo o custo interno OSPF até o ASBR (via algoritmo SPF) e o custo externo fornecido na redistribuição.
    Isso resulta em uma métrica mais realista, pois reflete o caminho total até o destino final. O roteador vai preferir o ASBR mais próximo, mesmo que o custo externo seja igual em mais de um ASBR.


O roteador pode ser configurado para filtrar ou modificar as rotas que serão redistribuídas, por meio de route-maps, e também definir métricas específicas, tipo de rota (E1/E2), tags e outras características.


A redistribuição não é permitida em áreas stub, porque essas áreas bloqueiam LSAs tipo 5 por definição. Para permitir redistribuição numa área com restrições, é preciso configurar a área como NSSA (Not So Stubby Area). Nesse caso, as rotas externas são injetadas como LSA tipo 7, que só circulam dentro da NSSA. Quando chegam ao ABR, esses LSAs são convertidos para LSA tipo 5 e então redistribuídos normalmente no restante do domínio OSPF.


A redistribuição não é algo que se possa fazer sem cuidado, pois pode introduzir inconsistências ou loops de roteamento se mal implementada, especialmente quando há caminhos múltiplos entre domínios. Por isso, ela costuma vir acompanhada de filtros, métricas controladas e critérios bem definidos para o que deve ou não entrar no OSPF.



Redistribuição de Rotas Estáticas


Redistribuir rotas estáticas no OSPF é um dos cenários mais comuns e também mais diretos de configuração. O objetivo é fazer com que rotas configuradas manualmente (estáticas) sejam anunciadas dentro do domínio OSPF, como se tivessem sido aprendidas dinamicamente.


As rotas estáticas são anunciadas usando LSAs tipo 5, como rotas externas. Por padrão, são redistribuídas como E2, mas podem ser forçadas a ser E1 se desejar. A rota estática precisa estar na tabela de roteamento. Ou seja, você só consegue redistribuir algo que o roteador já considera válido e utilizável.


Suponha que você tenha uma rota estática assim:

ip route 200.100.50.0 255.255.255.0 192.168.1.2

Agora você redistribui isso no OSPF:

router ospf 1
redistribute static subnets

O subnets é obrigatório para redistribuir rotas com máscara diferente das redes classful. O OSPF vai anunciar a 200.100.50.0/24 como rota externa do tipo E2, visível com O E2 na tabela de roteamento dos vizinhos.


Usando um route-map para filtrar ou modificar a redistribuição também podemos atribuir um custo (métrica) à rota e escolher o tipo E1.

router ospf 1
redistribute static subnets metric 50 metric-type 1 route-map MEU-FILTRO

O metric nesse contexto representa o custo da rota externa no OSPF, equivalente ao que o OSPF considera como cost ao calcular o caminho até o destino redistribuído.

O metric-type 1 instrui o OSPF a somar esse custo externo com o custo interno OSPF até o ASBR, resultando num cálculo mais preciso (ao contrário do tipo E2, que ignora o caminho interno).



Redistribuição de Rotas BGP


A redistribuição de rotas BGP no OSPF segue a mesma lógica da redistribuição de outras fontes externas, o roteador que executa essa tarefa se torna um ASBR e passa a anunciar as rotas BGP para o domínio OSPF como rotas externas. Isso acontece por meio de LSAs tipo 5, visíveis como O E1 ou O E2 na tabela de roteamento.


Por padrão, ao redistribuir BGP no OSPF:

  • As rotas aparecem como O E2.
  • O custo externo (métrica) é fixo, não importa onde o ASBR esteja na topologia.
  • Apenas rotas BGP do tipo external (EBGP) são redistribuídas automaticamente, se quiser redistribuir IBGP, é necessário usar um route-map com match internal.

Um exemplo básico de redistribuição seria:

router ospf 1
redistribute bgp 65001 subnets

O bgp 65001 identifica o processo BGP local que está sendo redistribuído. Lembrando que o subnets é necessário para redistribuir rotas com máscara não classful.


Podemos aplicar controle de métrica e tipo:

router ospf 1
redistribute bgp 65001 subnets metric 100 metric-type 1

Aqui estamos definindo explicitamente a métrica e forçando a redistribuição como E1.



Filtro com route-map


Se quiser controlar quais rotas do BGP vão ser redistribuídas, podemos usar o route-map:

router ospf 1
redistribute bgp 65001 subnets route-map MEU-FILTRO

Aí podemos definir o que vai entrar:

route-map MEU-FILTRO permit 1
match ip address prefix-list BGP-PUBLICAS
set metric 150

O route-map MEU-FILTRO permit 1 cria uma cláusula de permissão com sequência 1 (primeira regra) dentro do route-map chamado MEU-FILTRO. O nome do route-map será referenciado na redistribuição OSPF: redistribute bgp 65001 route-map MEU-FILTRO.


O match ip address prefix-list BGP-PUBLICAS está filtrando as rotas com base em uma prefix-list chamada BGP-PUBLICAS. Somente os prefixos que baterem nessa lista serão considerados para redistribuição. É comum usar prefix-lists para selecionar rotas específicas (ex: apenas rotas públicas, só determinados blocos, etc).


O set metric 150 modifica a métrica da rota redistribuída, ou seja, mesmo que o BGP tenha sua própria métrica, ao entrar no OSPF, ela será tratada com custo 150. Isso influencia como os roteadores OSPF vão considerar essa rota ao calcular os caminhos.


Pra criar uma prefix-list, você pode usar o comando ip prefix-list no modo de configuração global. Essa lista define quais prefixos (redes) serão aceitos ou negados com base em critérios de IP e máscara.

# Sintaxe:
ip prefix-list NOME [seq N] {permit | deny} PREFIXO/MÁSCARA [ge X] [le Y]

# Exemplo de criação:
ip prefix-list LISTA-TESTE permit 10.0.0.0/24

# Permite qualquer prefixo de 200.100.0.0/16 com máscara até /24:
ip prefix-list BGP-PUBLICAS permit 200.100.0.0/16 le 24

# Negar uma rota específica:
ip prefix-list BLOQUEIO deny 192.168.100.0/24

# Permitir tudo (útil como último fallback):
ip prefix-list FREEDOM permit 0.0.0.0/0 le 32

Para liberar e bloquear endereços:

ip prefix-list ALLOW-BGP permit 200.100.0.0/16 le 24
ip prefix-list BLOQUEIO deny 192.168.100.0/24

route-map REDISTRIBUTE-BGP-OSPF deny 5
match ip address prefix-list BLOQUEIO

route-map REDISTRIBUTE-BGP-OSPF permit 10
match ip address prefix-list ALLOW-BGP
set metric 150

Sobre os números após o permit ou deny, você pode usar qualquer número para as sequências do route-map, como 1, 2, 3, 10, 100, etc. Mas existe uma boa prática, usar números espaçados, como 10, 20, 30... porque isso te permite inserir novas regras no meio depois, se precisar, sem ter que apagar tudo.


Se você usar 1, 2, 3, e depois quiser algo entre 1 e 2, aí você teria que reorganizar tudo.



Filtragem de Rotas


Podemos impedir que uma determinada rota que existe em uma área seja repassada para outras áreas, para isso, a configuração fica sempre no ABR. Isso porque é o ABR que tem a função de gerar os LSAs tipo 3, que são os responsáveis por anunciar prefixos de uma área para outra.


O comportamento padrão do ABR é anunciar todos os prefixos aprendidos dentro da área local para as demais áreas do domínio OSPF. Mas você pode alterar isso explicitamente com uma filtragem aplicada nesse ponto. Ao bloquear a geração de determinados LSAs tipo 3, o ABR simplesmente não anuncia a rota, e o efeito disso é que o prefixo fica visível apenas na área de origem, os demais roteadores OSPF nem chegam a saber que ele existe.


No Cisco IOS, o controle é feito com area range e com distribute-list out, dependendo do que você quer alcançar. Mas para filtragem fina de prefixos individuais entre áreas, o método mais direto é usar o comando distribute-list out aplicado no processo OSPF, em conjunto com uma ACL ou prefix-list.


Por exemplo:

ip prefix-list BLOQUEIA_PREFIXO seq 5 deny 10.1.1.0/24
ip prefix-list BLOQUEIA_PREFIXO seq 10 permit 0.0.0.0/0 le 32

router ospf 1
distribute-list prefix BLOQUEIA_PREFIXO out inter-area

Esse comando diz ao roteador para, no momento de enviar rotas inter-area (LSAs tipo 3), aplicar o filtro BLOQUEIA_PREFIXO. Como ele nega 10.1.1.0/24 e permite o resto, esse prefixo em específico não será anunciado para outras áreas.


Esse tipo de filtragem não afeta roteadores dentro da mesma área, eles ainda verão a rota normalmente. A filtragem só funciona no momento da geração do LSA tipo 3. Não há como filtrar um LSA já recebido, isso quebraria a lógica de consistência do banco de dados LSDB. A filtragem não impede o tráfego de passar, apenas o aprendizado da rota.


O outro método que pode ser usado para barrar a propagação de prefixos entre áreas no OSPF é o area range com a opção not-advertise. Essa abordagem serve para suprimir a geração de LSAs tipo 3 para prefixos específicos, funciona como um filtro agregado no ABR.


O comando area range normalmente é usado para sumarização, mas com not-advertise, ele simplesmente impede que qualquer LSA tipo 3 seja gerado para aquele prefixo (mesmo que ele não esteja sendo sumarizado com outros).


Suponha que você tenha a rota 10.1.1.0/24 aprendida na área 1 e você não quer que essa rota seja anunciada para outras áreas. Você pode configurar o ABR com:

router ospf 1
area 1 range 10.1.1.0 255.255.255.0 not-advertise

Esse comando informa ao ABR que, mesmo que o prefixo 10.1.1.0/24 exista na área 1, ele não deve ser anunciado via LSA tipo 3 para outras áreas. Ou seja, o prefixo continua existindo na área 1, os roteadores locais continuam vendo e usando, mas o restante do domínio OSPF ignora completamente sua existência.