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
1- AS's de transito
2- AS's de trnsito no PTT 3- Estudo de Caso
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:
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.
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.
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...
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
*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:
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.
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.
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#
Soluo:
No receber nenhum anncio que tenha sido originado pelo meu cliente no PTT
Com esse filtro, qualquer rota exportada pelo AS 100 der ignorada
... 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 ...
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
SOLUO:
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
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
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
CISCO CLI
SP(config)# route-map IBGP-IN permit 10 ... set ip next-hop 192.168.0.1
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"
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
O que fazer?
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 ...
Configurando: CISCO CLI: SP(config)# route-map IBGP-OUT permit 10 ... set community 999:999 ...
interessante negar esse anncio apenas para minha operadora local, e permitir para os meus clientes de transito IP
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:
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:
60% de todo trfego chega pelo circuito IP local e 40% pelo link BGP-
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
#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
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
SP(config)# route-map IBGP-OUT permit 10 match community IBGP set community 999:999
...
# 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
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 ...
# 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)
#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
#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
Vamos as configuraes:
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!