Vous êtes sur la page 1sur 85

UTILIZANDO FILTROS BGP COM MIKROTIK / CISCO

Objetivo: Proporcionar um melhor entendimento com relao ao funcionamento da Internet, trazendo um ponto de vista pouco explorado no roteamento entre sistemas autnomos, compartilhar experincias e solues de problemas comuns utilizando BGP
*Para baixar o PDF atualizado e acompanhar correes e novas verses, acesse o link da apresentao online e cadastre seu email:

https://docs.google.com/presentation/d/1MQMNg72ELyBNn3dcmirW_f_HUVURyF0N0QbQotnUqkU/edit

Palestrante:
Rinaldo Vaz Formado em redes de computador Trabalha na rea de redes desde 2001 Usurio avanado do RouterOS desde 2007 Usurio avanado do Cisco IOS desde 2008 Analista de Redes da Associao Nacional para Incluso Digital (ANID) desde 2010 Chefe de Operaes do NOC Responsvel tcnico pelo AS 28135 Certificado

Somos uma associao sem fins lucrativos, cujo objetivo promover incluso digital no Brasil, colaborando principamente com o acesso ao link dedicado para pequenos provedores

*Proponho aqui uma troca de experiencia sobre problemas enfrentados nessa rede, e discutir as solues empregadas

Algumas boas prticas com BGP:

1- AS's de transito
2- AS's de trnsito no PTT 3- Estudo de Caso

1-Boas prticas para um AS de transito


1.1 - Evitando receber dos clientes anncios indesejados

Quando precisamos propagar blocos de clientes, interessante no receber nada que no seja combinado, mas ao mesmo tempo permitir ao cliente uma certa "liberdade" para decidir quais sub-blocos anunciar para voc:

Exemlo para os prximos slides:


Cliente:

AS 100 Bloco CIDR 100.0.0.0/20

1-Boas prticas para um AS de transito


1.1 - Evitando receber dos clientes anncios indesejados

ROUTEROS CLI

/routing bgp peer> add default-originate=if-installed in-filter=as100-in out-filter=as100-out name=cliente_as100 nexthop-choice=force-self remoteaddress=192.168.0.2 remote-as=100 routing filter> add action=accept chain=as100-in prefix=100.0.0.0/20 prefixlength=20-24 set-bgp-local-pref=120 add action=discard chain=as100-in #traduzinho: quero receber a rede 100.0.0.0/20 ou qualquer sub-bloco /21, /22, /23 ou /24
*Evitamos com esse filtro que cheguem em nossa tabela anncios errados que o cliente venha a fazer, por exemplo, se ele desabilita seu filtro de sada, evitamos receber dele a tabelafull (360000 rotas em media), o impacto disso seria todo o meu upload subir pelo cliente, j que as rotas recebidas por ele recebem uma prioriodade maior do que as rotas recebidas pelas minhas operadoras.

1-Boas prticas para um AS de transito


1.1 - Evitando receber dos clientes anncios indesejados

CISCO CLI

R1(config-router)# neighbor 192.168.0.2 remote-as 100 neighbor 192.168.0.2 description Cliente AS 100 neighbor 192.168.0.2 next-hop-self neighbor 192.168.0.2 soft-reconfiguration inbound neighbor 192.168.0.2 route-map as100-in in neighbor 192.168.0.2 route-map as100-out out R1(config)# ip prefix-list BLOCOS-AS-100 seq 1 permit 10.0.0.0/20 le 24 R1(config)# route-map as100-in permit 10 match ip address prefix-list BLOCOS-AS-100 set local-preference 120

#traduzinho: quero receber a rede 100.0.0.0/20 ou qualquer sub-bloco /21, /22, /23 ou /24
*Evitamos com esse filtro que cheguem em nossa tabela anncios errados que o cliente venha a fazer, por exemplo, se ele desabilita seu filtro de sada, evitamos receber dele a tabelafull (360000 rotas em media), o impacto disso seria todo o meu upload subir pelo cliente, j que as rotas recebidas por ele recebem uma prioriodade maior do que as rotas recebidas pelas minhas operadoras.

1-Boas prticas para um AS de transito


1.2 - Evitando propagar anncios do seu cliente, mas que foram feitos para outra operadora.

Um filtro similar ao do slide anterior "as100-in" no "operadora-out" vai funcionar mas deixa espao para um problema: *Meu cliente anuncia 100.0.0.0/21 para mim e 100.0.8.0/21 para sua outra operadora(as400), e logo minha RIB teria uma rota apontando para meu cliente (100.0.0.0/21) e outra para minha operadora (100.0.8.0/21), e meu router acabaria fazendo os dois anncios para minha vizinhana cionforme slides a seguir...

1-Boas prticas para um AS de transito


1.2 - Evitando propagar anncios do seu cliente, mas que foram feitos para outra operadora.

[admin@R1] /ip route print detail where dst-address in 100.0.0.0/20

0 ADb dst-address=100.0.0.0/21 gateway=192.168.0.2 gateway-status=192.168.0.2 reachable ether2-cliente distance=20 scope=40 target-scope=10 bgp-as-path="100" bgp-med=0 bgp-origin=igp receivedfrom=cliente_as100
1 ADb dst-address=100.0.8.0/21 gateway=200.200.200.1 gatewaystatus=200.200.200.1 reachable ether1-operadora_as300 distance=20 scope=40 target-scope=10 bgp-as-path="300,400,100" bgporigin=igp received-from=peer_operadora_as300 Observem no "bgp-as-patch" que a rota #1 no foi recebida do meu cliente, mas sim da minha operadora A, e por estar sendo uma rota vlida em minha tabela, vai ser propagado para todos os meus peers

1-Boas prticas para um AS de transito


1.2 - Evitando propagar anncios do seu cliente, mas que foram feitos para outra operadora. *No posso anunciar 100.0.8.0/21 para o AS 900 como resolver esse problema?

1-Boas prticas para um AS de transito


1.2 - Evitando propagar anncios do seu cliente, mas que foram feitos para outra operadora.
Nesses casos precisamos adicionar mais uma condio de match com o que chamamos de expresses regulares: /routing filter> add action=accept chain=peer-operadora_as900-out prefix=100.0.0.0/20 prefix-length=20-24 bgp-as-path=^100$

*traduzinho: quero receber a rede 100.0.0.0/20 ou qualquer sub-bloco /21, /22, /23 ou /24 mas apenas que comecem com "100" no seu as-patch Evitamos assim que anncios recebidos por outra operadora sejam repassados indevidadmente Caso eu substitua "$" por "_" preservo ao meu cliente a libertade de utilizar um "as-patch-prepend" aceitando um AS-patch assim:

1-Boas prticas para um AS de transito


1.2 - Evitando propagar anncios do seu cliente, mas que foram feitos para outra operadora.
Cisco CLI
R1(config)# ip prefix-list BLOCOS-AS-100 seq 1 permit 10.0.0.0/20 le 24 R1(config)# ip as-path access-list AS-PATH-100 permit ^100$ ou ^100_ R1(config)# route-map as100-in permit 10 match ip address prefix-list BLOCOS-AS-100 match as-path AS-PATH-100

2-AS's de trnsito nas trocas de trfego


2.1 - Algumas precaues

Existem alguns pontos importantes serem considerados, pois a ausncia de alguns filtros podem causar prejuzos, aumento de latncia ou loops de roteamento.

Um bom exemplo disso aconteceu com uma grande operadora que participa do PTT-SP. Atualmente esse problema foi resolvido, mas ainda existem outras que no esto filtrando determinados anncios.

2-AS's de trnsito nas trocas de trfego


2.2- Quando meu cliente de transito participa do PTT

O que aconteceria com o transito IP desse cliente?

2-AS's de trnsito nas trocas de trfego


2.2- Quando meu cliente de transito participa do PTT

Rotas recebidas diretamente pelo cliente Rotas recebidas pela troca de trfego

100.0.0.0/20 => as-patch 100 100.0.0.0/21 => as-patch 100 100.0.8.0/21 => as-patch 100

1# 2# 3#

Com essa RIB, todo transito IP com destino ao cliente, originado da internet, chegar ao seu router de borda, consumir a banda da sua operadora, mas chegar at ele pela troca de trfego, e com um certo conhecimento, o cliente pode manipular certos anncios e fazer parecer que ele no est consumindo quase nenhum trnsito IP, quando na verdade, esse trfego est "driblando" seus equipamentos que controlam banda.

2-AS's de trnsito nas trocas de trfego


2.2- Quando meu cliente de transito participa do PTT

100.0.0.0/20 => as-patch 100 100.0.0.0/21 => as-patch 100 100.0.8.0/21 => as-patch 100

1# 2# 3#

Como evitar esse problema?

2-AS's de trnsito nas trocas de trfego


2.2- Quando meu cliente de transito participa do PTT

Trocar trfego algo muito bom...

...desde que no seja o trnsito IP do meu cliente

Soluo:
No receber nenhum anncio que tenha sido originado pelo meu cliente no PTT

2-AS's de trnsito nas trocas de trfego


2.2- Quando meu cliente de transito participa do PTT
Configurando no RouterOS:

/routing filter> add action=accept chain=ptt-sp-in bgp-as-path=_100_

Com esse filtro, qualquer rota exportada pelo AS 100 der ignorada

2-AS's de trnsito nas trocas de trfego


2.2- Quando meu cliente de transito participa do PTT
Configurando no CISCO:

... SP(config)# ip as-path access-list NAO-RECEBER-PTT-SP permit _100_ SP(config)# route-map PTT-SP-IN deny 10 match as-path NAO-RECEBER-PTT-SP ...

3-Um estudo de caso


3.1 - Vantagens e desvantagens de um modelo BGP-VPN
Cenrio simplificado da rede ANID

3-Um estudo de caso


3.1 - Prs e contras de um modelo BGP-VPN Contras

Impossibilidade de utilizar silnalizao MPLS, e informaes de layer 2

Prs
Possibilidade de balancear o uso de links ociosos Conectifidade IP independente entre as extremidades Clientes de trnsito trocam trfego com outros clientes de trnsito remotos

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"
Vamos focar nossa ateno em 2 POPs para facilitar o entendimento:

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"
[admin@SP] > ip route print detail where dst-address =10.0.0.0.0/24 0 ADb dst-address=10.0.0.0/24 gateway=192.168.1.1 gateway-status=192.168.1.1 reachable ether2-link_vpn distance=20 scope=40 target-scope=10 bgp-as-path="17379,65006" bgp-origin=igp received-from=peer_vpn 1 Db dst-address=10.0.0.0/24 gateway=172.16.0.1 gateway-status=172.16.0.1 reachable ether1-link_ip distance=20 scope=40 target-scope=10 bgp-as-path="6000,1000,28135" bgp-origin=igp received-from=peer_transito_ip [admin@SP] > ip route print detail where dst-address =222.222.222.0/24 0 ADb dst-address=222.222.222.0/24 gateway=192.168.1.1 gateway-status=192.168.1.1 reachable ether2-link_vpn distance=20 scope=40 target-scope=10 bgp-as-path="17379,65006,12345" bgp-origin=igp received-from=peer_vpn 1 Db dst-address=222.222.222.0/24 gateway=172.16.0.1 gateway-status=172.16.0.1 reachable ether1-link_ip distance=20 scope=40 target-scope=10 bgp-as-path="6000,1000,28135,12345" bgp-origin=igp received-from=peer_transito_ip

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"
[admin@PARTICIPANTE_PTT> ip route print detail where dst-address =10.0.0.0.0/24 0 Db dst-address=10.0.0.0/24 gateway=172.16.200.1 gateway-status=172.16.200.1 reachable ether1-link_anid distance=20 scope=40 target-scope=10 bgp-as-path="28135,17379,65006" bgp-origin=igp received-from=peer_ANID 1 ADb dst-address=10.0.0.0/24 gateway=200.200.200.1 (ex participante cliente do AS 1000) gateway-status=200.200.200.1 reachable ether1-link_as1000 distance=20 scope=40 target-scope=10 bgp-as-path="1000,28135" bgp-origin=igp received-from=peer_as1000 [admin@PARTICIPANTE_PTT> ip route print detail where dst-address =222.222.222.0/24 0 Db dst-address=222.222.222.0/24 gateway=172.16.200.1 gateway-status=172.16.200.1 reachable ether1-link_anid distance=20 scope=40 target-scope=10 bgp-as-path="28135,17379,65006,12345" bgp-origin=igp received-from=peer_ANID 1 ADb dst-address=222.222.222.0/24 gateway=200.200.200..1 gateway-status=200.200.200.1 reachable ether1-link_as1000 distance=20 scope=40 target-scope=10 bgp-as-path="1000,28135,12345" bgp-origin=igp received-from=peer_as1000

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"

SOLUO:

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"

Configurando : RouterOS CLI admin@SP] /routing bgp peer> add name=ibgp-bahia remote-address=192.168.20.2 remote-as=28135 in-filter=ibgp-in out-filter=ibgp-out nexthop-choice=force-self

admin@BA] /routing bgp peer> add name=ibgp-sao_paulo remote-address=192.168.0.2 remoteas=28135 in-filter=ibgp-spo-in out-filter=ibgp-spo-out nexthopchoice=force-self

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"

Configurando : CISCO CLI


SP(config-router)# neighbor 192.168.20.2 remote-as 28135 neighbor 192.168.20.2 description IBGP Bahia neighbor 192.168.20.2 next-hop-self neighbor 192.168.20.2 default-originate neighbor 192.168.20.2 soft-reconfiguration inbound neighbor 192.168.20.2 route-map IBGP-IN in neighbor 192.168.20.2 route-map IBGP-OUT out

BA(config-router)# neighbor 192.168.0.2 remote-as 28135 neighbor 192.168.0.2 description IBGP So Paulo neighbor 192.168.0.2 next-hop-self neighbor 192.168.0.2 soft-reconfiguration inbound neighbor 192.168.0.2 route-map IBGP-SPO-IN in neighbor 192.168.0.2 route-map IBGP-SPO-OUT out

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"
Exemplo das rotas no router de So Paulo aps sesso IBGP [admin@SP] > ip route print detail where dst-address =10.0.0.0.0/24 0 ADb dst-address=10.0.0.0/24 gateway=192.168.1.1 gateway-status=192.168.1.1 reachable ether2-link_vpn distance=20 scope=40 target-scope=10 bgp-as-path="17379,65006" bgp-origin=igp received-from=peer_vpn 1 Db dst-address=10.0.0.0/24 gateway=172.16.0.1 gateway-status=172.16.0.1 reachable ether1-link_ip distance=20 scope=40 target-scope=10 bgp-as-path="6000,1000,28135" bgp-origin=igp received-from=peer_transito_ip 2 Db dst-address=10.0.0.0/24 gateway=192.168.20.2 gateway-status192.168.20.2 unreachable distance=200 scope=40 target-scope=30 bgp-local-pref=100 bgp-med=0 bgp-origin=igp received-from=ibgp_bahia PS: Caso haja uma rota padro instalada, o RouterOS troca o "unreachable" por "recursive via x.x.x.x" onde x.x.x.x o nexthop da rota padro, o que na prtica d no mesmo j que o router mandaria os pacotes para a sua rota padro, o que no nos interessa.

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"
Exemplo das rotas no router de So Paulo aps sesso IBGP [admin@SP] > ip route print detail where dst-address =222.222.222.0/24 0 ADb dst-address=222.222.222.0/24 gateway=192.168.1.1 gateway-status=192.168.1.1 reachable ether2-link_vpn distance=20 scope=40 target-scope=10 bgp-as-path="17379,65006,12345" bgp-origin=igp received-from=peer_vpn 1 Db dst-address=222.222.222.0/24 gateway=172.16.0.1 gateway-status=172.16.0.1 reachable ether1-link_ip distance=20 scope=40 target-scope=10 bgp-as-path="6000,1000,28135,12345" bgp-origin=igp received-from=peer_transito_ip 2 Db dst-address=222.222.222.0/24 gateway=192.168.20.2 gateway-status=192.168.20.2 unreachable distance=200 scope=40 target-scope=30 bgp-as-path="12345" bgp-local-pref=100 bgp-origin=igp received-from=ibgp-bahia

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"

Resolvendo o problema da rota inalcanvel:


Nesse caso, o nosso "next-hop" (192.168.20.2) no faz parte de uma rede diretamente conectada, mas sim de uma rede que foi recebida via BGP conforme print abaixo: [admin@SP] > ip route print detail where dst-address =192.168.20.0/30

0 ADb dst-address=192.168.20.0/30 gateway=192.168.0.1 gateway-status=192.168.0.1 reachable ether2-link_vpn distance=20 scope=40 target-scope=10 bgp-as-path="17379" bgp-origin=igp received-from=peer_vpn

admin@SP] /routing filter> add action=passthrough chain=ibgp-in set-target-scope=40 set-bgplocal-pref=120

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"

CISCO CLI
SP(config)# route-map IBGP-IN permit 10 ... set ip next-hop 192.168.0.1

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"
Exemplo das rotas no router de So Paulo aps sesso IBGP estabelecida [admin@SP] > ip route print detail where dst-address =10.0.0.0.0/24 0 Db dst-address=10.0.0.0/24 gateway=192.168.1.1 gateway-status=192.168.1.1 reachable ether2-link_vpn distance=20 scope=40 target-scope=10 bgp-as-path="17379,65006" bgp-origin=igp received-from=peer_vpn 1 Db dst-address=10.0.0.0/24 gateway=172.16.0.1 gateway-status=172.16.0.1 reachable ether1-link_ip distance=20 scope=40 target-scope=10 bgp-as-path="6000,1000,28135" bgp-origin=igp received-from=peer_transito_ip 2 ADb dst-address=10.0.0.0/24 gateway=192.168.20.2 gateway-status192.168.20.2 recursive via 192.168.0.1 distance=200 scope=40 target-scope=40 bgp-local-pref=120 bgp-med=0 bgp-origin=igp received-from=ibgp_bahia
PS: Como apenas a rota vlida repassada para os outros peers, o AS-Patch ser dessa vez propagado corretamente sem que apaream o AS privado nem o AS da minha operadora.

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"
Exemplo das rotas no router de So Paulo aps sesso IBGP [admin@SP] > ip route print detail where dst-address =222.222.222.0/24 0 Db dst-address=222.222.222.0/24 gateway=192.168.1.1 gateway-status=192.168.1.1 reachable ether2-link_vpn distance=20 scope=40 target-scope=10 bgp-as-path="17379,65006,12345" bgp-origin=igp received-from=peer_vpn 1 Db dst-address=222.222.222.0/24 gateway=172.16.0.1 gateway-status=172.16.0.1 reachable ether1-link_ip distance=20 scope=40 target-scope=10 bgp-as-path="6000,1000,28135,12345" bgp-origin=igp received-from=peer_transito_ip 2 ADb dst-address=222.222.222.0/24 gateway=192.168.20.2 gateway-status=192.168.20.2 recursive via 192.168.0.1 distance=200 scope=40 target-scope=40 bgp-as-path="12345" bgp-local-pref=300 bgp-origin=igp received-from=ibgp-bahia Na tabela dos clientes de transito IP ou participantes do PTT-Metro a lgica seria a mesma, e os AS-Patch indesejado no iria mais ser propagado.

3-Um estudo de caso


3.2 - Transformando minha rede em um "PTT"
[admin@PARTICIPANTE_PTT> ip route print detail where dst-address =10.0.0.0.0/24 0 ADb dst-address=10.0.0.0/24 gateway=172.16.200.1 gateway-status=172.16.200.1 reachable ether1-link_anid distance=20 scope=40 target-scope=10 bgp-as-path="28135" bgp-origin=igp received-from=peer_ANID 1 Db dst-address=10.0.0.0/24 gateway=200.200.200.1 (ex participante cliente do AS 1000) gateway-status=200.200.200.1 reachable ether1-link_as1000 distance=20 scope=40 target-scope=10 bgp-as-path="1000,28135" bgp-origin=igp received-from=peer_as1000 [admin@PARTICIPANTE_PTT> ip route print detail where dst-address =222.222.222.0/24 0 ADb dst-address=222.222.222.0/24 gateway=172.16.200.1 gateway-status=172.16.200.1 reachable ether1-link_anid distance=20 scope=40 target-scope=10 bgp-as-path="28135,12345" bgp-origin=igp received-frompeer_ANID 1 Db dst-address=222.222.222.0/24 gateway=200.200.200..1 gateway-status=200.200.200.1 reachable ether1-link_as1000 distance=20 scope=40 target-scope=10 bgp-as-path="1000,28135,12345" bgp-origin=igp received-from=peer_as1000

3-Um estudo de caso


3.3 - Um problema de escalabilidade
Estabelecendo sesses ibgp entre todos os POPs

3-Um estudo de caso


3.3 - Um problema de escalabilidade
Comeando por Bahia:

3-Um estudo de caso


3.3 - Um problema de escalabilidade
Depois Rio Grande do Sul:

3-Um estudo de caso


3.3 - Um problema de escalabilidade
Ficamos assim diante de uma dificuldade extrema, por exemplo, tenho 35 POPs ativos hoje, quantas sesses BGP so necessrias?

3-Um estudo de caso


3.3 - Um problema de escalabilidade

Para evitar algumas dezenas de slides vamos fazer uma anlize combinatria enquanto nos resta tempo para "desistir" Quantas sesses BGP no total? vou chamar esse valor de T 6 POPS (elementos) que vou chamar de "e" Sesso BGP = agrupamento 1+1 (sem repeties nem AA nem BA) que vou chamar de "a"

T(e,a) = e! / [ (e-a)! * a!]


Aplicando a frmula para os 6 POPs do exemplo

fat(6) / [ fat(6-2) * fat(2) ] = 15


Aplicando a frmula na quantidade de POPs ativos na ANID

fat(35) / [ fat(35-2) * fat(2) ] = 595


Aplicando ao meu planejamento futuro de 60 POPs

fat(60) / [ fat(60-2) * fat(2) ] = 1770

3-Um estudo de caso


3.3 - Um problema de escalabilidade
Com "Route-Reflector" em SP podemos reduzir a quantidade de sesses iBGP dentro do meu AS para apenas 1 por POP, reduzinho ento de 15 para 5 sesses iBGP no total

3-Um estudo de caso


3.3 - Uma soluo e um novo problema
A soluo de route-reflector resolve o meu problema de escalabilidade, porm me traz um novo problema em um cenrio particular, porm relativamente comum: Meu cliente do AS-12345 compra Transito IP em 2 POPs diferentes E meus filtros precisam proporcionar liberdade para que ele decida para qual POP anunciar seus blocos, bem como modificar esses anuncios quando bem entender

3-Um estudo de caso


3.4 - Uma soluo e um novo problema
[admin@RS] /ip route print detail where dst-address in 100.0.0.0/20

0 ADb dst-address=100.0.0.0/21 gateway=172.16.40.2 gateway-status=172.168.40.2 reachable ether3-cliente distance=20 scope=40 target-scope=10 bgp-as-path="12345" bgp-med=0 bgp-origin=igp receivedfrom=cliente_as12345
1 ADb dst-address=100.0.8.0/21 gateway=192.168.20.2 gatewaystatus=192.168.20.2 recursive via 192.168.30.1 ether2-link_vpn distance=20 scope=40 target-scope=40 bgp-as-path="12345" bgporigin=igp received-from=ibgp-sao_paulo

Observem que nesse caso, o "bgp-as-patch" permanece o mesmo, tanto na rota recebita diretamente do cliente (#0) quanto na rota que o cliente anunciou no POP Bahia e foi "refletida" por SP, a condio de match utilizada o inicio dessa apresentao iria anunciar

3-Um estudo de caso


3.4 - Uma soluo e um novo problema

Vamos analizar as condies de match:


/routing filter> add action=accept chain=peerX-out prefix=100.0.0.0/20 prefixlength=20-24 bgp-as-path=^12345_ Note que as duas rotas comeam com ^12345, j que a rota que no quero anunciar foi recebida de um router do meu prprio AS, e por ser do meu AS no houve incremento no AS-Patch.

O que fazer?

3-Um estudo de caso


3.4 - Uma soluo e um novo problema
Existem vrias maneiras, porm muito difceis de escalar em sua maioria, vamos utilizar uma que exija o mnimo de configuraes:

Faremos o Route Reflector-SP inserir uma communite "999:999" em

3-Um estudo de caso


3.4 - Uma soluo e um novo problema

Adiciono ento um filtro que insere uma community em todas as rotas refletidas pelo Route-Reflector SP
Configurando: RouterOS CLI: admin@SP] /routing filter> ... add action=passthrough chain=ibgp-out set-bgpcommunities=999:999 ...

3-Um estudo de caso


3.4 - Uma soluo e um novo problema

Configurando: CISCO CLI: SP(config)# route-map IBGP-OUT permit 10 ... set community 999:999 ...

3-Um estudo de caso


3.4 - Uma soluo e um novo problema
Vamos verificar agora como ficou a tabela

[admin@RS] /ip route print detail where dst-address in 100.0.0.0/20


0 ADb dst-address=100.0.0.0/21 gateway=172.16.40.2 gateway-status=172.168.40.2 reachable ether3-cliente distance=20 scope=40 target-scope=10 bgp-as-path="12345" bgp-med=0 bgporigin=igp received-from=cliente_as12345 1 ADb dst-address=100.0.8.0/21 gateway=192.168.20.2 gatewaystatus=192.168.20.2 recursive via 192.168.30.1 ether2-link_vpn distance=20 scope=40 target-scope=40 bgp-as-path="12345" bgporigin=igp bgp-communities=999:999 received-from=ibgp-sao_paulo Agora tenho como proibir o anncio das rotas refletidas utilizando communities! Vejamos como:

3-Um estudo de caso


3.4 - Uma soluo e um novo problema
Adicionando mais uma condio de match na sada local:

[admin@RS] /routing filter>


add action=accept chain=peerX-out prefix=100.0.0.0/20 prefixlength=20-24 bgp-as-path=^12345_ bgp-communities=!999:999 Ou inserindo no topo uma regra de discard: [admin@RS] /routing filter> add action=discard chain=peerX-out bgp-communities=999:999

interessante negar esse anncio apenas para minha operadora local, e permitir para os meus clientes de transito IP

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Considere um link redundande para cada POP:

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

No modelo do slide anterior h um grande desperdcio de dinheiro levando em conta que dificilmente todos os links cairo simultaneamente, sendo assim, podemos diminuir os custos se conectando a um PIX do PTT-Metro-SP, comprando um link maior para backup em So Paulo e trazendo esse link atraves de circuitos de transporte BGP-VPN conforme veremos a seguir:

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Por que apenas 240Mb de link backup em SP e 500Mb VPN?

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Segundo estatsticas, aproximadamente 40% do volume total de trfego dos clientes vem pela troca de trfego de So Paulo, sendo assim, posso dispobinbilizar 40% a menos de trnsito IP nos meus link.
Com relao aos 500Mb de VPN sou obrigado a ter em SP a soma do total que tenho nas 5 terminaes, ou seja, 100Mb de cada POP x 5=500Mb, porm uma boa negociao pode dimimuir muito o preo do Mb de VPN, por exemplo, aqui na ANID pagamos menos da metade desse valor. Vamos entender melhor:

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Situao Normal: 60% do trafego chegando pelos links IP locais

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Situao Normal:

Para facilitar vamos analizar um POP por vez:

60% de todo trfego chega pelo circuito IP local e 40% pelo link BGP-

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Circuito IP de PE fora

Agora 100% do me trfego chega em PE pelo link BPG-VPN

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Circuitos IP de PE e BA fora

Ainda me restam 60Mb de banda IP aguardando o PIOR dos casos...

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Circuitos IP de PE,BA e RS fora

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Circuitos IP de PE, BA e RS fora

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Configurando as sesses eBGP no RouterOS: admin@SP] /routing bgp peer> add name=link-SP-master remote-address=ip_do_peer_remoto remote-as=as_operadora in-filter=link-sp-master-in out-filter=link-spmaster-out nexthop-choice=force-self

add name=link-SP-backup remote-address=ip_do_peer_remoto remote-as=as_operadora in-filter=link-sp-backup-in out-filter=link-spbackup-out nexthop-choice=force-self


add name=ptt-sp-rs1 remote-address=187.16.216.254 remoteas=26162 in-filter=ptt-sp-in out-filter=ptt-sp-out nexthopchoice=force-self add name=ptt-sp-rs2 remote-address=187.16.216.253 remoteas=26162 in-filter=ptt-sp-in out-filter=ptt-sp-out nexthopchoice=force-self

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Configurando as sesses eBGP no CISCO:

SP(config-router)# neighbor ip_link_master remote-as as_link_master neighbor ip_link_master description Link Principal neighbor ip_link_master soft-reconfiguration inbound neighbor ip_link_master route-map LINK-SP-MASTER-IN in neighbor ip_link_master route-map LINK-SP-MASTER-OUT out SP(config-router)# neighbor ip_link_backup remote-as as_link_backup neighbor ip_link_backup description Link de Backup neighbor ip_link_backup soft-reconfiguration inbound neighbor ip_link_backup route-map LINK-SP-BACKUP-IN in neighbor ip_link_backup route-map LINK-SP-BACKUP-OUT out

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Configurando as sesses eBGP no CISCO:

#Vamos utilizar os mesmos filtros para 2 neighbors com PEER-GROUP SP(config-router)# neighbor PTT-SP peer-group neighbor PTT-SP next-hop-self neighbor PTT-SP soft-reconfiguration inbound neighbor PTT-SP route-map PTT-SP-IN in neighbor PTT-SP route-map PTT-SP-OUT out

SP(config-router)# neighbor 187.16.216.253 remote-as 26162 neighbor 187.16.216.253 peer-group PTT-SP neighbor 187.16.216.253 description PTT-SP-IPV4-RS2 #RS2, RS1 neighbor 187.16.216.254 remote-as 26162 neighbor 187.16.216.254 peer-group PTT-SP neighbor 187.16.216.254 description PTT-SP-IPV4-RS1 # LG SP(config-router)# neighbor 187.16.216.252 remote-as 20121

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Configurando as sesses iBGP no RouterOS: admin@SP] /routing bgp peer> add name=ibgp-PE remote-address=ip_do_pop_remoto remoteas=28135 in-filter=ibgp-in out-filter=ibgp-out route-reflect=yes defaultoriginate=always nexthop-choice=force-self

add name=ibgp-CE remote-address=ip_do_pop_remoto remoteas=28135 in-filter=ibgp-in out-filter=ibgp-out route-reflect=yes defaultoriginate=always nexthop-choice=force-self


add name=ibgp-MG remote-address=ip_do_pop_remoto remoteas=28135 in-filter=ibgp-in out-filter=ibgp-out route-reflect=yes defaultoriginate=always nexthop-choice=force-self

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante Configurando as sesses IBGP:
admin@SP] /routing bgp peer> add name=ibgp-RS remote-address=ip_do_pop_remoto remoteas=28135 in-filter=ibgp-in out-filter=ibgp-out route-reflect=yes defaultoriginate=always nexthop-choice=force-self

add name=ibgp-BA remote-address=ip_do_pop_remoto remoteas=28135 in-filter=ibgp-in out-filter=ibgp-out route-reflect=yes defaultoriginate=always nexthop-choice=force-self


Configurando iBGP no POP remoto (exemplo vale para todos) admin@PE] /routing bgp peer> add name=ibgp-SPO remote-address=ip_do_pop_remoto remoteas=28135 in-filter=ibgp-SPO-in out-filter=ibgp-SPO-out nexthopchoice=force-self

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando as sesses iBGP no CISCO:


SP(config-router)# neighbor IBGP peer-group neighbor IBGP update-source vlan3 neighbor IBGP route-reflector-client neighbor IBGP next-hop-self neighbor IBGP default-originate neighbor IBGP soft-reconfiguration inbound neighbor IBGP route-map IBGP-IN in neighbor IBGP route-map IBGP-OUT out

#Para facilitar configuramos o PEER-GROUP apenas uma vez...

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Configurando as sesses iBGP no CISCO:
... neighbor ip_pop_PE remote-as 28135 neighbor ip_pop_PE peer-group IBGP neighbor ip_pop_PE description IBGP-RECIFE-PE neighbor ip_pop_CE remote-as 28135 neighbor ip_pop_CE peer-group IBGP neighbor ip_pop_PE description IBGP-FORTALEZA-CE neighbor ip_pop_MG remote-as 28135 neighbor ip_pop_MG peer-group IBGP neighbor ip_pop_MG description IBGP-MONTES-CLAROS-MG neighbor ip_pop_RS remote-as 28135 neighbor ip_pop_RS peer-group IBGP neighbor ip_pop_RS description IBGP-PORTO-ALEGRE-RS neighbor ip_pop_BA remote-as 28135 neighbor ip_pop_BA peer-group IBGP neighbor ip_pop_BA description IBGP-SALVADOR-BA

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
... Configurando as sesses iBGP no CISCO:

BA(config-router)# neighbor ip_POP_spo remote-as 28135 neighbor ip_POP_spo description IBGP So Paulo neighbor ip_POP_spo next-hop-self neighbor ip_POP_spo soft-reconfiguration inbound neighbor ip_POP_spo route-map IBGP-SPO-IN in neighbor ip_POP_spo route-map IBGP-SPO-OUT out

#O exemplo o mesmo para todos os POPs remotos, PE, MG, CE e RS

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal ibgp-in RouterOS:


admin@SP] /routing filter> add action=accept chain=ibgp-in set-bgp-communities=1111:1111 set-bgp-local-pref=120 # Essa regra identifica com a community 1111:1111 e prioriza as rotas recebitas dos POPs remotos *quero que a prioridade dessas rotas seja maior que o padro (100) recebido das operadoras, mas ao mesmo tempo menor do que as rotas recebidas do PTT

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal ibgp-in no CISCO:


... SP(config)# route-map IBGP-IN permit 10 set local-preference 120 set community 1111:1111 ...

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal ibgp-out:


admin@SP] /routing filter> add action=discard chain=ibgp-out set-bgp-as-path=^17379$ add action=accept chain=ibgp-out bgp-communities=1111:1111 set-bgp-communities=999:999 # A primeira regra evita que rotas da nuvem BGP-VPN sejam enviadas para os POPs remotos pelo Route Reflector # A segunda reflete as rotas recebidas por IBGP e "reflete" com uma nova community 999:999

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal ibgp-out:


... SP(config)# ip as-path access-list IBGP permit ^17379$ SP(config)# route-map IBGP-OUT deny 9 match as-path IBGP ... ... SP(config)# ip community-list standard IBGP permit 1111:1111

SP(config)# route-map IBGP-OUT permit 10 match community IBGP set community 999:999
...

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal ptt-sp-in no RouterOS:


admin@SP] /routing filter> add action=accept chain=ptt-sp-in set-bgp-local-pref=110

# Essa regra prioriza as rotas recebidas do PTT-Metro em relao as rotas recebidas das operadoras, mas no em relao as rotas recebidas por IBGP que so meus clientes redes do meu AS

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal ptt-sp-in no CISCO:


SP(config)# route-map PTT-SP-IN permit 10 set local-preference 110

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal ptt-sp-out no RouterOS:


admin@SP] /routing filter> add action=accept chain=ptt-sp-out bgp-communities=1111:1111 add action=accept chain=ptt-sp-out prefix=redes_locais add action=discard chain=ptt-sp-out # A primeira regra permite anncio das redes recebidas por iBGP dos POPs remotos; # A segunda permite o anncio das redes do prprio POP que nao receberam a community 1111:1111 # A terceira descarta todo o resto

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal ptt-sp-out no CISCO


... SP(config)# route-map PTT-SP-OUT permit 10 match ip address prefix-list BLOCOS-LOCAIS

SP(config)# ip community-list standard ANUNCIAR-PTT-SP permit 1111:1111 SP(config)# route-map PTT-SP-OUT permit 20 match community ANUNCIAR-PTT-SP ...

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal link-sp-master-in no RouterOS:


admin@SP] /routing filter> add action=accept chain=link-sp-master-in set-bgp-local-pref=90

# Essa regra atribui um Local_preference de 90 para as rotas recebidas da operadora SP master com a finalidade de no permitir que os routers remotos utilizem essas rotas , mas sim as rotas recebidas das operadoras locais que tero Local_pref padro (100)

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal link-sp-master-in no CISCO:


SP(config)# route-map LINK-MASTER-SP-IN permit 10 set local-preference 90

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal link-sp-master-out no RouterOS:


admin@SP] /routing filter> add action=discard chain=link-sp-master-out bgpcommunities=1111:1111 add action=accept chain=link-sp-master-out prefix=redes_locais add action=discard chain=link-sp-master-out # A primeira regra evita o problema descrito na sesso 5.3

# A segunda permite o anncio dos blocos de cliente locais


# A terceira descarta todo o resto e evita por exemplo o anncio de redes recebidas do PTT-Metro

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal link-sp-master-out no CISCO


... SP(config)# ip community-list standard NAO-ANUNCIAR-LINK-MASTER-SP permit 1111:1111 SP(config)# route-map LINK-MASTER-SP-OUT deny 10 match community NAO-ANUNCIAR-LINK-MASTER-SP

SP(config)# route-map LINK-MASTER-SP-OUT permit 20 match ip address prefix-list BLOCOS-LOCAIS ...

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal link-sp-backup-in no RouterOS:


admin@SP] /routing filter> add action=accept chain=link-sp-backup-in set-bgp-local-pref=80

#Essa regra atribui um Local_preference de 80 para as rotas recebidas do link backup para que as mesmas no subam na FIB do RouterSP, a menos claro que o link master fique fora

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal link-sp-backup-in no CISCO:


SP(config)# route-map LINK-BACKUP-SP-IN permit 10 set local-preference 80

#Essa regra atribui um Local_preference de 80 para as rotas recebidas do link backup para que as mesmas no subam na FIB do RouterSP, a menos claro que o link master fique fora

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante

Configurando os filtros do canal link-sp-backup-out:


Primeiramente preciso ter em mente que o link BACKUP de So Paulo deve ficar em stand by, ou seja, no quero que nenhum trfego dos POPs remotos ou redes locais cheguem por esse circuito com exeo de uma eventual queda nos circuitos IP principais (local ou qualquer um dos remotos) Para isso iremos utilizar o AS-Patch-Prepend:

Vamos as configuraes:

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Configurando no RouterOS # A primeira regra anuncia as rotas recebidas dos POPs remotos repetindo 3 vezes o meu prprio AS e remove a community 1111:1111 # A segunda faz a mesma coisa com as redes locais # A Terceira no permite o anncio de nada mais admin@SP] /routing filter> add action=accept chain=link-sp-backup-out set-bgp-prepend=3 bgp-communities=1111:1111 set-bgpcommunities="" add action=accept chain=link-sp-backup-out refix=redes_locais set-bgp-prepend=3 add action=discard chain=link-sp-backup-out

3-Um estudo de caso


3.5 - Um modelo relativamente barato de link redundante
Configurando no CISCO

... SP(config)# ip community-list standard ANUNCIAR-LINK-BACKUP-MASTER-SP permit 1111:1111

SP(config)# route-map LINK-BACKUP-SP-OUT permit 10 match community ANUNCIAR-LINK-MASTER-SP set as-path prepend 28135 28135 28135 28135
SP(config)# route-map LINK-BACKUP-SP-OUT permit 20 match ip address prefix-list BLOCOS-LOCAIS set as-path prepend 28135 28135 28135 28135 ...

PERGUNTAS??
pessoal: rinaldopvaz@gmail.com empresa rinaldo@anid.com.br
http://rinaldovaz.blogspot.com http://www.linkedin.com/profile/edit?trk=hb_tab_pro_top @rinaldo_vaz

AGRADECIMENTOS
todos que participam do projeto ANID, associados, mantenedores e conselheiros e colaboradores especialmente equipe do NOC e Patrcia Correia pela valiosa contribuio na elaborao dessa apresentao!

OBRIGADO!

Vous aimerez peut-être aussi