16 de jan. de 2018

Como Filtrar Rotas indesejadas ANTES delas chegarem ao Roteador de Borda


Com BGP ORF, uma prefix-list criada em seu roteador de borda pode ser enviada para sua Operadora e todo o consumo de CPU resultante da execução dos Filtros fica por conta dela.

É muito comum um Provedor solicitar Full-Route para uma Operadora mas filtrar a maioria das rotas que chegam no seu roteador de Borda, deixando muitas vezes apenas a rota padrão ser aprendida ou então apenas um determinado conjunto de rotas (Partial Route). Isso por quê pedir para a Operadora mudar o anúncio pode demorar algum tempo.

Com roteadores Cisco, é possível criar um Filtro em seu Roteador de Borda e executa-lo no roteador da Operadora. Assim, o processamento do Filtro é feito externamente e apenas as rotas desejadas chegam até sua borda. Vejamos um exemplo de configuração:

Obs: Este conteúdo é abordado no Curso Preparatório para o Exame CCIE Written 400-101

Passo 1 - Configuração Básica - Vamos assumir aqui que R1 é o roteador da Operadora e R2 é o roteador de Borda:

ena
conf t
hostname R1
int lo0
ip addr 6.6.6.6 255.255.255.255
int lo1
ip addr 200.10.1.1 255.255.255.0
int lo2
ip addr 200.10.2.1 255.255.255.0
int lo3
ip addr 200.10.3.1 255.255.255.0
int lo4
ip addr 200.10.4.1 255.255.255.0
int lo5
ip addr 200.10.5.1 255.255.255.0
int e0/0
ip addr 200.10.0.1 255.255.255.252
no shut
exit
ip route 0.0.0.0 0.0.0.0 lo0
router bgp 65001
neighbor 200.10.0.2 remote-as 65002
netw 200.10.1.0 mask 255.255.255.0
netw 200.10.2.0 mask 255.255.255.0
netw 200.10.3.0 mask 255.255.255.0
netw 200.10.4.0 mask 255.255.255.0
netw 200.10.5.0 mask 255.255.255.0
netw 0.0.0.0 mask 0.0.0.0
end
wr


ena
conf t
hostname R2
int e0/0
ip addr 200.10.0.2 255.255.255.252
no shut
exit
router bgp 65002
neighbor 200.10.0.1 remote-as 65001
end
wr

O roteador1 vai enviar 5 rotas 200.10 mais a rota padrão para o roteador2, as quais serão aprendidas, conforme a saida abaixo:

R2#sh ip route bgp

B* 0.0.0.0/0 [20/0] via 200.10.0.1, 00:00:46
B 200.10.1.0/24 [20/0] via 200.10.0.1, 00:00:46
B 200.10.2.0/24 [20/0] via 200.10.0.1, 00:00:46
B 200.10.3.0/24 [20/0] via 200.10.0.1, 00:00:46
B 200.10.4.0/24 [20/0] via 200.10.0.1, 00:00:46
B 200.10.5.0/24 [20/0] via 200.10.0.1, 00:00:46


Passo 2 - Vamos criar uma Prefix-List que só aceite o recebimento da rota padrão e descarte as demais rotas, e então vamos associar essa prefix-list
com o vizinho roteador1:

R2(config)#ip prefix-list DEFAULT-ROUTE permit 0.0.0.0/0
R2(config)#router bgp 65002
R2(config-router)#neighbor 200.10.0.1 prefix-list DEFAULT-ROUTE in

Passo 3 - Vamos forçar a atualização das rotas com o comando clear ip bgp * (mas antes vamos ativar um debug para acompanhar a execução do filtro)

R2#debug ip bgp update
BGP updates debugging is on for address family: IPv4 Unicast

R2#clear ip bgp *
R2#
*Jan 16 13:36:20.118: %BGP-5-ADJCHANGE: neighbor 200.10.0.1 Down User reset
*Jan 16 13:36:20.118: %BGP_SESSION-5-ADJCHANGE: neighbor 200.10.0.1 IPv4 Unicast topology base removed from session User reset
*Jan 16 13:36:20.464: %BGP-5-ADJCHANGE: neighbor 200.10.0.1 Up
*Jan 16 13:36:20.466: BGP(0): 200.10.0.1 rcvd UPDATE w/ attr: nexthop 200.10.0.1, origin i, metric 0, merged path 65001, AS_PATH
*Jan 16 13:36:20.466: BGP(0): 200.10.0.1 rcvd 0.0.0.0/0
*Jan 16 13:36:20.466: BGP(0): 200.10.0.1 rcvd 200.10.1.0/24 -- DENIED due to: distribute/prefix-list;
*Jan 16 13:36:20.466: BGP(0): 200.10.0.1 rcvd 200.10.2.0/24 -- DENIED due to: distribute/prefix-list;
*Jan 16 13:36:20.466: BGP(0): 200.10.0.1 rcvd 200.10.3.0/24 -- DENIED due to: distribute/prefix-list;
*Jan 16 13:36:20.466: BGP(0): 200.10.0.1 rcvd 200.10.4.0/24 -- DENIED due to: distribute/prefix-list;
*Jan 16 13:36:20.466: BGP(0): 200.10.0.1 rcvd 200.10.5.0/24 -- DENIED due to:
R2# distribute/prefix-list;
*Jan 16 13:36:21.483: BGP(0): Revise route installing 1 of 1 routes for 0.0.0.0/0 -> 200.10.0.1(global) to main IP table

Conforme podemos acompanhar acima, as 5 redes 200.10 recebidas foram negadas pela prefix-list e apenas o rota padrão doi instalada. Podemos confirmar isso como o comando abaixo em R2:

R2#show ip route bgp
B* 0.0.0.0/0 [20/0] via 200.10.0.1, 00:02:22

Passo 4 - Vimos que o Filtro funciona, agora, vamos configurar a feature BGP ORF (Outbound Router Filter) que permite que R2 exporte o filtro para R1 de modo que o mesmo seja executado no roteador que faz o anúncio e não naquele que recebe as rotas:

em R1
router bgp 65001
neighbor 200.10.0.2 capability orf prefix-list receive
end
wr

em R2
router bgp 65002
neighbor 200.10.0.1 capability orf prefix-list send
end
wr

Passo 5 - Verique que ao forçar novamente a atualização, apenas a rota padrão é enviada ao R2, o descarte já foi feito na origem, que recebeu a Prefix-list e a executou localmente:

R2#clear ip bgp *
R2#
*Jan 16 13:58:54.546: %BGP-5-ADJCHANGE: neighbor 200.10.0.1 Down User reset
*Jan 16 13:58:54.546: %BGP_SESSION-5-ADJCHANGE: neighbor 200.10.0.1 IPv4 Unicast topology base removed from session User reset
R2#
*Jan 16 13:58:55.576: %BGP-5-ADJCHANGE: neighbor 200.10.0.1 Up
R2#
*Jan 16 13:58:56.602: BGP(0): 200.10.0.1 rcvd UPDATE w/ attr: nexthop 200.10.0.1, origin i, metric 0, merged path 65001, AS_PATH
*Jan 16 13:58:56.602: BGP(0): 200.10.0.1 rcvd 0.0.0.0/0
R2#
*Jan 16 13:58:57.633: BGP(0): Revise route installing 1 of 1 routes for 0.0.0.0/0 -> 200.10.0.1(global) to main IP table


Limitações: BGP ORF requer que os dois lados suportem a capability, não funciona com Access-list nem com tráfego Multicast

Maiores Informações:

Outbound Route Filtering Capability for BGP-4
http://www.ietf.org/internet-drafts/draft-ietf-idr-route-filter-16.txt

BGP Prefix-Based Outbound Route Filtering
http://www.cisco.com/en/US/docs/ios/12_2t/12_2t11/feature/guide/ft11borf.html










Nenhum comentário:

LinkWithin

Related Posts with Thumbnails