Prévia do material em texto
BGP Design com Roteadores Cisco Instrutor: Rinaldo Vaz Analista de Redes Responsável técnico pelo AS 28135 Versão do material: 2.2 *beta3 Última publicação: 20/12/2012 1.0 ✔ Esse material foi utilizado no curso de Belo Horizonte nos dias 10,11,12,13 e 14 de dezembro de 2012 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 2 Visão Geral sobre BGP O trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. Versão do material: 2.2 *beta3 Última publicação: 20/12/2012 1.0 1. Visão geral sobre BGP • 1.1 Introdução • 1.2 Requisitos para se tornar um sistema autônomo • 1.3 Preenchendo o formulário do Registro.br • 1.4 Quando utilizar IGP e EGP • 1.5 Atributos BGP • 1.6 Entendendo o processo de escolha de rotas http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 3 1.1 Introdução Diferenças entre FIB e RIB: Fowarding Information Base (FIB) Quando um router recebe 2 rotas diferentes para o mesmo prefixo os critérios de escolha de rota são analisados. A rota que foi considerada melhor de acordo com os critérios BGP fica na FIB. (caso não haja uma rota de melhor metrica estática ou recebida por outro protocolo de roteamento) Router Information Base (RIB) As rotas que não foram consideradas melhores ficarão guardadas na RIB e serão utilizadas caso a rota principal fique indisponível. O BGP jamais anuncia uma prefixo que não esteja na FIB! v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 4 1.1 Introdução Distâncias administrativas: Outro ponto importante é a distância administrativa, caso 2 prefixos sejam idênticos, o router analisa essa distância, a menor sempre "ganha". Caso sejam iguais, os critérios particulares do protocolo de roteamento correspondente serão analisados: Directamente Conectada 0 Estática 1 eBGP 20 EIGRP (Interno) 90 IGRP 100 OSPF 110 ISIS 115 RIP 120 EGP 140 EIGRP (Externo) 170 iBGP 200 BGP Local 200 Desconhecido 255 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 5 1.1 Introdução A versão corrente do BGP é a versão 4, especificada na RFC 1771 É o protocolo responsável por fazer a internet funcionar da maneira que é v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 6 1.1 Introdução Algumas Características: 1. É um protocolo do tipo vetor de caminho; 2. As tabelas completas de roteamento são trocadas entre os dois routers no início da sessão e as atualizações adicionais incrementais são enviadas em seguida; 3. Atualizações adicionais são enviadas imediatamente através de mensagens de update; (padrão) 4. Utiliza por padrão a porta TCP 179; v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 7 1.1 Introdução Mensagens BGP: 1. Open (abertura) - É a primeira mensagem enviada por um router que deseja estabelecer uma sessão com outro, esse por sua vez também envia uma mensagem open. Após recebidas essas mensagens, cada router envia a primeira mensagem de keep alive e a sessão é estabelecida. 2. Update (atualização) - É dentro dessas mensagens que vão informações sobre cada prefixo que está sendo anunciado, uma mensagem de update também pode conter informações sobre redes que ficaram indisponíveis e devem ser removidas 3. Notificação (notification message) – É enviada quando uma condição de erro é detectada; elas são usadas para encerrar uma sessão ativa e informar a quaisquer roteadores conectados do porque do encerramento da sessão. 4. Keep-alive (ainda estou aqui) - De tempo em tempo cada router envia uma mensagem de keep-alive para que o vizinho saiba que há conectividade IP. Caso o keep-alive atrase, o router começa a contagem de hold-time e, se nesse período não for recebido nenhum keep-alive, a sessão é finalizada. Tanto o tempo de keep-alive como o de hold-time podem ser configurados para mais ou menos tempo de acordo com o tipo de link. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 8 Requisitos para se tornar um Sistema Autônomo 1.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 9 1.2 - Requisitos para se tornar um sistema autônomo http://registro.br/provedor/numeracao/regras.html Uma organização justifica a designação de um ASN quando apresenta uma das seguintes necessidades: ● Multi Provedor: Quando a organização está conectada a dois ou mais provedores de transito Internet distintos e independentes e necessita, portanto, fazer uso de protocolos de roteamento dinâmico. ● Política única de roteamento: Quando a organização possui uma política de roteamento que é distinta daquela aplicada pelo(s) provedor(es) de transito Internet. http://registro.br/provedor/numeracao/regras.html v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 10 Preenchendo o Formulário do registro.br 1.3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 11 1.3 - Preenchendo o Formulário do registro.br Há um formulário simples que pode ser baixado no seguinte endereço: http://registro.br/provedor/numeracao/pedido-form.txt Em caso de dúvidas há um arquivo contento informações de ajuda: http://registro.br/provedor/numeracao/pedido-ajuda.txt Informações completas em: http://registro.br/provedor/numeracao/faq.html http://registro.br/provedor/numeracao/pedido-form.txt http://registro.br/provedor/numeracao/pedido-ajuda.txt http://registro.br/provedor/numeracao/faq.html v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 12 Quando utilizar IGP e EGP 1.4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 13 1.4 - Quando utilizar IGP e EGP O BGP foi desenvolvido para troca de rotas entre Sistemas Autônomos distintos, sendo assim, não há nenhum motivo para um provedor de serviços utilizar BGP se esse não possuir um ASN. A finalidade do BGP é permitir que os IPs do Sistema Autônomo apareçam na internet. Tecnicamente nada impede de utilizar BGP com apenas uma operadora, porém é um requisito para obter um ASN: v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 14 1.4 - Quando utilizar IGP e EGP Caso um dos clientes do provedor também seja um Sistema Autônomo é indispensável a utilização do BGP com o cliente e operadoras de trânsito. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 15 Atributos BGP 1.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 16 1.5 - Atributos BGP Conhecidos obrigatórios (Well-known mandatory): Além de obrigatório em todas as implementações, precisam estar em todas as mensagens de update trocadas entre os roteadores via BGP. Conhecidos discricionários (Well-known discretionary): Semelhantes aos obrigatórios, porém não precisam estar contidos em todas as mensagens de update. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 17 1.5 - Atributos BGP Opcional transitivo (Optional transitive): Não precisam ser implementatos por todos os fabricantes, e quando sim, podem ser “propagados” para outros neighbors através de mensagens de update. Opcional não-transitivo (Optional non-transitive): Semelhantes aos citados acima, porém, um router nunca “propaga” esses atributos para outro neighbor. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 18 1.5 - Atributos BGP Uma boa descrição pode ser encontrada no livro “CCNP BSCI - Official Exam Certification Guide, 4th edition” de Brent Steward: v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 19 Entendendo o Processo de Escolha de Rotas 1.6 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 20 1.6 - Entendendo o processo de escolha de rotas Em primeiro lugar, o BGP apenas analisa os atributos para "desempatar" duas ou mais rotas para o MESMO PREFIXO. Caso hajaum prefixo mais específico esse sempre será preferido independentemente dos seus atributos "mais favoráveis". v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 21 1.6 - Entendendo o processo de escolha de rotas Como o BGP escolhe uma rota: Sempre que houverem duas ou mais opções de rota para prefixos iguais (mesma máscara de sub-rede) e ambas tiverem sido recebidas via BGP, o protocolo vai escolher a melhor rota de acordo com a ordem: 1. Rota com maior valor de WEIGHT (Cisco, Quagga, RouterOS, OpenBGPD) 2. Rota com maior valor de LOCAL_PREF 3. Rota originada localmente (bgp network) 4. Rota com o menor AS_PATH. 5. Rota com menor tipo de origem. IGP (i) < EGP (e) < INCOMPLETE (?) 6. Rota com menor métrica multi-exit discriminator (MED). 7. Escolhe a rota recebida por (eBGP) em relação a uma (iBGP). v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 22 1.6 - Entendendo o processo de escolha de rotas Como o BGP escolhe uma rota: 8. Rota com a menor métrica IGP para o nexthop BGP Ex: O next-hop aprendido via OSPF vai ”vencer” um next-hop aprendido via ISIS 9. Rota externa mais antiga 10. Rota recebida de um router com menor Router ID 11. Rota com o menor tamanho de cluster list. (Ambientes com Route Reflector apenas) 12. Rota com o menor endereço de neighbor A análise segue para o próximo critério apenas quando há empate no critério atual, assim, o tamanho do AS PATH só será analisado caso o valor de weight e local preference sejam os mesmos para as duas rotas. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 23 PERGUNTAS?PERGUNTAS? 1.6 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 24 2.0 Primeiros Passos para Aparecer na Internet 2. Primeiros Passos para Aparecer na Internet • 2.1-Configurando BGP com apenas um link • 2.2-Analisando as rotas recebidas • 2.3-Configurando BGP com 2 links • 2.4-Utilizando um Looking Glass • 2.5-Fail-Over automático • 2.6-Escolhendo o melhor link • 2.7-Balanceamento de links • 2.8-Implementando alta disponibilidade com VRRP • 2.9-BGP Timers O trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 25 Configurando BGP com apenas um link 2.1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 26 2.1-Configurando BGP com apenas um link Antes de começar, vamos entender o cenário no ponto de vista geral, onde cada aluno é dono de um AS: CENARIO 1-1 LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 27 2.1-Configurando BGP com apenas um link Nesse LAB, cada aluno possui um Cisco 3660 com uma placa serial modelo NM-4T conectado ao AS 100 na interface s1/1 e uma fast ethernet conectada ao switch da sala do curso. O “X” deve ser endendido como o AS do aluno (1 até 24). LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 28 2.1-Configurando BGP com apenas um link O router de cada grupo responde pelo IP X.128.0.254/9 (onde X é o número do grupo). Para acessá-lo, configurem nos seus laptops um IP dentro dessa mesma rede preferencialmente .1 e gateway padrão X.128.0.254. Verifiquem a conectividade IP e em caso positivo abram uma sessão telnet com esse equipamento: ALUNO@notebook# telnet X.128.0.254 Trying X.128.0.254... Connected to X.128.0.254. Escape character is '^]'. User Access Verification Password: A senha de acesso é 123 Para quem usa windows pode usar o Putty...... http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 29 Estamos agora no modo ”usuário”: GX-R1> Para iniciar as configurações precisaremos inicialmente entrar no modo ”privilegiado”, e será exigida uma outra senha: G1-R1>enable Password: gXr1 GX-R1# E em seguida no modo de configuração ”global”: GX-R1#terminal monitor GX-R1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. GX-R1(config)# 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 30 O primeiro passo na configuração BGP é adicionar um neighbor (peer): GX-R1(config)# router bgp X GX-R1(config-router)# neighbor 100.X.1.1 remote-as 100 neighbor 100.X.1.1 description eBGP com as 100 !--- Se digitar errado e o sistema “aceitar” o comando, !--- digite o mesmo comando com “no” antes. !--- Ex: neighbor 100.x.1.1 remote-as 101 !--- no neighbor 100.x.1.1 remote-as 101 ✗ !--- no neighbor 100.x.1.1 (remove tudo) 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 31 Verificando o status da sessão BGP recém-criada: GX-R1#sh ip bgp summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 7 4 4 0 0 00:00:02 2 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 32 Verificando os anúncio que recebo da minha operadora: GX-R1#show ip bgp neighbors 100.X.1.1 routes Network Next Hop Metric LocPrf Weight Path... *> 100.0.0.0 100.X.1.1 0 100 i *> 123.123.123.0/24 100.X.1.1 0 100 111 55 123 i … Posteriormente veremos na prática a diferença entre os comandos com ”received-routes” e apenas ”routes” no final. 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 33 Agora todos tentam ping para 123.123.123.1 a partir do seu router: Sucesso?? Agora um Traceroute! Em seguida ping para 123.123.123.1 a partir do seu laptop Sucesso?? Agora um Traceroute! Que problema pode estar havendo? 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 34 Esse ponto merece uma pausa para analisar algo importante no ”Troubleshooting”. Ao executar um traceroute um host verifica a sua tabela de roteamento, caso não haja ocorrências os pacotes do traceroute são encaminhados pela rota padrão, não sendo nada especificado no comando, o IP de origem é sempre o mesmo da interface conectada ao ”next-hop”. Em nosso LAB qual o next-hop para 123.123.123.1 ? Provavelmente 100.X .1.1, qual IP o router vai utilizar como origem? 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 35 O IP de origem é 100.X.1.2 que por sua vez está dentro de uma rede ”conhecida” pelo looking glass (123.123.123.1). Já o laptop não consegue alcançar o destino porque o seu IP de origem é X.128.0.1, rede que não é conhecida pelo looking glass já que ainda não anunciamos nada. Não se trata então de o laptop ”não conseguir alcançar” 123.123.123.1, na verdade os pings disparados pelo laptop chegam ao seu destino, porém o destino não sabe para quem responder. 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 36 O segundo passo é anunciar o classe A (bloco /8) do seu grupo: 2.1-Configurando BGP com apenas um link GX-R1(config)# router bgp X !--- entra no nodo de configuração BGP GX-R1(config-router)#network X.0.0.0 mask 255.0.0.0 !--- adiciona a rede x.0.0.0 para ser anunciada a partir desse router GX-R1(config-router) auto-summary !--- permite que o BGP anuncie x.0.0.0/8 bastando com que haja qualquer !--- IP/rotaFIB dentro das redes declaradas em networks GX-R1(config-router)#end !--- volta ao modo provilegiado GX-R1# clear ip bgp 100.X.1.1 !---reinicia a sesão BGP LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 37 Auto-Summary: 2.1-Configurando BGP com apenas um link Quando habilitamos o auto-summary, o BGP vai sumarizar na classe padrão (classe A, B ou C) os prefixos declarados em network ou redistribute Algumas literaturas afirmam que o auto-summary não funciona com prefixos anunciados via comando “network”. É possível que isso ocorra em versões mais antigas do IOS, porém como podemos ver nesse LAB (IOS 12.4), temos um IP /32 em uma interface loopback, que por sua vez é sumarizado e redistribuído como uma classe A É importante lembrar que esse tipo de sumarização ocorre apenas para classes PADRÃO, e muito dificilmente será utilizado em produtividade. LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 38 Agora verifico os anúncios que estou fazendo para o AS 100: GX-R1#sh ip bgp neighbors 100.X.1.1 advertised-routes BGP table version is 15, local router ID is 100.X.1.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i Caso apareça algo parecido com isso, vamos testar novamente a conectividade IP com o looking glass a partir do laptop. 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 39 Sintam-se à vontade para entrar no looking glass e executar testes de PING e TRACEROUTE! 2.1-Configurando BGP com apenas um link LAB 1-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 40 PERGUNTAS?PERGUNTAS? 2.1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 41 Analisando as rotas recebidas 2.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 42 2.2-Analisando as rotas recebidas Vamos detalhar melhor as rotas recebidas: GX-R1>sh ip bgp summary ... Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 Esse comando mostra todas as sessões BGP configuradas ativas e não ativas. Nesse laboratório apenas uma sessão está configurada. Vamos entender o que cada campo significa... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 43 Entendendo os campos do summary: Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 Neighbor = 100.X.1.1 Esse é o IP do router remoto (configurado em router BGP X). 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 44 Entendendo os campos do summary: Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 V = 4 Versão do BGP utilizada nessa sessão. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 45 Entendendo os campos do summary: Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 AS = 100 AS do neighbor remoto (configurado em neighbor 100.X.1.1 remote-as X). 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 46 Entendendo os campos do summary: Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 MsgRcvd = 112 MsgSent = 83 Quantidade total de mensagens BGP recebidas e enviadas incluindo ”keepalives” e ”updates”. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 47 Entendendo os campos do summary: Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 TblVer = 22 Versão atual da tabela de rotas BGP, sempre que uma nova rota é inserida ou removida o TblVer é incrementado. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 48 Entendendo os campos do summary: Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 InQ = 0 OutQ = 0 Updates na fila de entrada e de saída. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 49 Entendendo os campos do summary: Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 Up/Down = 01:06:03 Contador das horas minutos e segundos desde de que a sessão foi estabelecida ou que a sessão ficou down, após 24 horas o contador muda para 1d00h00m (dias/horas/minutos) após uma semana 01w0d00h (semanas/dias/horas). Antes de uma sessão estabelecer ao menos uma vez o contador fica em ”never”. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 50 Entendendo os campos do summary: Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.1.1 4 100 112 83 22 0 0 01:06:03 3 State/PfxRcd = 3 Esse campo merece uma atenção especial pois será o mais frequentemente observado. Indica o estado da conexão BGP. ● Nesse caso está contando 3 prefixos, mas existem 5 estados possíveis, IDLE, CONECT, ACTIVE, OPENSENT, OPENCONFIRM e ESTABLISHED, iremos entender melhor cada um desses estados nos próximos slides. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 51 Entendendo os campos do summary: State/PfxRcd IDLE É o estado em que a sessão fica quando é interrompida por uma mensagem de notificação ou intervenção do administrador, esse estado, quando se prolonga por muito tempo, aponta algum possível problema de conectividade IP ou ainda que o BGP não foi configurado corretamente do lado remoto. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 52 Entendendo os campos do summary: State/PfxRcd ACTIVE ACTIVE: O BGP tenta estabelecer comunicação com um peer inicializando uma conexão TCP. Caso esta seja bem sucedida, passa-se ao estado OPENSENT. Se esta tentativa não for bem sucedida, pelo motivo de expiração do tempo, por exemplo, o estado passa para CONNECT. Em cada interrupção pelo sistema ou pelo administrador, volta ao estado IDLE. Geralmente as transições entre o estado de CONNECT e ACTIVE refletem problemas no nível TCP. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 53 Entendendo os campos do summary: State/PfxRcd CONNECT Neste estado o BGP aguarda pela conexão TCP, com destino na porta 179. Quando a conexão estiver estabelecida, ou seja, com o recebimento da mensagem de OPEN, passa- se ao estado de OPENSENT. Se a conexão nível de transporte não for bem sucedida, o estado vai para ACTIVE. No caso do tempo de espera ter sido ultrapassado, o estado volta para CONNECT. Em qualquer outro evento o estado retorna para IDLE. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 54 Entendendo os campos do summary: State/PfxRcd OPEN SENT OPENSENT: Neste estado o BGP aguarda pela mensagem de OPEN e faz uma checagem de seu conteúdo. Caso seja encontrado algum erro como número de AS incoerente ao esperado ou a própria versão do BGP, envia-se uma mensagem tipoNOTIFICATION e volta ao estado de IDLE. Caso não ocorram erros na checagem, inicia-se o envio de mensagens KEEPALIVE. Em seguida, acerta-se o tempo de Hold Time, sendo optado o menor tempo entre os dois peers. Depois deste acerto, compara-se o número AS local e o número AS enviado pelo peer, com o intuito de detectar se é uma conexão iBGP (números de AS iguais) ou eBGP (números de AS diferentes). Em caso de desconexão a nível TCP, o estado passa para ACTIVE. Para as demais situações de erro, como expiração do Hold Time, envia-se uma mensagem de NOTIFICATION com o código de erro correspondente e retorna-se ao estado de IDLE. No caso de intervenção do administrador ou o próprio sistema, também retorna-se o estado IDLE. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 55 Entendendo os campos do summary: State/PfxRcd OPEN CONFIRM OPENCONFIRM: Neste estado o BGP aguarda pela mensagem de KEEPALIVE e quando esta for recebida, o estado segue para ESTABLISHED e a negociação do peer é finalmente concluída. Com o recebimento da mensagem de KEEPALIVE, é acertado o valor negociado de Hold Time entre os peers. Se o sistema receber uma mensagem tipo NOTIFICATION, retorna-se ao estado de IDLE. O sistema também envia periodicamente, segundo o tempo negociado, mensagens de KEEPALIVE. No caso da ocorrência de eventos como desconexão ou intervenção do operador, retorna-se ao estado de IDLE também. Por fim, na ocorrência de eventos diferentes aos citados, envia-se uma mensagem NOTIFICATION, retornando ao estado de IDLE. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 56 Entendendo os campos do summary: State/PfxRcd ESTABLISHED ESTABLISHED: Neste estado, o BGP inicia a troca de mensagens de UPDATE ou KEEPALIVE, de acordo com o Hold Time negociado. Caso seja recebida alguma mensagem tipo NOTIFICATION, retorna-se ao estado IDLE. No recebimento de cada mensagem tipo UPDATE, aplica-se uma checagem por atributos incorretos, inconsistentes, duplicados, ou mesmo faltando, caso algum erro seja detectado, envia-se uma mensagem de NOTIFICATION, retornando ao estado IDLE. Por fim, se o Hold Time expirar ou for detectada desconexão ou intervenção do administrador, também retorna-se ao estado de IDLE. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 57 Entendendo os campos do summary: State/PfxRcd 3 Esse número não representa a quantidade de prefixos recebidos de um neighbor, mas sim a quantidade de prefixos que foram parar na RIB após terem passado pelos filtros. Um State/PfxRcd 0 não significa necessariamente que não estou recebendo nenhuma rota, por exemplo, pode ser que o next-hop dessas rotas seja inalcançável pelo meu router e assim elas não aparecem. Detalharemos esses casos posteriormente. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 58 Vamos detalhar todas as rotas BGP: GX-R1# show ip bgp BGP table version is 22, local router ID is 100.X.1.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 6.0.0.0 100.X.1.1 0 100 6 i *> 100.0.0.0 100.X.1.1 0 100 i *> 123.0.0.0 100.X.1.1 0 100 222 123 i Esse comando mostra todas as rotas recebidas via BGP escolhidas (FIB) e não escolhidas (RIB). Como recebemos rotas de apenas um peer, não há rotas ”não escolhidas”. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 59 Vamos detalhar uma rota específica: GX-R1#sh ip bgp 123.0.0.0 BGP routing table entry for 123.0.0.0/8, version 10 Paths: (1 available, best #1, table Default-IP-Routing-Table) Flag: 0x208 Not advertised to any peer 100 111 55 123 100.X.1.1 from 100.X.1.1 (100.100.100.1) Origin IGP, localpref 100, valid, external, best #Esse comando detalha as rotas para o prefixo 123.0.0.0/8, e caso outras rotas para esse mesmo prefixo tenham sido recebida via BGP de outro(s) neighbor(s), mais entradas semelhantes aparecerão uma abaixo da outra. Entenderemos cada campo a seguir: 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 60 Vamos detalhar uma rota em específico: GX-R1#sh ip bgp 123.0.0.0 BGP routing table entry for 123.0.0.0/8, version 22 ... Essa linha mostra a versão da routing table descrita nos slides anteriores. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 61 Vamos detalhar uma rota em específico: GX-R1#sh ip bgp 123.0.0.0 ... Paths: (1 available, best #1, table Default-IP-Routing-Table) Paths significa a quantidade de neighbors que me enviaram rotas para esse mesmo prefixo, ou seja, ”1 avaliable” diz que apenas 1 neighbor me enviou. ”best #1” a rota que foi escolhida (na ordem de cima para baixo) de acordo com os critérios do BGP – weigh, local_pref, etc. ”table Default-IP-Routing-Table” significa que as rotas estão na FIB padrão. Múltiplas FIB's são usadas com VRF. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 62 Vamos detalhar uma rota em específico: GX-R1#sh ip bgp 123.0.0.0 ... Flag: 0x208 ... 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 63 Vamos detalhar uma rota em específico: GX-R1#sh ip bgp 123.0.0.0 ... Not advertised to any peer ... Essa mensagem significa que esse prefixo 123.0.0.0/8 não está sendo anunciada via BGP para nenhum neighbor. Na verdade qualquer rota nesse laboratório aparecerá com essa mensagem. Esse campo será detalhado posteriormente na sessão ”AS de trânsito”. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 64 Vamos detalhar uma rota em específico: GX-R1#sh ip bgp 123.0.0.0 ... 100 111 55 123 ... AS-PATH: mostra da direita para a esquerda o AS que originou essa rota e todos os ASs no caminho. Ou seja, o AS 123 originou o anúncio para o AS 55 que recebeu, considerou como melhor rota e exportou para o as 111, depois para o AS 100, o qual também considerou como melhor e repassou para meu AS. Um ponto importante a se observar é que mesmo que um AS tenha mil caminhos para um determinado prefixo, é apenas UM que ele vai escolher como ”BEST #” e passar adiante. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 65 Vamos detalhar uma rota em específico: GX-R1#sh ip bgp 123.0.0.0 ... 100.X.1.1 from 100.X.1.1 (x.x.x.x) ... O primeiro IP dessa linha significa o ”next-hop”(próximo salto) para esse prefixo, caso o next-hop não esteja contido em uma rota válida da FIB, esse jamais será eleito como ”BEST”. O segundo IP dessa linha me diz o endereço do ”neighbor” que me enviou essa rota via BGP. O IP (X.X.X.X) é na verdade o ”router-ID” desse neigbor descrito acima. 2.2-Analisando as rotas recebidas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 66 PERGUNTAS?PERGUNTAS? 2.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 67 Configurando BGP com 2 links (MULTIHOMING)(MULTIHOMING) 2.3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 68 2.3 Configurando BGP com 2 links Os próximos Laboratórios (1-2-1 e 1-2-2) utilizarão esse cenário, e dessa vez, temos link também com o AS 200: LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 69 2.3 Configurando BGP com 2 links Nesse LAB, receberemos mais um link (AS 200) através da interface s1/0: !-- lembrando que X é o número do AS do aluno LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com70 2.3 Configurando BGP com 2 links Primeiro passo é a configuração do próximo neighbor: GX-R1(config)# router bgp X GX-R1(config-router)# network x.0.0.0 mask 255.0.0.0 neighbor 100.x.1.1 remote-as 100 neighbor 100.x.1.1 description eBGP com as 100 !--- O neighbor acima foi já configurado !--- próximo Neigbor neighbor 200.X.1.1 remote-as 200 neighbor 200.X.1.1 description eBGP com as 200 LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 71 Verificando o status das sessões BGP recém-criadas: GX-R1#sh ip bgp summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.1.1.1 4 100 192 170 9 0 0 00:27:48 7 200.1.1.1 4 200 191 181 9 0 0 00:27:51 7 O número de PfxRcd vai ser maior a medida que os alunos estabeleceram suas conexões. 2.3 Configurando BGP com 2 links LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 72 Detalhando as rotas recebidas via BGP Em 23 dos 24 routers parte da saída desse comando aparecerá parecida com isto: G1-R1>sh ip bgp BGP table version is 9, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 1.0.0.0 0.0.0.0 0 32768 i *> 2.0.0.0 100.1.1.1 0 100 2 i * 200.1.1.1 0 200 2 i *> 55.0.0.0 100.1.1.1 0 100 111 55 i * 200.1.1.1 0 200 222 123 55 i *> 100.0.0.0 100.1.1.1 0 100 i * 200.1.1.1 0 200 2 100 i *> 111.0.0.0 100.1.1.1 0 100 111 i * 200.1.1.1 0 200 2 100 111 i * 123.0.0.0 100.1.1.1 0 100 111 55 123 i *> 200.1.1.1 0 200 222 123 i * 200.0.0.0/8 100.1.1.1 0 100 2 200 i *> 200.1.1.1 0 200 i * 222.0.0.0/8 100.1.1.1 0 100 2 200 222 i *> 200.1.1.1 0 200 222 i 2.3 Configurando BGP com 2 links LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 73 Detalhando as rotas recebidas via BGP Porém em 1 dos 24 routers a saída será diferente: G1-R1>sh ip bgp BGP table version is 9, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 1.0.0.0 0.0.0.0 0 32768 i *> 2.0.0.0 100.1.1.1 0 100 2 i * 200.1.1.1 0 200 2 i *> 55.0.0.0 100.1.1.1 0 100 111 55 i * 200.1.1.1 0 200 222 123 55 i *> 100.0.0.0 100.1.1.1 0 100 i * 200.1.1.1 0 200 2 100 i *> 111.0.0.0 100.1.1.1 0 100 111 i * 200.1.1.1 0 200 2 100 111 i * 123.0.0.0 100.1.1.1 0 100 111 55 123 i *> 200.1.1.1 0 200 222 123 i *> 200.0.0.0/8 200.1.1.1 0 200 i *> 222.0.0.0/8 200.1.1.1 0 200 222 i 2.3 Configurando BGP com 2 links LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 74 Detalhando as rotas recebidas via BGP O que significa essas 2 ”rotas alternativas” desaparecerem até da RIB? E o que isso implica na prática? Vamos ver a FIB do “felizardo”?. Por enquanto o importante à saber é que esse router passou a ser ”trânsito” dos AS's 200 e 222 para alcançar o AS 100,111 e todos os seus ”downstreams”. No caso desse router ficar down, outro grupo ficará na mesma situação... vamos ver quem? * 200.0.0.0/8 100.1.1.1 0 100 2 200 i *> 200.0.0.0/8 200.1.1.1 0 200 i * 222.0.0.0/8 100.1.1.1 0 100 2 200 222 i *> 222.0.0.0/8 200.1.1.1 0 200 222 i 2.3 Configurando BGP com 2 links LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 75 Evitando se tornar AS de trânsito dos meus UPSTREAMS Fazer anúncios faz do meu router um potencial provedor de trânsito das redes que anuncio (dependendo da origem). GX-R1>sh ip bgp neighbors 100.X.1.1 advertised-routes ... Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i ... GX-R1>sh ip bgp neighbors 200.X.1.1 advertised-routes ... Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i *> 2.0.0.0 100.1.1.1 0 100 2 i *> 55.0.0.0 100.1.1.1 0 100 111 55 i *> 100.0.0.0 100.1.1.1 0 100 i *> 111.0.0.0 100.1.1.1 0 100 111 i ... 2.3 Configurando BGP com 2 links LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 76 Implementando filtros de saída em meus upstreams Há várias maneiras e vamos iniciar pela mais simples: 1) Criando uma prefix-list: GX-R1(config)#ip prefix-list MEUS-BLOCOS permit X.0.0.0/8 !--- adiciona o bloco do AS do grupo na lista ”MEUS-BLOCOS” GX-R1(config)#router bgp X GX-R1(config-router)#neighbor 200.X.1.1 prefix-list MEUS-BLOCOS out !---aplicar o mesmo filtro na saída do AS 200 GX-R1(config-router)#neighbor 100.X.1.1 prefix-list MEUS-BLOCOS out !--- aplicar o mesmo filtro na saída do AS 100 GX-R1(config-router)#end GX-R1#clear ip bgp * 2.3 Configurando BGP com 2 links LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 77 Verificando as rotas recebidas após o filtro de saída ● Agora o router anuncia para os UPSTREAMS apenas o necessário que é oprefixo /8 correspondente ao grupo: GX-R1>sh ip bgp neighbors 100.X.1.1 advertised-routes BGP table version is 24, local router ID is 9.9.9.9 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i GX-R1>sh ip bgp neighbors 200.X.1.1 advertised-routes BGP table version is 24, local router ID is 9.9.9.9 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i 2.3 Configurando BGP com 2 links LAB 1-2-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 78 PERGUNTAS?PERGUNTAS? 2.3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 79 Utilizando um Looking Glass 2.4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 80 2.4 Utilizando um Looking Glass Um looking glass nada mais é do que um router com acesso público em algum lugar da internet, em sua maioria, a interface é web para facilitar a vida do usuário, mas é o mesmo que entrar nesse router e executar certos comandos como: show ip bgp x.x.x.x, ping x.x.x.x, traceroute x.x.x.x Um dos mais famosos é o Hurricane Eletric... http://lg.he.net http://lg.he.net/ v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 81 2.4 Utilizando um Looking Glass v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 82 2.4 Utilizando um Looking Glass v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 83 2.4 Utilizando um Looking Glass Em nosso LAB o Looking glass é 123.123.123.1, vamos primeiramente verificar a conectividade com esse endereço: ALUNO@notebook:~$ traceroute 123.123.123.1 -n traceroute to 123.123.123.1 (123.123.123.1), 30 hops max, 60 byte packets 1 X.128.0.254 5.292 ms 5.655 ms 5.640 ms 2 200.X.1.1 13.807 ms 14.198 ms 100.701 ms 3 200.200.1.1 111.035 ms 86.082 ms 86.477 ms 4 222.200.10.1 92.724 ms 92.302 ms 69.351 ms 5 222.222.1.1 127.492 ms 73.505 ms 69.707 ms 6 123.222.2.1 43.309 ms 78.401 ms 66.332 ms *Clientes Windows utilizam ”tracert 123.123.123.1” O que podemos concluir com esse traceroute? Meus pacotes entram no AS 200, depois no AS 222 e chegam ao seu destino. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 84 2.4 Utilizando um Looking Glass Qual critério o meu router (primeiro salto) utilizou para considerar esse caminho como melhor? Vamos entender: Notem que em nenhuma das rotas há qualquer valor no atributo "weight" que é o primeiro critério, em segundo é verificado o "localpref" que nos dois casos está em 100 (empate), o algoritmo de seleção de rotas segue então para o próximo "critério de desempate" (menor AS Path) onde a rota #2 foi mais feliz. GX-R1>sh ip bgp 123.123.123.1 BGP routing table entry for 123.0.0.0/8, version 7 Paths: (2 available, best #2, table Default-IP-Routing-Table) Not advertised to any peer 100 111 55 123 100.X.1.1 from 100.X.1.1 (100.100.100.1) Origin IGP, localpref 100, valid, external 200 222 123 200.X.1.1 from 200.X.1.1 (200.200.200.1) Origin IGP, localpref 100, valid, external, best v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 85 2.4 Utilizando um Looking Glass #Conectar-se ao looking Glass Os pacotes seguiram o seguinte caminho: AS 222 depois AS 200 e finalmente AS X. ALUNO@notebook:~$ telnet 123.123.123.1 ... AS-123-R1>traceroute X.128.0.1 Type escape sequence to abort. Tracing the route to 1.0.1.1 1 123.222.2.2 8 msec 8 msec 12 msec 2 222.222.1.2 [AS 222] 12 msec 40 msec 12 msec 3 222.200.10.2 [AS 222] 24 msec 28 msec 12 msec 4 200.200.1.2 [AS 200] 52 msec 24 msec 56 msec 5 200.X.1.2 [AS 200] 56 msec 24 msec 28 msec 6 X.128.0.1 [AS X] 64 msec 64 msec 28 msec v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 86 2.4 Utilizando um Looking Glass Verifique agora que o mesmo critério (menor AS Path) fez o router decidir pelo "mesmo caminho” para alcançar o notebook do aluno: AS-123-R1>sh ip bgp X.128.0.1 BGP routing table entry for X.0.0.0/8, version 45 Paths: (2 available, best #2, table Default-IP-Routing-Table) Advertised to non peer-group peers: 123.55.2.2 55 111 100 X 123.55.2.2 from 123.55.2.2 (55.55.55.2) Origin IGP, localpref 100, valid, external 222 200 X 123.222.2.2 from 123.222.2.2 (222.222.222.2) Origin IGP, localpref 100, valid, external, best v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 87 PERGUNTAS?PERGUNTAS? 2.4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 88 Fail-Over Automático 2.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 89 2.5 Fail-Over automático Utilizando a rota alternativa Vamos simular um problema técnico no AS200 deligando seus CPE's... aguardem alguns instantes... GX-R1# terminal monitor 5d06h: %BGP-5-ADJCHANGE: neighbor 200.X.1.1 Down ... LAB 1-2-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 90 2.5 Fail-Over automático Agora execute novamente um traceroute a partir do seu laptop: Com o AS 200 down ,os pacotes entram no AS 100, depois no AS 111, e só depois de passar no AS 55 alcançam o destino (looking glass). ALUNO@notebook:~$ traceroute 123.123.123.1 -n traceroute to 123.123.123.1 (123.123.123.1), 30 hops max, 60 byte packets 1 X.128.0.254 3.118 ms 3.492 ms 3.482 ms 2 100.X.1.1 11.808 ms 11.799 ms 17.716 ms 3 100.100.1.1 38.856 ms 42.330 ms 21.847 ms 4 111.100.10.1 38.422 ms 108.815 ms 108.392 ms 5 111.111.1.1 133.799 ms 69.868 ms 133.367 ms 6 55.111.2.1 110.819 ms 107.647 ms 65.948 ms 7 55.55.1.1 138.345 ms 129.942 ms 129.917 ms 8 123.55.2.1 115.805 ms * * ALUNO@notebook:~$ LAB 1-2-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 91 2.5 Fail-Over automático Agora note que a rota alternativa (mais distante) passou a ser utilizada e o "melhor caminho" que havia não existe mais, restando apenas o "pior caminho" que dadas as circunstâncias, passou a ser um "ótimo" caminho: GX-R1>sh ip bgp 123.123.123.1 BGP routing table entry for 123.0.0.0/8, version 16 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 100 111 55 123 100.X.1.1 from 100.X.1.1 (100.100.100.[1-3]) Origin IGP, localpref 100, valid, external, best LAB 1-2-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 92 2.5 Fail-Over automático Vamos verificar no ponto de vista do Looking Glass: ALUNO@notebook:~$ telnet 123.123.123.1 Trying 123.123.123.1... Connected to 123.123.123.1. Escape character is '^]'. User Access Verification Password: 123 AS-123-R1>traceroute X.128.0.1 Type escape sequence to abort. Tracing the route to 1.0.1.1 1 123.55.2.2 8 msec 8 msec 4 msec 2 55.55.1.2 [AS 55] 12 msec 24 msec 16 msec 3 55.111.2.2 [AS 55] 32 msec 28 msec 40 msec 4 111.111.1.2 [AS 111] 52 msec 36 msec 64 msec 5 111.100.10.2 [AS 111] 56 msec 48 msec 52 msec 6 100.100.1.2 [AS 100] 84 msec 60 msec 64 msec 7 100.X.1.2 [AS 100] 84 msec 88 msec 60 msec 8 X.128.0.1 [AS 1] 92 msec 68 msec 96 msec LAB 1-2-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 93 2.5 Fail-Over automático Verifiquem que o looking glass escolhe o caminho mais “longo” para chegar ao notebook do aluno: *agora é a única rota disponível E essa mensagem "advertised to... 123.222.2.2" ? Nos slides anteriores era "advertised to 123.55.2.2" Vamos ver o debug do as 123 após um “clear ip bgp” Mas deixa claro que a(s) rede(s) do(s) aluno(s) estão sendo anunciadas para o as 222, e consequentemente para o AS 200 Vamos comprovar... AS-123-R1>sh ip bgp X.128.0.1 BGP routing table entry for 1.0.0.0/8, version 49 Paths: (1 available,best #1, table Default-IP-Routing- Table) Advertised to non peer-group peers: 123.222.2.2 55 111 100 X 123.55.2.2 from 123.55.2.2 (55.55.55.2) Origin IGP, localpref 100, valid, external, best LAB 1-2-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 94 2.5 Fail-Over automático Partindo do laptop vamos tentar alcançar o AS 200... Agora alcançamos o AS 200 pelo caminho mais longo possível, AS 100, AS 111, AS 55, AS 123, AS 222 e finalmente AS 200. Vamos analizar... ALUNO@notebook:~$ traceroute 200.200.200.10 -n traceroute to 200.200.200.10 (200.200.200.10), 30 hops max, 60 byte packets 1 X.128.0.254 6.128 ms 6.510 ms 6.501 ms 2 100.X.1.1 19.342 ms 19.735 ms 68.139 ms 3 100.100.1.1 100.368 ms 68.527 ms 99.945 ms 4 111.100.10.1 68.506 ms 79.031 ms 100.321 ms 5 111.111.1.1 78.604 ms 68.467 ms 68.456 ms 6 55.111.2.1 45.810 ms 39.272 ms 127.491 ms 7 55.55.1.1 136.322 ms 123.845 ms 114.650 ms 8 123.55.2.1 113.618 ms 123.932 ms 112.493 ms 9 123.222.2.2 161.647 ms 101.636 ms 111.676 ms 10 222.222.1.2 161.596 ms 176.097 ms 183.647 ms 11 222.200.10.2 154.398 ms 122.534 ms 101.285 ms LAB 1-2-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 95 2.5 Fail-Over automático Verifiquem as entradas para a rede em que faz parte o IP do AS-200-R10: Observe o AS Path, precisamos dar a "volta ao mundo" para alcançar o AS 200. Discutiremos soluções alternativas nos próximos capítulos. GX-R1>sh ip bgp 200.200.200.10 BGP routing table entry for 200.0.0.0/8, version 20 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 100 111 55 123 222 200 100.X.1.1 from 100.X.1.1 (100.100.100.1) Origin incomplete, localpref 100, valid, external, best LAB 1-2-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 96 2.5 Fail-Over automático A mesma coisa pode ser observada a partir do R10 do AS 200 O novo caminho fica bem mais “longo”, mas não fica fora ALUNO@notebook:~$ telnet 200.200.200.10 Trying 200.200.200.10 Connected to 200.200.200.10 Escape character is '^]'. AS-200-R10>sh ip bgp X.0.0.0 BGP routing table entry for X.0.0.0/8, version 77 Paths: (1 available, best #1, table Default-IP-Routing-Table) Advertised to peer-groups: IBGP 222 123 55 111 100 X 222.200.10.1 from 222.200.10.1 (222.222.222.1) Origin IGP, localpref 100, valid, external, best LAB 1-2-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 97 2.5 Fail-Over automático Conclusões: O protocolo BGP trata praticamente sozinho os problemas de queda nos links. Porém não tem como entender certas variáveis que fazem o link A ser mais viável que o link B, ou mesmo quando precisamos somar 2 links. Em outras palavras, se tenho contratados 100Mbs de trânsito com o AS 100 e apenas 50 com o AS 200, seria inviável ter o link do AS 200 como principal, e nesse caso precisamos "interferir" na decisão do protocolo BGP manipulando certos atributos. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 98 PERGUNTAS?PERGUNTAS? 2.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 99 Escolhendo o Melhor Link 2.6 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 100 2.6 Escolhendo o melhor link Considere quase toda a minha demanda de trânsito vindo sempre do AS 123 as seguintes situações: O link entre o AS 222 e 200 está passando por dificuldades. A negociação com o AS 100 me garantiu um preço que me permitiu dobrar a banda contratada. Algum outro motivo que me obrigue a utilizar o AS 100 como link principal e o as 200 como backup. Como vimos anteriormente, o BGP escolhe por padrão o as 200, vamos modificar essa escolha... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 101 2.6 Escolhendo o melhor link Alterando o atributo Weight: Vamos verificar como ficaram as rotas BGP... GX-R1#configure terminal GX-R1(config)#router bgp X GX-R1(config-router)#neighbor 100.X.1.1 weight 10 GX-R1(config-router)#end !--- agora vamos efetuar um clear na sessão BGP GX-R1#clear ip bgp 100.X.1.1 LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 102 2.6 Escolhendo o melhor link Analizando a rota para rede do looking glass após a mudança no atributo: Acabamos de forçar o router a escolher a rota #2, já que o primeiro critério é o atributo weight, a rota 2# foi escolhida como melhor mesmo com um as path MAIOR. GX-R1#sh ip bgp 123.123.123.1 BGP routing table entry for 123.0.0.0/8, version 35 Paths: (2 available, best #2, table Default-IP-Routing-Table) Not advertised to any peer 200 222 123 200.X.1.1 from 200.1.1.1 (200.200.200.1) Origin IGP, localpref 100, valid, external 100 111 55 123 100.X.1.1 from 100.X.1.1 (100.100.100.1) Origin IGP, localpref 100, weight 10, valid, external, best LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 103 2.6 Escolhendo o melhor link Testando... Executem um traceroute do seu laptop para 123.123.123.1 … ... Caso a mudança no weight tenha sido bem sucedida os pacotes seguiram a rota pelo AS 100 ao invés do AS 200. Porém isso resolve apenas "metade" do meu problema conforme veremos no slide seguinte.. . LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 104 2.6 Escolhendo o melhor link Ping extendido: GX-R1#ping Protocol [ip]: Target IP address: 123.123.123.1 Repeat count [5]: 2 Datagram size [100]: Timeout in seconds [2]: Extended commands [n]: y Source address or interface: X.128.0.254 Type of service [0]: Set DF bit in IP header? [no]: Validate reply data? [no]: Data pattern [0xABCD]: Loose, Strict, Record, Timestamp, Verbose[none]: record Number of hops [ 9 ]: Loose, Strict, Record, Timestamp, Verbose[RV]: Sweep range of sizes [n]: Type escape sequence to abort. Sending 2, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds: Packet sent with a source address of 172.16.32.1 Packet has IP options: Total option bytes= 39, padded length=40 Record route: <*> (0.0.0.0) (0.0.0.0) (0.0.0.0) (0.0.0.0) (...continua...) LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 105 2.6 Escolhendo o melhor link Ping extendido: (...continuação...) (0.0.0.0) Reply to request 0 (152 ms). Received packet has options Total option bytes= 40, padded length=40 Record route: (100.X.1.2) (100.100.2.2) (111.100.1.2) (111.111.2.2) (55.111.1.2) (55.55.2.2) (123.55.1.2) (123.123.123.1) (123.222.1.1) *essa é interface pelo qual o ping foi respondido <*> End of list <Omited> Success rate is 100 percent (2/2), round-trip min/avg/max = 116/134/152 ms GX-R1# LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 106 2.6 Escolhendo o melhor link Agora verificar o ponto de vista do looking glass testando a partir dele: Como podemos verificar, o AS 123 continua escolhendo a mesma rota, uma vez que a mudança no atributo weight, teve influência apenas no meu UPLOAD, sendo assim, meu download continua chegando pelo AS 200 (menor AS PATH no ponto de vista do AS 123). Não tenho como pedir que o AS 123 altere os seus atributos, preciso convencê-los de outra forma a mudar de rota. ALUNO@notebook:~ telnet 123.123.123.1 !--- Efetuem um traceroute para o seu laptop AS-123-R1>traceroute para X.128.0.1 LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 107 2.6 Escolhendo o melhor link Fazendo anúncios mais específicos para o AS 100 Como mencionado anteriormente, os atributos BGP só são analisados quando há um empate de prefixo, porém quando há um prefixo MAIS ESPECÍFICO os atributos são ignorados. Quais blocos anunciar para cada AS? Dividiremos em 2 blocos /9 para o as 100 e o /8 para o AS 200. LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 108 2.6 Escolhendo o melhor link Configurando os anúncios mais específicos: GX-R1#confterminal GX-R1(config)#ip prefix-list LAB-1-2-1-ANUNCIAR-AS-100 permit X.0.0.0/9 GX-R1(config)#ip prefix-list LAB-1-2-1-ANUNCIAR-AS-100 permit X.128.0.0/9 !--- adiciona 2 prefixos /9 dentro da lista ”ANUNCIAR-AS-100” GX-R1(config)#ip prefix-list LAB-1-2-1-ANUNCIAR-AS-200 seq 10 permit x.0.0.0/8 !--- adiciona o classe A inteiro dentro da lista ”ANUNCIAR-AS-100” GX-R1(config)#router bgp X !--- adiciona 2 prefixos /9 dentro da lista ”ANUNCIAR-AS-100” GX-R1(config-router)#network X.0.0.0 mask 255.128.0.0 GX-R1(config-router)#network X.128.0.0 mask 255.128.0.0 !--- além do anuncio local do classe A, inserimos mais 2 prefixos /9 a serem !--- a serem anunciados pelo router GX-R1(config-router)#neighbor 200.X.1.1 prefix-list LAB-1-2-1-ANUNCIAR-AS-200 out !--- declara que esse anuncios de saida (out) para esse neighbor serao filtrados GX-R1(config-router)#neighbor 100.X.1.1 prefix-list LAB-1-2-1-ANUNCIAR-AS-100 out !--- declara que esse anuncios de saida (out) para esse neighbor serao filtrados GX-R1(config-router)#end GX-R1#clear ip bgp * soft LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 109 2.6 Escolhendo o melhor link Verificando anúncios para o AS 200: Agora para o AS 100: Estamos anunciando apenas um dos blocos /9 para o AS 100, por que? Gx-R1#sh ip bgp neighbors 200.x.1.1 advertised-routes BGP table version is 13, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> x.0.0.0 0.0.0.0 0 32768 i Gx-R1# Gx-R1#sh ip bgp neighbors 100.x.1.1 advertised-routes Network Next Hop Metric LocPrf Weight Path *> x.128.0.0/9 0.0.0.0 0 32768 i LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 110 2.6 Escolhendo o melhor link Apenas um prefixo pertencente ao meu classe A está na FIB: O comando ”longer-prefixes” mostraria rotas para qualquer sub-rede dentro do bloco /8 pesquisado, porém temos o primeiro /9 diretamente conectado à f0/0 e um /32 na Loopback0. Gx-R1#sh ip route x.0.0.0 longer-prefixes ... Gateway of last resort is not set x.0.0.0/8 is variably subnetted, 2 subnets, 2 masks C x.x.x.x/32 is directly connected, Loopback0 C x.128.0.0/9 is directly connected, FastEthernet0/0 LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 111 2.6 Escolhendo o melhor link Precisamos primeiramente garantir que as redes que quero anunciar estejam em minha FIB: Agora que tenho os 2 blocos /9 em minha FIB vamos verificar novamente os anúncios para o AS 100... Gx-R1#conf t Gx-R1(config)#ip route x.0.0.0 255.128.0.0 null0 !--- faremos apenas para o primeiro /9 já que o segundo está OK Gx-R1(config)#end Gx-R1# Gx-R1#sh ip route x.0.0.0 longer-prefixes ... Gateway of last resort is not set x.0.0.0/8 is variably subnetted, 3 subnets, 2 masks C x.x.x.x/32 is directly connected, Loopback0 S x.0.0.0/9 is directly connected, Null0 C x.128.0.0/9 is directly connected, FastEthernet0/0 LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 112 2.6 Escolhendo o melhor link Agora que tenho os 2 blocos /9 em minha FIB vamos verificar novamente os anúncios para o AS 100... Agora estamos fazendo corretamente o anúncio dos dois blocos /9 para o AS 100. Gx-R1#sh ip bgp neighbors 100.x.1.1 advertised-routes BGP table version is 11, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> x.0.0.0/9 0.0.0.0 0 32768 i *> x.128.0.0/9 0.0.0.0 0 32768 i Gx-R1# LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 113 2.6 Escolhendo o melhor link Vamos novamente entrar no looking glass e verificar as rotas para classe A do grupo: Dessa forma, a rota em vermelho nunca é usada, pois existem dois blocos mais específicos, fazendo com que o LG sempre alcance os AS's dos grupos através do AS 100. AS-123-R1>sh ip bgp X.0.0.0/8 longer-prefixes BGP table version is 30, local router ID is 123.123.123.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> X.0.0.0/9 123.55.2.2 0 55 111 100 X i *> X.0.0.0 123.222.2.2 0 222 200 X i *> X.128.0.0/9 123.55.2.2 0 55 111 100 X i AS-123-R1> LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 114 2.6 Escolhendo o melhor link Verificando caminho percorrido com o comando traceroute: No início forçamos o upload pelo AS 100, e agora também o download pelo AS 100. AS-123-R1>traceroute X.128.0.1 Type escape sequence to abort. Tracing the route to X.128.0.1 1 123.55.2.2 20 msec 24 msec 12 msec 2 55.55.1.2 [AS 55] 32 msec 32 msec 44 msec 3 55.111.2.2 [AS 55] 20 msec 36 msec 32 msec 4 111.111.1.2 [AS 111] 40 msec 56 msec 36 msec 5 111.100.10.2 [AS 111] 88 msec 28 msec 56 msec 6 100.100.1.2 [AS 100] 76 msec 52 msec 76 msec 7 100.2.1.2 [AS 100] 64 msec 56 msec 60 msec 8 X.128.0.2 [AS X] 60 msec 60 msec 80 msec AS-123-R1> LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 115 2.6 Escolhendo o melhor link Agora vamos voltar ao normal e remover o Weight 10 para todas as rotas recebidas do AS 100 Vamos verificar como ficaram as rotas BGP... GX-R1#configure terminal GX-R1(config)#router bgp X GX-R1(config-router)#no neighbor 100.X.1.1 weight 10 GX-R1(config-router)#end !--- agora vamos efetuar um clear na sessão BGP GX-R1#clear ip bgp 100.X.1.1 LAB 1-2-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 116 PERGUNTAS?PERGUNTAS? 2.6 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 117 Balanceando os Links 2.7 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 118 2.7-Balanceando os links Vamos agora considerar uma situação de necessidade de utilizar os dois links de maneira balanceada. Dividiremos cada metade do /8 para cada AS. Anunciaremos o primeiro /9 para o AS 100 e o segundo /9 para o AS 200 fazendo com que o nosso tráfego inbound seja divido em 50% para cada link. A lógica é a mesma, o que faremos diferente do lab anterior é um detalhe para o fail-over. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 119 2.7-Balanceando os links Vamos criar duas novas prefix-lists e adiciona-las como filtro de SAÍDA para cada AS de trânsito: GX-R1#conf terminal GX-R1(config)#ip prefix-list LAB-1-2-2-ANUNCIAR-AS-100 permit X.0.0.0/8 GX-R1(config)#ip prefix-list LAB-1-2-2-ANUNCIAR-AS-100 permit X.0.0.0/9 !--- adiciona 2 prefixos /9 dentro da lista ”ANUNCIAR-AS-100” GX-R1(config)#ip prefix-list LAB-1-2-2-ANUNCIAR-AS-200 permit X.0.0.0/8 GX-R1(config)#ip prefix-list LAB-1-2-2-ANUNCIAR-AS-200 permit X.128.0.0/9 !--- adiciona o classe A inteiro dentro da lista ”ANUNCIAR-AS-100” GX-R1(config)#router bgp X !--- adiciona 2 prefixos /9 dentro da lista ”ANUNCIAR-AS-100” GX-R1(config-router)#neighbor 200.X.1.1 prefix-list LAB-1-2-2-ANUNCIAR-AS-200 out !--- declara que esse anuncios de saida (out) para esse neighbor serao filtrados GX-R1(config-router)#neighbor 100.X.1.1 prefix-list LAB-1-2-2-ANUNCIAR-AS-100 out !--- declara que esse anuncios de saida (out) para esse neighbor serao filtrados GX-R1(config-router)#end GX-R1#clear ip bgp * soft LAB 1-2-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 120 2.7-Balanceando os links Vamos entrar no looking glass e ver o resultado: AS-123-R1>sh ip bgp X.0.0.0/8 longer-prefixes... Network Next Hop Metric LocPrf Weight Path *> X.0.0.0/9 123.55.1.2 0 55 111 100 X i * X.0.0.0 123.55.1.2 0 55 111 100 X i *> 123.222.1.2 0 222 200 X i *> X.128.0.0/9 123.222.1.2 0 222 200 X i AS-123-R1> Agora testar o caminho para os 2 blocos /9. LAB 1-2-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 121 2.7-Balanceando os links AS-123-R1>traceroute X.X.X.X Type escape sequence to abort. Tracing the route to X.X.X.1 1 123.55.2.2 8 msec 16 msec 16 msec 2 55.55.1.2 [AS 55] 44 msec 12 msec 16 msec 3 55.111.2.2 [AS 55] 24 msec 32 msec 32 msec 4 111.111.1.2 [AS 111] 48 msec 28 msec 48 msec 5 111.100.10.2 [AS 111] 48 msec 48 msec 56 msec 6 100.100.1.2 [AS 100] 60 msec 88 msec 112 msec AS-123-R1> Primeiro /9 (Loopback do router): Caminho 55,111,100 LAB 1-2-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 122 2.7-Balanceando os links Segundo /9 (ip do laptop): Caminho 222,200 AS-123-R1#traceroute X.128.0.1 Type escape sequence to abort. Tracing the route to X.128.0.1 1 123.222.2.2 24 msec 4 msec 32 msec 2 222.222.1.2 [AS 222] 40 msec 8 msec 16 msec 3 222.200.10.2 [AS 222] 32 msec 24 msec 16 msec 4 200.200.1.2 [AS 200] 56 msec 4 msec 28 msec 5 200.2.1.2 [AS 200] 92 msec 20 msec 40 msec 8 X.128.0.1 [AS 2] 64 msec 47 msec 33 msec AS-123-R1# LAB 1-2-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 123 2.7-Balanceando os links Simulação de problemas nos CE's do AS 100... Todos verificam a mudança! Simulação de problemas nos CPE's do AS 200... Todos verificam a mudança! LAB 1-2-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 124 2.7-Balanceando os links OBS: Para um balanceamento assimétrico mudaríamos os anúncios, quebrando para blocos cada vez mais específicos Nunca esquecer de que o balanceamento baseado em anúncios específicos depende da distribuição dos IPs dentro do meu AS. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 125 Implementando Alta Disponibilidade com VRRP 2.8 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 126 2.8- Implementando Alta Disponibilidade com VRRP O cenário permanece o mesmo, porém com um router “identico” como backup. A ideia é que todos os dois links continuem 100% operacional mesmo que o router principal fique totalmente fora. LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 127 2.8- Implementando Alta Disponibilidade com VRRP Antes de configurar o router BACKUP, vamos NOVAMENTE anunciar apenas um bloco /8 para cada operadora: Criando as prefix-lists: GX-R1(config)#router bgp X GX-R1(config-router)#neighbor 200.X.1.1 prefix-list MEUS-BLOCOS out !---mudar o filtro na saída do AS 200 GX-R1(config-router)#neighbor 100.X.1.1 prefix-list MEUS-BLOCOS out !--- mudar o filtro na saída do AS 100 GX-R1(config-router)#end GX-R1#clear ip bgp * LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 128 2.8- Implementando Alta Disponibilidade com VRRP O segundo router responde pelo IP X.128.0.253 Verifiquem a conectividade IP e em caso positivo abram uma sessão telnet da mesma forma que fizemos com GX-R1: ALUNO@notebook# telnet X.128.0.253 Trying X.128.0.253... Connected to X.128.0.253. Escape character is '^]'. User Access Verification Password: A senha de acesso também é 123 LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 129 Estamos agora no modo ”usuário”: GX-R2> A senha de enable mudou: G1-R2>enable Password: gXr2 GX-R2# Todos os outros passos são semelhantes... GX-R2#terminal monitor GX-R2#configure terminal Enter configuration commands, one per line. End with CNTL/Z. GX-R2(config)# 2.8- Implementando Alta Disponibilidade com VRRP LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 130 2.8- Implementando Alta Disponibilidade com VRRP Precisamos aplicar as MESMAS configurações, com exceção dos endereços de neighbor: !-- ATENÇÂO as configurações são em Gx-R2 !-- observem a mudança no IP de neighbor GX-R2(config)# router bgp X GX-R2(config-router)# network x.0.0.0 mask 255.0.0.0 auto-summary neighbor 100.X.2.1 remote-as 100 neighbor 100.X.2.1 description eBGP com as 100 neighbor 200.X.2.1 remote-as 200 neighbor 200.X.2.1 description eBGP com as 200 LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 131 Criando as prefix-lists: GX-R2(config)#ip prefix-list MEUS-BLOCOS permit X.0.0.0/8 !--- adiciona o bloco do AS do grupo na lista ”MEUS-BLOCOS” GX-R2(config)#router bgp X GX-R2(config-router)#neighbor 200.X.2.1 prefix-list MEUS-BLOCOS out !---aplicar o mesmo filtro na saída do AS 200 GX-R2(config-router)#neighbor 100.X.2.1 prefix-list MEUS-BLOCOS out !--- aplicar o mesmo filtro na saída do AS 100 GX-R2(config-router)#end GX-R2#clear ip bgp * 2.8- Implementando Alta Disponibilidade com VRRP LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 132 Verificando o status das sessões BGP recém-criadas: GX-R2#sh ip bgp summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.X.2.1 4 100 192 170 9 0 0 00:00:48 7 200.X.2.1 4 200 191 181 9 0 0 00:00:51 7 O número de PfxRcd vai ser maior a medida que os alunos estabeleceram suas conexões. 2.8- Implementando Alta Disponibilidade com VRRP LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 133 Verificando as rotas recebidas após o filtro de saída: GX-R2>sh ip bgp neighbors 100.X.2.1 advertised-route BGP table version is 24, local router ID is X.X.X.X Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i GX-R2>sh ip bgp neighbors 200.X.2.1 advertised-routes BGP table version is 24, local router ID is X.X.X.X Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i 2.8- Implementando Alta Disponibilidade com VRRP LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 134 O próximo passo é a criação da interface virtual, mas o que é VRRP afinal? 2.8- Implementando Alta Disponibilidade com VRRP Virtual Router Redundancy Protocol cria uma interface, um MAC e um ip virtual, e todos os routers do grupo VRRP conhecem essas informaçes. No momento em que o router “master” fica fora, o primeiro candidato levanta imediatamente o IP virtual, de maneira que os hosts da rede não percebem essa comutação, e ao mesmo tempo não tem problemas com ARP, já que o MAC não muda. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 135 O próximo passo é a criação da interface virtual, mas o que é VRRP afinal? 2.8- Implementando Alta Disponibilidade com VRRP Vários roteadores podem fazer parte de uma mesma VRRP. Para definir quem é o router master e quem assume nas situações de falha, alteramos o valor de priority na configuração do grupo VRRP. Vamos ao lab... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 136 Vamos configurar uma VRRP na interface lan e garantir que GX-R1 seja o router master: 2.8- Implementando Alta Disponibilidade com VRRP GX-R1#conf t GX-R1(config)#interface fastEthernet 0/0 GX-R1(config-if)#vrrp X ip X.128.0.252 GX-R1(config-if)#vrrp X priority 2 GX-R1(config-if)#vrrpX timers advertise 1 GX-R1(config-if)#vrrp X preempt delay minimum 120 GX-R1(config-if)#end GX-R1#debug vrrp state VRRP State debugging is on GX-R1#wr GX-R2#conf t GX-R2(config)#interface fastEthernet 0/0 GX-R2(config-if)#vrrp X ip X.128.0.252 GX-R2(config-if)#vrrp X priority 1 GX-R2(config-if)#vrrp X timers learn GX-R2(config-if)#vrrp X preempt delay minimum 120 GX-R2(config-if)#end GX-R2#debug vrrp state VRRP State debugging is on GX-R2#wr LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 137 Vamos verificar o status... 2.8- Implementando Alta Disponibilidade com VRRP GX-R1#sh vrrp brief Interface Grp Pri Time Own Pre State Master addr Group addr Fa0/0 X 2 3992 Y Master X.128.0.254 X.128.0.252 GX-R1# GX-R2#sh vrrp brief Interface Grp Pri Time Own Pre State Master addr Group addr Fa0/0 X 1 3992 Y Backup X.128.0.254 X.128.0.252 GX-R2# LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 138 Agora simularemos uma falha em GX-R1 2.8- Implementando Alta Disponibilidade com VRRP Notem que há um tempo médio de 4 minutos até que a comutação aconteça para o router backup Por que todo esse tempo? X v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 139 Quando o router R1 fica fora, os CPE's das operadoras passam algum tempo “pensando” que ele ainda está UP 2.8- BGP Timers Cada router envia uma mensagem “keep alive” a cada 60 segundos (por padrão) Quando um “keep alive” atrasa, o CPE da operadora ativa uma contagem chamada “hold time” (padrão 180 segundos) Se até o final do “hold time” não chegar um “keep alive” o CPE da operadora finaliza a sessão BGP com R1. Imediatamente o CPE percebe que há uma outra opção disponível para a rede X.0.0.0/8 e instala em sua FIB Vamos alterar os valores de “keep alive” e “hold time” para 5 e 15 segundos respectivamente... X v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 140 Vamos alterar os timers padrão para diminuir o downtime 2.8- BGP Timers GX-R1(config)#router bgp X GX-R1(config-router)#neighbor 100.X.1.1 timers 5 15 GX-R1(config-router)#neighbor 200.X.1.1 timers 5 15 !--- muda o tempo de keep alive para 5 segundos !--- e o hold time para 15 segundos GX-R1(config-router)#end GX-R1#clear ip bgp * GX-R2(config)#router bgp X GX-R2(config-router)#neighbor 100.X.2.1 timers 5 15 GX-R2(config-router)#neighbor 200.X.2.1 timers 5 15 !--- muda o tempo de keep alive para 5 segundos !--- e o hold time para 15 segundos GX-R2(config-router)#end GX-R2#clear ip bgp * LAB 1-2-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 141 Vamos testar novamente... 2.8- BGP Timers X O tempo paralização diminuiu de cerca de 3 minutos para 15 segundos É importante lembrar que nesse lab utilizamos interfaces seriais, e o “bgp fast-external-fallover” vem habilitado por padrão e faz o BGP automaticamente finalizar a sessão quando detecta uma interface em estado “down”. Esse recurso foi desabilitado no intuito de simular situações reais já qua a maioria dos links atuais são “metroethernet” v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 142 PERGUNTAS?PERGUNTAS? 2.8 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 143 3.0 Peering e Troca de Tráfego 3. Peering e Troca de tráfego • 3.1 Peering x Trânsito • 3.2 Entendendo o funcionamento de um PIX • 3.3 Formulários de adesão • 3.4 Diferenças entre acordo bilateral e multilateral • 3.5 Participantes locais e remotos • 3.6 Endendendo o conceito de Lan2Lan • 3.7 ATM-Tratando as rotas recebidas • 3.8 ATM-Anunciando corretamente • 3.9 O looking glass do PTT Metro • 3.10 Aplicações de um acordo bilateral • 3.11 Comprando e vendendo trânsito no PTT O trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 144 3.1 Peering x Trânsito v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 145 3.1 Peering x Trânsito Em primeiro lugar devem ser separados os conceitos de peering e trânsito. Quando dois AS's tem uma quantidade de demanda comum, acaba saindo mais barato o peering. Exemplo, eu sou AS A, e tenho uma demanda de 10Mbs de download de um certo conteúdo hospedado no AS B. Para resolver isso, contrato um link de 10Mbs da operadora B e pago R$ 100,00 por cada mega, num total de R$ 1.000,00. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 146 3.1 Peering x Trânsito Porem, a operadora B também tem uma demanda de 10Mbs de conteúdo hospedado no meu AS A. Isso dá para operadora B uma conta semelhante de R$ 1.000,00 mensais. No final do mês, ficaríamos empatados no custo, e o melhor a se fazer é estabelecer um link direto de 10Mbs sem que um cobre do outro. Há outras vantagens técnicas como menor caminho BGP e menor latência. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 147 LAB: Observem o cenário... 3.1 Peering x Trânsito LAB 1-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 148 LAB: Estabelecer peering entre grupos com os seguintes Ips: AS IP AS IP 1 1.2.1.1/30 x 2 1.2.1.2/30 3 3.4.1.1/30 x 4 3.4.1.2/30 5 5.6.1.1/30 x 6 5.6.1.2/30 7 7.8.1.1/30 x 8 7.8.1.2/30 9 9.10.1.1/30 x 10 9.10.1.2/30 11 11.12.1.1/30 x 12 11.12.1.2/30 13 13.14.1.1/30 x 14 13.14.1.2/30 15 15.16.1.1/30 x 16 15.16.1.2/30 17 17.18.1.1/30 x 18 17.18.1.2/30 19 19.20.1.1/30 x 20 19.20.1.2/30 21 21.22.1.1/30 x 22 21.22.1.2/30 23 23.24.1.1/30 x 24 23.24.1.2/30 - - - - - 3.1 Peering x Trânsito v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 149 Realizando as configurações IP (AS ÍMPAR): GXR1#conf t GX-R1(config)#interface serial 1/2 GX-R1(config-if)#ip address X.Y.1.1 255.255.255.252 GX-R1(config-if)#no shutdown GX-R1(config-if)#end GXR1#ping X.Y.1.2 Onde: X= AS local Y= AS remoto 3.1 Peering x Trânsito LAB 1-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 150 Realizando as configurações IP (AS PAR): GXR1#conf t GX-R1(config)#interface serial 1/2 GX-R1(config-if)#ip address Y.X.1.2 255.255.255.252 GX-R1(config-if)#no shutdown GX-R1(config-if)#end GXR1#ping Y.X.1.1 Onde: X= AS local Y= AS remoto 3.1 Peering x Trânsito LAB 1-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 151 Configurando BGP (AS ÍMPAR): Onde: X= AS local Y= AS remoto GX-R1#conf t GX-R1(config)# GX-R1(config)#router bgp X GX-R1(config-router)#neighbor X.Y.1.2 remote-as Y GX-R1(config-router)#neighbor X.Y.1.2 weight 20 !--- priorizar todas as rotas recebidas pelo peering com weight 20 GX-R1(config-router)#neighbor X.Y.1.2 prefix-list MEUS-BLOCOS out !--- filtrar anúncios de saída para esse peering na respectiva prefix-list GX-R1(config-router)#exit GX-R1(config)#end GX-R1#clear ip bgp * 3.1 Peering x Trânsito LAB 1-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 152 Configurando BGP (AS PAR): Onde: X= AS local Y= AS remoto GX-R1#conf t GX-R1(config)# GX-R1(config)#router bgp X GX-R1(config-router)#neighbor Y.X.1.1 remote-as Y GX-R1(config-router)#neighbor Y.X.1.1 weight 20 !--- priorizar todas as rotas recebidas pelo peering com weight 20 GX-R1(config-router)#neighbor Y.X.1.1 prefix-list MEUS-BLOCOS out !--- filtrar anúncios de saída para esse peering na respectiva prefix-list GX-R1(config-router)#exit GX-R1(config)#end GX-R1#clear ip bgp * 3.1 Peering x Trânsito LAB 1-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 153 Verificando os anúncios para o novo peering: O Next Hop 0.0.0.0 e o weight 32768 indicam que as redes foram originadas localmenteou seja, no comando: router(config-router) network x.x.x.x mask x.x.x.x GX-R1#sh ip bgp neighbors X.X.X.X advertised-routes ... Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i !-- x.x.x.x é o endereço remoto do seu peering 3.1 Peering x Trânsito LAB 1-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 154 Verificando as redes recebidas do meu novo peering (utilizando o exemplo para o peering entre AS 1 e 2): Onde: 1= AS local 2= AS remoto G1-R1#sh ip bgp regexp ^Y$ !--- essa consulta retorna apenas rotas que contenham o AS Y no path !--- e nada mais BGP table version is 29, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> Y.0.0.0 X.Y.1.2 0 20 Y i 3.1 Peering x Trânsito LAB 1-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 155 Testando um traceroute para Y.128.0.1 ... A partir de agora está havendo uma troca de tráfego entre os 2 AS's. O que faz dessa configuração um peering e não um trânsito? *Ao caírem os links do AS200 e AS100 apenas as redes do peering continuariam funcionando, e isso é o que descaracteriza um trânsito. 3.1 Peering x Trânsito LAB 1-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 156 Vamos simular uma falha nos AS's de trânsito e verificar a conectividade entre os 2 AS's que fazem peering... 3.1 Peering x Trânsito LAB 1-3-1 XX v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 157 Entendendo o Funcionamento de Um PIX do PTTMetro 3.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 158 3.2 Entendendo o Funcionamento de Um PIX do PTTMetro Para quem ainda não assistiu: http://youtu.be/imL3Cc8mC2Y http://youtu.be/imL3Cc8mC2Y v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 159 Entendendo a necessidade de peerings entre centenas de ASs do Brasil, o NIC.br organizou diversos pontos de troca. Seu funcionamento consiste basicamente em 1 switch, 2 route-servers e um router Looking Glass (outros maiores como SP possuem dezenas de switchs em vários PIXes). 3.2 Entendendo o Funcionamento de Um PIX do PTTMetro v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 160 Todos os participantes compartilham um mesmo bloco /24, cada participante tem um IP, e todos pingam entre si. Estabelecem conexões BGP com os route-servers e o looking glass. 3.2 Entendendo o Funcionamento de Um PIX do PTTMetro v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 161 Os Route Servers cumprem um papel fundamental dispensando a necessidade de que todos os participantes façam peering individualmente. Imaginem centenas de participantes estabelecendo peering (todos com todos). ROUTE SERVER 3.2 Entendendo o Funcionamento de Um PIX do PTTMetro v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 162 Formulários de Adesão 3.3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 163 3.3 - Formulários de Adesão Para se conectar do PTT-SP por exemplo, acesse o endereço: http://sp.ptt.br/adesao.html http://sp.ptt.br/adesao.html v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 164 Para facilitar há um formulário modelo já preenchido: ... Termo de conexão ao PTTMetro ... Localidade ........: (Coloque aqui a localidade do PTT que deseja se conectar) Listagem: http://ptt.br/adesao.php ASN ...............: 22548 Entidade Nome .....: Registro.br URL ...............: http://registro.br/ Endereço ..........: Av. das Nações Unidas 11548, 7° andar 04578-000 - São Paulo - SP NOC email .........: noc@registro.br INOC-DBA ext ......: 22548*NOC Telefone ..........: 11 5509-3510 Adm-c nome ........: Frederico A C Neves email .............: fneves@registro.br Telefone ..........: 11 5509-3511 Peering-c nome ....: Oripide Ocilento Filho email .............: oripide@nic.br Telefone ..........: 11 5509-3520 Comercial Trânsito : email .............: Telefone ..........: URL Política Peering .......: none - Open Policy BGP Feed para o Looking-glass ...: Sim [x] Nao [ ] Vende trânsitov4 ..: Sim [ ] Não [x] Vende trânsitov6 ..: Sim [ ] Não [x] Conexão Bandwidth .........: Media Ethernet ....: 10BaseTX [ ] 100BaseTX [ ] 10000BaseTX [ ] 1 GigE-SX [X] 1 GigE-LX [ ] 10 GigE-SR [ ] 10 GigE-LR [ ] PIX ...............: Registro.br IPv6 ..............: Sim [x] Nao [ ] ... 3.3 - Formulários de Adesão v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 165 Diferenças entre Acordo Bilateral e Multilateral 3.4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 166 3.4 - Diferenças entre Acordos Bilaterais e Multilaterais Estar no PTT por si só não significa trocar tráfego! Existem participantes que optaram em não trocar tráfego multilateral (todos com todos). E esse é um direito do participante... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 167 Acordo de troca Multilateral (ATM) Para trocar tráfego com todos os participantes, além do termo de conexão ao PTTmetro, é preciso preencher o termo de adesão ao ATM (Acordo de Troca Multilateral). No acordo multilateral o participante recebe uma vlan+ip e troca tráfego com todos. Após preenchidos ambos devem ser encaminhados para join@ptt.br ... Termo de adesão ao Acordo de Troca de Tráfego Multilateral (ATM) Version .........: 2008071000 Este termo de adesão trata das informações e compromissos da entidade solicitante para a participação no acordo de troca de tráfego multilateral no PTTMetro. Localidade ......: sp.ptt.br ASN .............: 22548 Entidade Nome ...: Registro.br ATM v4 ..........: Sim [x] Não [ ] ATM v6 ..........: Sim [x] Não [ ] ... 3.4 - Diferenças entre Acordos Bilaterais e Multilaterais v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 168 Acordo de troca Bilateral No acordo bilateral, 2 participantes manifestam interesse e recebem uma vlan comum, que fica extendida às duas extremidades e, por se tratar de um serviço em layer 2, os IPs ficam à critério desses 2 participantes. Em outras palavras, o PTTmetro providencia toda estrutura de um ”peering” para ambos. Os AS's que se conectam ao PTT mas não participam do ATM, em geral vendem trânsivo através de acordos bilaterais 3.4 - Diferenças entre Acordos Bilaterais e Multilaterais v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 169 Participantes Locais e Remotos 3.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 170 3.5 - Participantes Locais e Remotos Para participar é preciso ter conectividade layer2 com o switch do PTT- Metro. Para isso há duas formas: #1- Conectando-se fisicamente em um dos switches de um dos PIXs atraves de cabo/fibra: v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 171 Ou... 2# - Contratando transporte layer2 (lan2lan, clear channel) de algum participante conectado fisicamente. Não há diferenças no ponto de vista técnico entre as duas modalidades, exceto pelas consequ ncias do aumento de latencia, que é ẽ proporcional à distância geográfica. 3.5 - Participantes Locais e Remotos v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 172 Entendendo o Conceito de Lan2Lan 3.6 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 173 3.6 Entendendo o Conceito de Lan2Lan Para participar remotamente de um PTT, é necessário que o participante troque informações de nível de enlace, ou seja, além de um IP diretamente conectado, o MAC original deve ser conhecido pelos participantes através de solicitações ARP Em outras palavras, o participante remoto deve fazer parte do mesmo “domínio de broadcast” que os route servers e demais participantes v2.2 *beta3 | Autor: Rinaldo Vaz |rinaldopvaz@gmail.com 174 3.6 Entendendo o Conceito de Lan2Lan Um Tunel layer 2 ou “Lan2Lan” na prática não se parece muito com um “tunel”, ele pega o QUADRO ETHERNET original e encapsula no campo de dados do pacote IP O router destinatário desencapsula, reproduz o QUADRO ETHERNET ORIGINAL e joga na inteface correspondente. Dessa maneira, todas as infornações de “layer 2” chegam ao outro lado, incluindo requisições ARP e broadcasts v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 175 ATM-Tratando as Rotas Recebidas 3.7 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 176 3.7 - ATM-Tratando as Rotas Recebidas LAB: Estabelecer sessões BGP com o PTT Route-server e com o PTT Looking Glass: GX-R1#conf t GX-R1(config)#router bgp X GX-R1(config-router)#no bgp enforce-first-as GX-R1(config-router)#neighbor 187.16.216.253 remote-as 555 GX-R1(config-router)#neighbor 187.16.216.253 description PTT-Route_server-1 GX-R1(config-router)#neighbor 187.16.216.253 weight 15 !--- o valor 15 de weight deve ser maior do que o aplicado no ”IN” do AS100, !--- porém menor que o aplicado no peering "20” GX-R1(config-router)#neighbor 187.16.216.253 prefix-list MEUS-BLOCOS out !--- vamos anunciar apenas o bloco /8 para o PTT e todos os outros peers GX-R1(config-router)#neighbor 187.16.216.252 remote-as 555 GX-R1(config-router)#neighbor 187.16.216.252 description PTT-Looking Glass !--- para o looking glass do PTT enviaremos todas as rotas da FIB, portando nao usaremos nenhum filtro LAB 1-3-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 177 Agora vamos verificar quais rotas recebo do Route Server do PTT Utilizaremos o router do grupo 25 como exemplo: Vamos confirmar se todas as 5 sessões estão estabelecidas: ● Peering ● Trânsito AS100 ● PTT Looking Glass ● PTT Route Server ● Trânsito AS200 G25-R1#sh ip bgp summary ... Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd X.Y.1.2 4 Y 442 443 168 0 0 07:16:05 4 100.X.1.1 4 100 582 441 168 0 0 07:14:37 35 187.16.216.252 4 555 10 44 168 0 0 00:06:02 0 187.16.216.253 4 555 14 8 168 0 0 00:02:34 45 200.X.1.1 4 200 548 441 168 0 0 07:14:26 34 3.7 - ATM- Tratando as Rotas Recebidas LAB 1-3-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 178 Vamos verificar todas as opções para chegar ao AS 123 Continuaremos Utilizando o router do grupo 25 como exemplo: A rota escolhida para chegar ao AS 123 é pelo PTT. G25-R1#sh ip bgp 123.123.123.1 BGP routing table entry for 123.0.0.0/8, version 160 Paths: (3 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: 187.16.216.252 123 (received & used) 187.16.216.123 from 187.16.216.253 (187.16.216.253) Origin IGP, localpref 100, weight 15, valid, external, best 200 222 123 200.25.1.1 from 200.25.1.1 (200.200.4.2) Origin IGP, localpref 100, valid, external 100 111 55 123 100.25.1.1 from 100.25.1.1 (100.100.100.4) Origin IGP, localpref 100, weight 10, valid, external 3.7 - ATM-Tratando as Rotas Recebidas LAB 1-3-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 179 Agora vamos entrar no Looking Glass do AS123 e verificar as rotas para o AS do grupo estão aparecendo assim: A rota escolhida para chegar ao AS do grupo também é pelo PTT. AS-123-R1>sh ip bgp X.0.0.0/8 BGP routing table entry for X.0.0.0/8, version 251 Paths: (3 available, best #3, table Default-IP-Routing-Table, not advertised outside local AS) Not advertised to any peer 55 111 100 X 123.55.2.2 from 123.55.2.2 (55.55.55.2) Origin IGP, localpref 100, valid, external 222 200 X 123.222.2.2 from 123.222.2.2 (222.222.222.2) Origin IGP, localpref 100, valid, external X 187.16.216.X from 187.16.216.253 (187.16.216.253) !--- Essa rota foi recebida do PTT Origin IGP, localpref 100, valid, external, best Community: local-AS 3.7 - ATM-Tratando as Rotas Recebidas LAB 1-3-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 180 ATM-Anunciando Corretamente 3.8 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 181 3.8- ATM- Anunciando Corretamente Utilizamos anúncios da maneira mais simples possível, porém, no mundo real, o mais recomendado é anunciar blocos mais específicos para os pontos de troca. Um dos principais motivos são os participantes indiretos, digamos que o administrador do AS 44 coloca baixa prioridade para rotas recebidas pelo AS 30, ou mesmo que o BGP tenha escolhido sozinho o AS 100 como melhor rota por esta ser mais antiga. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 182 Os anúncios garantem tráfego de download pelo PTT, porém existem outras maneiras de fazer isso, utilizando communities e as path prepend. 3.8- ATM- Anunciando Corretamente v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 183 O Looking Glass do PTT Metro 3.9 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 184 3.9 - O Looking Glass do PTT Metro O Looking Glass do PTT-Metro foge um pouco do padrão, quando visualizamos uma rota como ”best” não significa que essa é a rota que está sendo escolhida pelos participantes do PTT. Ele não envia nenhuma rota, e todos os participantes devem enviar a sua tabela full. Assim, é uma ferramenta para ajudar a visualizar toda a tabela de roteamento de cada participante. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 185 Digamos que quero verificar a tabela de roteamento do participante do PTT que possui o AS 9. Esse comando mostraria todas as rotas BGP na FIB do AS 9 (desde que esse esteja enviando sua tabela full para o LG). GX-R1>telnet 187.16.216.252 Trying 187.16.216.252 ... Open User Access Verification Password: 123 PTT-LG>show ip bgp regexp ^9_ 3.9 - O Looking Glass do PTT Metro v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 186 Aplicações de Um Acordo Bilateral 3.10 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 187 3.10 Aplicações de Um Acordo Bilateral Com um acordo bilateral um AS pode vender trânsito para outro AS participante dispensando os custos de ativação (estrutura e equipamentos). Outra aplicação interessante é uma parceria entre 2 AS's de cidades diferentes para interligar um cliente comum em L2. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 188 LAB acordo bilateral: ● Os grupos escolherão com quem fazer o acordo bilateral e terão uma vlan comum escolhida pelo instrutor. ● O objetivo é semelhante ao LAB do ”peering”, porém, um dos participantes fornecerá trânsito IP para o outro que será apenas cliente. ● Para isso, deve ser estabelecida uma sessão BGP entre os dois, onde o responsável em prover trânsito deverá anunciar a tabela full para o cliente ao mesmo tempo que anuncia os prefixos do cliente para suas duas operadoras AS 100 e AS 200. 3.11 Comprando e vendendo trânsito no PTT LAB 1-3-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 189 Após decidido o ID da vlan cada participante deve inserir a tag correspondente na interface f0/1 (interface conectada ao PTT). Os IPs não importam para o PTT e devem ser combinados entre os dois participantes do acordo bilateral. GX-R1#conf t GX-R1(config)#interface fastEthernet 0/1.XXX GX-R1(config-subif)#encapsulation dot1Q XXX GX-R1(config-subif)#ip address (combinem os endereços IP de cada lado) GX-R1(config-subif)#end GX-R1# ping Z.Z.Z.Z !--- testem conectividade IP através da vlan antes de iniciar as configBGP XXX é o número (ID) da vlan e Z.Z.Z.Z o endereço IP que o cliente configurou do outro lado 3.11 Comprando e vendendo trânsito no PTT LAB 1-3-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 190 Configurações BGP no router que será TRÂNSITO: GX-R1#conf t GX-R1(config)#router bgp X GX-R1(config-router)#neighbor Z.Z.Z.Z remote-as Y GX-R1(config-router)#neighbor Z.Z.Z.Z description Acordo bilateral - cliente GX-R1(config-router)#neighbor Z.Z.Z.Z weight 25 !--- o valor de weight deve ser maior do todos os outros já que se trata de um cliente de trânsito GX-R1(config-router)#neighbor Z.Z.Z.Z prefix-list BLOCOS-CLIENTE-AS-Y in !--- dessa vez utilizaremos um filtro de entrada ”in” para não haver risco de receber do cliente !--- prefixos que não sejam dele e meu tráfego de output ir na direção desse cliente GX-R1(config-router)#exit GX-R1(config)#ip prefix-list BLOCOS-CLIENTE-AS-Y permit Y.0.0.0/8 !--- adiciono o classe A do cliente na prefix-list declarada como filtro de entrada GX-R1(config)#ip prefix-list MEUS-BLOCOS permit Y.0.0.0/8 !--- como já utilizamos a prefix-list ”MEUS-BLOCOS” na saída dos AS de trânsito, !--- vamos ”aproveita-la” e apenas adicionar mais um prefixo GX-R1(config-router)#end GX-R1#clear ip bgp * OBS: onde houver Y substituiremos pelo AS do CLIENTE, e Z.Z.Z.Z pelo IP que foi combinado previamente com o cliente e configurado do outro lado da VLAN 3.11 Comprando e vendendo trânsito no PTT LAB 1-3-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 191 Configurações BGP no router CLIENTE: GX-R1#conf t GX-R1(config)#router bgp X GX-R1(config-router)#neighbor Z.Z.Z.Z remote-as Y GX-R1(config-router)#neighbor Z.Z.Z.Z description Acordo bilateral-transito IP GX-R1(config-router)#neighbor Z.Z.Z.Z prefix-list MEUS-BLOCOS out !--- como cliente devemos anunciar da mesma maneira que fizemos com os ASs de trânsito !--- e já que o classe A local já está nessa lista não preciso configurar mais nada GX-R1(config-router)#end GX-R1#clear ip bgp * OBS: onde houver Y substituiremos pelo AS que será TRÂNSITO, e Z.Z.Z.Z pelo IP que está configurado do outro lado 3.11 Comprando e vendendo trânsito no PTT LAB 1-3-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 192 Testando o LAB: ● DESATIVEM as interfaces s1/0 e s1/1 do AS que foi designado como CLIENTE nesse LAB. ● Se tudo deu certo, os ASs que não participam do PTT (55,100,111,200 e 222) conseguirão alcançar o AS do cliente através do AS que serviu como trânsito. ● O objetivo agora é que AS's que não participam do PTT fiquem acessívels (trânsito IP) 3.11 Comprando e vendendo trânsito no PTT LAB 1-3-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 193 PERGUNTAS?PERGUNTAS? 3.11 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 194 Filtros Básicos para um AS de Trânsito 4.0 4. Filtros básicos para um AS de trânsito • 4.1 eBGP com upstreams e downstreams • 4.2 Configurando filtros de upstreams • 4.3 Configurando filtros de downstreams • 4.4 Entendendo o regexp • 4.5 Enviando/recebendo partial e full-routouting • 4.6 Route-map x prefix-list • 4.7 AS-Path Prepend • 4.8 Engenharia de tráfego I v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 195 4.1 eBGP com Upstreams e Downstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 196 4.1 – eBGP com Upstreams e Downstreams Daqui por diante faremos referência à 3 tipos de sessões BGP: – IBGP (BGP interno): sessões BGP com routers do meu próprio AS. – eBGP UPSTREAM: sessões BGP com AS's externos que prestam serviço de trânsito IP para meu AS. – eBGP DOWNSTREAM: sessões BGP com AS's externos aos quais meu AS presta serviço de trânsito IP. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 197 4.1 – eBGP com Upstreams e Downstreams IBGP ● Sessões entre roteadores que fazem parte do mesmo sistema autônomo ● Geralmente não utilizamos filtros ● Não importa a quantidade de saltos de roteamento, não há incremento de AS-PATH ● O BGP identifica automaticamente sessões iBGP quando o “remote-as” é o mesmo AS declarado em “router bgp X” v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 198 4.1 – eBGP com Upstreams e Downstreams eBGP – com UPSTREAMS ● Geralmente recebemos todas as rotas possíveis ● Os filtros de ENTRADA são do tipo “lista negra” ✔ Bloqueio de alguns exceções ✔ Prioridade sempre menor que DOWNSTREAMS ● Os filtros de SAÍDA são do tipo “lista branca” ✔ Enviar apenas meus prefixos e prefixos de DOWNSTREAMS v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 199 4.1 – eBGP com Upstreams e Downstreams eBGP – com DOWNSTREAMS ● Recebemos apenas prefixos do cliente e clientes secundários ● Os filtros de ENTRADA são do tipo “lista branca” ✔ Maior prioridade possível deve ser aplicada ● Os filtros de SAÍDA são do tipo “lista negra” ✔ Enviar todos os prefixos possíveis ✔ Anúncio de “parcial routing” apenas quando solicitado v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 200 Configurando Filtros de Upstreams 4.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 201 4.2 - Configurando Filtros de Upstreams Não podemos anunciar nenhuma rede da qual não queremos receber DOWNLOADS, para isso utilizamos filtros em todas as nossas saídas de UPSTREAM e PTTs. Porém existem certas precauções que devem ser tomadas nos filtros de entrada de UPSTREAM: – Não receber meus próprios prefixos; – Não receber BOGONS; – Não receber IPs privados; – Não receber rotas cujo AS PATH contenham AS(s) privado(s); – Garantir que rotas de UPSTREAMS não recebam prioridade maior que rotas DOWNSTREAMS; v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 202 ”Por padrão” o BGP descarta todas as rotas que anunciei e voltaram para mim por algum motivo (multihoming por exemplo). !--- essa regra pode ser modificada utilizando o comando !--- “router(config-router)#neighbor 192.168.2.1 allowas-in” Quando isso acontece, logo é verificado o meu próprio AS no path e a rota é descartada automaticamente. Porém é possível que alguém anuncie por "engano", e a única forma de garantir é um filtro baseado em IP (prefix-list). 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 203 Precisamos configurar alguns filtros padrão que evitam o recebimento de grades de IPs privados, multcast, link local, etc. Para isso vamos criar uma prefix-list chamada ”NAO-RECEBER” e inserir nela todas as redes indesejadas. Para facilitar, o Cisco IOS permite especificar intervalos de IPs, isso dispensa o trabalho de inserir cada sub-rede manualmente. Vamos entender melhor... 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 204 Antes de criar uma prefix-list precisamos ter em mente que para toda ela há um DENY implícito no final, semelhante à uma ”lista branca”, onde quem estiver na lista será permitido, e todo o resto bloqueado, ex: Com essa prefix-list na ENTRADA de um protocolo de roteamento qualquer o resultado seria receber apenas 122.36.200.0/24, e qualquer outro prefixo seria descartado. Lembrem que a última regra de {NEGAR TUDO} jamais aparece, nem mesmo no ”show running-config”. Gx-R1(config)#ip prefix-list MINHA-LISTA permit 122.36.200.0/24 Gx-R1(config)#ip prefix-list MINHA-LISTA {NEGAR TUDO} 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 205 O que é o ”seq” ? ● Ao inserir o comando: ● Automaticamente o IOS insere um número de sequência: ● Caso adicionemos mais redes na mesma lista o número de seq é incrementado em 5 automaticamente para cada regra: Gx-R1(config)#ip prefix-list MINHA-LISTA permit 122.36.200.0/24 Gx-R1#show running-config | begin MINHA-LISTA ip prefix-list MINHA-LISTA seq 5 permit 122.36.200.0/24 ! … Gx-R1(config)#ip prefix-list MINHA-LISTA permit 44.0.0.0/24 Gx-R1(config)#end Gx-R1#show running-config | beginMINHA-LISTA ip prefix-list MINHA-LISTA seq 5 permit 122.36.200.0/24 ip prefix-list MINHA-LISTA seq 10 permit 44.0.0.0/24 ! ... 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 206 O que é o ”seq” ? ● A razão para o incremento de ”5 em 5” é a possibilidade de inserir uma regra ”no meio” especificando um ”número de seq”: ● A regra recém criada seria processada primeiro do que todas as outras: ● Pouco importa a ordem de processamento quando todas as regras são de ”permit” ● O ”seq” só tem relevância quando há regras de deny e permit na mesma prefix-list e/ou utilizamos ”ranges” com ”le/ge” Gx-R1(config)#ip prefix-list MINHA-LISTA seq 4 permit 10.0.30.0/24 Gx-R1#show running-config | begin MINHA-LISTA ip prefix-list MINHA-LISTA seq 4 permit 10.0.30.0/24 ip prefix-list MINHA-LISTA seq 5 permit 122.36.200.0/24 ip prefix-list MINHA-LISTA seq 10 permit 44.0.0.0/24 ! … 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 207 Ranges de subredes - (le): ● Vamos agora considerar a necessidade de permitir sub-blocos: ● Essa regra permite 192.168.0.0/24, porém não permite 192.168.0.0/25, 192.168.0.128/25, 192.168.0.16/28 ou qualquer outra sub-rede. ● Para incluir sub-redes utilizamos ”le”: ● Com essa mudança, 192.168.0.0/25, 192.168.0.128/25, 192.168.0.16/28 ou qualquer outra sub-rede dentro começando com 192.168.0 seria aceita, exceto redes /30, /31 e /32. ● Para permitir TUDO dentro do /24 incluindo /30, /31 e /32 trocaríamos o le 29 por le 32. Gx-R1(config)#ip prefix-list MINHA-LISTA permit 192.168.0.0/24 Gx-R1(config)#ip prefix-list MINHA-LISTA permit 192.168.0.0/24 le 29 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 208 Ranges de subredes - (ge): ● Diferente do le, o ge especifica o tamanho mínimo da máscara, seu uso é mais apropriado em redes maiores. ● O /8 indica os bits que serão ”fixos”. ● Para esse exemplo, qualquer prefixo com os 8 primeiros bits fixos em começando com 192 (11000000) e ainda com máscara igual ou maior que /18 e igual ou menor que /26. ● Caso seja declarada uma máscara /0 (192.0.0.0/0) não importariam os 8 primeiros bits e qualquer prefixo (começando com qualquer coisa) seria aceito desde que sua máscara fosse entre /18 e /26. Gx-R1(config)#ip prefix-list MINHA-LISTA permit 192.0.0.0/8 ge 18 le 26 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 209 Ranges de subredes - (ge): ● Quero aceitar qualquer prefixo /24 e descartar todo o resto: ● Quero aceitar TODOS os prefixos dentro de 200.233.16.0/20, menos o primeiro /22: Gx-R1(config)#ip prefix-list MINHA-LISTA permit 0.0.0.0/0 ge 24 le 24 Gx-R1(config)#ip prefix-list MINHA-LISTA seq 10 deny 200.233.16.0/22 Gx-R1(config)#ip prefix-list MINHA-LISTA seq 20 permit 200.233.16.0/20 le 32 !--- na vida real ninguem recebe prefixos menores que /24 por BGP, !--- utilizaremos no máximo ”le 24” para qualquer filtro (in – out) !--- se posteriormente fosse necessário adicionar bloqueio de mais um /22, !--- o bloqueio funcionaria apenas com um seq menor que ”20” 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 210 Agora que compreendemos o funcionamento, vamos continuar de onde paramos e criar uma prefix-list chamada NAO-RECEBER. Dentro dela colocaremos todos os prefixos que não desejamos receber. Por se tratar de uma ”lista negra” não podemos esquecer de inserir uma regra que permita todo o resto no fim da hierarquia. 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 211 GX-R1(config)#ip prefix-list NAO-RECEBER seq 10 deny X.0.0.0/8 le 32 !--- blocos do meu próprio AS GX-R1(config)#ip prefix-list NAO-RECEBER seq 20 deny 10.0.0.0/8 le 32 !--- uso privado (neste lab estamos utilizando para grupo 10, favor nao bloquear este) GX-R1(config)#ip prefix-list NAO-RECEBER seq 30 deny 172.16.0.0/12 le 32 !--- uso privado GX-R1(config)#ip prefix-list NAO-RECEBER seq 40 deny 169.254.0.0/16 le 32 !--- link-local (APIPA) GX-R1(config)#ip prefix-list NAO-RECEBER seq 50 deny 127.0.0.0/8 le 32 !--- loopbacks GX-R-1(config)#ip prefix-list NAO-RECEBER seq 60 deny 192.0.2.0/24 le 32 !--- Documentação GX-R1(config)#ip prefix-list NAO-RECEBER seq 70 deny 192.168.0.0/16 le 32 !--- uso privado GX-R1(config)#ip prefix-list NAO-RECEBER seq 80 deny 224.0.0.0/4 le 32 !--- multicast GX-R1(config)#ip prefix-list NAO-RECEBER seq 90 deny 240.0.0.0/4 le 32 !--- reservado para uso futuro (para o fim do IPv6?) GX-R1(config)#ip prefix-list NAO-RECEBER seq 500 permit 0.0.0.0/0 le 24 !--- Permitir todo o resto e ao mesmo tempo descartar qualquer prefixo !--- mais específico que /24 como /25, /26, /27, etc Inserindo os prefixos na lista: 4.2 - Configurando Filtros de Upstreams LAB 1-4-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 212 Apenas criar a lista NAO-RECEBER de nada vale se a mesma não for declarada como filtro de ENTRADA dos UPSTREAMS, PEERING e PTT. GX-R1(config)#router bgp X GX-R1(config-router)#neighbor 100.X.1.1 prefix-list NAO-RECEBER in GX-R1(config-router)#neighbor 200.X.1.1 prefix-list NAO-RECEBER in GX-R1(config-router)#neighbor 187.16.216.253 prefix-list NAO-RECEBER in GX-R1(config-router)#neighbor (IP de peering) prefix-list NAO-RECEBER in GX-R1(config-router)#neighbor (acordo bilateral) prefix-list NAO-RECEBER in !--- Nesse caso apenas para quem é CLIENTE no acordo bilateral GX-R1(config-router)#end GX-R1#clear ip bgp * 4.2 - Configurando Filtros de Upstreams LAB 1-4-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 213 O AS 123 vai anunciar vários IPs privados, vamos verificar se o bloqueio está acontecendo corretamente: Existem 2 comando para verificar as rotas recebidas: Porém, se executarmos o segundo comando receberemos um erro: router#sh ip bgp neighbors A.B.C.D routes !--- mostra todas as rotas APÓS a validação do “nexthop” !--- e após todos os filtros de input router#sh ip bgp neighbors A.B.C.D received-routes % Inbound soft reconfiguration not enabled on A.B.C.D !--- mostra todas as rotas ANTES da validação do “nexthop” !--- e ANTES de passar em todos os filtros de input router#sh ip prefix-list detail NAO-RECEBER 4.2 - Configurando Filtros de Upstreams LAB 1-4-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 214 Desmistificando o ”Soft reconfiguration inbound”: Para que serve de verdade? 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 215 HARD reset: É a maneira menos recomendada de fazer um refresh nas rotas. A conexão TCP volta para o estado ”idle”. Há um pequeno intervalo antes da conexão iniciar novamente. Router#clear ip bgp { * | A.B.C.D | peergroupname } SOFT reset: Realiza o route refresh mantendo a sessão ativa . Pode ser dividido em ”outbound refresh” e ”inbound refresh”. Router#clear ip bgp { * | A.B.C.D | peergroupname } soft { out | in } Porém isso ainda não explica a função do ”soft reconfiguration inbound” ... 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 216 Quando updates são bloqueados pelos filtros de ”input”, esses updates são descartados pelo router, não sendo possível verificar informações sobre essas rotas. Habilitar o ”soft reconfiguration inbound” para um neighbor reserva uma área em memória para guardar informações de todas as rotas recebidas desse neighbor, tornando possível verificar as rotas que foram descartadas pelos filtros de ”input”. Habilitar o ”soft reconfiguration inbound” permitirá usar o comando: GX-R1#sh ip bgp neighbors A.B.C.D received-routes !--- exibe as rotas recebidas de A.B.C.D antes dos filtros de input !--- inclusive rotas com next-hop inválido 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz| rinaldopvaz@gmail.com 217 Vamos habilitar o ”Soft reconfiguration inbound” para todos os neighbors: GX-R1(config)#router bgp X GX-R1(config-router)#neighbor 100.X.1.1 soft-reconfiguration inbound GX-R1(config-router)#neighbor 200.X.1.1 soft-reconfiguration inbound GX-R1(config-router)#neighbor 187.16.216.253 soft-reconfiguration inbound GX-R1(config-router)#neighbor (IP de peering) soft-reconfiguration inbound GX-R1(config-router)#neighbor (acordo bilateral) soft-reconfiguration inbound GX-R1(config-router)#end GX-R1#clear ip bgp * soft 4.2 - Configurando Filtros de Upstreams LAB 1-4-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 218 Agora vamos tentar novamente executar o comando “... received-routes” Primeiro pelo AS 200: Depois pelo AS 100: GX-R1#sh ip bgp neighbors 200.9.1.1 received-routes !--- todas as rotas ANTES do filtro ”NAO-RECEBER” GX-R1#sh ip bgp neighbors 200.9.1.1 routes !--- todas as rotas APÓS do filtro ”NAO-RECEBER” GX-R1#sh ip bgp neighbors 100.9.1.1 received-routes !--- todas as rotas ANTES do filtro ”NAO-RECEBER” GX-R1#sh ip bgp neighbors 100.9.1.1 routes !--- todas as rotas APÓS do filtro ”NAO-RECEBER” 4.2 - Configurando Filtros de Upstreams LAB 1-4-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 219 Outros BOGONS ● Existe outro range de IPs que não são privados, mas ainda assim devem ser bloqueados. ● Existem blocos públicos de IPs que ainda não foram designados pelas organizações responsáveis. ● Dessa forma é possível que alguém utilize essas redes com intenções suspeitas. ● Onde conseguir uma lista atualizada? 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 220 Melhor do que sair à procura de listas é estabelecer um peering com o cymru. Para solicitar esse peering é preciso entrar em contato com bogonrs@cymru.com com as seguintes informações: ● Número de AS; ● Ip(s) que o cymru fará peering com você; ● Se o equipamento suporta autenticação MD5 para BGP; ● Chave pública GPG/PGP (opcional); 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 221 Segundo o site a resposta com as informações chega em 2 dias úteis em média Para mais informações acesse: http://www.team-cymru.org/Services/Bogons/bgp.html 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 222 Configurando a sessão BGP com Cymru... GX-R1(config)#router bgp X GX-R1(config-router)#neighbor x.x.x.x remote-as 65333 GX-R1(config-router)#neighbor x.x.x.x ebgp-multihop 255 GX-R1(config-router)#neighbor x.x.x.x weight 100 GX-R1(config-router)#neighbor x.x.x.x description BOGONS CYMRU GX-R1(config-router)#neighbor x.x.x.x prefix-list SAIDA-CYMRU out GX-R1(config-router)#neighbor x.x.x.x route-map FILTRO-CYMRUBOGONS in GX-R1(config-router)#neighbor x.x.x.x password <senha cymru> GX-R1(config-router)#exit 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 223 Adicionando as rotas recebidas em BLACKHOLE: GX-R1(config)#ip bgp-community new-format !---habilita suporte à communities tipo xxxx:yyyy GX-R1(config)#ip route 192.0.2.1 255.255.255.255 null0 !---cria a rota de blackhole GX-R1(config)#ip community-list 10 permit 65333:888 !---adiciona a community 65333:888 na comm-list 10 GX-R1(config)#route-map FILTRO-CYMRUBOGONS permit 10 !---entra as opções do route-map de entrada GX-R1(config-route-map)#match community 10 !---declara o conteudo da comm-list 10 para condição de math GX-R1(config-route-map)#set ip next-hop 192.0.2.1 !---para toda rota que fizer a condição mudar o next-hop para blackhole GX-R1(config)#ip prefix-list SAIDA-CYMRU seq 5 deny 0.0.0.0/0 le 32 !---garantir que nada será anunciado para o cymru 4.2 - Configurando Filtros de Upstreams v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 224 Configurando Filtros de Downstreams 4.3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 225 4.3 - Configurando Filtros de Downstreams A primeira coisa e se levar em conta é a prioridade maior para os prefixos recebidos do meu downstream. Ao mesmo tempo, não podemos correr o risco de receber um full- routing desse cliente por algum erro dele, caso isso aconteça, todo meu upload passa a subir por esse cliente. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 226 LAB: O router R2 agora será um cliente de trânsito (downstream) com as seguintes informações: Cliente de trânsito: ● AS: 100X ● Bloco CIDR: 187.X.0.0/22 ● IP de WAN: X.X.100.2 ● Interface serial 1/3 4.3 - Configurando Filtros de Downstreams LAB 1-4-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 227 Como já usamos os pesos (weight) 10 15 e 20 utilizaremos 30 para downstreams. GX-R1(config-router)#neighbor X.X.100.2 remote-as 100X GX-R1(config-router)#neighbor X.X.100.2 weight 30 GX-R1(config-router)#neighbor X.X.100.2 prefix-list BLOCOS-AS-100X in GX-R1(config-router)#neighbor X.X.100.2 neighbor X.X.100.2 default-originate !--- filtro de ENTRADA para o DOWNSTREAM AS 100X + envio de rota padrao GX-R1(config-router)#neighbor 100.X.1.1 prefix-list ANUNCIAR-AS-100 out !--- filtro de SAIDA para o UPSTREAM AS 100 GX-R1(config-router)#neighbor 200.X.1.1 prefix-list ANUNCIAR-AS-200 out !--- filtro de SAIDA para o UPSTREAM AS 200 GX-R1(config-router)#neighbor 187.16.216.253 prefix-list ANUNCIAR-PTT out !--- filtro de SAIDA para o PTT GX-R1(config-router)#exit GX-R1(config)#ip prefix-list BLOCOS-AS-100X permit 187.X.0.0/22 le 24 !--- como declaramos a prefix-list BLOCOS-AS-100X na entrada do DOWNSTREAM !--- vamosadicionar os blocos CIDR do DOWNSTREAM nessa lista GX-R1(config)#ip prefix-list ANUNCIAR-AS-100 permit 187.X.0.0/22 le 24 GX-R1(config)#ip prefix-list ANUNCIAR-AS-100 permit X.0.0.0/8 !--- adicionar os blcos CIDR do DOWNSTREAM e também os blocos do AS !--- na saída do UPSTREAM AS 100 GX-R1(config)#ip prefix-list ANUNCIAR-AS-200 permit 187.X.0.0/22 le 24 GX-R1(config)#ip prefix-list ANUNCIAR-AS-200 permit X.0.0.0/8 !--- adicionar os blcos CIDR do DOWNSTREAM e também os blocos do AS !--- na saída do UPSTREAM AS 200 GX-R1(config)#ip prefix-list ANUNCIAR-PTT permit 187.X.0.0/22 le 24 GX-R1(config)#ip prefix-list ANUNCIAR-PTT permit X.0.0.0/8 !--- adicionar os blcos CIDR do DOWNSTREAM e também os blocos do AS !--- na saída para o PTT GX-R1(config)#end GX-R1#clear ip bgp * out 4.3 - Configurando Filtros de Downstreams LAB 1-4-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 228 Configurando a sessão BGP com o UPSTREAM em R2 GX-R2(config)#no router bgp X !--- Primeiro é preciso remover as configurações de BGP que utilizavam o as X GX-R2(router)#router bgp 100X GX-R2(config-router)#no auto-summary GX-R2(config-router)#network 187.X.0.0 mask 255.255.252.0 GX-R2(config-router)#neighbor X.X.100.1 remote-as X !--- Configurando o BGP com UPSTREAM GX-R2(config-router)#exit GX-R2(config)#interface loopback 0 GX-R2(config-if)#ip address 187.X.0.1 255.255.252.0 GX-R2(config-if)#end !--- configura um IP na loopback para que haja a ocorrência na FIB GX-R2#clear ip bgp * 4.3 - Configurando Filtros de Downstreams LAB 1-4-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 229 Vamos verificar no looking glass os anúncios dos downstreams... SUCESSO?? Notem que no estágio em que chegamos, utilizar “prefix-lists” está se tornando dificil de escalar e “debugar” problemas, pois com uma determinada quantidade de dowstreams, simplesmente não conseguimos identificar a quem percentem os blocos de IP. Discutiremos posteriormente modelos mais fáceis de escalar com “route-map” 4.3 - Configurando Filtros de Downstreams LAB 1-4-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 230 Entendendo o ”BGP REGEXP” 4.4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 231 4.4 - Entendendo o “BGP REGEXP” Quando temos muitos clientes de trânsito é preciso estabelecer padrões paraque os administradores sejam capazes de entender as configurações. Além de evitar ao máximo a quantidade excessiva de linhas de configuração. Por exemplo: Há um "range" de números de AS que são de uso privado semelhantes aos IPs 192.168.x.x . Esse intervalo vai de 64512 até 65535, e não devemos receber anúncios que contenham algum desses AS's no path. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 232 Imagine ter que configurar uma linha de deny para cada AS privado. Seria um tanto complicado! Felizmente com expressões regulares ao invés de milhares, resolvo esse problema com apenas 2, (ou uma talvez). Router(config)#ip as-path access-list 1 deny 64512 Router(config)#ip as-path access-list 1 deny 64513 Router(config)#ip as-path access-list 1 deny 64514 ... ... Router(config)#ip as-path access-list 1 deny 65534 Router(config)#ip as-path access-list 1 deny 65535 Router(config)#ip as-path access-list 1 permit .* 4.4 - Entendendo o “BGP REGEXP” v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 233 4.4 - Entendendo o “BGP REGEXP” “_” - Underline ✗ Substitui uma lista de expressões, que pode ser uma vírgula (,), chave esquerda ({), chave direita (}), o início da seqüência de entrada (^), o fim da seqüência de entrada ($), ou um espaço. ✗ Escrever _444_ pode ser equivalente às seguintes combinações: ✗ ^444$ ✗ ^444espaço ✗ espaço444 ✗ {444, ✗ ,444, ✗ {444} ✗ ,444, Para praticar segue um link interessante: http://tools.lymas.com.br/regexp_br.php http://tools.lymas.com.br/regexp_br.php v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 234 Antes vamos entender a função dos principais caracteres nas expressões regulares: ✗ "1" Um número isolado satisfaz a condição para qualquer expressão que contenha esse número. ✗ exemplo1: 1 "a condição de match é qualquer AS no Path (podem haver vários AS's) que contenha o número 1 em qualquer parte, em pelo menos um dos AS's. Satisfaz: ”99199”, "123 432", "999 888 777 123 998". Não satisfaz: "355 3344 22334", "466", etc. ✗ exemplo2: _1 "a condição de match é qualquer AS no Path (podem haver vários AS's) que contenha o número 1 no ínicio de pelo menos um dos AS's e que essa ocorrência não seja a primeira”. Satisfaz: "891 12333 3445 9999", "555 123 432", "1111 2222 4444". Não satisfaz: "4333 21123", "4661" "21111 912222", etc. ✗ exemplo3: _1_ "a condição de match é qualquer AS no Path (podem haver vários AS's) que contenha o número 1 sozinho em pelo menos um dos AS's e essa ocorrência pode ser a primeira e/ou a última. ✗ Satisfaz: "2333 1 3445 9999", "33 1", "433 4444 1 433", “1” Não satisfaz: "333 222 555 12". 4.4 - Entendendo o “BGP REGEXP” v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 235 4.4 - Entendendo o “BGP REGEXP” ✗ ”.” Satisfaz a condição para qualquer número no lugar do ponto ✗ exemplo: _4.5_ "a condição de match é qualquer AS PATH que contenha um AS de 3 dígitos onde 4 seja o primeiro e 5 seja o último com qualquer número no meio e que contenha ou nao outros AS's (antes e depois) Satisfaz: "12 415 43", "2 425 3", "435" , "321 456 445 345" Não satisfaz: "315", "123 4115", etc ✗ Exemplo: 4.5 "a condição de match é qualquer número de 3 ou mais dígitos que tenha 4 e 5 em qualquer parte do AS PATH e com um dígito qualquer entre eles Satisfaz: "23415", "43425", "435 3333", "445", "45587", "321 44459 345" Não satisfaz: 315, 416, etc v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 236 4.4 - Entendendo o “BGP REGEXP” ✗ ”$” Satisfaz a condição para o tudo que o que for terminado com o caracter (ou expressão) ao lado esquerdo de "$" ✗ exemplo1: 12$ "a condição de match é qualquer AS PATH em que os dois últimos dígitos sejam 1 e 2 respectivamente" Satisfaz: ”4912”, "65012", "12312", "11112", "9932 9976 64912", "28135 17379 54312" ... Não satisfaz: 13, 22, 129, 55413, 58752 … ✗ exemplo2: _12$ "a condição de math é qualquer AS PATH em que último AS seja 12" Satisfaz: "12", "2335 12", "312 12", "111 12" Não satisfaz: "444 112", "22", "12 229", "999 12 1111" ✗ exemplo3: 1.2$ "a condição de match é qualquer AS PATH em que seus últimos 3 dígitos do último AS sejam: 1, qualquer coisa e 2 respectivamente" Satisfaz: "123 45666 33 112", "444 122", "132", "1111 132", "444 65192", "60192" Não satisfaz: "2333 222", “123”, “112 912” v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 237 4.4 - Entendendo o “BGP REGEXP” ✗ ”^” Satisfaz a condição para caracteres que comecem com o caracter (ou exprssão) após o ^ ✗ exemplo1: ^1 "a condição de match é qualquer AS PATH que tenha o dígito 1 no início do primeiro AS do PATH satisfaz: "1111 9999 55443", "12345 6776", 12222, 19999 não satisfaz: 21111, 31211, 2, 3, 43111 ✗ exemplo2: ^1.4 "a condição de match é qualquer AS PATH em que os 3 primeiros dígitos do primeiro as sejam: 1, qualquer coisa e 4 respectivamente Satisfaz: "124 4321", "12444", "1449", "19455 12333", "10466 55443 9900" Não satisfaz: 195, 2124, 22444, 9104 ✗ exemplo3: ^1..8$ "a condição de match é um AS PATH contento apenas um AS de 4 dígitos, onde o primeiro dígito é 1, o segundo e o terceiro qualquer coisa e o quarto e último seja 8 respectivamente Satisfaz: ”1008”, ”1248”, ”1118”, ”1228”, ”1998”, ”1888” Não satisfaz: 10008, "1008 1008", "14448" v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 238 4.4 - Entendendo o “BGP REGEXP” ”*” Satisfaz a condição para qualquer caractere à esquerda do "*", inclusive nenhum, por isso é preciso utilizar o caracter um espaço "_" branco em conjunto, pois sem espaço a expressão perde o sentido, por exemplo, 1* satisfaria condição para qualquer coisa, e o padrão intuitivo para "qualquer coisa/tudo" é ".*" ✗ exemplo1: 1_* "a condição de match é qualquer coisa que contenha o dígito 1 em qualquer parte do AS" satisfaz: "43431 9999 777 9999 8888(infinito...)”,” … 99 9991 345 666 654 5556...” não satisfaz: 8872, "9987 2332", etc ✗ Exemplo2: .* "a condição de math é qualquer AS PATH de qualquer tamanho, com qualquer combinação" Satisfaz: TUDO Não satisfaz: NADA v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 239 4.4 - Entendendo o “BGP REGEXP” ”\” Este caracter é usado quando os caracteres de condição também são caracteres de expressão regular, por exemplo, se precisássemos de uma expressão para dinheiro, onde a condição fosse "R$ 10,01" até "R$ 10,99", teríamos um grande problema, já que a expressão necessária é "R$_10,..$" Notem que o "$" precisa aparacer como "condição" ao mesmo tempo que é um caracter de expressão regular. Sendo assim, não funcionaria. O caracter "\" é usado para declarar que o próximo caracter deverá ser interpretado como "condição", ao invés de sua função normal. Assim, a expressão corretá ficaria "R\$_10,..$" ”Felizmente” não utilizaremos esse caracter para BGP v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 240 4.4 - Entendendo o “BGP REGEXP” ✗ ”[ ]” Satifaz a condição para qualquer um dos caracters dentro dos colchetes, mas apenas UM deles. Há a possibilidade de utilizar intervalos entre os colchetes seguidos de hífem "-" ✗ Dentro dos colchetes o caracter "^" tem função de negação, O intervalo funciona da mesma forma para as negações. ✗ exemplo1: ^9[249]5$ "a condição é um AS que contenha qualquer combinação de 3 dígitos sendo o primeiro 9, o terceiro 5 e o do meio 2, 4 ou 9 Satisfaz: ”925”, ”945”, e ”995” Não satisfaz: 915, 955, 965, etc ✗ exemplo2: ^9[5-7]5$ "mesma lógica do exemplo 1, porém o dígito do meio pode ser de 5 à 7" Satisfaz: 955, 965 e 975 ✗ exemplo3: ^9[^28]5$ "a condição de match é a mesmalógica dos exemplos 1 e 2 porém o digito do meio não poderá ser 2 ou 8 Satistaz: todas as possibilidades de um ”9.5” "menos" 925 e 985. ✗ exemplo4: ^9[^5-8]5$ "a condição de match segue a mesma lógica dos exemplos 2 e 3 porém o dígito do meio não pode estar no intervalo entre 5 e 8 (5,6,7 ou 8) Satisfaz: todas as possibilidades "menos" 955, 965, 975 e 985 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 241 4.4 - Entendendo o “BGP REGEXP” ✗ ”|” O PIPE divide dois ou mais caracters em uma condiço "ou". ✗ exemplo1: 3(4|9)3 satisfaz: 343 ou 393 apenas mesmo comportamento de “3[49]3” ✗ exemplo2: ^5([0-3]|9)3$ satisfaz: 503, 513, 523, 533 e 593 PS ( ) coloca uma expressão em evidência, sem eles o exemplo 2 aceitaria 5333333333333333333353333333333333333333333435465769733... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 242 4.4 - Entendendo o “BGP REGEXP” ✗ ”+” Satisfaz a condição para uma(pelo menos) ou mais ocorrências do caracter (ou expressão) anterior em qualquer parte ✗ exemplo1: ^([^ ]+)$ satisfaz: qualquer ASPATH que contenha apenas 1 AS Aplicação prática: Filtrar para meu cliente apenas rotas que tenham um AS no path e nada mais ✗ “?” Satisfaz a condição para uma ou nenhuma ou uma ocorrencia do caracter (ou expressão) anterior ✗ exemplo1: ^([^ ]+)?$ satisfaz: qualquer rota que tenha no máximo um AS no PATH ou NENHUM Aplicação prática: Filtrar para meu cliente apenas rotas que tenham um AS no path e também rotas que não contenham NENHUM AS no PATH (rotas originadas localmente) ✗ ”{ }” especifica um número ou um intervalo de repetições para um caracter (ou expressão) antecedente ✗ exemplo1: ^2{4}$ satisfaz: 2222 apenas ✗ exemplo2: ^2{4,6}$ satisfaz: 2222, 22222 e 222222 ✗ exemplo3: ^1[0-3]{1,2}$ satisfaz: 100, 13, 10, 132, 12, 130 nao satisfaz: 14, 1031, 15, 1033 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 243 4.4 - Entendendo o “BGP REGEXP” Agora vamos raciocinar um pouco e utilizar as expressões que aprendemos para bloquear o range dos AS's 64512 até 65535 utilizando o menor número possível de regras... LAB 1-4-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 244 4.4 - Entendendo o “BGP REGEXP” LAB: O AS 123 vai gerar rotas com AS's privados, aplicar filtros de input para bloquear essas rotas: GX-R1(config)#ip as-path access-list 1 permit _(645(0.|10|11)_?)_ !--- aceita de 64501 a 64511 GX-R1(config)#ip as-path access-list 1 deny _6(4[5-9]..|5..._?)_ !--- rejeita qualquer coisa de 64500 à 64999 e de 65001 à 65999 !--- obs, não há AS maior que 65535 GX-R1(config)#ip as-path access-list 1 permit .* !--- aceita todo o resto GX-R1(config)#router bgp X !--- Vamos adicionar o mesmo prefix-list na entrada do AS 100 GX-R1(config-router)#neighbor 100.X.1.1 filter-list 1 in GX-R1(config-router)#neighbor 200.X.1.1 filter-list 1 in OBS: As expressões acima podem ser simplificadas ainda mais LAB 1-4-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 245 4.4 - Entendendo o “BGP REGEXP” Existem infinitas aplicações, por exemplo, descubro que o AS 12345 está com lentidão, crio políticas que diminuem a prioridade de qualquer prefixo anunciado por esse AS router(config)#ip as-path access-list 20 permit _12345_ !--- cria a ACL 20 e diz que qualquer AS PATH contendo 12345 está nela router(config)#route-map UPSTREAM-1 permit 1 !--- Cria um route-map no topo da hierarquia router(config-route-map)#set local-preference 90 !--- especifica a ação "mudar o local pref para 90" router(config-route-map)#match as-path 20 !--- especifica quem irá receber a ação "set local pref 90" router(config-route-map)#exit router(config)#route-map UPSTREAM-1 permit 2 !--- cria um route-map ”em branco”que aceita todo o resto sem modificações router(config-route-map)#exit v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 246 4.4 - Entendendo o “BGP REGEXP” Precisamos nesse caso fazer o mesmo para todos os UPSTREAMS router(config)#route-map UPSTREAM-2 permit 1 !--- Cria um route-map no topo da hierarquia router(config-route-map)#set local-preference 90 !--- especifica a ação "mudar o local pref para 90" router(config-route-map)#match as-path 20 !--- especifica quem irá receber a ação "set local pref 90" router(config-route-map)#exit router(config)#route-map UPSTREAM-2 permit 2 !--- cria um route-map ”em branco”que aceita todo o resto sem modificações router(config-route-map)#exit v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 247 4.4 - Entendendo o “BGP REGEXP” As expressões regulares não servem apenas para filtrar prefixos, mas também para encontrar certas rotas entre as centenas de milhares de uma tabela full Por exemplo: Quero saber quais rotas na minha RIB foram originadas pelo AS 6762 (TELECOM ITALIA SPARKLE S.p.A.) BGPD-ALOG-SP# sh ip bgp regexp _6762$ ... Network Next Hop Metric LocPrf Weight Path *> 2.16.70.0/23 201.20.36.158 0 16397 6762 i *> 2.16.140.0/23 201.20.36.158 0 16397 6762 i *> 2.16.146.0/23 201.20.36.158 0 16397 6762 i ... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 248 4.4 - Entendendo o “BGP REGEXP” Exemplo 2: Quais rotas foram recebidas pela Intelig através do peering com Embratel? Exemplo 3: Quais ASs estão diretamente conectados (sem prepend) com o AS 4230 (EMBRATEL)? BGPD-ALOG-SP# sh ip bgp regexp _17379 4230_ ... Network Next Hop Metric LocPrf Weight Path *> 186.205.244.0/22 201.20.36.158 0 16397 17379 4230 28573 i BGPD-ALOG-SP# sh ip bgp regexp _4230 ([0-9]+)$ … Network Next Hop Metric LocPrf Weight Path *> 23.61.118.0/23 201.20.36.158 0 16397 17379 4230 28573 i *> 23.61.120.0/22 201.20.36.158 0 16397 17379 4230 28573 i ... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 249 4.4 - Entendendo o “BGP REGEXP” Quais ASs estão diretamente conectados com meus upstreams ou downstreams? BGPD-ALOG-SP# sh ip bgp regexp ^([0-9]+_{0,1}){1,2}$ Network Next Hop Metric LocPrf Weight Path ... *> 216.72.166.0 201.20.36.157 0 16397 6505 i *> 216.239.32.0/19 201.20.36.158 0 16397 15169 i ... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 250 Enviando e Recebendo “Partial” e “Full-Routing” 4.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 251 Enviando parcial para o meu DOWNSTREAM ● O cliente deseja receber rotas do meu AS e meus outros DOWNSTREAMS A lógica é mesma, vamos utilizar a as-path acl "10". GX-R1(config-router)#neighbor X.X.100.2 filter-list 10 out GX-R1(config)#ip as-path access-list 10 permit ^([^ ]+)?$ !--- nesse exemplo enviaremos apenas rotas com no máximo 1 AS no AS-PATH !--- inclusive rotas com 0 AS's no path, ou seja, originadas localmente 4.5 – Enviando e Recebendo “Partial” e “Full- routing” LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 252 4.5 – Enviando e Recebendo “Partial” e “Full- routing” Vamos ver se funcionou... GX-R1#sh ip bgp neighbors X.X.100.2 advertised-routes LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 253 4.5 – Enviando e Recebendo “Partial” e “Full- routing” Vamos ver se funcionou... GX-R1#sh ip bgp neighbors X.X.100.2 advertised-routes LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 254 4.5 – Enviando e Recebendo “Partial” e “Full- routing” As chaves ajudam a diminuir o as repetições de certas "palavras", por exemplo: Para enviar um parcial routing para um cliente eu poderia utilizar as seguintes expressões: – Enviar rotas com 1 AS no path: (essa é fácil): router(config)# ip as-pathaccess-list 1 permit ^([0-9]+)$ Essa expressão é incompleta, pois não anunciaria prefixos originados no meu próprio AS (que não tem nenhum AS no PATH), e preciso então fazer mais uma me deixando com 2 regras no total... router(config)# ip as-path access-list 1 permit ^([0-9]+)$ router(config)# ip as-path access-list 1 permit ^$ (...continua) LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 255 4.5 – Enviando e Recebendo “Partial” e “Full- routing” Para aumentar para até 2 AS's eu coloco mais uma... router(config)# ip as-path access-list 1 permit ^([0-9]+ [0-9+)$ router(config)# ip as-path access-list 1 permit ^([0-9]+)$ router(config)# ip as-path access-list 1 permit ^$ Adicionar 3 regras seja um problema, mas é um problema se eu quiser "visualizar" em um comando só, nesse caso fica um tanto tosco dar 3 comandos diferentes. Felizmente há a opção de facilitar com o PIPE... router#sh ip bgp regexp ^([0-9]+ [0-9]+)$|^([0-9]+)$|^$ Dessa forma consigo ver tudo e ao mesmo tempo criar uma regra que "vale por 3" (...continua) LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 256 4.5 – Enviando e Recebendo “Partial” e “Full- routing” Porém ainda posso simplificar mais... de ^([0-9]+ [0-9]+)$|^([0-9]+)$|^$ para ^(([0-9]+ [0-9]+)|([0-9]+)|())$ Evidentemente ainda dá para melhorar, trocando a expressão "qualquer número" [0-9]+" por "qualquer coisa q nao seja em branco" "[^ ]", logo: de ^([0-9]+ [0-9]+)$|^([0-9]+)$|^$ para ^(([^ ]+ [^ ]+)|([^ ]+)|())$ (...continua) LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 257 4.5 – Enviando e Recebendo “Partial” e “Full- routing” Porém ainda posso simplificar mais... de ^([0-9]+ [0-9]+)$|^([0-9]+)$|^$ para ^(([0-9]+ [0-9]+)|([0-9]+)|())$ Evidentemente ainda dá para melhorar, trocando a expressão "qualquer número" [0-9]+" por "qualquer coisa q nao seja em branco" "[^ ]", logo: de ^([0-9]+ [0-9]+)$|^([0-9]+)$|^$ para ^(([^ ]+ [^ ]+)|([^ ]+)|())$ (...continua) LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 258 4.5 – Enviando e Recebendo “Partial” e “Full- routing” Mesmo ficando pouco intuitivo, tivemos uma boa redução na quantidade de caracteres e linhas... (apenas 1) router(config)#ip as-path access-list 1 permit ^(([^ ]+ [^ ]+)|([^ ]+)|())$ Agora imagine a dificuldade de escalar em demandas de 3 ou 4 AS's para 3 => ^(([^ ]+)|([^ ]+ [^ ]+)|([^ ]+ [^ ]+ [^ ]+)|())$ para 4 => ^(([^ ]+)|([^ ]+ [^ ]+)|([^ ]+ [^ ]+ [^ ])|([^ ]+ [^ ]+ [^ ]+ [^]+)|())$ Essa expressão para "4" é impossível de digitar com pressa ;-) (...continua) LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 259 4.5 – Enviando e Recebendo “Partial” e “Full- routing” Então as chaves ajudam a eliminar as repetições inserindo um intervalo de repetições dentro das chaves {}... Consigo diminuir essa expressão de: ^(([^ ]+)|([^ ]+ [^ ]+)|([^ ]+ [^ ]+ [^ ])|([^ ]+ [^ ]+ [^ ]+ [^ ]+)|())$ para: ^([^ ]+_{0,1}){0,4}$ Ou seja, a palavra ([^ ]+_{0,1}) à esquerda de {0,4} pode se repetir 0 vezes, 1 vez, 2 vezes, 3 vezes ou 4 vezes. Infelizmente, nas versões de IOS que otilizamos nesse curso as chaves simplesmente não funcionam PS: No Quagga funciona 100%. LAB 1-4-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 260 Route-Map x Prefix-List 4.6 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 261 4.6 – Route-Map X Prefix-List Políticas de filtro baseadas em ROUTE-MAP: ● Seq number: { 0 … 65535 } ● A ordem que esse route-map vai ser processado na hierarquia, seguindo a mesma lógica dos ”seq” da prefix-list. router(config)#route-map FILTROS-DE-ENTRADA permit 10 router(config-route-map)#match ip address prefix-list MUDAR-METRIC router(config-route-map)#set metric 50 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 262 Políticas de filtro baseadas em ROUTE-MAP: ● Condições: match ip address prefix-list MUDAR-METRIC ● Para receber a ação ”permit” e as modificações opcionais (set metric 50) o prefixo precisaria estar contido na prefix list ”MUDAR-METRIC” ● OBS: é possível estabelecer mais de uma condição, por exemplo: ● match ip address prefix-list MUDAR-METRIC match as-path 10 match community 60 ● Mas nesse caso é preciso que todas as condições sejam atendidas, caso contrário, o route-map é ignorado e é processado o próximo route-map na sequência router(config)#route-map FILTROS-DE-ENTRADA permit 10 router(config-route-map)#match ip address prefix-list MUDAR-METRIC router(config-route-map)#set metric 50 4.6 – Route-Map X Prefix-List v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 263 Políticas de filtro baseadas em ROUTE-MAP: ● Modificações: set metric 50 ● Ao atender 100% das condições podem ser aplicadas modificações opcionais nas rotas ● OBS: Também é possível realizar mais de uma modificação, por exemplo: ● set local-preference 120 set weight 40 set community 123:321 router(config)#route-map FILTROS-DE-ENTRADA permit 10 router(config-route-map)#match ip address prefix-list MUDAR-METRIC router(config-route-map)#set metric 50 4.6 – Route-Map X Prefix-List v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 264 Políticas de filtro baseadas em ROUTE-MAP: ● Route-map sem condições declaradas: ● Nesses casos TODAS as rotas receberão à ação {permit | deny} e qualquer modificação opcional, que nesse exemplo foi alterar o local preference para 200. router(config)#route-map FILTROS-DE-ENTRADA permit 10 router(config-route-map)#set local-preference 200 4.6 – Route-Map X Prefix-List v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 265 Políticas de filtro baseadas em ROUTE-MAP: ● Route-map sem condições declaradas: ● Caso hajam outros route-maps abaixo (números maiores de seq) de um route-map sem condições declaradas, esses jamais serão processados e serão totalmente inúteis. router#sh running-config | begin TESTE route-map TESTE permit 1 set weight 10 ! route-map TESTE permit 2 match ip address BLOCOS-CLIENTE-1 set metric 10 set local-preference 350 ! route-map TESTE permit 3 match as-path 20 set local-preference 400 ! 4.6 – Route-Map X Prefix-List v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 266 Políticas de filtro baseadas em ROUTE-MAP: ● Quando um ”PERMIT” se transforma em ”DENY” ● Ao combinar route-map e prefix-lists, entendam o ”permit” da prefix list como um ”faz parte da lista” e não como um ”aceitar” propriamente dito, pois a ação de ”aceitar” vai depender do que for declarado na ”ação” do route-map. ● Se é um route-map com ação DENY, tudo que tiver como permit na prefix list será bloqueado, por exemplo: ● Nesse caso o prefixo 192.168.2.0/24 será bloqueado, enquanto 192.168.2.128/25 será permitido, porém inutilizado por causa da regra de cima ! ip prefix-list A seq 5 permit 192.168.2.0/25 ip prefix-list A seq 10 deny 192.168.2.128/25 ! route-map TESTE deny 1 match ip address prefix-list A ! route-map TESTE permit 2 ! 4.6 – Route-Map X Prefix-List v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 267 AS-Path Prepend 4.7 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 268 4.7 - AS-Path Prepend Para manipular o download pra os prefixos do meu próprio AS eu posso facilmente anunciar prefixos mais ou menos específicos. Mas como AS de trânsito não tenho como pedir aos meus clientes que modifiquem seus anúncios caso eu queira usar um link específico. O AS PATH prepend adiciona números extras de AS no AS PATH das rotas anunciadas para um determinado neighbor. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 269 4.7 - AS-Path Prepend Exemplo1: ✔ Inserindo prepends do MEU AS na saída (Router-E1) router bgp 65000 no synchronization bgp log-neighbor-changes network 10.7.1.0 mask 255.255.255.0 neighbor 10.0.1.2 remote-as 64800 neighbor 10.0.1.6 remote-as 64800 neighbor10.0.1.6 route-map prepend out ! route-map prepend permit 10 set as-path prepend 65000 65000 65000 (Router-R2) R2#show ip bgp BGP table version is 3, local router ID is 10.2.0.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i10.7.1.0/24 10.0.1.1 0 100 0 65000 i * 10.0.1.5 0 0 65000 65000 65000 65000 i http://wiki.nil.com/AS-path_prepending_(technical_details)Fonte: http://wiki.nil.com/AS-path_prepending_(technical_details) v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 270 4.7 - AS-Path Prepend Exemplo2: ✔ Inserindo prepends do AS REMOTO na entrada (Router-R1) router bgp 64800 no synchronization bgp log-neighbor-changes neighbor 10.0.1.1 remote-as 65000 neighbor 10.0.1.1 route-map prependIn in neighbor 10.2.0.2 remote-as 64800 ! route-map prependIn permit 10 set as-path prepend last-as 2 (Router-R1) R1#show ip bgp BGP table version is 2, local router ID is 10.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.7.1.0/24 10.0.1.1 0 0 65000 65000 65000 i http://wiki.nil.com/AS-path_prepending_(technical_details)Fonte: http://wiki.nil.com/AS-path_prepending_(technical_details) v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 271 Engenharia de Tráfego I 4.8 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 272 4.8 – Engenharia de Tráfego I LAB: Todos os grupos configurar Upstreams + Dowmstreams de acordo com os seguintes requisitos: LAB 1-4-4 ✔ Apenas o DOWNLOAD do CLIENTE (AS100X) deverá chegar pelo AS 100, de forma que o DOWNLOAD do AS LOCAL continuará chegando pelo AS 200. AS-55 AS-222 AS-111 AS-200AS-100 AS-100X DOWNLOAD CLIENTE: DOWNLOAD AS LOCAL: AS-123 AS-X v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 273 Configurando: GX-R1(config-router)#no neighbor 200.X.1.1 prefix-list ANUNCIAR-AS-200 out !--- desconfigura a prefix list ANUNCIAR-AS-200 do filtro de saida do AS 200 GX-R1(config-router)#neighbor 200.X.1.1 route-map AS-200-OUT out !--- configura o route-map AS-200-OUT como filtro de saída para o AS 200 GX-R1(config-router)#exit GX-R1(config)#route-map AS-200-OUT permit 1 !--- entra no modo de configuração do route-map seq 1 GX-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-100X !--- declara a condição para receber ”permit” + a modificação opcional prepend 4 vezes GX-R1(config-route-map)#set as-path prepend X X !--- insere mais 4 vezes o AS local no AS PATH GX-R1(config)#route-map AS-200-OUT permit 2 !--- entra no modo de configuração do route-map seq 2 GX-R1(config-route-map)#match ip address prefix-list MEUS-BLOCOS !--- declara a condição para receber ”permit”, não haverão modificaçõs de prepend para !--- os blocos do AS. Caso ainda não tenha sido criada, é preciso criar a prefix-list MEUS-BLOCOS !--- e adicionar os prefixo do AS dentro dela 4.8 – Engenharia de Tráfego I LAB 1-4-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 274 PERGUNTAS?PERGUNTAS? 4.8 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 275 5.0 Roteamento dentro do AS (iBGP) O trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 276 5.0 Roteamento dentro do AS (iBGP) 5. Roteamento dentro do AS (iBGP) • 5.1 Implementando múltiplas saídas para clientes de trânsito • 5.2 Update-source • 5.3 Next-hop-self • 5.4 BGP Synchronization • 5.5 Route-reflector • 5.6 Peer groups • 5.7 Local Preference x Weight no iBGP • 5.8 Engenharia de Tráfego II v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 277 Implementando Múltiplas Saídas para Clientes de Trânsito 5.1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 278 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito Conforme discutido anteriormente, o BGP é um protocolo desenvolvido para troca de rotas entre AS's distintos. Deve ser evitado dentro do AS, a menos que as extremidades precisem trocar rotas de AS's externos. Em outras palavras, se houver realmente a necessidade de entregar para um DOWNSTREAM rotas recebidas de um UPSTREAM. No exemplo abaixo não há necessidade de injetar rotas externas dentro do AS: v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 279 Injetar rotas externas se faz necessário apenas quando essas precisam ”atravessar” o AS. Em outras palavras, se houver realmente a necessidade de entregar para um DOWNSTREAM rotas recebidas de um UPSTREAM. No exemplo as rotas recebidas do AS 20 e 30 precisam chegar ao AS 50 e vice-versa. 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 280 Alguns pontos importantes: 1. Um protocolo de roteamento IGP precisa garantir conectividade IP entre TODOS os routers do AS. 2. Mas se não houver múltiplos caminhos, não há necessidade de IGP, apenas rotas estáticas. 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 281 Em nosso LAB há múltiplos caminhos, e todos os routers (exceto AS's externos) já estão configurados com OSPF: 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 282 Nos próximos LABs os alunos se juntarão em grupos de 3. Alunos da mesma bancada farão parte do mesmo grupo, de maneira que os grupos 1,2,3 serão o GRUPO 1 – AS 1 Grupos 4, 5 e 6 serão GRUPO 2 – AS 2 Grupos 7, 8 e 9 serão GRUPO 3 – AS 3 Grupos 10, 11 e 12 serão GRUPO 4 – AS 4 Grupos 13, 14 e 15 serão GRUPO 5 – AS 5 Grupos 16, 17 e 18 serão GRUPO 6 – AS 6 Grupos 19, 20 e 21 serão GRUPO 7 – AS 7 Grupos 22, 23 e 24 serão GRUPO 8 – AS 8 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 283 O router R3 (router central do AS) responde pelo IP X.X.200.1/24. Cada membro do grupo vai configurar um IP da mesma rede em seu laptop, exemplo sugerido laptop1 X.X.200.2/24, laptop2 X.X.200.3/24 e laptop3 X.X.200.4/24. Testar conectividade IP com R3 e a partir dele acessar todos os outros routers via telnet. 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 284 LAB: Considerando que as cidades onde ficam R4 e R5 atendem clientes de trânsito (DOWNSTREAMS), e as cidades onde ficam R1 e R2 tem saída de trânsito IP (UPSTREAMS), precisaremos que R4 e R5 recebam e enviem rotas para o AS 100 (através de R1), e para o AS 200 através de R2. Vamos estabelecer sessões eBGP entre os clientes de trânsito AS 14X com R4 e AS 15X com R5. NOTA: !--- No intuito de facilitar a visualização das rotas por parte dos alunos, em !--- todos os LABS seguintes não trabalharemos com anúncios mais !--- específicos que /8, (com excessão dos anúncios ao PTT no lab !--- correspondente 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 285 Configurando eBGP com o downstream: AS 14X em R4: ● LADO DA OPERADORA AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#bgp router-id X.0.0.4 !--- nesse LAB vamos configurar um Router-IDpara facilitar a visualização das rotas AS-X-R4(config-router)#synchronization AS-X-R4(config-router)#neighbor X.14X.4.2 remote-as 14X AS-X-R4(config-router)#neighbor X.14X.4.2 description eBGP-downstream-AS-14X AS-X-R4(config-router)#neighbor X.14X.4.2 soft-reconfiguration inbound AS-X-R4(config-router)#neighbor X.14X.4.2 prefix-list BLOCOS-AS-14X in !--- declara o filtro de entrada para rotas recebidas desse DOWNSTREAM AS-X-R4(config-router)#exit AS-X-R4(config)#ip prefix-list BLOCOS-AS-14X permit 14X.0.0.0/8 !--- adiciona os blocos CIDR do DOWNSTREAM nesa prefix-list que foi !--- declarada nas configurações BGP 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 286 Configurando eBGP com o downstream: AS 14X em R4: ● LADO DO CLIENTE AS-14X-R1#conf t AS-14X-R1(config)#router bgp 14X AS-14X-R1(config-router)#bgp router-id 14X.1.0.1 AS-14X-R1(config-router)#no synchronization AS-14X-R1(config-router)#network 14X.0.0.0 mask 255.0.0.0 AS-14X-R1(config-router)#neighbor X.14X.4.1 remote-as X AS-14X-R1(config-router)#neighbor X.14X.4.1 description eBGP-upstream-AS-X AS-14X-R1(config-router)#neighbor X.14X.4.1 soft-reconfiguration inbound AS-14X-R1(config-router)#neighbor X.14X.4.1 prefix-list MEUS-BLOCOS out AS-14X-R1(config-router)#exit AS-14X-R1(config)#ip prefix-list MEUS-BLOCOS permit 14X.0.0.0/8 AS-14X-R1(config)#interface loopback 0 AS-14X-R1(config-if)#ip address 14X.1.0.1 255.255.255.0 AS-14X-R1(config-if)#exit AS-14X-R1(config)#ip route 14X.0.0.0 255.0.0.0 null 0 AS-14X-R1(config)#end AS-14X-R1#clear ip bgp * 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 287 Configurando eBGP com o downstream: AS 15X em R5: ● LADO DA OPERADORA AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#bgp router-id X.0.0.5 !--- nesse LAB vamos configurar um Router-ID para facilitar a visualização das rotas AS-X-R5(config-router)#synchronization AS-X-R5(config-router)#neighbor X.15X.5.2 remote-as 15X AS-X-R5(config-router)#neighbor X.15X.5.2 description eBGP-downstream-AS-15X AS-X-R5(config-router)#neighbor X.15X.5.2 soft-reconfiguration inbound AS-X-R5(config-router)#neighbor X.15X.5.2 prefix-list BLOCOS-AS-15X in !--- declara o filtro de entrada para rotas recebidas desse DOWNSTREAM AS-X-R5(config-router)#exit AS-X-R5(config)#ip prefix-list BLOCOS-AS-15X permit 15X.0.0.0/8 !--- adiciona os blocos CIDR do DOWNSTREAM nesa prefix-list que foi !--- declarada nas configurações BGP 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 288 Configurando eBGP com o downstream: AS 15X em R5: ● LADO DO CLIENTE AS-15X-R1#conf t AS-15X-R1(config)#router bgp 15X AS-15X-R1(config-router)#bgp router-id 15X.1.0.1 AS-15X-R1(config-router)#no synchronization AS-15X-R1(config-router)#network 15X.0.0.0 mask 255.0.0.0 AS-15X-R1(config-router)#neighbor X.15X.5.1 remote-as X AS-15X-R1(config-router)#neighbor X.15X.5.1 description eBGP-upstream-AS-X AS-15X-R1(config-router)#neighbor X.15X.5.1 soft-reconfiguration inbound AS-15X-R1(config-router)#neighbor X.15X.5.1 prefix-list MEUS-BLOCOS out AS-15X-R1(config-router)#exit AS-15X-R1(config)#ip prefix-list MEUS-BLOCOS permit 15X.0.0.0/8 AS-15X-R1(config)#interface loopback 0 AS-15X-R1(config-if)#ip address 15X.1.0.1 255.255.255.0 AS-15X-R1(config-if)#exit AS-15X-R1(config)#ip route 15X.0.0.0 255.0.0.0 null 0 AS-15X-R1(config)#end AS-15X-R1#clear ip bgp * 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 289 Vamos também configurar as sessões eBGP com os UPSTREAMS. ● Primeiro eBGP entre R1 e AS 100: AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#network X.0.0.0 AS-X-R1(config-router)#auto-summary AS-X-R1(config-router)#synchronization AS-X-R1(config-router)#neighbor 100.X.1.1 remote-as 100 AS-X-R1(config-router)#neighbor 100.X.1.1 soft-reconfiguration inbound AS-X-R1(config-router)#neighbor 100.X.1.1 route-map ANUNCIAR-AS-100 out !--- vamos utilizar dessa vez filtros de saida baseados em route-map + prefix-list AS-X-R1(config-router)#exit !--- volta para o modo de configuração global AS-X-R1(config)#ip prefix-list MEUS-BLOCOS permit X.0.0.0/8 !--- cria a prefix-list MEUS-BLOCOS e adiciona os blocos do grupo nessa lista AS-X-R1(config)#ip prefix-list BLOCOS-AS-14X permit 14X.0.0.0/8 AS-X-R1(config)#ip prefix-list BLOCOS-AS-15X permit 15X.0.0.0/8 !--- em seguida uma prefix list para cada DOWNSTREAM com seus respectivos blocos contidos (continua...) 5.3 – Next-hop-self LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 290 Vamos também configurar as sessões eBGP com os UPSTREAMS. ● Primeiro eBGP entre R1 e AS 100: (...continuação) AS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 10 !--- cria um route-map de ação permit sequencia 10 AS-X-R1(config-route-map)#match ip address prefix-list MEUS-BLOCOS !--- configura a condição para receber a ação permit, que nesse caso é fazer parte da !--- lista “MEUS-BLOCOS” AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 20 !--- cria um route-map de ação permit sequencia 20 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-14X !--- configura a condição para receber a ação permit, fazer parte da lista “BLOCOS-AS-14x” AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 30 !--- cria um route-map de ação permit sequencia 30 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-15X !--- configura a condição para receber a ação permit, fazer parte da lista “BLOCOS-AS-15x” AS-X-R1(config-route-map)#end AS-X-R1#clear ip bgp * soft 5.3 – Next-hop-self LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 291 Vamos também configurar as sessões eBGP com os UPSTREAMS ● Em seguida eBGP entre R2 e AS 200: AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#network X.0.0.0 AS-X-R2(config-router)#auto-summary AS-X-R2(config-router)#synchronization AS-X-R2(config-router)#neighbor 200.X.2.1 remote-as 200 AS-X-R2(config-router)#neighbor 200.X.2.1 soft-reconfiguration inbound AS-X-R2(config-router)#neighbor 200.X.2.1 route-map ANUNCIAR-AS-200 out !--- vamos utilizar também filtros de saida baseados em route-map + prefix-list AS-X-R2(config-router)#exit !--- volta para o modo de configuração global AS-X-R2(config)#ip prefix-list MEUS-BLOCOS permit X.0.0.0/8 !--- cria a prefix-list MEUS-BLOCOS e adiciona os blocos do grupo nessa lista AS-X-R2(config)#ip prefix-list BLOCOS-AS-14X permit 14X.0.0.0/8 AS-X-R2(config)#ip prefix-list BLOCOS-AS-15X permit 15X.0.0.0/8 !--- em seguida uma prefix list para cada DOWNSTREAM com seus respectivos blocos contidos (continua...) 5.3 – Next-hop-self LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 292 Vamos também configurar as sessões eBGP com os UPSTREAMS ● Em seguida eBGP entre R2 e AS 200: (...continuação) AS-X-R2(config)#route-map ANUNCIAR-AS-200 permit 10 !--- cria um route-map de ação permit sequencia 10 AS-X-R2(config-route-map)#match ip address prefix-list MEUS-BLOCOS !--- configura a condição para receber a ação permit, que nesse caso é fazer parte da !--- lista “MEUS-BLOCOS” AS-X-R2(config-route-map)#exit AS-X-R2(config)#route-map ANUNCIAR-AS-200 permit 20 !--- cria um route-map de ação permit sequencia 20 AS-X-R2(config-route-map)#match ip address prefix-list BLOCOS-AS-14X !--- configura a condição para receber a ação permit, fazer parte da lista “BLOCOS-AS-14x” AS-X-R2(config-route-map)#exit AS-X-R2(config)#route-map ANUNCIAR-AS-200 permit 30 !--- cria um route-map de ação permit sequencia 30 AS-X-R2(config-route-map)#match ip address prefix-list BLOCOS-AS-15X !--- configura a condição para receber a ação permit, fazer parte da lista “BLOCOS-AS-15x”AS-X-R2(config-route-map)#end AS-X-R2#clear ip bgp * soft 5.3 – Next-hop-self LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 293 Configurando iBGP entre R4 e R1: Configurando iBGP entre R4 e R2: AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#neighbor X.0.0.1 remote-as X AS-X-R4(config-router)#neighbor X.0.0.1 description iBGP Router 1 AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#neighbor X.0.0.2 remote-as X AS-X-R4(config-router)#neighbor X.0.0.2 description iBGP Router 2 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 294 Configurando iBGP entre R1 e R4: Configurando iBGP entre R1 e R5: AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#bgp router-id X.0.0.1 AS-X-R1(config-router)#neighbor X.0.0.4 remote-as X AS-X-R1(config-router)#neighbor X.0.0.4 description iBGP Router 4 AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#neighbor X.0.0.5 remote-as X AS-X-R1(config-router)#neighbor X.0.0.5 description iBGP Router 5 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 295 Configurando iBGP entre R5 e R1: Configurando iBGP entre R5 e R2: AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#neighbor X.0.0.1 remote-as X AS-X-R5(config-router)#neighbor X.0.0.1 description iBGP Router 1 AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#neighbor X.0.0.2 remote-as X AS-X-R5(config-router)#neighbor X.0.0.2 description iBGP Router 2 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 296 Configurando iBGP entre R2 e R4: Configurando iBGP entre R2 e R5 AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#bgp router-id X.0.0.2 AS-X-R2(config-router)#neighbor X.0.0.4 remote-as X AS-X-R2(config-router)#neighbor X.0.0.4 description iBGP Router 4 AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#neighbor X.0.0.5 remote-as X AS-X-R2(config-router)#neighbor X.0.0.5 description iBGP Router 5 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 297 As sessões iBGP subiram? – Provavelmente não! – Por que razão? 5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 298 Como decidimos estabelecer as sessões utilizando os IPs de loopback dos routers internos, nos deparamos com um problema de conexão TCP. 5.2 - Update-source v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 299 A menos que especifiquemos o contrário, o IP de origem de todo pacote é o IP da interface que saiu. Em outras palavras, se a melhor rota para alcançar R4 é pela serial 1/1, o IP de origem será o IP dessa interface. 5.2 - Update-source v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 300 Vejamos: Nesse caso, quando o pacote "syn" chegar ao router R1 (X.0.0.1) para solicitar o início da sessão BGP, o seu IP de origem desse pacote será X.X.4.2, e já que R1 foi configurado para estabelecer BGP com X.0.0.4 (R4) ele naturalmente rejeita essa conexão. AS-X-R4#sh ip route X.0.0.1 Routing entry for X.0.0.1/32 Known via "ospf 1", distance 110, metric 129, type intra area Last update from X.X.4.1 on Serial1/0, 07:43:20 ago Routing Descriptor Blocks: * X.X.4.1, from X.0.0.1, 07:43:20 ago, via Serial1/0 Route metric is 129, traffic share count is 1 5.2 - Update-source v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 301 Analisando o BGP debug: 07:42:42: BGP: X.0.0.1 open active, delay 7672ms 07:42:50: BGP: X.0.0.1 open active, local address X.X.4.2 07:42:50: BGP: X.0.0.1 open failed: Connection refused by remote host 5.2 - Update-source v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 302 Para resolver esse problema precisamos dizer ao meu router R4 que utilize o IP X.0.0.4 para estabelecer a conexão TCP-179 com R1: AS-X-R4(config)#router bgp X AS-X-R4(config-router)#neighbor X.0.0.1 update-source loopback 0 AS-X-R4(config-router)#neighbor X.0.0.2 update-source loopback 0 !--- loopback 0 é a interface que possui o IP X.0.0.4 no R4 !--- mas também podemos declarar um IP ao invés de uma interface 5.2 - Update-source LAB 2-1-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 303 Analizando novamente o debug após a mudança no updade source: 07:48:50: BGP: X.0.0.1 open active, local address X.0.0.4 07:48:50: BGP: X.0.0.1 went from Active to OpenSent 07:48:50: BGP: X.0.0.1 sending OPEN, version 4, my as: X 07:48:50: BGP: X.0.0.1 rcv message type 1, length (excl. header) 26 07:48:50: BGP: X.0.0.1 rcv OPEN, version 4 07:48:50: BGP: X.0.0.1 rcv OPEN w/ OPTION parameter len: 16 07:48:50: BGP: X.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 6 07:48:50: BGP: X.0.0.1 OPEN has CAPABILITY code: 1, length 4 07:48:50: BGP: X.0.0.1 OPEN has MP_EXT CAP for afi/safi: 1/1 07:48:50: BGP: X.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 2 07:48:50: BGP: X.0.0.1 OPEN has CAPABILITY code: 128, length 0 07:48:50: BGP: X.0.0.1 OPEN has ROUTE-REFRESH capability(old) for all address-families 07:48:50: BGP: X.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 2 07:48:50: BGP: X.0.0.1 OPEN has CAPABILITY code: 2, length 0 07:48:50: BGP: X.0.0.1 OPEN has ROUTE-REFRESH capability(new) for all address-families 07:48:50: BGP: X.0.0.1 went from OpenSent to OpenConfirm 07:48:50: BGP: X.0.0.1 went from OpenConfirm to Established 07:48:50: %BGP-5-ADJCHANGE: neighbor X.0.0.1 Up 5.2 - Update-source LAB 2-1-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 304 … fazer a mesma mudança em R5: AS-X-R5(config)#router bgp X AS-X-R5(config-router)#neighbor X.0.0.1 update-source loopback 0 AS-X-R5(config-router)#neighbor X.0.0.2 update-source loopback 0 !--- loopback 0 é a interface que possui o IP X.0.0.5 no R5 07:48:50: %BGP-5-ADJCHANGE: neighbor X.0.0.1 Up 5.2 - Update-source LAB 2-1-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 305 Por que não foi necessário realizar a mesma configuração em R1? ✔ Por que o R1 responde (com a mensagem type 1) utilizando o IP destino que R4 inseriu no pacote de "OPEN" (X.0.0.1). Na prática é preciso que apenas um dos dois routers altere o "update- source", porém é recomendável alterar nos dois, pois isso pode fazer com que a sessão estabeleça alguns segundos mais rápido numa eventual queda. 5.2 - Update-source v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 306 Ajustando o update-source nas sessões R1<->R4 e R1<->R5 Ajustando o update-source nas sessões R2<->R4 e R2->R5 AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#neighbor X.0.0.4 update-source loopback 0 AS-X-R1(config-router)#neighbor X.0.0.5 update-source loopback 0 AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#neighbor X.0.0.4 update-source loopback 0 AS-X-R2(config-router)#neighbor X.0.0.5 update-source loopback 0 5.2 - Update-source LAB 2-1-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 307 Estabelecidas as sessões iBGP e eBGP, vamos aos "novos" problemas: Notem que não estamos anunciando as redes recebidas pelos meus DOWNSTREAMS, mas apenas o classe A do AS local. – Por que? AS-X-R1#sh ip bgp neighbors 100.X.1.1 advertised-routes ... Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i AS-X-R2#sh ip bgp neighbors 200.X.2.1 advertised-routes ... Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i 5.3 – Next-hop-self LAB 2-1-3 v2.2 *beta3 | Autor: Rinaldo Vaz| rinaldopvaz@gmail.com 308 O primeiro critério para o protocolo BGP anunciar algum prefixo é que esse prefixo esteja válido na FIB. O prefixo "X.0.0.0" está com o caractere ">", o que demonstra que esse prefixo está de fato na FIB (best). Porém não é o que acontece com os prefixos recebidos dos DOWNSTREAMS. Os prefixos 14X.0.0.0 e 15X.0.0.0 estão na RIB, mas não na FIB. Por que esses prefixos não estão na FIB? AS-X-R1#sh ip bgp ... Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i * i14X.0.0.0 X.11X.4.2 0 100 0 14X i * i15X.0.0.0 X.12X.5.2 0 100 0 15X i ... 5.3 – Next-hop-self LAB 2-1-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 309 Vamos verificar detalhadamente o status de um desses prefixos em R1... Um problema é perceptível sem muito trabalho: "X.14X.4.2 (inaccessible)" Para que esse prefixo seja válido na FIB é necessário que o "next-hop" correspondente também seja válido, o que não ocorre. Mas esse é apenas um dos problemas perceptíveis na saída do último comando. AS-X-R1#sh ip bgp 14X.0.0.0 BGP routing table entry for 14X.0.0.0/8, version 0 Paths: (1 available, no best path) Not advertised to any peer 14X X.14X.4.2 (inaccessible) from X.0.0.4 (X.0.0.4) Origin IGP, metric 0, localpref 100, valid, internal, not synchronized 5.3 – Next-hop-self LAB 2-1-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 310 Resolvendo o primeiro problema: Não é recomendável que as interfaces externas do AS participem do IGP (OSPF), portanto vamos para outra solução. Vamos então utilizar o comando BGP "next-hop-self" que altera o next-hop para o IP de neighbor. AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#neighbor X.0.0.4 next-hop-self AS-X-R1(config-router)#neighbor X.0.0.5 next-hop-self AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#neighbor X.0.0.4 next-hop-self AS-X-R2(config-router)#neighbor X.0.0.5 next-hop-self 5.3 – Next-hop-self LAB 2-1-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 311 Continuando em R4 e R5... Vamos agora verificar as mudanças... AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#neighbor X.0.0.1 next-hop-self AS-X-R4(config-router)#neighbor X.0.0.2 next-hop-self AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#neighbor X.0.0.1 next-hop-self AS-X-R5(config-router)#neighbor X.0.0.2 next-hop-self 5.3 – Next-hop-self LAB 2-1-3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 312 Vamos detalhar novamente um dos prefixos em R1: Notem que o next-hop não se encontra mais inacessível, porém a rota mostra uma outra mensagem: "NOT SYNCRONIZED". Isso acontece com rotas aprendidas por iBGP, uma vez que por padrão o protocolo exige a sincronização da rota antes de anunciá-la aos AS's externos. Nas versões e caixas mais novas o ”syncronize” vem desabilitado. AS-X-R1#sh ip bgp 14X.0.0.0 BGP routing table entry for 14X.0.0.0/8, version 0 Paths: (1 available, no best path) Not advertised to any peer 14X X.0.0.5 (metric 129) from X.0.0.5 (X.0.0.5) Origin IGP, metric 0, localpref 100, valid, internal, not synchronized 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 313 Resolvendo o problema de maneira "duvidosa" em R1 e R2... AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#no synchronization AS-X-R1(config-router)#end AS-X-R1#clear ip bgp * AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#no synchronization AS-X-R2(config-router)#end AS-X-R2#clear ip bgp * 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 314 Continuando em R4 e R5... AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#no synchronization AS-X-R4(config-router)#end AS-X-R4#clear ip bgp * AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#no synchronization AS-X-R1(config-router)#end AS-X-R5#clear ip bgp * 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 315 Conferindo as mudanças em R1 e demais: Verificando o caractere ">" podemos ter certeza dessa vez as rotas foram para FIB. AS-X-R1#sh ip bgp ... Network Next Hop Metric LocPrf Weight Path *> X.0.0.0 0.0.0.0 0 32768 i *> 100.0.0.0 100.X.1.1 0 0 100 i *>i14X.0.0.0 X.0.0.4 0 100 0 146 i *>i15X.0.0.0 X.0.0.5 0 100 0 156 i 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 316 Vamos agora ter certeza que os prefixos do meus DOWNSTREAMS estão sendo anunciados aos UPSTREAMS: Bingo!! Estamos anunciando os prefixos de DOWNSTREAMS para o AS 100. O mesmo vale para R2, R4 e R5, é só conferir. AS-X-R1#sh ip bgp 14X.0.0.0 BGP routing table entry for 14X.0.0.0/8, version 16 Paths: (1 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: 100.X.1.1 11X X.0.0.4 (metric 129) from X.0.0.4 (X.0.0.4) Origin IGP, metric 0, localpref 100, valid, internal, best 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 317 Agora entrem no Looking Glass (nesse LAB o IP mudou para 99.99.99.1) e testem a conectividade IP para os AS's clientes 14X e 14X, CONCLUSÕES: Se o "syncronization" existe, precisamos compreender sua função antes de desabilitá-lo. telnet 99.99.99.1... !--executem traceroute para os IPs dos seus respectivos downstreams AS-99-R1>traceroute 14X.1.0.1 Type escape sequence to abort. Tracing the route to 14X.1.0.1 1 99.100.1.2 12 msec 16 msec 4 msec 2 100.X.1.2 [AS 100] 60 msec 28 msec 36 msec 3 * * * 4 * * * 5 * * * 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 318 Entendendo o "syncronization"... Uma proteção natural que o BGP implementa é exigir a sincronização de uma rota aprendida por iBGP antes de inseri-la na FIB. Quando um router recebe um prefixo de origem "internal" através de iBGP esse não tem como saber se os routers intermediários também conhecem rota para esse prefixo. Vamos entender melhor... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 319 Entendendo o ”syncronization”... R4 estabelece um iBGP diretamente com R1 e anuncia os prefixos recebidos do AS 14X. O problema é que AS-X-R1 não tem como saber se R3 conhece rota para os prefixos do AS 14X. O syncronization é um mecanismo de proteção que evita loops de roteamento, vamos entender melhor o que aconteceu no LAB. 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 320 AS 14X anuncia seus prefixos para R4... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 321 AS R4 anuncia para R1... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 322 AS R1 anuncia para o UPSTREAM AS 100... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 323 AS 100 anuncia para o AS 99... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 324 Caminho dos pacotes: Entram no AS 100... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 325 Caminho dos pacotes: em seguida no AS por R1... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 326 Caminho dos pacotes: agora complica um pouco, R1 conhece rota para 11X.0.0.0/8 através donext-hop X.0.0.4 (R4), e esse next-hop é alcançável via R3 (X.X.1.2). 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 327 Caminho dos pacotes: ”Ninguém avisou para R3” qualquer coisa sobre um tal AS 11X, o que ele faz com um pacote cujo destino não conhece? (rota padrão) O pacote é devolvido para R1. 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 328 Caminho dos pacotes: Mas R1 consulta novamente sua FIB, e ”tem certeza” que o pacote deve mesmo ser entregue para R3... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 329 Caminho dos pacotes: E o loop se repete até o fim do TTL do pacote... 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 330 Por isso precisamos ter certeza antes de "desabilitar" o syncronization. Veremos 3 maneiras de resolver esse problema, a primeira delas é com o syncronization HABILITADO e redistribuindo rotas BGP através do IGP (OSPF nesse caso); A segunda maneira é desabilitando o syncronization e estabelecendo FULL-MESH entre todos os routers do AS; A terceira (e melhor) é utilizando MPLS (sem BGP) nos routers do backbone (nesse LAB apenas R3) e que encaminham rotas aprendidas via BGP através de Labels. Veremos essa no capítulo 8.1 (BGP através da nuvem MPLS); Vamos à primeira! 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 331 Distribuindo as rotas BGP através do meu IGP: !--- primeiro vamos habilitar novamente o syncronization AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#synchronization AS-X-R1(config-router)#exit !--- agora entrar na configuração do OSPF AS-X-R1(config)#router ospf 1 AS-X-R1(config-router)#redistribute bgp X !--- habilita a distribuição por OSPF de rotas aprendias por BGP % Only classful networks will be redistributed AS-X-R1(config-router)#end AS-X-R1#clear ip ospf process !--- reinicia o processo OSPF Reset ALL OSPF processes? [no]: yes AS-X-R1# !--- vamos repetir o mesmo processo para R2, R4 e R5 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 332 Distribuindo as rotas BGP através do meu IGP: !--- primeiro vamos habilitar novamente o syncronization AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#synchronization AS-X-R2(config-router)#exit !--- agora entrar na configuração do OSPF AS-X-R2(config)#router ospf 1 AS-X-R2(config-router)#redistribute bgp X !--- habilita a distribuição por OSPF de rotas aprendias por BGP % Only classful networks will be redistributed AS-X-R2(config-router)#end AS-X-R2#clear ip ospf process !--- reinicia o processo OSPF Reset ALL OSPF processes? [no]: yes AS-X-R2# 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 333 Distribuindo as rotas BGP através do meu IGP: !--- primeiro vamos habilitar novamente o syncronization AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#synchronization AS-X-R4(config-router)#exit !--- agora entrar na configuração do OSPF AS-X-R4(config)#router ospf 1 AS-X-R4(config-router)#redistribute bgp X !--- habilita a distribuição por OSPF de rotas aprendias por BGP % Only classful networks will be redistributed AS-X-R4(config-router)#end AS-X-R4#clear ip ospf process !--- reinicia o processo OSPF Reset ALL OSPF processes? [no]: yes AS-X-R4# 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 334 Distribuindo as rotas BGP através do meu IGP: !--- primeiro vamos habilitar novamente o syncronization AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#synchronization AS-X-R5(config-router)#exit !--- agora entrar na configuração do OSPF AS-X-R5(config)#router ospf 1 AS-X-R5(config-router)#redistribute bgp X !--- habilita a distribuição por OSPF de rotas aprendias por BGP % Only classful networks will be redistributed AS-X-R5(config-router)#end AS-X-R5#clear ip ospf process !--- reinicia o processo OSPF Reset ALL OSPF processes? [no]: yes AS-X-R5# 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 335 Agora vamos verificar em R1 as rotas recebidas do AS-14X via R4: Agora podemos ver pelo ">" que a rota para 14X.0.0.0 está na FIB. Outro detalhe é o "i" à esquerda identifica a rota como "internal". AS-X-R1#sh ip bgp Network Next Hop Metric LocPrf Weight Path … *> 99.0.0.0 100.X.1.1 0 100 99 i *> 100.0.0.0 100.X.1.1 0 0 100 i *r>i14X.0.0.0 X.0.0.4 0 100 0 14X i *r>i15X.0.0.0 X.0.0.5 0 100 0 15X i *> 200.0.0.0 100.X.1.1 0 100 99 200 i ... 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 336 Detalhando os prefixos do meu DOWNSTREAM: Temos agora uma rota SINCRONIZADA, VÁLIDA, e ANUNCIADA para 100.X.1.1 (AS 100). AS-X-R1#sh ip bgp 14X.0.0.0 BGP routing table entry for 14X.0.0.0/8, version 5 Paths: (1 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: 100.X.1.1 11X X.0.0.4 (metric 129) from X.0.0.4 (X.0.0.4) Origin IGP, metric 0, localpref 100, valid, internal, synchronized, best 5.4 - BGP Synchronization LAB 2-1-4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 337 Segunda maneira é desabilitando o syncronization, porém alterando os BGP peers. Vamos refazer as configurações BGP estabelecendo R4<->R3 e R3<- >R1. Dessa forma R3 vai conhecer a rota para os DOWSTREAMS e UPSTREAMS. 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 338 Mas antes vamos desconfigurar a redistribuição de prefixos via OSPF em R1, R2, R4 e R5... AS-X-R1#conf t AS-X-R1(config)#router ospf 1 AS-X-R1(config-router)#no redistribute bgp X AS-X-R1(config-router)#end AS-X-R1#clear ip ospf process !--- reinicia o processo OSPF Reset ALL OSPF processes? [no]: yes AS-X-R1# !--- vamos repetir o mesmo processo para R2, R4 e R5 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 339 R2 AS-X-R2#conf t AS-X-R2(config)#router ospf 1 AS-X-R2(config-router)#no redistribute bgp X AS-X-R2(config-router)#end AS-X-R2#clear ip ospf process !--- reinicia o processo OSPF Reset ALL OSPF processes? [no]: yes AS-X-R2# 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 340 R4 AS-X-R4#conf t AS-X-R4(config)#router ospf 1 AS-X-R4(config-router)#no redistribute bgp X AS-X-R4(config-router)#end AS-X-R4#clear ip ospf process !--- reinicia o processo OSPF Reset ALL OSPF processes? [no]: yes AS-X-R4# 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 341 R5 AS-X-R5#conf t AS-X-R5(config)#router ospf 1 AS-X-R5(config-router)#no redistribute bgp X AS-X-R5(config-router)#end AS-X-R5#clear ip ospf process !--- reinicia o processo OSPF Reset ALL OSPF processes? [no]: yes AS-X-R5# 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 342 Vamos alterar o esquema das sessões removendo todas as sessões iBGP... AS-X-R1(config)#router bgp X AS-X-R1(config-router)#no syncronization AS-X-R1(config-router)#no neighbor X.0.0.4 AS-X-R1(config-router)#no neighbor X.0.0.5 !--- R1 AS-X-R2(config)#router bgp X AS-X-R2(config-router)#no syncronization AS-X-R2(config-router)#no neighbor X.0.0.4 AS-X-R2(config-router)#no neighbor X.0.0.5 !--- R2 AS-X-R4(config)#router bgp X AS-X-R4(config-router)#no syncronization AS-X-R4(config-router)#no neighbor X.0.0.1 AS-X-R4(config-router)#no neighbor X.0.0.2 !--- R4 AS-X-R5(config)#routerbgp X AS-X-R5(config-router)#no syncronization AS-X-R5(config-router)#no neighbor X.0.0.1 AS-X-R5(config-router)#no neighbor X.0.0.2 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 343 Restabelecendo as sessões BGP em R1 ● Em seguida iBGP entre R1 e R3: AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#neighbor X.0.0.3 remote-as X AS-X-R1(config-router)#neighbor X.0.0.3 description iBGP R3 AS-X-R1(config-router)#neighbor X.0.0.3 next-hop-self AS-X-R1(config-router)#neighbor X.0.0.3 update-source loopback 0 AS-X-R1(config-router)#neighbor X.0.0.3 soft-reconfiguration inbound AS-X-R1(config-router)#exit !--- não vamos utilizar nenhum filtro de in-out para a sessão com R3 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 344 Reestabelecendo as sessões BGP em R1 ● Em seguida iBGP entre R2 e R3: AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#neighbor X.0.0.3 remote-as X AS-X-R2(config-router)#neighbor X.0.0.3 description iBGP R3 AS-X-R2(config-router)#neighbor X.0.0.3 next-hop-self AS-X-R2(config-router)#neighbor X.0.0.3 update-source loopback 0 AS-X-R2(config-router)#neighbor X.0.0.3 soft-reconfiguration inbound AS-X-R2(config-router)#exit !--- não vamos utilizar nenhum filtro de in-out 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 345 Configurando iBGP com R3 AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#neighbor X.0.0.3 remote-as X AS-X-R4(config-router)#neighbor X.0.0.3 description iBGP R3 AS-X-R4(config-router)#neighbor X.0.0.3 next-hop-self AS-X-R4(config-router)#neighbor X.0.0.3 update-source loopback 0 AS-X-R4(config-router)#neighbor X.0.0.3 soft-reconfiguration inbound AS-X-R4(config-router)#exit 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 346 Configurando iBGP com R3 AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#neighbor X.0.0.3 remote-as X AS-X-R5(config-router)#neighbor X.0.0.3 description iBGP R3 AS-X-R5(config-router)#neighbor X.0.0.3 next-hop-self AS-X-R5(config-router)#neighbor X.0.0.3 update-source loopback 0 AS-X-R5(config-router)#neighbor X.0.0.3 soft-reconfiguration inbound AS-X-R5(config-router)#exit 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 347 Restabelecendo as sessões iBGP em R3: AS-X-R3(config)#router bgp X AS-X-R3(config-router)#no synchronization AS-X-R3(config-router)#network X.0.0.0 AS-X-R3(config-router)#bgp router-id X.0.0.3 AS-X-R3(config-router)#auto-summary !--- iBGP com R1 AS-X-R3(config-router)#neighbor X.0.0.1 remote-as X AS-X-R3(config-router)#neighbor X.0.0.1 description iBGP R1 AS-X-R3(config-router)#neighbor X.0.0.1 update-source loopback 0 AS-X-R3(config-router)#neighbor X.0.0.1 soft-reconfiguration inbound !--- iBGP com R2 AS-X-R3(config-router)#neighbor X.0.0.2 remote-as X AS-X-R3(config-router)#neighbor X.0.0.2 description iBGP R2 AS-X-R3(config-router)#neighbor X.0.0.2 update-source loopback 0 AS-X-R3(config-router)#neighbor X.0.0.2 soft-reconfiguration inbound !--- iBGP com R4 AS-X-R3(config-router)#neighbor X.0.0.4 remote-as X AS-X-R3(config-router)#neighbor X.0.0.4 description iBGP R4 AS-X-R3(config-router)#neighbor X.0.0.4 update-source loopback 0 AS-X-R3(config-router)#neighbor X.0.0.4 soft-reconfiguration inbound !--- iBGP com R5 AS-X-R3(config-router)#neighbor X.0.0.5 remote-as X AS-X-R3(config-router)#neighbor X.0.0.5 description iBGP R5 AS-X-R3(config-router)#neighbor X.0.0.5 update-source loopback 0 AS-X-R3(config-router)#neighbor X.0.0.5 soft-reconfiguration inbound 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 348 Verificando as mudanças começando por R1 Ainda não temos a rota anunciada pelo DOWNSTRASM AS 14X na FIB de R1, isso porque R3 não está anunciando! Por que isso acontece? AS-X-R1#sh ip bgp BGP table version is 2, local router ID is X.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>iX.0.0.0 X.0.0.3 0 100 0 i *> 100.0.0.0 100.X.1.1 0 0 100 i *> 99.0.0.0 100.X.1.1 0 0 100 99 i ... 5.4 - BGP Synchronization LAB 2-1-5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 349 BGP e o SPLIT HORIZON Desde o tempo do RIP, os protocolos do tipo vetor de distância sabem que não há sentido em propagar uma rota para a mesma interface de onde aprendeu, e com o BGP é parecido. No iBGP é indispensável* que haja fullmesh de sessões BGP (todos estabelecendo com todos) e sendo assim, um router não anuncia por iBGP uma rota que foi aprendida também por iBGP, pois entende que aquele router que me enviou a rota já está enviando diretamente para todos os routers do iBGP. *há um mecanismo que dispensa essa necessidade 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 350 Em resumo, um router não anuncia para outro router do mesmo AS qualquer coisa que tenha aprendido também via iBGP. Ou seja, R3 não vai anunciar para R1 as rotas aprendidas de R4. 5.4 - BGP Synchronization v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 351 Route-Reflector 5.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 352 5.5 - Route-Reflector Em tese, de acordo com as regras do split horizon deveríamos estabelecer as seguintes sessões BGP (full mesh): R1<->R2, R1<->R3, R1<->R4, R1<->R5 R2<->R3, R2<->R4, R1<->R5 R3<->R4, R3<->R5 R4<->R5 Total=10 O route-reflector basicamente dispensa a necessidade de iBGP full-mesh, pois remove a restrição no repasse de rotas iBGP para outro neighbor iBGP. É altamente recomendado quando o número de routers é maior que 5: *evita um número muito grande de sessões iBGP v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 353 Nessa topologia de rede em particular, podemos optar por 3 modelos: 1- R1 como Route-Reflector estabelecendo com R2, R3, R4 e R5 (4 sessões). ✗ Pontos críticos de falha: falha em R3 e/ou R1 e/ou link R3<->R1 = 3. 5.5 - Route-Reflector v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 354 5.5 - Route-Reflector 2- R2 como Route-Reflector estabelecendo com R1, R3, R4 e R5 (4 sessões). ✗ Pontos críticos de falha: falha em R3 e/ou R2 e/ou link R3<->R2 = 3. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 355 3- R3 como Route-Reflector estabelecendo com R1, R2, R4 e R5 (4 sessões). ✗ Pontos críticos de falha: falha em R3= 1. 5.5 - Route-Reflector v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 356 Obviamente já optamos pela opção número 3 ● Vamos acrescentar apenas a opção RR: AS-X-R3#conf t AS-X-R3(config)#router bgp X AS-X-R3(config-router)#neighbor X.0.0.1 route-reflector-client !--- iBGP com R1 AS-X-R3(config-router)#neighbor X.0.0.2 route-reflector-client !--- iBGP com R2 AS-X-R3(config-router)#neighbor X.0.0.4 route-reflector-client !--- iBGP com R4 AS-X-R3(config-router)#neighbor X.0.0.5 route-reflector-client !--- iBGP com R5 5.5 - Route-Reflector LAB 2-1-6 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 357 É importante deixar claro que diferentemente do que o nome possa sugerir, "Route-reflector" não significa "refletir a rota" e preservar o next-hop original, isso é uma característica do próprio iBGP. Route-Reflector significa anunciar via iBGP rotas aprendidas também por iBGP. 5.5 - Route-Reflector v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 358 5.6 Peer Groups v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 359 5.6 - Peer Groups Em nossa topologia, ficamos diante de uma situação: R3 possui váriosneighbors com configurações semelhantes, exigindo configurações repetitivas e sujeitas à erros. O recurso "peer-group" me permite realizar um padrão para os neighbors semelhantes diminuindo drasticamente a quantidade de linhas de configuração e "show run". v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 360 Vamos praticar reconfigurando R3 com peer-groups: !--- Primeiro vamos resetar as config de BGP AS-X-R3#conf t AS-X-R3(config)#no router bgp X !--- depois as configurações básicas AS-X-R3(config)#router bgp X AS-X-R3(config-router)#no synchronization AS-X-R3(config-router)#auto-summary AS-X-R3(config-router)#bgp router-id X.0.0.3 AS-X-R3(config-router)#network X.0.0.0 !--- Vamos declarar um peer-group chamado IBGP AS-X-R3(config-router)#neighbor IBGP peer-group AS-X-R3(config-router)#neighbor IBGP remote-as X AS-X-R3(config-router)#neighbor IBGP update-source loopback 0 AS-X-R3(config-router)#neighbor IBGP soft-reconfiguration inbound AS-X-R3(config-router)#neighbor IBGP route-reflector-client !--- Vamos adicionar os neighbors que fazem parte desse grupo AS-X-R3(config-router)#neighbor X.0.0.1 peer-group IBGP AS-X-R3(config-router)#neighbor X.0.0.2 peer-group IBGP AS-X-R3(config-router)#neighbor X.0.0.4 peer-group IBGP AS-X-R3(config-router)#neighbor X.0.0.5 peer-group IBGP 5.6 - Peer Groups LAB 2-1-7 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 361 Com peer-group fica muito mais simples adicionar remover configurações de neighbors para todo o grupo em apenas um comando, por exemplo: Todas as sessões BGP dentro do peer-group passariam pelos mesmos filtros de entrada e de saída !--- apenas exemplo, não efetue essa configuração router(config-router)#neighbor IBGP prefix-list FILTRO-GERAL-DE-ENTRADA in router(config-router)#neighbor IBGP prefix-list FILTRO-GERAL-DE-SAIDA out !--- apenas exemplo, não efetue essa configuração !--- A mesma simplicidade acontece na hora de um "clear" (route refresh) AS-X-R3#clear ip bgp peer-group IBGP soft !--- mas vale lembrar que nada impede que seja efetuado um clear individual AS-X-R3#clear ip bgp X.0.0.1 out 5.6 - Peer Groups v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 362 Finalizando o LAB: Acessar o Looking Glass e verificar se esse alcança o AS do grupo e todos os seus respectivos DOWNSTREAMS telnet 99.99.99.1 ... 5.6 - Peer Groups LAB 2-1-7 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 363 Local Preference x Weight no iBGP 5.7 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 364 5.7 - Local Preference x Weight no iBGP Características: Weight: ✔ Proprietário Cisco (embora implementado por Mikrotik, Quagga, OpenBGPD) ✔ Primeiro critério na escolha de rotas (maior weight) ✔ Não é considerado um atributo e seu valor pode ser de 0 a 65535 ✔ Os valores de weight não são transitivos (mesmo dentro do AS) Local Preference: ✔ Conhecido em todas as implementações de BGP ✔ Segundo critério depois do weight (maior local pref) ✔ Seu valor padrão é 100 e pode variar de 0 a 4294967295 ✔ Os valores alterados são propagados por todo o iBGP v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 365 Como vimos nos labs anteriores, posso atribuir um valor de weight 10 no comando "neighbor x.x.x.x weight 10" para todas as rotas recebidas, ou manualmente apenas para determinados prefixos utilizando o route-map. Vamos alterar o weight apenas de um determinado prefixo (99.0.0.0/8) e todos os seus sub-prefixos AS-X-R1#conf t AS-X-R1(config)#ip prefix-list BLOCOS-AS-99 permit 99.0.0.0/8 le 24 !--- adiciona o classe A e sub-redes 99.0.0.0 na prefix-list BLOCOS-AS-99 AS-X-R1(config)#router bgp X AS-X-R1(config-router)#neighbor 100.X.1.1 route-map AS-100-IN in !--- declara o route-map AS-100-IN para filtrar anuncios de input do AS 100 AS-X-R1(config-router)#exit AS-X-R1(config)#route-map AS-100-IN permit 10 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-99 AS-X-R1(config-route-map)#set weight 10 !--- estabelece os prefixos da lista BLOCOS-AS-99 como condição para receber a ação permir !--- e a modificação opcional que atribui um valor 10 de weight AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map AS-100-IN permit 999 !--- não podemos esquecer de adicionar um route-map ”vazio” no final (numero alto), caso contrário !--- os prefixos do AS 99 reeceberiam a ação desejada, porém nenhum outro prefixo seria aceito AS-X-R1(config-route-map)#end AS-X-R1#clear ip bgp 100.X.1.1 soft 5.7 - Local Preference x Weight no iBGP LAB 2-1-8 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 366 AS-X-R1#sh ip bgp ... Network Next Hop Metric LocPrf Weight Path *> 99.0.0.0 100.X.1.1 0 10 100 99 i *> 100.0.0.0 100.X.1.1 0 0 100 i *> 200.0.0.0 100.X.1.1 0 0 100 99 200 i ... Conferindo a modificação: Apenas o prefixo 99.0.0.0 recebeu weight 10 Verifiquem a mesma rota em R2, R3,R4 ou R5 o valor de weight será 0, já que esse não é propagado através do iBGP 5.7 - Local Preference x Weight no iBGP LAB 2-1-8 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 367 Já com o local preference é diferente, o valor que configurarmos em R1 permanecerá o mesmo em todos os routers do AS que receberem esse prefixo através de iBGP ✗ OBS: Caso algum router aplique route-map que altere o local preference do prefixo 99.0.0.0 ou de todos os prefixos recebidos, esse valor é substituído pelo atual 5.7 - Local Preference x Weight no iBGP v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 368 A maneira mais indicada de priorizar rotas dentro do iBGP é utilizando o local preference O weight deve ser usado apenas em casos muito específicos onde não haja a intenção de que os outros routers do AS escolham essa mesma rota 5.7 - Local Preference x Weight no iBGP v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 369 LAB: utilizando os recursos vistos no curso vamos configurar os routers do AS de maneira que atenda todos os seguintes requisitos: ✔ Todo o tráfego outbound (upload) deve utilizar o link do AS 100, exceto com destino ao AS 200 e seus DOWNSTREAMS ✔ Simulando que o link do AS 100 está sobrecarregado, o tráfego inbound (download) do DOWNSTREAM AS 15X (apenas) deve chegar pelo AS 200 quando a origem for o AS 99 (internet) ✔ Apenas R2 deve alcançar o AS 99 através do link com o AS 200 • 5.8 Engenharia de Tráfego II LAB 2-1-9 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 370 Solução em R1 router bgp 4 no synchronization bgp log-neighbor-changes network 4.0.0.0 neighbor 4.0.0.3 remote-as 4 neighbor 4.0.0.3 update-source Loopback0 neighbor 4.0.0.3 next-hop-self neighbor 4.0.0.3 soft-reconfiguration inbound neighbor 100.4.1.1 remote-as 100 neighbor 100.4.1.1 soft-reconfiguration inbound neighbor 100.4.1.1 route-map AS-100-IN in neighbor 100.4.1.1 route-map ANUNCIAR-AS-100 out auto-summary ! ip prefix-list BLOCOS-AS-144 seq 5 permit 144.0.0.0/8 ! prefix-list BLOCOS-AS-154 seq 5 permit 154.0.0.0/8 ! prefix-list BLOCOS-AS-99 seq 5 permit 99.0.0.0/8 le 32 ! ip prefix-list MEUS-BLOCOS seq 5 permit 4.0.0.0/8 ! route-map AS-100-IN permit 10 match ip address prefix-list BLOCOS-AS-99 set local-preference 110 set weight 10 ! route-map AS-100-IN permit 999 set local-preference 110 ! route-map ANUNCIAR-AS-100 permit 10 match ip address prefix-list MEUS-BLOCOS ! route-map ANUNCIAR-AS-100 permit 20 match ip address prefix-list BLOCOS-AS-144 ! route-map ANUNCIAR-AS-100 permit 30 match ip address prefix-list BLOCOS-AS-154 set as-path prepend 4 ! • 5.8 “CHEATS” LAB 2-1-9 Solução em R2 router bgp 4 no synchronization bgp log-neighbor-changes network 4.0.0.0 neighbor 4.0.0.3 remote-as 4 neighbor 4.0.0.3 update-source Loopback0 neighbor 4.0.0.3 next-hop-self neighbor4.0.0.3 soft-reconfiguration inbound neighbor 200.4.2.1 remote-as 200 neighbor 200.4.2.1 soft-reconfiguration inbound neighbor 200.4.2.1 weight 10 neighbor 200.4.2.1 route-map AS-200-IN in auto-summary ! ip prefix-list BLOCOS-AS-200 seq 5 permit 200.0.0.0/8 le 32 ! route-map AS-200-IN permit 10 match ip address prefix-list BLOCOS-AS-200 set local-preference 120 ! route-map AS-200-IN permit 999 set local-preference 100 ! v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 371 PERGUNTAS?PERGUNTAS? 5.8 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 372 BGP Communities 6.0 O trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 373 BGP Communities 6.0 6. BGP Communities • 6.1 Communities Padrão • 6.2 Communities Numéricas • 6.3 Identificando e tratando rotas de peers específicos • 6.4 Manipulando trâsito (nacional/internacional) com communities • 6.5 Engenharia de Tráfego III v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 374 6.1 Communities Padrão v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 375 6.1 – Communities Padrão Communities são atributos que são preservados em anúncios entre AS's externos e internos. São um tipo de carimbo inserido nos updates em forma de string. Uma community é um atributo opcional, e sendo assim nada obriga que os fabricantes implementem no BGP de suas caixas, ou mesmo que um AS replique para seus peers o mesmo valor de community recebido por um de seus clientes. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 376 Os modelos mais novos suportam o "novo formato" usualmente utilizado como ASN:comunity, por exemplo: 28135:110. Porém há algumas communities padronizadas pela RFC 1997 e são padrão nos routers Cisco: – INTERNET – NO-EXPORT – NO-ADVERTISE – LOCAL-AS – NO-ADVERTISE-SUBCONFED 6.1 – Communities Padrão v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 377 NO-EXPORT por padrão faz o router receptor exportar o prefixo para neighbors iBGP, mas não para eBGP. É útil quando faço anúncios mais específicos para a operadora A e menos específicos para operadora B. Normalmente, a operadora B precisaria passar pela operadora A para chegar ao prefixo "específico" mesmo estabelecendo BGP diretamente com meu AS. Enviando o mesmo bloco específico, com a community NO-EXPORT à operadora A, essa passaria a me alcançar diretamente, ao mesmo tempo que não exportaria esses prefixos. 6.1 – Communities Padrão v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 378 NO-ADVERTISE por padrão faz o router receptor não exportar esse prefixo para nenhum neighbor, seja ele eBGP ou iBGP. 6.1 – Communities Padrão v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 379 NO-ADVERTISE-SUBCONFED usada para evitar que o prefixo seja exportado para AS's confederados. 6.1 – Communities Padrão v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 380 LOCAL-AS usada para evitar que os prefixos marcados sejam exportados para fora do AS ou confederação, geralmente usado em filtros de entrada. 6.1 – Communities Padrão v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 381 INTERNET na prática é a community padrão para anúncios externos, é o mesmo que não haver nenhuma. 6.1 – Communities Padrão v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 382 LAB 1: Antes de começar remover todas as configurações do laboratório anterior 6.1 – Communities Padrão R1 conf t ! no route-map AS-100-IN permit 10 ! route-map AS-100-IN permit 999 no set local-preference 110 ! ! route-map ANUNCIAR-AS-100 permit 30 no set as-path prepend 4 ! R2 conf t ! no route-map AS-200-IN permit 10 ! route-map AS-200-IN permit 999 set local-preference 100 ! v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 383 LAB 1: Anunciar os prefixos de um dos AS's clientes com a community NO-EXPORT para dentro do AS do grupo: Verifiquem nos routers R1 e R2 se os prefixos marcados como "NO- EXPORT" estão sendo anunciados para os AS's 100 e 200. AS-14X-R1#conf t AS-14X-R1(config)#router bgp 14X AS-14X-R1(config-router)#neighbor X.14X.4.1 send-community both AS-14X-R1(config-router)#neighbor X.14X.4.1 route-map AS-X-OUT out AS-14X-R1(config-router)#exit As-14X-R1(config)#ip bgp-community new-format AS-14X-R1(config)#route-map AS-X-OUT permit 10 AS-14X-R1(config-route-map)#set community no-export 6.1 – Communities Padrão LAB 2-1-10 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 384 Antes de iniciar os LABs desse capítulo é obrigatório habilitar suporte ao envio de commuinities em TODOS os neighbors. Em seguida habilitar o formato novo formato xxx:yyy para o tratamento de communities: router(config)#router bgp X router(config-router)#neighbor A.B.C.D send-community both router(config-router)#exit 6.1 – Communities Padrão LAB 2-1-10 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 385 LAB 2 opcional: verificar a diferença enviando a community NO- ADVERTISE. 6.1 – Communities Padrão LAB 2-1-11LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 386 LAB 3 : ✔ Utilizar communities PADRÃO e fazer com que o DOWNLOAD dos AS's 14X e 15X cheguem pelo link do AS 200 quando a origem for o AS 99 (internet). ✔ Os routers do AS 100 deverão alcançar os DOWNSTREAMS do grupo pelo link direto sem ter que ”dar a volta” pelo AS 99. 6.1 – Communities Padrão LAB 2-1-12 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 387 Communities Numéricas 6.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 388 6.2 - Communities Numéricas É muito pequena a quantidade de communities padrão, podemos fazer pouquíssimas coisas com elas. Porém há uma grande quantidade communities numéricas que podem ser utilizadas. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 389 6.2 - Communities Numéricas É importante saber que essas communities numéricas por padrão não influenciam em nada no tratamento das rotas. É preciso uma configuração prévia ação para cada community. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 390 Também não há nenhum padrão para essas ações (pelo menos nenhum padrão RFC). Entretanto muitos AS's implementaram padrões extremamente criativos e funcionais. 6.2 - Communities Numéricas v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 391 O conhecimento desses padrões é uma ferramenta chave para resolver rapidamente incidentes do dia a dia. Vamos ver nos próximos slides uma série de communities numéricas adotadas por algumas operadoras. Mas antes vamos habilitar o suporte ao novo formato... 6.2 - Communities Numéricas router#conf t router(config)#ip bgp-community new-format v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 392 Identificando e Tratando Rotas de Peers Específicos 6.3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 393 6.3 - Identificando e Tratando Rotas de Peers Específicos Quando utilizamos o comando: Estamos substituindo todas as communities que haviam nesse prefixo. Muitas vezes, é interessante adicionar mais de uma community em "pontos diferentes". Ex: Recebo prefixos dos meus downstreams e quero inserir uma community 123:123 para controle interno, utilizando o meio convencional, eu acabaria substituindo uma eventual community que meu cliente utilizou para interagir com um outro AS externo. O que fazer? AS-14X-R1(config-route-map)#set community xxx:xxx v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com394 Com o comando "additive" qualquer community existente é preservada: ✗ OBS: Digitar o comando "set community" tem efeito "cumulativo" exemplo: se digitarmos a seguinte sequência de comandos: AS-X-R4(config-route-map)#set community 123:123 additive router#conf t router(config)#route-map teste permit 10 router(config-route-map)#set community 123:123 router(config-route-map)#exit router(config)#route-map teste permit 10 router(config-route-map)#set community 111:222 router(config-route-map)#set community 333:214 router(config-route-map)#end router# router#conf t router(config)#route-map teste permit 10 router(config-route-map)#set community 555:82 6.3 - Identificando e Tratando Rotas de Peers Específicos v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 395 Todas as communities digitadas serão ACUMULADAS: Lembrem que o "additive" não tem a ver com esse fato, mas sim com fazer com que as communities inseridas com "additive" sejam "somadas" às communities que já estavam taggeadas no(s) prefixo(s). router#sh running-config | begin route-map teste route-map teste permit 10 set community 111:222 123:123 333:214 555:82 ! ... 6.3 - Identificando e Tratando Rotas de Peers Específicos v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 396 Sem o comando "additive", qualquer community existente é substituída. Sempre utilizem ”additive” na hora de colocar communities em rotas recebidas de DOWNSTREAMS. 6.3 - Identificando e Tratando Rotas de Peers Específicos v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 397 Manipulando Trânsito (Nacional/Internacional) com Communities 6.4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 398 Brasil Telecom 8167:90 Set Local Preference 90 8167:100 Set Local Preference 100 8167:110 Set Local Preference 110 * (default é Local Preference 200) 8167:3xy controle de anúncios x: ação { 0 = não anuncia, 1,2,3 = insere x prepends) y: peerings { 0=demais peerings, 1=internacionais, 2=Embratel, 3=Intelig, 4=Telemar, 5=Telefônica } (exemplo: 312 = muda para 1 prepend o anúncio para a Embratel) * (default é anunciar sem prepends para todos os peerings) 8167:555 => não exporta fora da Brasil Telecom. 8167:557 => não anuncia para sites internacionais. 8167:666 => serão injetados no BlackHole da Brasil Telecom. 8167:777 => somente anuncia para clientes da Brasil Telecom. 6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 399 Embratel 4230:120 - Local Preference - marcar a rota como localpreference 120 4230:10000 - Blackhole - bloqueia todo o tráfego para a rede/endereco 4230:10002 - Blackhole - filtra o tráfego internacional nos provedores que proveem alguma especie de blackhole. 4230:10004 - Blackhole - filtra nos roteadores da Embratel nos EUA o trafego destinado a rede/endereco anunciado 6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 400 GVT Aonde, AS, deve ser o seu AS, exemplo: 1234:1 6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities Bloqueia anuncio Internacional AS:1 Bloqueia anuncio Nacional AS:2 Bloqueia anuncio Clientes GVT AS:3 Bloqueia anuncio Peering AS:4 Bloqueia anuncio PTT AS:6 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 401 Global Crossing 3549:100 - set local preference 100 3549:200 - set local preference 200 3549:275 - set local preference 275 3549:300 - set local preference 300 3549:350 - set local preference 350 3549:600 - Deny inter-continental export of tagged prefix [iBGP]. 3549:666 - Deny inter-as export of tagged prefix (carry on AS 3549 only) [eBGP] 6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 402 Uma série de communities complexas possibilitam o tratamento do prepend para cada um dos peers da GLBX 3549:8... ASN Peer No Export Prepend+1 Prepend+2 Prepend+3 209 Qwest 8010 8011 8012 8013 701 MCI 8030 8031 8032 8033 1239 Sprint 8060 8061 8062 8063 1299 TeliaSonera 8250 8251 8252 8253 1668 AOL 8070 8071 8072 8073 2497 JPNIC 8080 8081 8082 8083 2516 KDDI 8100 8101 8102 8103 2914 NTT Verio 8120 8121 8122 8123 3257 Tiscali 8240 8241 8242 8243 3300 InfoNet Europe 8130 8131 8132 8133 3303 Swisscom 8140 8141 8142 8143 3320 T-Systems/DTAG 8150 8151 8152 8153 3356 Level 3 8160 8161 8162 8163 3561 Savvis 8170 8171 8172 8173 4134 ChinaNet 8230 8231 8232 8233 5511 OpenTransit 8190 8191 8192 8193 6461 AboveNet 8200 8201 8202 8203 6453 Teleglobe 8210 8211 8212 8213 7018 AT&T (US) 8220 8221 8222 8223 7738 Telemar 8290 8291 8292 8293 6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 403 Um cliente com o AS 4111 envia um prefixo com a community "3549:8011 3549:8033 3549:8190". O prefixo com essa marca será anunciado da seguinte forma para os peers GLBX: ➔Qwest (AS 209) receberá o prefixo com o AS PATH: "3549 3549 4111" ➔MCI (AS 701) receberá o prefixo com o AS PATH: "3549 3549 3549 3549 4111" ➔OpenTransit (AS 5511) não receberá o prefixo ➔todos os outros receberão o prefixo normalmente: "3549 4111" 6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 404 Intelig 17379:23004 - Community NO-EXPORT-INTERNACIONAL - Não anuncia para peers Internacionais. 17379:23005 - Community NO-EXPORT-NACIONAL - Não anuncia para peers Nacionais. No-export ? A rota não será anunciada para nenhum peer eBGP da Intelig. 17379:60 = set local-preference 60 17379:70 = set local-preference 70 17379:80 = set local-preference 80 17379:90 = set local-preference 90 Todo anuncio feito, sem a aplicação de communities tem por default o valor 100 de local Preference. 6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 405 Engenharia de Tráfego III 6.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 406 LAB 2-1-13: Considerando as políticas de community para o AS 200: 200:70 = set local-preference 70 200:80 = set local-preference 80 200:90 = set local-preference 90 200:110 = set local-preference 110 A partir dos AS's clientes, utilizar as communities 200:xxx para alterar o local preference dentro do AS 200, em seguida observar que quando o mesmo é forçado a mudar o local preference para menos de 100, automaticamente começa a ”dar a volta” pelo AS 99, pois acaba escolhendo rotas do AS 99 (local preference 100 padrão). 6.5 - Engenharia de Tráfego III LAB 2-1-13 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 407 Solução: AS-14X-R1#conf t AS-14X-R1(config)#route-map AS-X-OUT permit 10 AS-14X-R1(config-route-map)#set community none !--- remove o ”set community” do lab anterior AS-14X-R1(config-route-map)#set community 200:90 AS-14X-R1(config-route-map)#end AS-14X-R1#clear ip bgp * soft AS-15X-R1#conf t AS-15X-R1(config)#route-map AS-X-OUT permit 10 AS-15X-R1(config-route-map)#set community none AS-15X-R1(config-route-map)#set community 200:70 !--- remove o ”set community” do lab anterior AS-15X-R1(config-route-map)#end AS-15X-R1#clear ip bgp * soft 6.5 - Engenharia de Tráfego III LAB 2-1-13 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com408 LAB 2-1-14: De acordo com as políticas do AS 100 abaixo, utilize as communities apropriadas (100:xxxx) para fazer todas as ações: ✔ Fazer com que o grupo 9 alcance o AS 14X pelo AS 200; ✔ Fazer com que o grupo 1 alcance o AS 15X pelo AS 200; ✔ Fazer com que o AS 99 alcance os dois (14X e 15X) pelo AS 200; ASN Peer Nao Anuncia Prepend +1 Prepend +2 Prepend +3 1 Grupo1 1010 1011 1012 1013 2 Grupo2 1020 1021 1022 1023 3 Grupo3 1030 1031 1032 1033 4 Grupo4 1040 1041 1042 1043 5 Grupo5 1050 1051 1052 1053 6 Grupo6 1060 1061 1062 1063 7 Grupo7 1070 1071 1072 1073 8 Grupo8 1080 1081 1082 1083 9 Grupo9 1090 1091 1092 1093 99 Internacional 9910 9911 9912 9913 6.5 - Engenharia de Tráfego III LAB 2-1-14 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 409 Solução Lab 2: !--- apagando o route map do lab anterior AS-14X-R1(config)#no route-map AS-X-OUT AS-14X-R1#conf t AS-14X-R1(config)#route-map AS-X-OUT permit 10 AS-14X-R1(config-route-map)#set community 100:1090 100:9912 AS-14X-R1(config-route-map)#end AS-14X-R1#clear ip bgp * soft !--- apagando o RM do lab anterior AS-15X-R1(config)#no route-map AS-X-OUT AS-15X-R1#conf t AS-15X-R1(config)#route-map AS-X-OUT permit 10 AS-15X-R1(config-route-map)#set community 100:1010 100:9912 AS-15X-R1(config-route-map)#end AS-15X-R1#clear ip bgp * soft 6.5 - Engenharia de Tráfego III LAB 2-1-14 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 410 LAB 2-1-15: Grupos de ASN par: Utilizar as communities da tabela para fazer o AS 100 anunciar seu prefixo com prepend 3 para os ASN's ímpares e prepend 2 para o AS 99 e anunciar normalmente para todo o resto. Grupos de ASN ímpar: Utilizar as communities da tabela para fazer o AS 100 anunciar seu prefixo com prepend 3 para os ASN's pares e prepend 2 para o AS 99 e anunciar normalmente para todo o resto. 6.5 - Engenharia de Tráfego III LAB 2-1-15 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 411 Solução Lab 2-1-15: (AS Ímpar) !--- apagando o RM do lab anterior AS-14X-R1(config)#no route-map AS-X-OUT AS-14X-R1#conf t AS-14X-R1(config)#route-map AS-X-OUT permit 10 AS-14X-R1(config-route-map)#set community 100:9912 100:1023 100:1043 100:1063 100:1083 AS-14X-R1(config-route-map)#end AS-14X-R1#clear ip bgp * soft !--- apagando o RM do lab anterior AS-15X-R1(config)#no route-map AS-X-OUT AS-15X-R1#conf t AS-15X-R1(config)#route-map AS-X-OUT permit 10 AS-15X-R1(config-route-map)#set community 100:9912 100:1023 100:1043 100:1063 100:1083 AS-15X-R1(config-route-map)#end AS-15X-R1#clear ip bgp * soft 6.5 - Engenharia de Tráfego III LAB 2-1-15 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 412 Solução Lab 2-1-15: (AS Par) !--- apagando o RM do lab anterior AS-14X-R1(config)#no route-map AS-X-OUT AS-14X-R1#conf t AS-14X-R1(config)#route-map AS-X-OUT permit 10 AS-14X-R1(config-route-map)#set community 100:9912 100:1013 100:1033 100:1053 100:1073 100:1093 AS-14X-R1(config-route-map)#end AS-14X-R1#clear ip bgp * soft !--- apagando o RM do lab anterior AS-15X-R1(config)#no route-map AS-X-OUT AS-15X-R1#conf t AS-15X-R1(config)#route-map AS-X-OUT permit 10 AS-15X-R1(config-route-map)#set community 100:9912 100:1013 100:1033 100:1053 100:1073 100:1093 AS-15X-R1(config-route-map)#end AS-15X-R1#clear ip bgp * soft 6.5 - Engenharia de Tráfego III LAB 2-1-15 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 413 PERGUNTAS?PERGUNTAS? 6.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 414 7.0 Filtros Avançados para Um AS de Trânsito O trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 415 7.0 Filtros Avançados para Um AS de Trânsito 7. Filtros avançados para um AS de trânsito • 7.1 Manipulando rotas de múltiplos PTTs • 7.2 DOWNSTREAMS com multihoming • 7.3 AS de trânsito no PTT – parte I • 7.4 Configurando um trasporte Lan2lan com xconnect/L2TP • 7.5 AS de trânsito no PTT – parte II v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 416 7.1 Manipulando Rotas com Múltiplos PTTs v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 417 7.1 – Manipulando Rotas com Múltiplos Ptts Em alguns casos clientes de trânsito solicitam o recebimento apenas de rotas do PTT-SP, por exemplo. Como filtrar e enviar um anúncio assim? v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 418 7.1 – Manipulando Rotas com Múltiplos Ptts Uma maneira simples é marcar uma community específica para rotas recebidas: Esse comando adiciona a community 28135:1111 e preserva todas que existirem. router-SP#conf t router-SP(config)#route-map PTT-SAOPAULO-IN permit 1 router-SP(config-route-map)#set community 28135:1111 additive ... v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 419 Se meu AS participa de mais de um PTT posso filtrar rotas de ambos e exportar para o meu cliente: Dado o cenário, vamos ver quais seriam os filtros que enviariam para o cliente apenas rotas recebidas do PTT-Campina Grande e PTT-São Paulo: router-CampinaGrande#conf t router-CampinaGrande(config)#route-map PTT-CAMPINAGRANDE-IN permit 1 router-CampinaGrande(config-route-map)#set community 28135:2222 additive Router(config)#ip community-list 70 permit 28135:1111 Router(config)#ip community-list 70 permit 28135:2222 ! router(config)#route-map CLIENTE-OUT permit 10 router(config-route-map)#match community 70 7.1 – Manipulando Rotas com Múltiplos Ptts v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 420 Downstreams comDownstreams com Multihoming Multihoming 7.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 421 7.2 – Downtreams com Multihoming Os filtros baseados apenas em prefixos nos trazem um problema: Como AS de trânsito, geralmente temos vários peers, e caso um dos nossos clientes também tenha outros peers, um filtro baseado unicamente em prefixos pode acabar fazendo o meu AS exportar prefixos errados. Por exemplo, sou o AS 100, meu cliente é o AS 20, que por sua vez compra trânsito com o AS 200. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 422 Caso o AS 20 anunciasse um bloco específico para cada AS (100 e 200), essa seria minha FIB: Percebam que por ser válido na FIB, o prefixo 20.0.8.0/21 seria exportado para todos os peers externos (menos para o AS 200 de onde "aprendemos") começando pelo AS 100. router# sh ip bgp 20.0.0.0/20 longer-prefixes ... Network Next Hop Metric LocPrf Weight Path *>i20.0.8.0/21 200.100.1.1 0 200 20 i *>i20.0.0.0/21 100.20.1.2 300 10 20 i *>i20.0.0.0/20 100.20.1.2 300 10 20 i * 200.100.1.1 0 200 20 i ... 7.2 – Downtreams com Multihoming v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 423 Precisamos adicionar mais uma condição de match além do prefix list com expressões regulares. Esse é o route-map padrão que já conhecemos: router(config)#ip prefix-list BLOCOS-AS-20-ACL33 permit 20.0.0.0/8 le 24 router(config)#route-map ANUNCIAR-AS-XXX permit 10 router(config-route-map)#match ip address prefix-list BLOCOS-AS-20-ACL33 !--- Adicionamos a seguinte acl: router(config)#ip as-path access-list 33 permit ^20(_20)*$ !--- apenas se a rota tiver sido ORIGINADA pelo AS20 !--- voltamos no mesmo route-map router(config)#route-map ANUNCIAR-AS-XXX permit 10 !--- e adicionamos a condição router(config-route-map)#match as-path 33 7.2 – Downtreams com Multihoming v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 424 A nomenclatura da prefix-list com final (ACL-33) é para facilitar, pois indica o número da ACL de as-path correspondente ao cliente. Nos routers Cisco não há possibilidade de nomear uma ACL de as-path, podemos apenas utilizar apenas um número. Para quem usa Quagga é possível atribuir um nome para a ACL de as- path e community lists o que deixa tudo ainda mais fácil: router-quagga(config)#ip prefix-list BLOCOS-AS-20 permit 20.0.0.0/8 le 24 router-quagga(config)#ip as-path access-list PATH-AS-20 permit ^(20|(20_{0,1}){1,8})$ !--- Essa expressão limita em no máximo 8 ocorrências ...OU... router-quagga(config)#ip as-path access-list PATH-AS-20 permit ^20(_20)*$ !--- Essa expressão não limita a quantidade de prepends router-quagga(config)#route-map ANUNCIAR-AS-XXX permit 10 router-quagga(config-route-map)#match ip address prefix-list BLOCOS-AS-20 router-quagga(config-route-map)#match as-path PATH-AS-20 7.2 – Downtreams com Multihoming v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 425 7.3 AS de Trânsito no PTT parte I v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 426 7.3 - AS de Trânsito no PTT – parte I Vamos iniciar estabelecendo as sessões BGP de R1 com o PTT-RS1 e PTT- LG, em seguida repetir o processo nos DOWNSTREAMS AS-14X-R1 e AS-15X-R1. AS-X-R1 AS-X-R1#conf t AS-X-R1(config)#router bgp X !--- como os 2 neighbors terão as mesmas configurações, criaremos um peer-group AS-X-R1(config-router)#no bgp enforce-first-as AS-X-R1(config-router)#neighbor PTT peer-group AS-X-R1(config-router)#neighbor PTT remote-as 555 AS-X-R1(config-router)#neighbor PTT soft-reconfiguration inbound AS-X-R1(config-router)#neighbor PTT route-map PTT-IN in AS-X-R1(config-router)#neighbor PTT route-map PTT-OUT out AS-X-R1(config-router)#neighbor PTT send-community both !--- não precisamos repetir as configurações e apena declarar o peer-group para os dois neighbors AS-X-R1(config-router)#neighbor 187.16.216.253 peer-group PTT AS-X-R1(config-router)#neighbor 187.16.216.253 description PTT RS 1 !--- ptt-rs1 AS-X-R1(config-router)#neighbor 187.16.216.254 peer-group PTT AS-X-R1(config-router)#neighbor 187.16.216.254 description PTT RS 2 !--- ptt-rs2 AS-X-R1(config-router)#neighbor 187.16.216.252 remote-as 555 AS-X-R1(config-router)#neighbor 187.16.216.252 description LG do PTT !--- o Looking Glass do PTT não fará parte do peer-group pois não defverá receber nenhum filtro in-out !--- continua no próximo slide... LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 427 ...BGP com PTT... AS-X-R1 !--- continuando... !--- vamos declarar em networks os prefixos mais específicos AS-X-R1(config-router)#network X.0.0.0 mask 255.128.0.0 AS-X-R1(config-router)#network X.128.0.0 mask 255.128.0.0 AS-X-R1(config-router)#exit AS-X-R1(config)#ip route X.0.0.0 255.128.0.0 null 0 AS-X-R1(config)#ip route X.128.0.0 255.128.0.0 null 0 !--- depois garantimos os dois blocos específicos (/9) na FIB AS-X-R1(config)#end AS-X-R1#clear ip bgp peer-group PTT out !--- OBS: há um pequeno BUG no laboratório, onde o IP do PTT !---já está levantado na interface errada f0/1, para isso entre na interface e remova o IP AS-X-R1(config)#interface fastEthernet 0/1 AS-X-R1(config-if)#no ip address AS-X-R1(config-if)#exit !--- Em seguida levante o IP de participante na interface correta AS-X-R1(config)#interface fastEthernet 0/0 AS-X-R1(config-if)#ip address 187.16.216.X 255.255.255.0 AS-X-R1(config-if)#no shutdown 7.3 - AS de Trânsito no PTT – parte I LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 428 Configurando as políticas de route-map AS-X-R1 !--- ATENÇÃO TODAS AS PREFIX-LIST ABAIXO JÁ FORAM CRIADAS NOS LABS ANTERIORES !--- ESTÃO AQUI APENAS PARA LEMBRAR O SEU CONTEÚDO !--- AS-X-R1(config)#ip prefix-list MEUS-BLOCOS permit X.0.0.0/8 !--- AS-X-R1(config)#ip prefix-list BLOCOS-AS-14X permit 14X.0.0.0/8 !--- AS-X-R1(config)#ip prefix-list BLOCOS-AS-15X permit 15X.0.0.0/8 !--- CASO ESTAS NÃO ESTEJAM PRESENTES CONFIGUREM NOVAMENTE !--- apenas os filtros baseados em ASPATH ainda não foram criados AS-X-R1(config)#ip as-path access-list 10 permit ^$ AS-X-R1(config)#ip as-path access-list 20 permit ^14X(_14X)*$ AS-X-R1(config)#ip as-path access-list 30 permit ^15X(_15X)*$ !--- em seguida o primeiro o route-map que trata os filtros de input para redes recebidas do PTT AS-X-R1(config)#route-map PTT-IN permit 10 AS-X-R1(config-route-map)#set local-preference 110 !--- o local preference 110 fará com que todas os routers do AS prefiram as rotas recebidas pelo PTT !--- em seguida vamos aos route-maps responsáveis pelo output (anúncios) para o PTT (continua...) 7.3 - AS de Trânsito no PTT – parte I LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 429 Configurando as políticas de route-map para o PTT AS-X-R1 (...continuação) AS-X-R1(config)#route-map PTT-OUT permit 10 AS-X-R1(config-route-map)#match ip address prefix-list MEUS-BLOCOS AS-X-R1(config-route-map)#match as-path 10 !--- libera os blocos do AS local X AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map PTT-OUT permit 20 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-14X AS-X-R1(config-route-map)#match as-path 20 !--- libera os blocos do DOWNSTREAM 1 AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map PTT-OUT permit 30 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-15X AS-X-R1(config-route-map)#match as-path 30 !--- libera os blocos do DOWNSTREAM 2 (continua...) 7.3 - AS de Trânsito no PTT – parte I LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 430 Configurando as políticas de route-map para o AS 100 AS-X-R1 (...continuação) AS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 10 AS-X-R1(config-route-map)#match ip address prefix-list MEUS-BLOCOS AS-X-R1(config-route-map)#match as-path 10 !--- libera os blocos do AS local X AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 20 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-14X AS-X-R1(config-route-map)#match as-path 20 !--- libera os blocos do DOWNSTREAM 1 AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 30 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-15X AS-X-R1(config-route-map)#match as-path 30 !--- libera os blocos do DOWNSTREAM 2 AS-X-R1(config-route-map)#end AS-X-R1#clear ip bgp * soft 7.3 - AS de Trânsito no PTT – parte I LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 431 Configurando as políticas de route-map para o AS 200 (não esquecer que agora vamos para R2) AS-X-R2 !--- apenas os filtros baseados em ASPATH ainda não foram criados AS-X-R2(config)#ip as-path access-list 10 permit ^$ AS-X-R2(config)#ip as-path access-list 20 permit ^14X(_14X)*$ AS-X-R2(config)#ip as-path access-list 30 permit ^15X(_15X)*$ AS-X-R2(config)#route-map ANUNCIAR-AS-200 permit 10 AS-X-R2(config-route-map)#match ip address prefix-list MEUS-BLOCOS AS-X-R2(config-route-map)#match as-path 10 !--- libera os blocos do AS local X AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map ANUNCIAR-AS-200 permit 20 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-14X AS-X-R1(config-route-map)#match as-path 20 !--- libera os blocos do DOWNSTREAM 1 AS-X-R1(config-route-map)#exit AS-X-R1(config)#route-map ANUNCIAR-AS-200 permit 30 AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-15X AS-X-R1(config-route-map)#match as-path 30 !--- libera os blocos do DOWNSTREAM 2 AS-X-R1(config-route-map)#end AS-X-R1#clear ip bgp * soft 7.3 - AS de Trânsito no PTT – parte I LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 432 Todos esses route-maps podem deixara configuração um pouco maior, porém vai permitir que os ”donos dos AS's” sejam facilmente identificados no ”show run” além de tornar muito fácil de escalar. Imagine um dos clientes de trânsito AS 14X passar a prover trânsito IP para outro AS: ASN 88 CIDR 88.0.0.0/8 Com apenas 2 comandos o AS 88 está liberado nos filtros de Saída: AS-X-R1(config)#ip prefix-list BLOCOS-AS-14X permit 88.0.0.0/8 AS-X-R1(config)#ip as-path access-list 20 permit ^(14X ?)+( 88)+$ AS-X-R1#show running-config | begin BLOCOS-AS-14X ip prefix-list BLOCOS-AS-11x seq 5 permit 14X.0.0.0/8 ip prefix-list BLOCOS-AS-11x seq 10 permit 88.0.0.0/8 ! 7.3 - AS de Trânsito no PTT – parte I v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 433 PS: nos LABs anteriores já configuramos as mesmas políticas para o output do AS 100, vamos apenas conferir: Como podemos ver na saida do comando, as políticas de output com o AS 100 já estão configuradas. O mesmo resultado deve aparecer em R2 AS-X-R1#show running-config | begin ANUNCIAR-AS-100 route-map ANUNCIAR-AS-100 permit 10 match ip address prefix-list MEUS-BLOCOS match as-path 10 ! route-map ANUNCIAR-AS-100 permit 20 match ip address prefix-list BLOCOS-AS-14X match as-path 20 ! route-map ANUNCIAR-AS-100 permit 30 match ip address prefix-list BLOCOS-AS-15X match as-path 30 ! 7.3 - AS de Trânsito no PTT – parte I LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 434 A configuração nos DOWNSTREAMS é muito mais simples: AS-14X-R1 AS-14X-R1#conf t AS-14X-R1(config)#ip as-path access-list 1 permit ^$ AS-14X-R1(config)#ip route 14X.128.0.0 255.128.0.0 null 0 AS-14X-R1(config)#ip route 14X.0.0.0 255.128.0.0 null 0 AS-14X-R1(config)#router bgp 14X AS-14X-R1(config-router)#no bgp enforce-first-as AS-14X-R1(config-router)#network 14X.0.0.0 mask 255.128.0.0 AS-14X-R1(config-router)#network 14X.128.0.0 mask 255.128.0.0 AS-14X-R1(config-router)#neighbor PTT peer-group AS-14X-R1(config-router)#neighbor PTT remote-as 555 AS-14X-R1(config-router)#neighbor PTT soft-reconfiguration inbound AS-14X-R1(config-router)#neighbor PTT filter-list 1 out AS-14X-R1(config-router)#neighbor PTT weight 50 AS-14X-R1(config-router)#neighbor PTT send-community both AS-14X-R1(config-router)#neighbor 187.16.216.253 peer-group PTT AS-14X-R1(config-router)#neighbor 187.16.216.253 description PTT RS 1 AS-14X-R1(config-router)#neighbor 187.16.216.254 peer-group PTT AS-14X-R1(config-router)#neighbor 187.16.216.254 description PTT RS 2 AS-14X-R1(config-router)#neighbor 187.16.216.252 remote-as 555 AS-14X-R1(config-router)#neighbor 187.16.216.252 description LG do PTT AS-14X-R1(config-router)#end !--- NOTA é preciso levantar o IP de participante na interface !--- conectada ao PTT, que nesse caso é a f0/0 que esta conectada !--- na porta LAN2LAN de AS-1-R4 AS-14X-R1(config)#interface fastEthernet 0/0 AS-14X-R1(config-if)#ip address 187.16.216.14X 255.255.255.0 AS-14X-R1(config-if)#no shutdown 7.3 - AS de Trânsito no PTT – parte I LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 435 Seguimos a mesma lógica para o segundo DOWNSTREAM AS-15X-R1 AS-15X-R1#conf t AS-15X-R1(config)#ip as-path access-list 1 permit ^$ AS-15X-R1(config)#ip route 15X.128.0.0 255.128.0.0 null 0 AS-15X-R1(config)#ip route 15X.0.0.0 255.128.0.0 null 0 AS-15X-R1(config)#router bgp 15X AS-15X-R1(config-router)#no bgp enforce-first-as AS-15X-R1(config-router)#network 15X.0.0.0 mask 255.128.0.0 AS-15X-R1(config-router)#network 15X.128.0.0 mask 255.128.0.0 AS-15X-R1(config-router)#neighbor PTT peer-group AS-15X-R1(config-router)#neighbor PTT remote-as 555 AS-15X-R1(config-router)#neighbor PTT soft-reconfiguration inbound AS-15X-R1(config-router)#neighbor PTT filter-list 1 out AS-15X-R1(config-router)#neighbor PTT weight 50 AS-15X-R1(config-router)#neighbor PTT send-community both AS-15X-R1(config-router)#neighbor 187.16.216.253 peer-group PTT AS-15X-R1(config-router)#neighbor 187.16.216.253 description PTT RS 1 AS-15X-R1(config-router)#neighbor 187.16.216.254 peer-group PTT AS-15X-R1(config-router)#neighbor 187.16.216.254 description PTT RS 2 AS-15X-R1(config-router)#neighbor 187.16.216.252 remote-as 555 AS-15X-R1(config-router)#neighbor 187.16.216.252 description LG do PTT AS-15X-R1(config-router)#end !--- NOTA é preciso levantar o IP de participante na interface !--- conectada ao PTT, que nesse caso é a f0/0 que esta conectada !--- diretamente ao PTT AS-15X-R1(config)#interface fastEthernet 0/0 AS-15X-R1(config-if)#ip address 187.16.216.15X 255.255.255.0 AS-15X-R1(config-if)#no shutdown 7.3 - AS de Trânsito no PTT – parte I LAB 2-3-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 436 As sessões BGP do DOWNSTREMS 14X com o PTT não estabeleceu! O que faltou? Os testes de ping com o Route-Server tem resposta? 7.3 - AS de Trânsito no PTT – parte I v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 437 Configurando um Transporte Lan2Lan com xconnect/L2TP 7.4 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 438 7.4 – Configurando um Transporte Lan2Lan com xconnect/L2TP AS-X-R4(config)#l2tp-class transporte-l2 AS-X-R4(config-l2tp-class)#cookie size 4 AS-X-R4(config-l2tp-class)#exit !--- Declaramos uma class e demos o nome de “transporte-l2” AS-X-R4(config)#pseudowire-class transporte-l2 AS-X-R4(config-pw-class)#encapsulation l2tpv3 AS-X-R4 (config-pw-class)#protocol none AS-X-R4 (config-pw-class)#ip local interface Loopback0 !--- Na configuração da class escolhemos o tipo de tunelamento que em nosso caso será l2tp versão 3. AS-X-R4 (config-pw-class)#exit AS-X-R4(config)#interface f0/0 AS-X-R4(config)#no shut AS-X-R4(config-if)#xconnect X.0.0.1 14X encapsulation l2tpv3 manual pw-class transporte-l2 AS-X-R4(config-if-xconn)#l2tp id 1 1 AS-X-R4(config-if-xconn)#l2tp cookie local 4 1 AS-X-R4(config-if-xconn)# l2tp cookie remote 4 1 LAB 2-4-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 439 7.4 – Configurando um Transporte Lan2Lan com xconnect/L2TP AS-X-R1(config)#l2tp-class transporte-l2 AS-X-R1(config-l2tp-class)#cookie size 4 AS-X-R1(config-l2tp-class)#exit !--- Declaramos uma class e demos o nome de “transporte-l2” AS-X-R1(config)#pseudowire-class transporte-l2 AS-X-R1(config-pw-class)#encapsulation l2tpv3 AS-X-R1 (config-pw-class)#protocol none AS-X-R1 (config-pw-class)#ip local interface Loopback0 !--- Na configuração da class escolhemos o tipo de tunelamento que em nosso caso será l2tp versão 3. AS-X-R1 (config-pw-class)#exit AS-X-R1(config)#interface f2/0 AS-X-R1(config)#no shut AS-X-R1(config-if)#xconnect X.0.0.4 14X encapsulation l2tpv3 manual pw-class transporte-l2 AS-X-R1(config-if-xconn)#l2tp id 1 1 AS-X-R1(config-if-xconn)#l2tp cookie local 4 1 AS-X-R1(config-if-xconn)# l2tp cookie remote 4 1 LAB 2-4-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 440 7.4 – Configurando um Transporte Lan2Lan com xconnect/L2TP AS-X-R1#sh l2tun %No active L2F tunnels L2TP Tunnel and Session Information Total tunnels 0 sessions 1 LocID RemID TunID Username, Intf/ State Last Chg Uniq ID Vcid, Circuit 1 1 0 14X, Fa2/0 est 00:00:24 1 AS-X-R4#sh l2tun %No active L2F tunnels L2TP Tunnel and Session Information Total tunnels 0 sessions 1 LocID RemID TunID Username, Intf/ State Last Chg Uniq ID Vcid, Circuit 1 1 0 14X, Fa0/0 est 00:00:43 1 LAB 2-4-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 441 Vamos entrar no AS-100-R1 (100.100.100.1) e fazer um traceroute para os DOWNSTREAMS do grupo. Notem que ao entrar no AS do GRUPO, os pacotes são encaminhados para o PTT, e não chegam ao DOWNSTREAM pelo link de trânsito. Mesmo com um local preference maior, os prefixosque os AS's 14X e AS 15X anunciam para PTT são mais específicos do que os que anunciam para o trânsito, isso obriga o router R1 a mandar os pacotes pelo PTT (download dos DOWNSTREAMS). 7.5 - AS de Trânsito no PTT – parte II v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 442 Isso é um problema sério! O cliente pode tirar proveito disso e causar prejuízos ”desviando” trânsito IP, obrigando AS local a ”trocar” o trânsito IP por ”nada”. Uma troca de tráfego onde apenas um tem vantagem... 7.5 - AS de Trânsito no PTT – parte II v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 443 Inserimos o AS de cada cliente de trânsito nessa lista. Vale lembrar que em certos casos, os filtros precisariam ser mais específicos, fazendo um route-map de deny para cada cliente, combinando uma prefix-list + as-path access-list AS-X-R1#conf t AS-X-R1(config)#ip as-path access-list 55 seq 1 permit _14X_ AS-X-R1(config)#ip as-path access-list 55 seq 2 permit _15X_ AS-X-R1(config)#ip as-path access-list 55 seq 99 permit .* AS-X-R1(config)#route-map PTT-IN deny 5 AS-X-R1(config-route-map)#match as-path 55 Para resolver isso, precisamos utilizar uma expressão regular proibindo R1 de receber qualquer anúncio de participantes que também sejam clientes de trânsito do AS: 7.5 - AS de Trânsito no PTT – parte II LAB 2-4-2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 444 Vamos efetuar novamente o traceroute partindo de AS-110-R1... 7.5 - AS de Trânsito no PTT – parte II v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 445 PERGUNTAS?PERGUNTAS? 7.5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 446 8.0 Multiprotocol Label Switching (MPLS) O trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 447 8.0 Multiprotocol Label Switching (MPLS) 8. Multiprotocol Label Switching • 8.1 BGP através da nuvem MPLS • 8.2 AtoM - Any Transport Over MPLS • 8.3 Implementando serviço VPN-L3 (VPN-Multiponto) v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 448 BGP Através da Nuvem MPLS BGP Através da Nuvem MPLS (BGP Multiprotocol)(BGP Multiprotocol) 8.1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 449 8.1 – BGP através da nuvem MPLS AS-X-R3(config)#no router bgp X AS-X-R3(config)#interface serial 1/0 AS-X-R3(config-if)#mpls label protocol both AS-X-R3(config-if)#mpls ip AS-X-R3(config-if)#mpls mtu 1508 AS-X-R3(config-if)# *Mar 1 00:13:29.699: %TFIB-3-MPLS_MTU_SET: Setting mpls mtu to 1508 on Serial1/0 which is higher than the interface mtu 1500 . This could lead to packet forwarding problems including packet drops.exit AS-X-R3(config-if)#exit !--- Configurando LDP com R1 AS-X-R3(config)#interface serial 1/1 AS-X-R3(config-if)#mpls label protocol both AS-X-R3(config-if)#mpls ip AS-X-R3(config-if)#mpls mtu 1508 AS-X-R3(config-if)# *Mar 1 00:15:09.647: %TFIB-3-MPLS_MTU_SET: Setting mpls mtu to 1508 on Serial1/1 which is higher than the interface mtu 1500 . This could lead to packet forwarding problems including packet drops. AS-X-R3(config-if)#exit !--- Configurando LDP com R2 (...) LAB 2-5-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 450 8.1 – BGP através da nuvem MPLS (...) AS-X-R3(config)#interface serial 1/2 AS-X-R3(config-if)#mpls label protocol both AS-X-R3(config-if)#mpls ip AS-X-R3(config-if)#mpls mtu 1508 AS-X-R3(config-if)# *Mar 1 00:16:28.235: %TFIB-3-MPLS_MTU_SET: Setting mpls mtu to 1508 on Serial1/2 which is higher than the interface mtu 1500 . This could lead to packet forwarding problems including packet drops. AS-X-R3(config-if)#exit !--- Configurando LDP com R3 AS-X-R3(config)#interface serial 1/3 AS-X-R3(config-if)#mpls label protocol both AS-X-R3(config-if)#mpls ip AS-X-R3(config-if)#mpls mtu 1508 AS-X-R3(config-if)# *Mar 1 00:17:09.295: %TFIB-3-MPLS_MTU_SET: Setting mpls mtu to 1508 on Serial1/3 which is higher than the interface mtu 1500 . This could lead to packet forwarding problems including packet drops. AS-X-R3(config-if)#exit !--- Configurando LDP com R4 LAB 2-5-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 451 8.1 – BGP através da nuvem MPLS AS-X-R1(config)#interface serial 1/1 AS-X-R1(config-if)#mpls ip AS-X-R1(config-if)# *Mar 1 00:18:23.703: %LDP-5-NBRCHG: LDP Neighbor X.0.0.3:0 (1) is UP AS-X-R1(config-if)#mpls mtu 1508 AS-X-R1(config-if)# *Mar 1 00:18:29.391: %TFIB-3-MPLS_MTU_SET: Setting mpls mtu to 1508 on Serial1/1 which is higher than the interface mtu 1500 . This could lead to packet forwarding problems including packet drops. AS-X-R1(config-if)#exit !--- Configurando LDP com R3 LAB 2-5-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 452 8.1 – BGP através da nuvem MPLS AS-X-R2(config)#interface serial 1/1 AS-X-R2(config-if)#mpls ip AS-X-R2(config-if)# *Mar 1 00:21:55.943: %LDP-5-NBRCHG: LDP Neighbor X.0.0.3:0 (1) is UP AS-X-R2(config-if)#mpls mtu 1508 AS-X-R2(config-if)# *Mar 1 00:22:08.259: %TFIB-3-MPLS_MTU_SET: Setting mpls mtu to 1508 on Serial1/1 which is higher than the interface mtu 1500 . This could lead to packet forwarding problems including packet drops. AS-X-R2(config-if)#exit !--- Configurando LDP com R3 LAB 2-5-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 453 8.1 – BGP através da nuvem MPLS AS-X-R4(config)#interface serial 1/0 AS-X-R4(config-if)#mpls ip *Mar 1 00:25:20.579: %LDP-5-NBRCHG: LDP Neighbor X.0.0.3:0 (1) is UP AS-X-R4(config-if)# AS-X-R4(config-if)#mpls mtu 1508 AS-X-R4(config-if)# *Mar 1 00:25:44.683: %TFIB-3-MPLS_MTU_SET: Setting mpls mtu to 1508 on Serial1/0 which is higher than the interface mtu 1500 . This could lead to packet forwarding problems including packet drops. AS-X-R4(config-if)#exit !--- Configurando LDP com R3 AS-X-R4(config)#interface serial 1/2 AS-X-R4(config-if)#mpls ip AS-X-R4(config-if)#exit !--- Configurando LDP com R5 LAB 2-5-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 454 8.1 – BGP através da nuvem MPLS AS-X-R5(config)#interface serial 1/0 AS-X-R5(config-if)#mpls ip AS-X-R5(config-if)# *Mar 1 00:29:54.579: %LDP-5-NBRCHG: LDP Neighbor X.0.0.3:0 (1) is UP AS-X-R5(config-if)#mpls mtu 1508 AS-X-R5(config-if)# *Mar 1 00:30:20.999: %TFIB-3-MPLS_MTU_SET: Setting mpls mtu to 1508 on Serial1/0 which is higher than the interface mtu 1500 . This could lead to packet forwarding problems including packet drops. AS-X-R5(config-if)#exit !--- Configurando LDP com R3 AS-X-R5(config)#interface serial 1/2 AS-X-R5(config-if)#mpls ip AS-X-R5(config-if)# *Mar 1 00:30:59.891: %LDP-5-NBRCHG: LDP Neighbor X.0.0.4:0 (2) is UP AS-X-R5(config-if)#exit !--- Configurando LDP com R4 LAB 2-5-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 455 Configurando iBGP entre R1-R2, R1-R4 e R1-R5: AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#neighbor X.0.0.2 remote-as X AS-X-R1(config-router)#neighbor X.0.0.2 update-source loopback 0 AS-X-R1(config-router)#neighbor X.0.0.2 next-hop-self AS-X-R1(config-router)#neighbor X.0.0.2 route-reflector-client !--- Configurando iBGP padrão com R2 AS-X-R1(config-router)#neighbor X.0.0.4 remote-as X AS-X-R1(config-router)#neighbor X.0.0.4 update-source loopback 0 AS-X-R1(config-router)#neighbor X.0.0.4 next-hop-self AS-X-R1(config-router)#neighbor X.0.0.4 route-reflector-client !--- Configurando iBGP padrão com R4 AS-X-R1(config-router)#neighbor X.0.0.5 remote-as X AS-X-R1(config-router)#neighbor X.0.0.5 update-source loopback 0 AS-X-R1(config-router)#neighbor X.0.0.5 next-hop-self AS-X-R1(config-router)#neighbor X.0.0.5 route-reflector-client !--- Configurando iBGP padrão com R5 (...) 8.1 – BGP atravésda nuvem MPLS LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 456 Configurando Multiprotocol BGP entre R1-R2, R1-R4 e R1-R5: (...) AS-X-R1(config-router)#address-family vpnv4 !--- Entra no address family VPNv4 AS-X-R1(config-router-af)#neighbor X.0.0.2 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R1(config-router-af)#neighbor X.0.0.2 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida AS-X-R1(config-router-af)#neighbor X.0.0.4 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R1(config-router-af)#neighbor X.0.0.4 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida AS-X-R1(config-router-af)#neighbor X.0.0.5 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R1(config-router-af)#neighbor X.0.0.5 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida 8.1 – BGP através da nuvem MPLS LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 457 Configurando iBGP entre R2-R1, R2-R4 e R2-R5: AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#neighbor X.0.0.1 remote-as X AS-X-R2(config-router)#neighbor X.0.0.1 update-source loopback 0 AS-X-R2(config-router)#neighbor X.0.0.1 next-hop-self AS-X-R2(config-router)#neighbor X.0.0.1 route-reflector-client !--- Configurando iBGP padrão com R2 AS-X-R2(config-router)#neighbor X.0.0.4 remote-as X AS-X-R2(config-router)#neighbor X.0.0.4 update-source loopback 0 AS-X-R2(config-router)#neighbor X.0.0.4 next-hop-self AS-X-R2(config-router)#neighbor X.0.0.4 route-reflector-client !--- Configurando iBGP padrão com R4 AS-X-R2(config-router)#neighbor X.0.0.5 remote-as X AS-X-R2(config-router)#neighbor X.0.0.5 update-source loopback 0 AS-X-R2(config-router)#neighbor X.0.0.5 next-hop-self AS-X-R2(config-router)#neighbor X.0.0.5 route-reflector-client !--- Configurando iBGP padrão com R5 (...) 8.1 – BGP através da nuvem MPLS LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 458 Configurando Multiprotocol BGP entre R2-R1, R2-R4 e R2-R5: (...) AS-X-R2(config-router)#address-family vpnv4 !--- Entra no address family VPNv4 AS-X-R2(config-router-af)#neighbor X.0.0.1 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R2(config-router-af)#neighbor X.0.0.1 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida AS-X-R2(config-router-af)#neighbor X.0.0.4 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R2(config-router-af)#neighbor X.0.0.4 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida AS-X-R2(config-router-af)#neighbor X.0.0.5 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R2(config-router-af)#neighbor X.0.0.5 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida 8.1 – BGP através da nuvem MPLS LAB 2-5-10 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 459 Configurando iBGP entre R4-R1 e R4-R2 AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#neighbor X.0.0.1 remote-as X AS-X-R4(config-router)#neighbor X.0.0.1 update-source loopback 0 AS-X-R4(config-router)#neighbor X.0.0.1 next-hop-self !--- Configurando iBGP padrão com R1 AS-X-R4(config-router)#neighbor X.0.0.2 remote-as X AS-X-R4(config-router)#neighbor X.0.0.2 update-source loopback 0 AS-X-R4(config-router)#neighbor X.0.0.2 next-hop-self !--- Configurando iBGP padrão com R2 (...) 8.1 – BGP através da nuvem MPLS LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 460 Configurando Multiprotocol BGP entre R4-R1 R4-R2: (...) AS-X-R4(config-router)#address-family vpnv4 !--- Entra no address family VPNv4 AS-X-R4(config-router-af)#neighbor X.0.0.1 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R4(config-router-af)#neighbor X.0.0.1 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida AS-X-R4(config-router-af)#neighbor X.0.0.2 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R4(config-router-af)#neighbor X.0.0.2 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida 8.1 – BGP através da nuvem MPLS LAB 2-5-10 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 461 Configurando iBGP entre R5-R1 e R5-R2 AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#neighbor X.0.0.1 remote-as X AS-X-R5(config-router)#neighbor X.0.0.1 update-source loopback 0 AS-X-R5(config-router)#neighbor X.0.0.1 next-hop-self !--- Configurando iBGP padrão com R1 AS-X-R5(config-router)#neighbor X.0.0.2 remote-as X AS-X-R5(config-router)#neighbor X.0.0.2 update-source loopback 0 AS-X-R5(config-router)#neighbor X.0.0.2 next-hop-self !--- Configurando iBGP padrão com R2 (...) 8.1 – BGP através da nuvem MPLS LAB 2-1-1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 462 Configurando Multiprotocol BGP entre R5-R1 R5-R2: (...) AS-X-R5(config-router)#address-family vpnv4 !--- Entra no address family VPNv4 AS-X-R5(config-router-af)#neighbor X.0.0.1 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R5(config-router-af)#neighbor X.0.0.1 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida AS-X-R5(config-router-af)#neighbor X.0.0.2 activate !--- Adiciona esse neighbor ao modo VPNv4 AS-X-R5(config-router-af)#neighbor X.0.0.2 send-community both !--- Habilida o envio de communities padrão e também do tipo estendida 8.1 – BGP através da nuvem MPLS LAB 2-5-10 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 463 Testando... AS-14X-R1#traceroute 99.99.99.1 source 14X.1.0.1 Type escape sequence to abort. Tracing the route to 99.99.99.1 1 X.14X.4.1 [AS 1] 4 msec 4 msec 4 msec 2 X.X.4.1 [AS 1] [MPLS: Label 16 Exp 0] 12 msec 8 msec 8 msec 3 X.X.1.1 [AS 1] 8 msec 8 msec 8 msec 4 100.X.1.1 [AS 100] 8 msec 20 msec 12 msec 5 99.100.1.1 [AS 99] 8 msec * 24 msec AS-14X-R1# 8.1 – BGP através da nuvem MPLS LAB 2-5-10 AS-X-R3#sh ip bgp % BGP not active v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 464 PERGUNTAS?PERGUNTAS? 8.1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 465 8.2 AtoM - Any Transport Over MPLS LAB 2-5-10 Cenário: v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 466 AToM AToM Any Trasnport Over MPLS Any Trasnport Over MPLS 8.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 467 8.2 AtoM - Any Transport Over MPLS LAB 2-5-10 AS-X-R1(config)#pseudowire-class VPN-AS141R2-TO-AS151R2 AS-X-R1(config-pw-class)#encapsulation mpls AS-X-R1(config-pw-class)#exit AS-X-R1(config)#interface fastEthernet 0/1 AS-X-R1(config-if)#no shutdown AS-X-R1(config-if)#no ip address AS-X-R1(config-if)#xconnect X.0.0.2 999 pw-class VPN-AS141R2-TO-AS151R2 AS-X-R1(config-if-xconn)#end v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 468 8.2 AtoM - Any Transport Over MPLS LAB 2-5-10 AS-X-R2(config)#pseudowire-class VPN-AS141R2-TO-AS151R2 AS-X-R2(config-pw-class)#encapsulation mpls AS-X-R2(config-pw-class)#exit AS-X-R2(config)#interface fastEthernet 0/1 AS-X-R2(config-if)#no shutdown AS-X-R2(config-if)#no ip address AS-X-R2(config-if)#xconnect X.0.0.1 999 pw-class VPN-AS141R2-TO-AS151R2 AS-X-R2(config-if-xconn)#end AS-X-R2#show xconnect all Legend: XC ST=Xconnect State, S1=Segment1 State, S2=Segment2 State UP=Up, DN=Down, AD=Admin Down, IA=Inactive, NH=No Hardware XC ST Segment 1 S1 Segment 2 S2 ------+---------------------------------+--+---------------------------------+-- UP ac Fa0/1(Ethernet) UP mpls X.0.0.1:999 UP AS-X-R2# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 469 8.2 AtoM - Any Transport Over MPLS LAB 2-5-10 AS-14X-R2#conf t AS-14X-R2(config)#interface fastEthernet 0/0 AS-14X-R2(config-if)#no shut AS-14X-R2(config-if)#ip address 172.16.0.1 255.255.255.0 AS-14X-R2(config-if)#exitAS-14X-R2(config)# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 470 8.2 AtoM - Any Transport Over MPLS LAB 2-5-10 AS-15X-R2#conf t AS-15X-R2(config)#interface fastEthernet 0/0 AS-15X-R2(config-if)#no shut AS-15X-R2(config-if)#ip address 172.16.0.2 255.255.255.0 AS-15X-R2(config-if)#end AS-15X-R2#ping AS-15X-R2#ping 172.16.0.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.0.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 4/15/24 ms AS-15X-R2# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 471 8.2 AtoM - Any Transport Over MPLS LAB 2-5-10 AS-14X-R2>show interfaces fastEthernet 0/0 | include address is Hardware is Gt96k FE, address is c20c.0c08.0000 (bia c20c.0c08.0000) Internet address is 172.16.0.1/24 AS-14X-R2>show ip arp Protocol Address Age (min) Hardware Addr Type Interface Internet 172.16.0.1 - c20c.0c08.0000 ARPA FastEthernet0/0 Internet 172.16.0.2 2 c20e.0c08.0000 ARPA FastEthernet0/0 ______________________________________________________________ AS-15X-R2#show interfaces fastEthernet 0/0 | include address is Hardware is Gt96k FE, address is c20e.0c08.0000 (bia c20e.0c08.0000) Internet address is 172.16.0.2/24 AS-15X-R2#show ip arp Protocol Address Age (min) Hardware Addr Type Interface Internet 172.16.0.1 3 c20c.0c08.0000 ARPA FastEthernet0/0 Internet 172.16.0.2 - c20e.0c08.0000 ARPA FastEthernet0/0 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 472 PERGUNTAS?PERGUNTAS? 8.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 473 Implementando serviço Implementando serviço VPN-Layer 3 VPN-Layer 3 (MPLS-VPN)(MPLS-VPN) 8.3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 474 8.3 Implementando serviço VPN-L3 LAB 2-5-10 Novamente o mesmo cenário v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 475 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R1#conf t AS-X-R1(config)#ip vrf vpn-as14X AS-X-R1(config-vrf)#rd X:14X AS-X-R1(config-vrf)#route-target export X:14X AS-X-R1(config-vrf)#route-target import X:14X AS-X-R1(config-vrf)#exit AS-X-R1(config)#interface serial 1/2 AS-X-R1(config-if)#no shutdown AS-X-R1(config-if)#ip vrf forwarding vpn-as14X AS-X-R1(config-if)#ip address X.14X.2.1 255.255.255.252 AS-X-R1(config-if)#end AS-X-R1#ping vrf vpn-as14X X.14X.2.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to X.14X.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/8 ms AS-X-R1# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 476 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R1#conf t AS-X-R1(config)#router bgp X AS-X-R1(config-router)#address-family ipv4 vrf vpn-as14X AS-X-R1(config-router-af)#redistribute connected AS-X-R1(config-router-af)#neighbor X.14X.2.2 remote-as 6514X AS-X-R1(config-router-af)#neighbor X.14X.2.2 activate AS-X-R1(config-router-af)#no synchronization AS-X-R1(config-router-af)#end v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 477 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R2#conf t AS-X-R2(config)#ip vrf vpn-as15X AS-X-R2(config-vrf)#rd X:15X AS-X-R2(config-vrf)#route-target export X:15X AS-X-R2(config-vrf)#route-target import X:15X AS-X-R2(config-vrf)#exit AS-X-R2(config)#interface serial 1/2 AS-X-R2(config-if)#no shut AS-X-R2(config-if)#ip vrf forwarding vpn-as15X AS-X-R2(config-if)#ip address X.15X.2.1 255.255.255.252 AS-X-R2(config-if)#end AS-X-R2#ping vrf vpn-as15X X.15X.2.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to X.15X.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/8 ms AS-X-R2# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 478 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R2#conf t AS-X-R2(config)#router bgp X AS-X-R2(config-router)#address-family ipv4 vrf vpn-as15X AS-X-R2(config-router-af)#redistribute connected AS-X-R2(config-router-af)#neighbor X.15X.2.2 remote-as 6515X AS-X-R2(config-router-af)#neighbor X.15X.2.2 activate AS-X-R2(config-router-af)#no synchronization AS-X-R2(config-router-af)#end v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 479 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-14X-R2#conf t AS-14X-R2(config)#router bgp 6514X AS-14X-R2(config-router)#network 192.168.0.0 mask 255.255.255.0 AS-14X-R2(config-router)#neighbor X.14X.2.1 remote-as X AS-14X-R2(config-router)#exit AS-14X-R2(config)#interface loopback 1 AS-14X-R2(config-if)#ip address 192.168.0.1 255.255.255.0 AS-14X-R2(config-if)#end AS-14X-R2# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 480 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-15X-R2#conf t AS-15X-R2(config)#router bgp 6515X AS-15X-R2(config-router)#network 192.168.0.0 mask 255.255.255.0 AS-15X-R2(config-router)#neighbor X.15X.2.1 remote-as X AS-15X-R2(config-router)#exit AS-15X-R2(config)#interface loopback 1 AS-15X-R2(config-if)#ip address 192.168.0.1 255.255.255.0 AS-15X-R2(config-if)#end AS-15X-R2# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 481 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R4#conf t AS-X-R4(config)#ip vrf vpn-as14X AS-X-R4(config-vrf)#rd X:14X AS-X-R4(config-vrf)#route-target export X:14X AS-X-R4(config-vrf)#route-target import X:14X AS-X-R4(config-vrf)#exit AS-X-R4(config)#interface serial 1/1 AS-X-R4(config-if)#no shutdown AS-X-R4(config-if)#ip vrf forwarding vpn-as14X % Interface Serial1/1 IP address X.14X.4.1 removed due to enabling VRF vpn-as14X AS-X-R4(config-if)#ip address X.14X.4.1 255.255.255.252 AS-X-R4(config-if)#end AS-X-R4#ping vrf vpn-as14X X.14X.4.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to X.14X.4.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/8/12 ms v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 482 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R4#conf t AS-X-R4(config)#router bgp X AS-X-R4(config-router)#address-family ipv4 vrf vpn-as14X AS-X-R4(config-router-af)#redistribute connected AS-X-R4(config-router-af)#neighbor X.14X.4.2 remote-as 6414X AS-X-R4(config-router-af)#neighbor X.14X.4.2 activate AS-X-R4(config-router-af)#no synchronization AS-X-R4(config-router-af)#end AS-X-R4# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 483 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-14X-R1(config)#no router bgp 14X AS-14X-R1(config)#router bgp 6414X AS-14X-R1(config-router)#network 172.16.0.0 mask 255.255.255.0 AS-14X-R1(config-router)#neighbor X.14X.4.1 remote-as X AS-14X-R1(config-router)#exit AS-14X-R1(config)#interface loopback 1 AS-14X-R1(config-if)#ip address 172.16.0.1 255.255.255.0 AS-14X-R1(config-if)#end v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 484 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-14X-R1#sh ip bgp BGP table version is 6, local router ID is 14X.1.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> X.14X.2.0/30 X.14X.4.1 0 X ? r> X.14X.4.0/30 X.14X.4.1 0 0 X ? *> 172.16.0.0/24 0.0.0.0 0 32768 i *> 192.168.0.0 X.14X.4.1 0 X 6514X i v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 485 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-14X-R1#traceroute 192.168.0.1 Type escape sequence to abort. Tracing the route to 192.168.0.1 1 X.14X.4.1 8 msec 4 msec 4 msec 2 X.X.4.1 [MPLS: Labels 16/28 Exp 0] 16 msec 12 msec 12 msec 3 X.14X.2.1 [AS 1] [MPLS: Label 28 Exp 0] 16 msec 12 msec 12 msec 4 X.14X.2.2 [AS 1] 8 msec * 20 msec v2.2 *beta3 | Autor: RinaldoVaz | rinaldopvaz@gmail.com 486 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R5#conf t AS-X-R5(config)#ip vrf vpn-as15X AS-X-R5(config-vrf)#rd X:15X AS-X-R5(config-vrf)#route-target export X:15X AS-X-R5(config-vrf)#route-target import X:15X AS-X-R5(config-vrf)#exit AS-X-R5(config)#interface serial 1/1 AS-X-R5(config-if)#no shutdown AS-X-R5(config-if)#ip vrf forwarding vpn-as15X AS-X-R5(config-if)#ip address X.15X.5.1 255.255.255.252 AS-X-R5(config-if)#end AS-X-R5#ping vrf vpn-as15X X.15X.5.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to X.15X.5.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/4 ms v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 487 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R5#conf t AS-X-R5(config)#router bgp X AS-X-R5(config-router)#address-family ipv4 vrf vpn-as15X AS-X-R5(config-router-af)#redistribute connected AS-X-R5(config-router-af)#neighbor X.15X.5.2 remote-as 6415X AS-X-R5(config-router-af)#neighbor X.15X.5.2 activate AS-X-R5(config-router-af)#no synchronization AS-X-R5(config-router-af)#end v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 488 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-15X-R1(config)#no router bgp 15X AS-15X-R1(config)#router bgp 6415X AS-15X-R1(config-router)#network 172.16.0.0 mask 255.255.255.0 AS-15X-R1(config-router)#neighbor X.15X.5.1 remote-as X AS-15X-R1(config-router)#exit AS-15X-R1(config)#interface loopback 1 AS-15X-R1(config-if)#ip address 172.16.0.1 255.255.255.0 AS-15X-R1(config-if)#end AS-15X-R1# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 489 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-15X-R1#sh ip bgp BGP table version is 6, local router ID is 15X.1.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> X.15X.2.0/30 X.15X.5.1 0 X ? r> X.15X.5.0/30 X.15X.5.1 0 0 X ? *> 172.16.0.0/24 0.0.0.0 0 32768 i *> 192.168.0.0 X.15X.5.1 0 X 6515X i v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 490 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-15X-R1#traceroute 192.168.0.1 Type escape sequence to abort. Tracing the route to 192.168.0.1 1 X.15X.5.1 4 msec 4 msec 4 msec 2 X.X.5.1 [MPLS: Labels 17/27 Exp 0] 8 msec 12 msec 16 msec 3 X.15X.2.1 [AS 1] [MPLS: Label 27 Exp 0] 12 msec 12 msec 8 msec 4 X.15X.2.2 [AS 1] 16 msec * 12 msec AS-15X-R1# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 491 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R1#sh ip bgp vpnv4 vrf vpn-as14X BGP table version is 10, local router ID is X.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path Route Distinguisher: 1:141 (default for vrf vpn-as141) *> X.14X.2.0/30 0.0.0.0 0 32768 ? *>iX.14X.4.0/30 X.0.0.4 0 100 0 ? *>i172.16.0.0/24 X.0.0.4 0 100 0 6414X i *> 192.168.0.0 X.14X.2.2 0 0 6514X i v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 492 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R1#sh ip bgp vpnv4 vrf vpn-as14X 172.16.0.0 BGP routing table entry for X:14X:172.16.0.0/24, version 10 Paths: (1 available, best #1, table vpn-as14X) Advertised to update-groups: 2 6414X X.0.0.4 (metric 129) from X.0.0.4 (X.0.0.4) Origin IGP, metric 0, localpref 100, valid, internal, best Extended Community: RT:X:14X mpls labels in/out nolabel/25 AS-X-R1# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 493 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R1#show mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag X.X.2.0/30 0 Se1/1 point2point 17 Pop tag X.0.0.3/32 0 Se1/1 point2point 18 17 X.0.0.2/32 0 Se1/1 point2point 19 Pop tag X.X.4.0/30 0 Se1/1 point2point 20 18 X.0.0.5/32 0 Se1/1 point2point 21 Pop tag X.X.5.0/30 0 Se1/1 point2point 22 19 X.0.0.4/32 0 Se1/1 point2point 23 20 X.X.100.0/30 0 Se1/1 point2point 24 Pop tag X.X.200.0/24 0 Se1/1 point2point 25 l2ckt(999) 104473 none point2point 26 Aggregate X.14X.2.0/30[V] 520 28 Untagged 192.168.0.0/24[V] 1768 Se1/2 point2point AS-X-R1# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 494 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R2#sh ip bgp vpnv4 vrf vpn-as15X BGP table version is 13, local router ID is X.0.0.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path Route Distinguisher: X:15X (default for vrf vpn-as151) *> X.15X.2.0/30 0.0.0.0 0 32768 ? *>iX.15X.5.0/30 X.0.0.5 0 100 0 ? *>i172.16.0.0/24 X.0.0.5 0 100 0 6415X i *> 192.168.0.0 X.15X.2.2 0 0 6515X i v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 495 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R2#sh ip bgp vpnv4 vrf vpn-as15X 172.16.0.0 BGP routing table entry for X:15X:172.16.0.0/24, version 9 Paths: (1 available, best #1, table vpn-as15X) Advertised to update-groups: 1 6415X X.0.0.5 (metric 129) from X.0.0.5 (X.0.0.5) Origin IGP, metric 0, localpref 100, valid, internal, best Extended Community: RT:X:15X mpls labels in/out nolabel/24 AS-X-R2# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 496 8.3 Implementando serviço VPN-L3 LAB 2-5-10 AS-X-R2#show mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 16 X.0.0.1/32 0 Se1/1 point2point 17 Pop tag X.X.1.0/30 0 Se1/1 point2point 18 Pop tag X.0.0.3/32 0 Se1/1 point2point 19 Pop tag X.X.4.0/30 0 Se1/1 point2point 20 18 X.0.0.5/32 0 Se1/1 point2point 21 Pop tag X.X.5.0/30 0 Se1/1 point2point 22 19 X.0.0.4/32 0 Se1/1 point2point 23 20 X.X.100.0/30 0 Se1/1 point2point 24 Pop tag X.X.200.0/24 0 Se1/1 point2point 25 l2ckt(999) 107714 none point2point 26 Aggregate X.15X.2.0/30[V] 0 28 Untagged 192.168.0.0/24[V] 0 Se1/2 point2point AS-X-R2# v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 497 PERGUNTAS?PERGUNTAS? 8.3 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 498 MATERIAL EXTRAO trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 499 9.0 Mecanismos de Path Control O trabalho Curso de BGP Design com Roteadores Cisco de Rinaldo Vaz foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Podem estar disponíveis autorizações adicionais ao âmbito desta licença em rinaldopvaz@gmail.com. http://creativecommons.org/choose/anid.com.br/cursobgp http://creativecommons.org/licenses/by/3.0/ mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 500 9.0 Mecanismos de Path Control 8. Mecanismos de Path Control • 8.1 PBR – Policy Based Routing • 8.2 IP SLA Tool Agradecimentos especiais para Roberto Mendonça, autor dos dois próximos sub-capítulos http://www.robertomendonca.com.br/ v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 501 Mecanismos de Path Control Path Control são mecanismos que mudam o encaminhamento padrão de um pacote através de uma rede. Não se trata de QoS ou Engenharia de Tráfego. Trata-se de uma coleção de ferramentas ou conjunto de comandos que são ativados para manipular a tabela de encaminhamento de um protocolo de roteamento ou bypass o encaminhamento padrão de um pacote. Esta manipulação de informações de roteamento pode ser requerida para obter melhor desempenho. 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 502 Alguns Tópicos para Implementar Path Control – PBR – Policy-Based Routing; – IP SLA Tool (Service Level Agreements) 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 503 Para entender PBR, primeiro precisamos revisitar o conceito de roteamento padrão: ✔ 1.Quando um pacote chega à uma interface de um router, este examina o endereço de destino do pacote contra a sua tabela de roteamento. ✔ 2. Se a rede destino for conhecida pelo router (ou seja, constar na tabela), o pacote é encaminhado para a interface de saída indicada. ✔ 3. Se a rede destino não for conhecida e existir uma rota default, o pacote é encaminhado para a interface de saída apontada por ela. ✔ 4. Se nenhum dos dois casos acima ocorrer, o router descarta o pacote. 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 504 Policy-based routing quebra o processo default de roteamento, permitindo que pacotes sejam roteados baseados em políticas pré- definidas e não apenas no endereço de destino. Para isso, ROUTE-MAPs são usados, especificando condições que devem ser examinadas e para onde os pacotes devem ser encaminhados caso estas condições sejam verificadas. 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 505 Um exemplo genérico de aplicação de PBRs pode ser visto na figura abaixo: 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 506 Para implementar o cenário ilustrado anteriormente, apenas três passos são necessários: 1. Defina um route-map e a política que identificará o pacote (MATCH); 2. Defina para onde o pacote deve ir, caso um MATCH ocorra (SET); 3. Aplique o route-map na interface para análise dos pacotes à medida que entram (IN). 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 507 Ao criar um route-map para ser usado com PBR, existem algumas opções de MATCH à escolher, por exemplo: – Match ip address (utiliza listas de acesso para checagem) – Match lenght (utiliza um intervalo mínimo e máximo do tamanho do pacote, em bytes) 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 508 E temos algumas opções de SET à escolher: – Set ip next-hop (especifica o IP de next-hop para o pacote – deve ser uma subrede diretamente conectada); – Set ip default next-hop (o mesmo acima, porém, o roteador tentará antes o roteamento convencional, mas não usa rota default); – Set interface (especifica a interface de saída do pacote); – Set default interface (mesmo acima, porém, o roteador tentará antes o roteamento convencional, mas não usa rota default). 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 509 Exemplo padrão: 9.1 PBR – Policy Based Routing v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 510 PBR para que pacotes originados pelo PC2 sigam via R3: 9.1 PBR – Policy Based Routing PBR Aplicada para origem 10.1.1.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 511 Configurações: 9.1 PBR – Policy Based Routing R1(config)#interface F0/0 R1(config-if)#ip policy route-map PC2-via-R3 R1(config-if)#exit R1(config)#route-map PC2-via-R3 permit 10 R1(config-route-map)#match ip address 101 R1(config-route-map)#set ip next-hop 10.1.14.4 R1(config-route-map)#exit R1(config-if)#access-list 101 permit ip host 10.1.1.2 10.1.3.0 0.0.0.255 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 512 PERGUNTAS?PERGUNTAS? 9.1 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 513 IP SLA Tool – O oferecimento de serviços gerenciados vêm se consolidando como uma tendência já há algum tempo, e alguns fabricantes disponibilizam algumas ferramentas que podem nos ajudar a melhorar uma rede e nos alertar de eventuais problemas, assim que estes aparecerem. – Em um mundo em que soluções de IP Telephony e vídeoconferência IP vêm se tornando parte do dia-a-dia das empresas, a ferramenta IOS IP SLA pode ser uma poderosa aliada. 9.2 IP SLA Tool v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 514 O IP SLA é um recurso presente em algumas versões do IOS da Cisco, que permite o gerenciamento proativo das condições da rede monitorada. Basicamente, gera-se um tráfego específico de um dispositivo (transmitter) com destino a outro (responder), que responde a este tráfego e medições são realizadas no decorrer do processo. Esta ferramenta torna muito mais simples tarefas como verificação do correto funcionamento das políticas de QoS, e também permite certificarmos-nos que estamos cumprindo os acordos de “uptime” assinados com o cliente, por exemplo. 9.2 IP SLA Tool v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 515 Para habilitar o IP SLA, é necessário configurar ao menos 2 elementos: O “transmitter” e o “responder”. A configuração do responder é bastante simples (uma linha de comando, apenas). Ao iniciar a operação, o transmitter envia mensagens de controle ao responder. Estas mensagens de controle informam ao responder qual porta lógica (TCP ou UDP) deve ser usada para as requisições do transmitter. A ativação do serviço “responder” pode nem ser necessária, se o elemento que irá responder às solicitações do transmitter já estiver aguardando dados nas portas a serem testadas (ex. o serviço HTTP já está ativado no router que agirá como responder, e este é o serviço que queremos “medir”). 9.2 IP SLA Tool v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 516 Este recurso funciona muito bem em diversas topologias, incluindo topologias “hub & spoke” (estrela). Neste caso, normalmente, você teria o HUB como responder, e os spokes como transmitters. Uma vez que o serviço SLA esteja devidamente configurado no transmissor, sua operação precisa ser agendada. As estatísticas apenas serão coletadas quando a configuração estiver operacional. As atividades de geração de tráfego e coleta podem ser agendadas para iniciar de imediato, ou em uma data / hora pré-determinadas. Podem ainda ser iniciadas sob certas condições específicas.9.2 IP SLA Tool v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 517 Exemplo: Aqui temos OSPF single-area ativado nesta rede, para garantir conectividade fim-a-fim. Vamos ativar o IP SLA neste cenário para monitorar um determinado serviço que roda na porta UDP 1234, de R1 para a interface Loopback0 de R3. Vamos começar ativando o IP SLA no responder (R3) : 9.2 IP SLA Tool R3#conf t R3(config)#ip sla {monitor} responder v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 518 Verificando: 9.2 IP SLA Tool R3#show ip sla responder IP SLAs Responder is: Enabled Number of Control Message received: 0 Number os errors:0 Recent Sources: Recent error sources: v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 519 Configurando R1 como “transmiter”: Vamos agora configurar o R1 como transmitter, gerando o tráfego que determinamos para a loopback de R3 (responder) : Aqui, criamos uma operação com o ID 1 que gerará um pacote com destino à porta UDP 1234 ao IP 150.1.3.3 (L0 do responder), à cada 30 segundos. 9.2 IP SLA Tool R1(config)#ip sla {monitor} 1 R1(config-ip-sla)#{type} udp-echo 150.1.3.3 1234 R1(config-ip-sla-udp)#frequency 30 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 520 Configurando R1 como “transmiter”: Vamos iniciar a operação de imediato: 9.2 IP SLA Tool R1(config)#ip sla {monitor} schedule 1 life forever start-time now v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 521 Vamos observar como estão as coisas em R1, nosso transmitter: 9.2 IP SLA Tool R1#show ip sla {monitor} configuration 1 IP SLAs, Infrastructure Engine-II. Entry number: 1 Owner: Tag: Type of operation to perform: udp-echo Target address/Source address: 150.1.3.3/0.0.0.0 Target port/Source port: 1234/0 Request size (ARR data portion): 16 Operation timeout (milliseconds): 5000 Operation frequency (seconds): 30 (not considered if randomly scheduled) Next Scheduled Start Time: Start Time already passed Threshold (milliseconds): 5000 Distribution Statistics: [...] v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 522 Vamos observar como está do lado do responder (R3): 9.2 IP SLA Tool R3#show ip sla responder IP SLAs Responder is: Enabled Number of control message received: 9 Number of errors: 0 Recent sources: 192.168.12.1 [13:36:17.971 UTC Mon Jun 26 2011] 192.168.12.1 [13:35:47.971 UTC Mon Jun 26 2011] 192.168.12.1 [13:35:17.959 UTC Mon Jun 26 2011] 192.168.12.1 [13:34:47.951 UTC Mon Jun 26 2011] 192.168.12.1 [13:34:17.999 UTC Mon Jun 26 2011] Recent error sources: v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 523 Agora, vamos associar uma ação ao resultado do IP SLA... Por exemplo, uma rota estática que apenas existe se as condições do IP SLA forem atendidas...!! 9.2 IP SLA Tool R1#conf t R1(config)#track 1 rtr 1 state R1(config-track)#exit R1(config)#ip route 123.123.123.0 255.255.255.0 192.168.12.2 track 1 R1#sh ip route static 123.0.0.0/24 is subnetted, 1 subnets S 123.123.123.0 [1/0] via 192.168.12.2 R1(config)#ip sla {monitor} 1 R1(config-ip-sla)#{type} udp-echo 123.123.123.3 1234 R1(config-ip-sla-udp)#frequency 30 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 524 Como nosso SLA falhou, a rota recém-criada deve sumir da tabela, já que estava associada à condição do nosso SLA (track 1 rtr 1): 9.2 IP SLA Tool R3(config)#int l0 R3(config-if)#shutdown R3(config-if)# *Jul 28 00:14:11.219: %LINK-5-CHANGED: Interface Loopback0,changed state to administratively down *Jul 28 00:14:12.219: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down R1# *Jul 28 00:15:41.671: %TRACKING-5-STATE: 1 rtr 1 state Up->Down R1#sh ip sla statistics 1 Round Trip Time (RTT) for Index 1 Latest RTT: NoConnection/Busy/Timeout Latest operation start time: *00:15:23.031 UTC Mon Jul 28 2008 Latest operation return code: No connection Number of successes: 9 Number of failures: 1 Operation time to live: Forever R1#sh ip route 123.123.123.0 % Network not in table v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 525 É possível associar um PBR a uma condição testada pelo IP SLA Tool, também. Eis um exemplo: Enquanto o estado do objeto estiver UP, o PBR funcionará conforme configurado. Se o objeto em teste mudar de estado (down), a cláusula “SET” não será executada. 9.2 IP SLA Tool set ip next-hop 10.1.14.4 !--- PBR normal, como vimos anteriormente. set ip next-hop verify-availability 10.1.14.4 1 track 1 !--- Aqui, usamos o parâmetro “verify availability” e associamos o teste para o objeto “1”. v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 526 PERGUNTAS?PERGUNTAS? 9.2 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 527 MUITO OBRIGADO!!MUITO OBRIGADO!! v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 528 100% desse material foi elaborado utilizando software livre, e é livre para ser copiado e distribuído desde que gratuitamente. Está é a versão 2.2 *beta3 Para reportar erros ou solicitar a versão mais recente entre em contado por email: rinaldopvaz@gmail.com Autor: Rinaldo Vaz Posfácio mailto:rinaldopvaz@gmail.com v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 529 Mudanças previstas na versão 2.2 final Previsão de lançamento: 4/1/2013 Mais conteúdo Cap 8 ✔ Textos explicativos e figuras em todo o capítulo sobre MPLS, que até a versão atual 2.2*beta3 só tem os comandos necessários Subcapítulo: “Filma eu Galvão” ✔ Contribuições enviadas por alunos que participaram do cursos anteriores Errata ATENÇÃO! TODAS AS VERSÕES ANTERIORES A ESSA SÃO CONSIDERADAS OBSOLETAS v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 530 CHANGELOG versão 2.2 *beta2 – 2.2 *beta3: 20/12/2012 ● Correções Cap 7.3 ✔ Inserida linha com o comando “no bgp enforce-fist-as” na configuração do BGP com o PTT em R1, e nos routers dos AS's 14X e 15X ✔ Inserida linha de comando da rota estática do primeiro /9 apontando para “Null 0” , o que impossibilitava os routers dos AS's 14X e 15X de anunciar essa rede para o PTT Cap 7.5 ✔ Corrigida a ação da as-path access-list 55, onde deny era para ser permit, e permit era para ser deny Cap 8.1 ✔ Corrigida a quinta linha na configuração de R5 onde o IP de neighbor era X.0.0.2, o correto é X.0.0.X Cap 8.3 ✔ Corrigida a décima linha na configuração de R2, onde o IP a ser configurado é X.15X.2.1 e não X.15X.2.2 Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 531 CHANGELOG versão 2.2 *beta – 2.2 *beta2: 14/12/2012 ● Correções ✗ Laboratórios: Cenário 1 ✔ Corrigida configuração padrão que mantinha a interface f0/0 desativada Cap 7.0 ✔ Mudança no indice. Removido PBR que virou um novo capítulo – Mais conteúdo Cap 5.8 ✔ Inserido a sessão “cheats” com as respostas do LAB “Desafio” ✔ Inseridos comandos para remover as config do LAB “Desafio” ✔ Número total de slides de 539 para 544 Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 532 CHANGELOG versão 2.1 – 2.2 *beta: 10/12/2012 ● Correções ✗ Laboratórios: Cenário 1 ✔ Corrigida configuração padrão que mantinha a interface f0/0 desativada – Mais conteúdo ● Inserido um novo capítulo: Multiprotocol Label Switching (MPLS) ● Subcapítulos: ✔ 8.1 BGP através da nuvem MPLS ✔ 8.2 AtoM - Any Transport Over MPLS ✔ 8.3 Implementando serviço VPN-L3 (VPN-Multiponto) ● 6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities ✔ Inserida a relação das communities da GVT (...) Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 533 CHANGELOG versão 2.1 – 2.2 *beta: 10/12/2012 (...) – Laboratórios: ● Cenário 2 – Novo modelo de roteadores para todos o cenário 2 – Cisco 3725 – 2 roteadores a mais para o Lab MPLS VPN-L3, passando de 7 para o total de 9 roteadoras para cada grupo ● Outras mudanças ✔ Número total de slides aumentou de 485 para 539 ✔ Pequenas correções nas confgurações ✔ Mais figuras explicativas✔ Capítulo 8 (Mecanismos de Path Control) movido para capítulo 9 Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 534 CHANGELOG versão 2.0 – 2.1: 05/10/2012 ● Mudança no layout ✔ Cores, fontes e gráficos melhorados ● Correções ✗ Capítulo 4 ✗ 4.4 - Expressões regulares ✔ Corrigidas algumas expressões ✔ Conteúdo ampliado com mais exemplos prático ● Mais conteúdo ✗ 4.7 - AS-Path Prepend ✔ Adicionados mais slides com figuras e exemplos de configuração de prepend de saída ✗ Adicionado um novo slide com exemplo de prepend de entrada (...) Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 535 CHANGELOG versão 2.0 – 2.1: 05/10/2012 (...) ✔ Inserido um novo capítulo: Mecanismos de Path Control ● Subcapítulos: – PBR – policy Based Routing – IP SLA Tool ● Outras mudanças ✔ Número total de slides aumentou de 434 para 485 ✔ Pequenas correções nas confgurações ✔ Foram adicinadas mais figuras ✔ Novos slides com configurações que deveriam ser desfeitas antes de iniciar o próximo laboratório Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 536 CHANGELOG versão 1.1 – 2.0: 26/07/2012 ● Mudança no layout ✔ Cores, fontes e gráficos melhorados ● Novos sub-capítulos ✗ Engenharia de tráfego, Alta Disponibilidade, Transporte L2, e outros ● Diversas outras correções ✗ Explicações mais claras ✗ Inseridas mais linhas de comentários explicativos ✗ Melhoradas algumas expressões regulares ✗ Incluídas figuras dos cenários ✗ E muitas outras melhorias ✗ Total de slides aumentados de 363 para 434 Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 537 CHANGELOG versão 1.0 – 1.1: 23/04/2012 ● 2.6 Slide de abertura do sub-capítulo: ✔ corrigido slide 2.6 trocado pelo 2.7 ● 2.7 Corrigido erro de digitação: ✗ erro: "...último /10..." ✔ correção: "... último /9..." ● 3.1 saída do comando "sh ip bgp neighbors (peering) advertise-routes": ✗ corrigidos 2 prefixos que apareciam errados como /10, ✔ o correto são 3 prefixos, um /8 e dois /9 ● 3.1 saída do comando "sh ip bgp regexp ^2$": ✗ corrigidos 2 prefixos que apareciam errados como /10, ✔ o correto são 3 prefixos, um /8 e dois /9 Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 538 CHANGELOG versão 1.0 – 1.1: 23/04/2012 ● 2.6 Slide de abertura do sub-capítulo: ✔ corrigido slide 2.6 trocado pelo 2.7 ● 2.7 Corrigido erro de digitação: ✗ erro: "...último /10..." ✔ correção: "... último /9..." ● 3.1 saída do comando "sh ip bgp neighbors (peering) advertise-routes": ✗ corrigidos 2 prefixos que apareciam errados como /10, ✔ o correto são 3 prefixos, um /8 e dois /9 ● 3.1 saída do comando "sh ip bgp regexp ^2$": ✗ corrigidos 2 prefixos que apareciam errados como /10, ✔ o correto são 3 prefixos, um /8 e dois /9 Errata v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 539 CHANGELOG versão 1.0 – 1.1: 23/04/2012 ● 3.5 Descrição de participante remoto no PTT: ✔ a explicação ficou mais clara com relação às consequências da latência mais alta ● 4.2 Precauções para filtros de UPSTREAMS: ✗ Erro: "... Garantir que rotas de DOWNSTREAMS não recebam prioridade maior..." ✔ Correção: "...Garantir que rotas de UPSTREAMS nao recebam prioridade maior que rotas DOWNSTREAMS..." ● 4.2 Utilização do (ge) e (le), corrigido erro de digitação: ✗ Erro: "... aceitar qualquer prefixo /25 e descartar..." ✔ Correção: "... aceitar qualquer prefixo /24 e descartar..." v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 540 CHANGELOG versão 1.0 – 1.1: 23/04/2012 ● 4.2 adicionando prefixos na lista "NAO-RECEBER", corrigidos acões de permit erradas: ● Erro: ...seq 70 permit... ● ...seq 80 permit... ● ...seq 90 permit... ● Correção: ...seq 70 deny... ● ...seq 80 deny... ● ...seq 90 deny... ● 4.6 expressão regular de parcial, modificada para apenas uma linha, e adicionado um terceiro exemplo para parcial de 3 AS's no path: ✔ nova expressão: ^([0-9]+|[0-9]+ [0-9]+)$ v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 541 CHANGELOG versão 1.0 – 1.1: 23/04/2012 ● 4.8 Mudança de título: ✗ Anterior: Manipulando downstream com route-map e prepend ✔ Atual: Manipulando trânsito dos downstreams com prepend ● 6.1 e 6.2 Sub-capítulo sobre expressões regulares: ✔ Movidos de 6.1/6.2 para 4.4/4.5 , 4.4 mudou para 4.6, 4.5 para 4.7, 4.6 para 4.8 e 4.7 para 4.9 ● 5.1 Diagrama do cenário 5: Corrigido terceiro octeto da rede dos laptops ✗ Erro: x.x.100.0/24 ✔ Correção: x.x.200.0/24 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 542 CHANGELOG versão 1.0 – 1.1: 23/04/2012 ● 5.1 Diagrama do cenário 5: ✔ a partir da versão 1.2 Serão modificados número dos AS's clientes de 11x e 12x para 14x e 15x (para o grupo 7 ocorria um erro ao utilizar o IP 127.0.0.1) ● 5.1 configurações iBGP, corrigido IP errado na configuração de R1 com R5 ✗ Erro:"...neighbor X.0.0.2 remote-as X" "...neighbor X.0.0.2 description iBGP Router 2 ✔ Correção: "...neighbor X.0.0.5 remote-as X" "...neighbor X.0.0.5 description iBGP Router 5 v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 543 CHANGELOG versão 1.0 – 1.1: 23/04/2012 ● 5.1 configuração eBGP com AS 200 (segunda rodada), corrigido endereço incorreto de neighbor: ✗ erro: "...neighbor 200.X.1.1 remote-as 100" ”...neighbor 200.X.1.1 soft-reconfiguration inbound" "...neighbor 200.X.1.1 route-map ANUNCIAR-AS-200 out" ✔ correção: "...neighbor 200.X.2.1 remote-as 200" "...neighbor 200.X.2.1 soft-reconfiguration inbound" "...neighbor 200.X.2.1 route-map ANUNCIAR-AS-200 out" ● 5.1 Configuração iBGP entre R2 > R3, corrigido número da loopback faltando ✗ erro: "...neighbor X.0.0.3 update-source loopback " ✔ correção: "...neighbor X.0.0.3 update-source loopback 0" v2.2 *beta3 | Autor: Rinaldo Vaz | rinaldopvaz@gmail.com 544 CHANGELOG versão 1.0 – 1.1: 23/04/2012 ● 5.1 Configuração iBGP entre R3>todos ✗ erro: alguns IPs errados ✔ correção: corrigidos IPs corretos para R1, R2, R4 e R5 ● 6.1 LAB 2, communities padrão ✔ Incluida uma explicação mais clara dos objetivos do LAB 7.3 Corrigida expressão regular de permitir saida apenas de prefixos originados ”diretamente” do downstream: ✗ erro: ”_20$” ● forma correta: ”(20_|20$)” ● Adicionadas mais imagens para facilitar a visualização das configurações Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Slide 72 Slide 73 Slide 74 Slide 75 Slide 76 Slide 77 Slide 78 Slide 79 Slide 80 Slide 81 Slide 82 Slide 83 Slide 84 Slide 85 Slide 86 Slide 87 Slide 88 Slide 89 Slide 90 Slide 91 Slide 92 Slide 93 Slide 94 Slide 95 Slide 96 Slide 97 Slide 98 Slide 99 Slide 100 Slide 101 Slide 102 Slide 103 Slide 104 Slide 105 Slide 106 Slide 107 Slide 108 Slide 109 Slide 110 Slide 111 Slide 112 Slide 113 Slide 114 Slide 115 Slide 116 Slide 117 Slide 118 Slide 119 Slide 120 Slide 121 Slide 122 Slide 123 Slide 124 Slide 125 Slide 126 Slide 127 Slide 128 Slide 129 Slide 130 Slide 131 Slide 132 Slide 133 Slide 134 Slide 135 Slide 136 Slide 137 Slide 138 Slide 139 Slide 140 Slide 141 Slide 142 Slide 143 Slide 144 Slide 145 Slide 146 Slide 147 Slide 148 Slide 149 Slide 150 Slide 151 Slide152 Slide 153 Slide 154 Slide 155 Slide 156 Slide 157 Slide 158 Slide 159 Slide 160 Slide 161 Slide 162 Slide 163 Slide 164 Slide 165 Slide 166 Slide 167 Slide 168 Slide 169 Slide 170 Slide 171 Slide 172 Slide 173 Slide 174 Slide 175 Slide 176 Slide 177 Slide 178 Slide 179 Slide 180 Slide 181 Slide 182 Slide 183 Slide 184 Slide 185 Slide 186 Slide 187 Slide 188 Slide 189 Slide 190 Slide 191 Slide 192 Slide 193 Slide 194 Slide 195 Slide 196 Slide 197 Slide 198 Slide 199 Slide 200 Slide 201 Slide 202 Slide 203 Slide 204 Slide 205 Slide 206 Slide 207 Slide 208 Slide 209 Slide 210 Slide 211 Slide 212 Slide 213 Slide 214 Slide 215 Slide 216 Slide 217 Slide 218 Slide 219 Slide 220 Slide 221 Slide 222 Slide 223 Slide 224 Slide 225 Slide 226 Slide 227 Slide 228 Slide 229 Slide 230 Slide 231 Slide 232 Slide 233 Slide 234 Slide 235 Slide 236 Slide 237 Slide 238 Slide 239 Slide 240 Slide 241 Slide 242 Slide 243 Slide 244 Slide 245 Slide 246 Slide 247 Slide 248 Slide 249 Slide 250 Slide 251 Slide 252 Slide 253 Slide 254 Slide 255 Slide 256 Slide 257 Slide 258 Slide 259 Slide 260 Slide 261 Slide 262 Slide 263 Slide 264 Slide 265 Slide 266 Slide 267 Slide 268 Slide 269 Slide 270 Slide 271 Slide 272 Slide 273 Slide 274 Slide 275 Slide 276 Slide 277 Slide 278 Slide 279 Slide 280 Slide 281 Slide 282 Slide 283 Slide 284 Slide 285 Slide 286 Slide 287 Slide 288 Slide 289 Slide 290 Slide 291 Slide 292 Slide 293 Slide 294 Slide 295 Slide 296 Slide 297 Slide 298 Slide 299 Slide 300 Slide 301 Slide 302 Slide 303 Slide 304 Slide 305 Slide 306 Slide 307 Slide 308 Slide 309 Slide 310 Slide 311 Slide 312 Slide 313 Slide 314 Slide 315 Slide 316 Slide 317 Slide 318 Slide 319 Slide 320 Slide 321 Slide 322 Slide 323 Slide 324 Slide 325 Slide 326 Slide 327 Slide 328 Slide 329 Slide 330 Slide 331 Slide 332 Slide 333 Slide 334 Slide 335 Slide 336 Slide 337 Slide 338 Slide 339 Slide 340 Slide 341 Slide 342 Slide 343 Slide 344 Slide 345 Slide 346 Slide 347 Slide 348 Slide 349 Slide 350 Slide 351 Slide 352 Slide 353 Slide 354 Slide 355 Slide 356 Slide 357 Slide 358 Slide 359 Slide 360 Slide 361 Slide 362 Slide 363 Slide 364 Slide 365 Slide 366 Slide 367 Slide 368 Slide 369 Slide 370 Slide 371 Slide 372 Slide 373 Slide 374 Slide 375 Slide 376 Slide 377 Slide 378 Slide 379 Slide 380 Slide 381 Slide 382 Slide 383 Slide 384 Slide 385 Slide 386 Slide 387 Slide 388 Slide 389 Slide 390 Slide 391 Slide 392 Slide 393 Slide 394 Slide 395 Slide 396 Slide 397 Slide 398 Slide 399 Slide 400 Slide 401 Slide 402 Slide 403 Slide 404 Slide 405 Slide 406 Slide 407 Slide 408 Slide 409 Slide 410 Slide 411 Slide 412 Slide 413 Slide 414 Slide 415 Slide 416 Slide 417 Slide 418 Slide 419 Slide 420 Slide 421 Slide 422 Slide 423 Slide 424 Slide 425 Slide 426 Slide 427 Slide 428 Slide 429 Slide 430 Slide 431 Slide 432 Slide 433 Slide 434 Slide 435 Slide 436 Slide 437 Slide 438 Slide 439 Slide 440 Slide 441 Slide 442 Slide 443 Slide 444 Slide 445 Slide 446 Slide 447 Slide 448 Slide 449 Slide 450 Slide 451 Slide 452 Slide 453 Slide 454 Slide 455 Slide 456 Slide 457 Slide 458 Slide 459 Slide 460 Slide 461 Slide 462 Slide 463 Slide 464 Slide 465 Slide 466 Slide 467 Slide 468 Slide 469 Slide 470 Slide 471 Slide 472 Slide 473 Slide 474 Slide 475 Slide 476 Slide 477 Slide 478 Slide 479 Slide 480 Slide 481 Slide 482 Slide 483 Slide 484 Slide 485 Slide 486 Slide 487 Slide 488 Slide 489 Slide 490 Slide 491 Slide 492 Slide 493 Slide 494 Slide 495 Slide 496 Slide 497 Slide 498 Slide 499 Slide 500 Slide 501 Slide 502 Slide 503 Slide 504 Slide 505 Slide 506 Slide 507 Slide 508 Slide 509 Slide 510 Slide 511 Slide 512 Slide 513 Slide 514 Slide 515 Slide 516 Slide 517 Slide 518 Slide 519 Slide 520 Slide 521 Slide 522 Slide 523 Slide 524 Slide 525 Slide 526 Slide 527 Slide 528 Slide 529 Slide 530 Slide 531 Slide 532 Slide 533 Slide 534 Slide 535 Slide 536 Slide 537 Slide 538 Slide 539 Slide 540 Slide 541 Slide 542 Slide 543 Slide 544