Rotas Flutuantes no Ambiente Corporativo
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 aretirada 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:
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-interfacef1/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":
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
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
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
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
