Redistribuição de Rotas
Este é um tópico que, historicamente, é fonte de muitas dúvidas. Talvez pelo fato de não ser um assunto simples. O conhecimento sobre redistribuição de rotas é cobrado apenas nos exames de nível mais elevado (CCNP BSCI e CCIE), mas nem por isso deve ser totalmente relevado pelos que estão inciando, ou estudando para exames de nível inferior. O conhecimento do assunto é de extrema importância para aqueles que almejam trabalhar com engenharia de redes.
O objetivo deste primeiro post não é cobrir todas as nuances do assunto, mas falar um pouco do básico, para que vocês conheçam, pelo menos, do que se trata e para que serve
.
Em um mundo perfeito, teríamos apenas um protocolo de roteamento e não haveria a necessidade de nos preocuparmos com redistribuição. Entretanto, no mundo real, existem vários, e na vida de todo engenheiro de redes haverá um dia em que será necessário interconectar redes que rodam protocolos de roteamento distintos, como OSPF e RIP ou EIGRP e BGP.
A processo de redistribuir rotas aprendidas por um protocolo de roteamento em outro protocolo permite a integração de redes heterogêneas com relativa simplicidade. Uma vez mais, estamos falando de um mundo não-perfeito, ou seja, existem algumas “perdas” ocasionadas por este processo que podem (ou não) impactar o desempenho e a operação das redes envolvidas. Por este motivo, o processo deve ser realizado criteriozamente, e com muita cautela. Já vi muitos problemas ocorrerem em redes de grande porte ocasionados por redistribuições realizadas sem qualquer tipo de planejamento.
Podemos fazer uma analogia entre redistribuição e NAT. O NAT permite que um endereço IP seja traduzido para outro. Redistribuição permite que rotas aprendidas por um protocolo (ex: RIP) sejam traduzidas para outro (ex: IGRP). Antes de considerar a adoção de redistribuição, entretanto, existem alguns pontos à serem considerados: Apenas é possível redistribuir rotas aprendidas por protocolos de roteamento compatíveis. Por exemplo, não é possível redistribuir rotas IPX em uma rede IP. Outro ponto importante é planejar o processo cuidadosamente, já que loops de roteamento podem ocorrer quando redistribuições são mal feitas.
Protocolos diferentes, não raro, possuem métricas incompatíveis. RIP, por exemplo, utiliza unicamente a contagem de saltos (hops), enquanto EIGRP utiliza uma métrica composta, muito mais complexa. Quando utilizamos redistribuição, as métricas de um protocolo devem ser traduzidas para o outro. Alguns protocolos adotam métricas default no processo, o que pode gerar problemas.
Outro ponto importante a ser lembrado é que, se um roteador aprende uma determinada rota por diversas fontes distintas (ex: RIP, OSPF e estática), prevalecerá a rota aprendida com menor distância administrativa (AD).
Independentemente de quais protocolos estejam sendo redistribuídos, é sempre uma boa idéia seguir alguns passos no planejamento do processo:
- Identifique os roteadores de borda. Estes, normalmente, são os routers que serão configurados para redistribuição;
- Defina um protocolo de roteamento para ser o primário. Normalmente, este será OSPF ou EIGRP, já que são mais eficientes;
- Identifique qual o protocolo secundário. Se você estiver migrando redes, este será o protocolo que, no futuro, será desativado;
- Identifique com cuidado as exceções (rotas aprendidas por um protocolo que não devam ser injetadas no outro);
- Configure o script de redistribuição do protocolo secundário para o primário;
- Configure o script de redistribuição do protocolo primário para o secundário;
- Verifique se tudo está funcionando como planejado.
Seguindo estes passos, as chances de algo dar errado é minimizada.
No próximo post, vou me aprofundar um pouco no assunto, apresentando exemplos e algumas atividades que podem ser implementadas no Dynamips (não sei até que ponto o Packet Tracer suporta isso).
Conforme prometido, vamos dar prosseguimento ao primeiro post sobre redistribuição de rotas! Pelo visto, este assunto interessou a alguns! É realmente um tópico interessante, vale a pena conhecer um pouco mais. Bom, como eu já havia mencionado no post anterior, redistribuição de rotas é assunto apenas de exames Cisco mais avançados, mas ainda assim, não machuca conhecer alguma coisa sobre o assunto mesmo aqueles que ainda estão estudando para o CCNA.
Recapitulando o que vimos, a utilização de um protocolo de roteamento para anunciar rotas aprendidas via outros meios (como um protocolo de roteamento diferente, rotas estáticas ou mesmo rotas diretamente conectadas) é conhecida como redistribuição. Sempre que mais de um protocolo de roteamento existir em uma rede, a troca de informações entre eles (redistribuição) será necessária. Alguns pontos importantes já foram mencionados no post anterior, e serão mais profundamente analisados neste.
1) Métricas
Quando redistribuímos rotas aprendidas por um protocolo, em outro, as métricas adotadas por cada protocolo desempenham um papel muito importante. Cada protocolo utiliza métricas distintas. Por exemplo, RIP utiliza como métrica exclusivamente a contagem de saltos, enquanto IGRP e EIGRP utilizam uma métrica composta, baseada por default em largura de banda e atraso da linha, mas podendo incluir também a carga e a confiabilidade do link, e MTU. Quando adotamos redistribuição entre estes protocolos, precisamos definir métricas que sejam funcionais ao protocolo destino. Existem basicamente 2 métodos para a definição de métricas durante uma redistribuição. Vamos observar a figura abaixo para os exemplos.

O router central age como “ponte” entre os protocolos RIP e OSPF na rede ilustrada. É ele quem fará a redistribuição de um para o outro.
a) Definição da métrica para redistribuições específicas, somente:
router rip
redistribute static metric 1
redistribute ospf 1 metric 2
Neste exemplo, rotas estáticas serão “injetadas” no protocolo RIP com métrica 1 (1 salto), e rotas aprendidas via OSPF serão “injetadas” no protocolo RIP com métrica 2 (2 saltos).
b) Outro método é definir uma métrica default, que será adotada para toda e qualquer redistribuição:
router rip
redistribute static
redistribute ospf 1
default-metric 1
Neste exemplo, tanto rotas estáticas quanto aprendidas via OSPF serão injetadas na rede RIP com métrica 1 (1 salto).
2) Distância Administrativa (AD)
Lembremo-nos que, se um router encontra-se com mais de um protocolo de roteamento ativo e rotas para uma mesma rede destino são aprendidas por intermédio destes diferentes protocolos, a decisão de qual vai para a tabela de roteamento é feita pela AD (Distância Administrativa) de cada protocolo. Para ver a tabela AD, cheque este link (http://www.cisco.com/en/US/customer/tech/tk365/technologies_tech_note09186a0080094823.shtml). Quando estamos fazendo redistribuição de rotas, entretanto, o processo de seleção de rotas via AD pode causar problemas, como loops de roteamento, problemas de convergência, ou roteamento ineficiente. Observe a figura abaixo:

Na topologia ilustrada pela figura acima, se R1 está rodando RIP, e R2 e R5 estão rodando RIP e IGRP e redistribuindo informações de um no outro mutuamente, podemos ter um problema em potencial. Por exemplo, tanto R2 quanto R5 aprendem sobre a rede 192.168.1.0 via R1, utilizando o protocolo RIP. Esta informação é, então, redistribuída no IGRP. R2 aprende sobre a rede 192.168.1.0 via R3, enquanto R5 aprende sobre esta mesma rede via R4, ambos usando IGRP. IGRP possui uma distância administrativa menor que o RIP (100 contra 120) e, portanto, rotas aprendidas via IGRP serão preferidas sobre as aprendidas via RIP. Temos então um loop de roteamento em potencial. Supondo que o mecanismo de split horizon esteja ativado, ainda assim teremos o problema de convergência, ou seja, o tempo necessário para esta rede chegar à um acordo sobre quais rotas devem ser consideradas será bastante elevado.
Se R2 e R5 também estiverem redistribuindo IGRP em RIP (processo este conhecido como redistribuição mútua, onde um protocolo é redistribuído em outro, e vice-versa) e a rede 192.168.1.0 não se encontrar diretamente conectada em R1 (ex: R1 aprende esta rede de algum router acima dele), existe a chance de R1 aprender esta rede de R2 ou R5, ao invés de aprender da fonte original da rota.
NOTA IMPORTANTE: As “leis” de redistribuição em routers Cisco é ditada pela Cisco (são proprietárias). Nestas regras, a Cisco estabelece que uma rota, para ser redistribuída precisa existir na tabela de roteamento. Rotas com menor AD sempre estarão presentes na tabela de roteamento. Por exemplo, se uma rota estática for redistribuída para IGRP em R5, e posteriormente IGRP for redistribuído para RIP neste mesmo router (R5), a rota estática não será redistribuída para RIP pois ela nunca entrou na tabela de roteamento do IGRP. Isso ocorre pois rotas estáticas possuem AD=1, enquanto rotas IGRP possuem AD=100. Para fazer com que a rota estática seja redistribuída para IGRP em R5, é necessário utilizar o comando “redistribute static”, dentro do modo “router rip”.
Como eu já havia dito no post anterior (parte 1), é devido à problemas potenciais como os descritos anteriormente que redistribuição deve sempre ser muito bem planejada. A idéia de realizar testes de mesa, em cenários assim, é muito bem-vinda.
No próximo (e último) post sobre este assunto vamos nos aprofundar ainda mais nos processos de redistribuição. Vamos ver exemplos mais avançados, e também vamos ver o papel dos filtros nos processos de redistribuição.
Fechamos hoje a terceira e última parte desta série de posts sobre redistribuição de protocolos. Nas duas primeiras partes, abordei o básico sobre este assunto. Nesta última parte, vamos nos aprofundar um pouco mais, analisar alguns exemplos de configuração e algumas técnicas mais avançadas, como filtros e mapas de rotas. Seguindo na linha dos conceitos por trás da redistribuição, é importante conhecermos os 3 tipos básicos de rotas que podemos encontrar em um router: conectada, estática e dinâmica.
Rotas conectadas são aquelas que definem interfaces em um router. Por exemplo, se em um router temos a interface FastEthernet 0/0 configurada com o endereço IP 172.16.10.1 255.255.255.0, a rede 172.16.10.0 /24 encontrar-se-à na tabela de roteamento e constará como diretamente conectada (”C”, de “Connected”). Se eu adicionar, neste mesmo router, uma rota para a rede 10.0.0.0 /8, esta rota aparecerá na tabela como uma rota estática (”S”, de “Static”).
Exemplo de rota estática “padrão”:
Router(config)#ip route 10.0.0.0 255.0.0.0 172.168.10.2
Agora, se eu disser ao router que esta rede 10.0.0.0 encontra-se acessível via interface F0/0, ainda teremos uma rota estática (identificada por um “S”, na tabela), mas esta rede aparecerá como “Connected”, ou seja, o router irá considerar que ela encontra-se diretamente conectada à interface F0/0.
Exemplo de rota estática “conectada”:
Router(config)#ip route 10.0.0.0 255.0.0.0 F0/0
Router#show ip route static
S 10.0.0.0 is directly connected, FastEthernet0/0
E finalmente, rotas “aprendidas” por protocolos de roteamento são consideradas dinâmicas. Bom, por que isso seria relevante ao nosso assunto? Simples! É importante termos em mente que TODA VEZ que ativamos um protocolo de roteamento, estamos fazendo algum tipo de redistribuição. Por exemplo:
Router(config)#router rip
Router(config-router)#network 172.16.0.0
Este comando faz com que o RIP redistribua a subrede 172.16.10.0 /24, pois esta é uma rede diretamente conectada neste router. RIP, IGRP e EIGRP sempre irão redistribuir redes diretamente conectadas que estejam cobertas pelo comando “network”. Este seria, então, um dos primeiros modos de se redistribuir um tipo de rota (conectada), em outra (dinâmica). Outro modo seria utilizar o comando “redistribute connected” dentro do modo de configuração de roteamento:
Router(config)#router rip
Router(config-router)#redistribute connected
A vantagem? Ao invés de ter de digitar “network” por “network”, este comando engloba todas as redes diretamente conectadas para você, em apenas uma linha de comando!
Outra redistribuição comum seria a de rotas estáticas:
Router(config)#router rip
Router(config-router)#redistribute static metric 10
Este comando faz com que todas as rotas estáticas configuradas neste roteador (e presentes na tabela de roteamento) sejam redistribuídas no protocolo RIP com métrica 10 (10 saltos), e enviadas para todos os routers RIP da rede.
Redistribuir em RIP é relativamente simples, já que suas métricas são simples (na verdade, apenas a contagem de saltos). O que ocorre se redistribuirmos em IGRP, por exemplo? Vamos analisar:
Router(config)#router igrp 10
Router(config-router)#redistribute connected
Router(config-router)#default-metric 10000 100 255 1 1500
ou
Router(config)#router igrp 10
Router(config-router)#redistribute connected metric 10000 100 255 1 1500
Lembrando que as métricas disponíveis ao IGRP (e ao EIGRP) são 5: Bandwidth (10000 no exemplo acima), Delay (100), Reliability (255), load (1) e MTU (1500). Por este motivo temos 5 valores no exemplo acima.
Hmmm, e OSPF? Devemos nos lembrar que no OSPF, o parâmetro “network” não serve para informar quais redes queremos redistribuir, mas sim, quais interfaces devem ter o processo OSPF ativado. O conceito é um pouco diferente. Fora isso, o processo de redistribuição é muito parecido:
router ospf 1
network 172.16.10.0 0.0.0.255 area 0
redistribute static metric 200 subnets
No exemplo acima, incluímos a interface F0/0 no processo OSPF 1, e redistribuímos todas as subredes configuradas estáticamente no router, com métrica = 200. OSPF não inclui subredes no procesos de redistribuição, à não ser que você informe que isso deve ser feito via comando “subnets”.
E quando não queremos redistribuir tudo, em tudo, ou seja, e se tivermos alguma (ou algumas) exceção? Isso é muito comum. Um exemplo clássico… temos um router com 10 interfaces configuradas, dentre elas, uma interface loopback que apenas é utilizada localmente. Não queremos que a rede 192.168.10.0, associada à esta interface loopback, seja redistribuída para outros roteadores. Para excluí-la, podemos utilizar mapas de rotas (ou… route maps). Exemplo:
Router(config)#access-list 10 deny 192.168.10.0
Router(config)#access-list 10 permit any
Router(config)#route-map exclui_loopback
Router(config-route-map)#match ip address 10
Router(config)#router igrp 10
Router(config-router)#redistribute connected route-map exclui_loopback
Router(config-router)#default-metric 10000 100 255 1 1500
Pronto! Excluímos desta forma a rede 192.168.10.0 /24, associada à interface Loopback do roteador. Route-maps são ferramentas poderosas, e um tanto quanto complexas. Vale dedicar um post somente à este assunto.
Com isso encerramos esta breve série sobre redistribuição! Ainda há MUITO o que ser falado sobre o assunto, mas acho que estes 3 posts já dão uma boa introdução! Testem alguns dos comandos que passei nestes posts em simuladores (como o Packet Tracer), ou emuladores (como o Dynamips), e observem os resultados! Com a prática, a teoria certamente é melhor sedimentada
!
Fonte: http://blog.ccna.com.br/2009/03/03/pr-redistribuicao-de-rotas-parte-1-intro/