Mostrando postagens com marcador Rotas. Mostrar todas as postagens
Mostrando postagens com marcador Rotas. Mostrar todas as postagens

quinta-feira, 10 de janeiro de 2013

Rotas Flutuantes no Ambiente Corporativo

Olá Pessoal.

Hoje recebi um e-mail de um aluno com um problema comumente encontrado em empresas e achei por bem que seria interessante compartilhar a solução com todos, já que essa é uma dúvida recorrente! O e-mail apresentava a seguinte situação:

"
Brito, Bom Dia.

Veja se você consegue me dar uma luz. Em um Switch-Core chegam dois links, um MPLS e outro LAN-2-LAN (Clear Channel). O link MPLS é o principal, com isso colocamos uma rota default apontando para ele no SW-Core, só que quando o link principal cai, por ter uma rota default para ele, o link LAN-2-LAN não assume o tráfego. Para o link LAN-2-LAN assumir o tráfego temos que tirar a rota default para o link principal (manualmente). Tem alguma maneira de automatizar a retirada da rota quando o link principal cair?

Desde já agradeço.

E a resposta é: Sim, a solução existe e não é muito complicada. Antes de discutir a solução do problema, vamos visualizar uma imagem simplificada do cenário. A interface f0/0 está conectada na rede local, a interface f1/0 recebe o link MPLS e a interface f2/0 recebe o link LAN-2-LAN:



A princípio, uma solução imediata para o problema seria adicionar duas rotas default com custos diferentes, uma saindo por cada interface:

SW-Core(config)# ip route 0.0.0.0 0.0.0.0 f1/0 1
SW-Core(config)# ip route 0.0.0.0 0.0.0.0 f2/0 2

Mas isso não funcionaria! O problema dessa "solução" é que os links MPLS e LAN-2-LAN são diretamente conectados ao Switch-Core através de interfaces fast-ethernet e, por isso, quando o link cai, a interface mantém seu status como up. Então para resolver o problema é necessário monitorar a alcançabilidade IP via "track" com "IP SLA". A solução consiste nas seguintes etapas:

1) Criar o seguinte monitoramento ao gateway MPLS:

SW-Core(config)# ip sla monitor 1
SW-Core(config-sla-monitor)# type echo protocol ipIcmpEcho 11.11.11.1 source-interface f1/0
SW-Core(config-sla-monitor)# timeout 500
SW-Core(config-sla-monitor)# frequency 3
SW-Core(config-sla-monitor)# exit
SW-Core(config)# ip sla monitor schedule 1 life forever start-time now


Agora o dispositivo fará 3 tentativas de ping (echo requests) de meio em meio segundo (500ms) para o seu gateway da interface f1/0 (o link MPLS). Lembrei o aluno para não esquecer de substituir o ip 11.11.11.1 pelo endereço do gateway MPLS que eles possuem na empresa. 

Também disse ao aluno para ter em mente que essa estratégia vai consumir mais recursos do SW-Core porque ativamos um monitoramento que irá gerar tráfego com frequência para monitorar a alcançabilidade do destino. No entanto, não há outra forma de conseguir esse resultado já que a interface fast-ethernet não cai com a ausência de conectividade do link.

2) Criar um objeto de rastreabilidade (track) associado ao "SLA Monitor 1":

SW-Core(config)# track 1 rtr 1

Obs.: Em versões mais recentes do IOS pode ser que você tenha que substituir esse comando por: "track 1 ip sla 1 reachability". O recurso SLA já foi previamente denominado SAA e RTR, daí a menção rtr no comando.

3) Criar as seguintes rotas default rastreando o link primário:

SW-Core(config)# ip route 0.0.0.0 0.0.0.0 f1/0 track 1 1
SW-Core(config)# ip route 0.0.0.0 0.0.0.0 f2/0 2


Pronto! Assim vai funcionar independente do status da interface porque o dispositivo irá monitorar o sucesso do ping ao gateway na camada 3!!! Apenas para confirmar que a solução funciona, vamos visualizar a tabela de roteamento e o objeto "track 1" do SW-Core quando o link MPLS está ativo:

SW-Core#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 0.0.0.0 to network 0.0.0.0

     22.0.0.0/30 is subnetted, 1 subnets
C       22.22.22.0 is directly connected, FastEthernet2/0
     11.0.0.0/30 is subnetted, 1 subnets
C       11.11.11.0 is directly connected, FastEthernet1/0
C    192.168.0.0/24 is directly connected, FastEthernet0/0
S*   0.0.0.0/0 is directly connected, FastEthernet1/0
SW-Core#
SW-Core#show track 1
Track 1
  Response Time Reporter 1 state
  State is Up
    2 changes, last change 00:00:59
  Latest operation return code: OK
  Latest RTT (millisecs) 16
  Tracked by:
    STATIC-IP-ROUTING 0

Reparem que a rota default sai pela interface f1/0 do link MPLS. Também repare que o objeto "track 1" está com status UP. Agora vou simular uma queda no link MPLS derrubando a interface do roteador que representa a operadora e vajamos o resultado:

SW-Core#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 0.0.0.0 to network 0.0.0.0

     22.0.0.0/30 is subnetted, 1 subnets
C       22.22.22.0 is directly connected, FastEthernet2/0
     11.0.0.0/30 is subnetted, 1 subnets
C       11.11.11.0 is directly connected, FastEthernet1/0
C    192.168.0.0/24 is directly connected, FastEthernet0/0
S*   0.0.0.0/0 is directly connected, FastEthernet2/0
SW-Core#
SW-Core#show track 1
Track 1
  Response Time Reporter 1 state
  State is Down
    3 changes, last change 00:00:09
  Latest operation return code: Timeout
  Tracked by:
    STATIC-IP-ROUTING 0

Problema resolvido!
Espero que essa postagem seja útil também para outras pessoas! ;-)
 

Abraço.

Samuel.

segunda-feira, 10 de dezembro de 2012

Route-Map na Filtragem de Rotas Redistribuídas

Olá Pessoal.

No Lab4 do livro o leitor pode praticar as configurações mais básicas do processo de redistribuição de rotas que basicamente consiste na inserção de rotas aprendidas por um determinado protocolo de roteamento dentro de outro protocolo de roteamento. No exemplo do livro foram utilizados os protocolos OSPF e o EIGRP (da Cisco). 

No entanto, podem existir algumas situações em que o objetivo é redistribuir algumas rotas de um protocolo para outro (e não todas). Felizmente podemos associar route-maps com o comando de redistribuição de rotas, de maneira que é possível personalizar quais rotas queremos ou não redistribuir.

Para reproduzir esse processo, vamos considerar o cenário abaixo que é bastante simples. Nele existem dois roteadores adjacentes via OSPF em suas interfaces f0/0 (192.168.0.1/30 e 192.168.0.2/30). 



Para "simular" as várias rotas externas, em R2 criei 5 interfaces loopback e as anunciei através de uma instância EIGRP, conforme roteiro abaixo:

R2(config)# interface f0/0
R2(config-if)# ip address 192.168.0.2 255.255.255.252
R2(config-if)# no shut
R2(config-if)# interface loopback 1
R2(config-if)# ip address 1.1.1.1 255.255.255.255
R2(config-if)# interface loopback 2
R2(config-if)# ip address 2.2.2.2 255.255.255.255
R2(config-if)# interface loopback 3
R2(config-if)# ip address 3.3.3.3 255.255.255.255
R2(config-if)# interface loopback 4
R2(config-if)# ip address 4.4.4.4 255.255.255.255
R2(config-if)# interface loopback 5
R2(config-if)# ip address 5.5.5.5 255.255.255.255
R2(config-if)# exit
R2(config)# router eigrp 90
R2(config-router)# no auto-summary
R2(config-router)# network 1.1.1.1 0.0.0.0
R2(config-router)# network 2.2.2.2 0.0.0.0
R2(config-router)# network 3.3.3.3 0.0.0.0
R2(config-router)# network 4.4.4.4 0.0.0.0
R2(config-router)# network 5.5.5.5 0.0.0.0

Depois das configurações básicas em R2, vamos ao roteiro para configurar a redistribuição apenas das rotas 1.1.1.1/32, 2.2.2.2/32 e 4.4.4.4/32, excluindo as rotas 3.3.3.3/32 e 5.5.5.5/32.

01. R2(config)# access-list 35 permit 3.3.3.3 0.0.0.0
02. R2(config)# access-list 35 permit 5.5.5.5 0.0.0.0
03. R2(config)# route-map Filter-Net3-Net5 deny 10
04. R2(config-route-map)# match ip address 35
05. R2(config-route-map)# route-map Filter-Net3-Net5 permit 20
06. R2(config-route-map)# exit
07. R2(config)# router ospf 64
08. R2(config-router)# router-id 2.2.2.2
09. R2(config-router)# network 192.168.0.0 0.0.0.3 area 0
10. R2(config-router)# redistribute eigrp 90 subnets route-map Filter-Net3-Net5
11. R2(config-router)# exit

Pronto! Nas linhas 1 e 2 criamos uma ACL para posteriormente ser utilizada no match do route-map. Repare que o permit da ACL não é reponsável por permitir ou negar as rotas, apenas por enquadrar uma match (conformidade). Nas linhas de 3-5 criamos uma route-map denominado Filter-Net3-Net5 que irá negar as rotas 3.3.3.3/32 e 5.5.5.5/32 e que irá permitir todas as outras entradas. Por fim, nas linhas de 07-09 configuramos a instância OSPF, de maneira que na linha 10 temos a redistribuição das rotas EIGRP filtradas pela route-map. Agora em R1 você poderá observar que somente as rotas permitidas foram adicionadas na tabela de roteamento.

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     1.0.0.0/32 is subnetted, 1 subnets
O E2    1.1.1.1 [110/20] via 192.168.0.2, 00:29:38, FastEthernet0/0
     2.0.0.0/32 is subnetted, 1 subnets
O E2    2.2.2.2 [110/20] via 192.168.0.2, 00:29:38, FastEthernet0/0
     4.0.0.0/32 is subnetted, 1 subnets
O E2    4.4.4.4 [110/20] via 192.168.0.2, 00:29:38, FastEthernet0/0
     192.168.0.0/30 is subnetted, 1 subnets
C       192.168.0.0 is directly connected, FastEthernet0/0



Caso vocês queiram reproduzir o experimento, a configuração de R1 é bem simples e pode ser observada no roteiro abaixo:

R1(config)# interface f0/0
R1(config-if)# ip address 192.168.0.1 255.255.255.252
R1(config-if)# no shut
R1(config-if)# exit
R1(config)# router ospf 64
R1(config-router)# router-id 1.1.1.1
R1(config-router)# network 192.168.0.0 0.0.0.3 area 0
R1(config-router)# end 

Abraço!

Samuel.