apostila-completa_curso_bgp_design_v2-1

485
BGP Design com Roteadores Cisco Instrutor: Rinaldo Vaz Analista de Redes Responsável técnico pelo AS 28135 Versão do material: 2.1 Última publicação: 08/10/2012 1.0 Esse material foi utilizado no curso de Recife-PE nos dias 24, 25, 26, 27 e 28 de setembro de 2012 O próximo curso será em Belo Horizonte nos dias 10,11,12,13 e 14 de dezembro de 2012

Transcript of apostila-completa_curso_bgp_design_v2-1

Page 1: apostila-completa_curso_bgp_design_v2-1

BGP Design com Roteadores Cisco

Instrutor: Rinaldo Vaz Analista de Redes Responsável técnico pelo AS 28135

Versão do material: 2.1Última publicação: 08/10/2012

1.0✔ Esse material foi utilizado no curso de Recife-PE nos dias 24, 25, 26, 27 e 28 de setembro de 2012

✔ O próximo curso será em Belo Horizonte nos dias 10,11,12,13 e 14 de dezembro de 2012

Page 2: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 [email protected].

Versão do material: 2.1Última publicação: 08/10/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

Page 3: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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!

Page 4: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 0Estática 1eBGP 20EIGRP (Interno) 90IGRP 100OSPF 110ISIS 115RIP 120EGP 140EIGRP (Externo) 170iBGP 200BGP Local 200Desconhecido 255

Page 5: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 é

Page 6: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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;

Page 7: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 8: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 8

Requisitos para se tornar um Sistema Autônomo

1.2

Page 9: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 10: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 10

Preenchendo o Formulário do registro.br

1.3

Page 11: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 12: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 12

Quando utilizar

IGP e EGP

1.4

Page 13: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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:

Page 14: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 15: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 15

Atributos BGP

1.5

Page 16: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 17: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 18: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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:

Page 19: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 19

Entendendo o Processo de

Escolha de Rotas

1.6

Page 20: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 haja um prefixo mais específico esse sempre será preferido independentemente dos seus atributos "mais favoráveis".

Page 21: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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).

Page 22: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 23: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 23

PERGUNTAS?PERGUNTAS?

1.6

Page 24: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 24

2.0Primeiros Passospara Aparecer na Internet2. 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 [email protected].

Page 25: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 25

Configurando BGP com apenas um link

2.1

Page 26: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 27: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 28: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 29: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 30: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 31: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 32: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 33: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 34: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 35: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 36: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 BGPGX-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 routerGX-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 networksGX-R1(config-router)#end!--- volta ao modo provilegiadoGX-R1# clear ip bgp 100.X.1.1!--- reinicia a sesão BGP

LAB 1-1-1

Page 37: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 38: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 39: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 40: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 40

PERGUNTAS?PERGUNTAS?

2.1

Page 41: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 41

Analisando as rotas recebidas

2.2

Page 42: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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...

Page 43: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 44: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 45: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 46: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 47: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 48: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 49: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 50: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 51: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 52: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 53: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 54: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 tipo NOTIFICATION 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

Page 55: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 56: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 57: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 58: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 59: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 60: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 61: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 62: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 63: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 64: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 65: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 66: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 66

PERGUNTAS?PERGUNTAS?

2.2

Page 67: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 67

Configurando BGP com 2 links(MULTIHOMING)(MULTIHOMING)

2.3

Page 68: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 69: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 70: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 70

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

Page 71: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 72: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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

Page 73: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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

Page 74: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 75: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 76: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 77: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 77

Verificando as rotas recebidas após o filtro de saída

● Agora o router anuncia para os UPSTREAMS apenas o necessário que é o prefixo /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.9Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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.9Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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

Page 78: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 78

PERGUNTAS?PERGUNTAS?

2.3

Page 79: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 79

Utilizando um Looking Glass

2.4

Page 80: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 81: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 81

2.4 Utilizando um Looking Glass

Page 82: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 82

2.4 Utilizando um Looking Glass

Page 83: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 84: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1BGP routing table entry for 123.0.0.0/8, version 7Paths: (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

Page 85: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1Type 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

Page 86: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1BGP routing table entry for X.0.0.0/8, version 45Paths: (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

Page 87: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 87

PERGUNTAS?PERGUNTAS?

2.4

Page 88: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 88

Fail-Over Automático

2.5

Page 89: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 89

2.5 Fail-Over automático

Utilizando a rota alternativa

Vamos simular um problema técnicono AS200 deligando seus CPE's...

aguardem alguns instantes...

GX-R1# terminal monitor5d06h: %BGP-5-ADJCHANGE: neighbor 200.X.1.1 Down ...

LAB 1-2-2

Page 90: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 -ntraceroute 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

Page 91: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1BGP routing table entry for 123.0.0.0/8, version 16Paths: (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

Page 92: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 92

2.5 Fail-Over automático

Vamos verificar no ponto de vista do Looking Glass:

ALUNO@notebook:~$ telnet 123.123.123.1Trying 123.123.123.1...Connected to 123.123.123.1.Escape character is '^]'.

User Access Verification

Password: 123AS-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

Page 93: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1BGP routing table entry for 1.0.0.0/8, version 49Paths: (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

Page 94: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 -ntraceroute 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 ms10 222.222.1.2 161.596 ms 176.097 ms 183.647 ms11 222.200.10.2 154.398 ms 122.534 ms 101.285 ms

LAB 1-2-2

Page 95: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.10BGP routing table entry for 200.0.0.0/8, version 20Paths: (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

Page 96: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.10Trying 200.200.200.10Connected to 200.200.200.10Escape character is '^]'.

AS-200-R10>sh ip bgp X.0.0.0BGP routing table entry for X.0.0.0/8, version 77Paths: (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

Page 97: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 98: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 98

PERGUNTAS?PERGUNTAS?

2.5

Page 99: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 99

Escolhendo o Melhor Link

2.6

Page 100: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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...

Page 101: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 101

2.6 Escolhendo o melhor link

Alterando o atributo Weight:

Vamos verificar como ficaram as rotas BGP...

GX-R1#configure terminalGX-R1(config)#router bgp XGX-R1(config-router)#neighbor 100.X.1.1 weight 10GX-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

Page 102: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1BGP routing table entry for 123.0.0.0/8, version 35Paths: (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

Page 103: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 104: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 104

2.6 Escolhendo o melhor link

Ping extendido:

GX-R1#pingProtocol [ip]:Target IP address: 123.123.123.1Repeat count [5]: 2Datagram size [100]:Timeout in seconds [2]:Extended commands [n]: ySource address or interface: X.128.0.254Type of service [0]:Set DF bit in IP header? [no]:Validate reply data? [no]:Data pattern [0xABCD]:Loose, Strict, Record, Timestamp, Verbose[none]: recordNumber 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.1Packet 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

Page 105: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1) (100.100.1.1) (111.100.1.1) (111.111.1.1) (55.111.1.1) (55.55.1.1) (123.123.123.1) (123.222.1.1) (222.222.1.1) (222.200.1.1) (200.200.1.1) (200.X.1.1) <*> (0.0.0.0)

End of list

<Omited> Success rate is 100 percent (2/2), round-trip min/avg/max = 116/134/152 msGX-R1#

LAB 1-2-3

Page 106: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 107: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 108: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 108

2.6 Escolhendo o melhor link

Configurando os anúncios mais específicos:

GX-R1#conf terminal GX-R1(config)#ip prefix-list LAB-1-2-1-ANUNCIAR-AS-100 permit X.0.0.0/9GX-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.0GX-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

Page 109: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.2Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path*> x.0.0.0 0.0.0.0 0 32768 iGx-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

Page 110: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 masksC x.x.x.x/32 is directly connected, Loopback0C x.128.0.0/9 is directly connected, FastEthernet0/0

LAB 1-2-3

Page 111: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 tGx-R1(config)#ip route x.0.0.0 255.128.0.0 null0!--- faremos apenas para o primeiro /9 já que o segundo está OKGx-R1(config)#endGx-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 masksC x.x.x.x/32 is directly connected, Loopback0S x.0.0.0/9 is directly connected, Null0C x.128.0.0/9 is directly connected, FastEthernet0/0

LAB 1-2-3

Page 112: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.2Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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 iGx-R1#

LAB 1-2-3

Page 113: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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 iAS-123-R1>

LAB 1-2-3

Page 114: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.2

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 msecAS-123-R1>

LAB 1-2-3

Page 115: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 terminalGX-R1(config)#router bgp XGX-R1(config-router)#no neighbor 100.X.1.1 weight 10GX-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

Page 116: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 116

PERGUNTAS?PERGUNTAS?

2.6

Page 117: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 117

Balanceando os Links

2.7

Page 118: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 119: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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/8GX-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 seq 10 permit x.0.0.0/8 GX-R1(config)#ip prefix-list LAB-1-2-2-ANUNCIAR-AS-200 seq 10 permit x.0.128.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

Page 120: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.2.2 0 55 111 100 X i* X.0.0.0 123.55.2.2 0 55 111 100 X i*> 123.222.2.2 0 222 200 X i*> X.128.0.0/9 123.55.2.2 0 222 200 X iAS-123-R1>

Agora testar o caminho para os 2 blocos /9.

LAB 1-2-4

Page 121: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.X

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 msecAS-123-R1>

Primeiro /9 (Loopback do router):

Caminho 55,111,100

LAB 1-2-4

Page 122: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 msecAS-123-R1#

LAB 1-2-4

Page 123: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 124: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 125: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 125

Implementando Alta

Disponibilidade com VRRP

2.8

Page 126: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 127: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 128: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 129: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 130: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 131: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 132: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 133: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.XStatus codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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.XStatus codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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

Page 134: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 135: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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...

Page 136: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 tGX-R1(config)#interface fastEthernet 0/0GX-R1(config-if)#vrrp X ip X.128.0.252GX-R1(config-if)#vrrp X priority 2 GX-R1(config-if)#vrrp X timers advertise 1GX-R1(config-if)#vrrp X preempt delay minimum 120GX-R1(config-if)#endGX-R1#debug vrrp state VRRP State debugging is onGX-R1#

GX-R2#conf tGX-R2(config)#interface fastEthernet 0/0GX-R2(config-if)#vrrp X ip X.128.0.252GX-R2(config-if)#vrrp X priority 1 GX-R2(config-if)#vrrp X timers learnGX-R2(config-if)#vrrp X preempt delay minimum 120GX-R2(config-if)#endGX-R2#debug vrrp state VRRP State debugging is onGX-R2#

LAB 1-2-5

Page 137: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 addrFa0/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 addrFa0/0 X 1 3992 Y Backup X.128.0.254 X.128.0.252 GX-R2#

LAB 1-2-5

Page 138: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 139: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 140: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 140

Vamos alterar os timers padrão para diminuir o downtime

2.8- BGP Timers

GX-R1(config)#router bgp XGX-R1(config-router)#neighbor 100.X.1.1 timers 5 15GX-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 segundosGX-R1(config-router)#endGX-R1#clear ip bgp *

GX-R2(config)#router bgp XGX-R2(config-router)#neighbor 100.X.2.1 timers 5 15GX-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 segundosGX-R2(config-router)#endGX-R2#clear ip bgp *

LAB 1-2-5

Page 141: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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”

Page 142: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 142

PERGUNTAS?PERGUNTAS?

2.8

Page 143: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 143

3.0

Peering e Troca de Tráfego3. 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 [email protected].

Page 144: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 144

3.1

Peering x Trânsito

Page 145: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 146: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 147: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 147

LAB: Observem o cenário...

3.1 Peering x Trânsito

LAB 1-3-1

Page 148: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 149: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 150: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 151: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 151

Configurando BGP (AS ÍMPAR): Onde:

X= AS localY= AS remoto

GX-R1#conf tGX-R1(config)#GX-R1(config)#router bgp XGX-R1(config-router)#neighbor X.Y.1.2 remote-as YGX-R1(config-router)#neighbor X.Y.1.2 weight 20!--- priorizar todas as rotas recebidas pelo peering com weight 20GX-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-listGX-R1(config-router)#exitGX-R1(config)#endGX-R1#clear ip bgp *

3.1 Peering x Trânsito

LAB 1-3-1

Page 152: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 152

Configurando BGP (AS PAR): Onde:

X= AS localY= AS remoto

GX-R1#conf tGX-R1(config)#GX-R1(config)#router bgp XGX-R1(config-router)#neighbor Y.X.1.1 remote-as YGX-R1(config-router)#neighbor Y.X.1.1 weight 20!--- priorizar todas as rotas recebidas pelo peering com weight 20GX-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-listGX-R1(config-router)#exitGX-R1(config)#endGX-R1#clear ip bgp *

3.1 Peering x Trânsito

LAB 1-3-1

Page 153: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 localmente ou 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

Page 154: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 154

Verificando as redes recebidas do meu novo peering(utilizando o exemplo para o peering entre AS 1 e 2):

Onde:1= AS local2= AS remoto

G1-R1#sh ip bgp regexp ^Y$!--- essa consulta retorna apenas rotas que contenham o AS Y no path!--- e nada maisBGP table version is 29, local router ID is 1.1.1.1Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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

Page 155: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 156: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 157: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 157

Entendendo o Funcionamento de Um PIX do PTTMetro

3.2

Page 158: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 158

3.2 Entendendo o Funcionamento de Um PIX do PTTMetro

Para quem ainda não assistiu:

http://youtu.be/imL3Cc8mC2Y

Page 159: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 160: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 161: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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).

ROUTESERVER

3.2 Entendendo o Funcionamento de Um PIX do PTTMetro

Page 162: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 162

Formulários de Adesão

3.3

Page 163: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 164: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.phpASN ...............: 22548Entidade Nome .....: Registro.brURL ...............: http://registro.br/Endereço ..........: Av. das Nações Unidas 11548, 7° andar 04578-000 - São Paulo - SPNOC email .........: [email protected] ext ......: 22548*NOCTelefone ..........: 11 5509-3510Adm-c nome ........: Frederico A C Nevesemail .............: [email protected] ..........: 11 5509-3511Peering-c nome ....: Oripide Ocilento Filho email .............: [email protected] ..........: 11 5509-3520Comercial Trânsito :email .............:Telefone ..........:URL Política Peering .......: none - Open PolicyBGP Feed para o Looking-glass ...: Sim [x] Nao [ ]Vende trânsitov4 ..: Sim [ ] Não [x]Vende trânsitov6 ..: Sim [ ] Não [x]ConexãoBandwidth .........:Media Ethernet ....: 10BaseTX [ ] 100BaseTX [ ] 10000BaseTX [ ] 1 GigE-SX [X] 1 GigE-LX [ ] 10 GigE-SR [ ] 10 GigE-LR [ ]PIX ...............: Registro.brIPv6 ..............: Sim [x] Nao [ ]...

3.3 - Formulários de Adesão

Page 165: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 165

Diferenças entre Acordo Bilaterale Multilateral

3.4

Page 166: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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...

Page 167: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 [email protected]

... Termo de adesão ao Acordo de Troca de Tráfego Multilateral (ATM)Version .........: 2008071000Este termo de adesão trata das informações e compromissos da entidadesolicitante para a participação no acordo de troca de tráfegomultilateral no PTTMetro.Localidade ......: sp.ptt.brASN .............: 22548Entidade Nome ...: Registro.brATM v4 ..........: Sim [x] Não [ ]ATM v6 ..........: Sim [x] Não [ ]...

3.4 - Diferenças entre Acordos Bilaterais e Multilaterais

Page 168: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 PTTmas não participam do ATM, emgeral vendem trânsivo através deacordos bilaterais

3.4 - Diferenças entre Acordos Bilaterais e Multilaterais

Page 169: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 169

Participantes Locais e Remotos

3.5

Page 170: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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:

Page 171: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 172: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 172

Entendendo o Conceito de Lan2Lan

3.6

Page 173: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 174: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 175: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 175

ATM-Tratando as Rotas Recebidas

3.7

Page 176: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 tGX-R1(config)#router bgp XGX-R1(config-router)#neighbor 187.16.216.253 remote-as 555GX-R1(config-router)#neighbor 187.16.216.253 description PTT-Route_server-1GX-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 peersGX-R1(config-router)#neighbor 187.16.216.252 remote-as 555GX-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

Page 177: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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/PfxRcd25.26.1.2 4 10 442 443 168 0 0 07:16:05 4100.25.1.1 4 100 582 441 168 0 0 07:14:37 35187.16.216.252 4 555 10 44 168 0 0 00:06:02 0187.16.216.253 4 555 14 8 168 0 0 00:02:34 45200.25.1.1 4 200 548 441 168 0 0 07:14:26 34

3.7 - ATM- Tratando as Rotas Recebidas

LAB 1-3-2

Page 178: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1BGP routing table entry for 123.0.0.0/8, version 160Paths: (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

Page 179: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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/8BGP routing table entry for X.0.0.0/8, version 251Paths: (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

Page 180: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 180

ATM-Anunciando Corretamente

3.8

Page 181: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 182: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 183: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 183

O Looking Glass do PTT Metro

3.9

Page 184: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 185: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.252Trying 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

Page 186: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 186

Aplicações de Um Acordo Bilateral

3.10

Page 187: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 188: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 189: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 config BGP

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

Page 190: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 190

Configurações BGP no router que será TRÂNSITO:

GX-R1#conf tGX-R1(config)#router bgp XGX-R1(config-router)#neighbor Z.Z.Z.Z remote-as YGX-R1(config-router)#neighbor Z.Z.Z.Z description Acordo bilateral - clienteGX-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ânsitoGX-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 clienteGX-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)#endGX-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

Page 191: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 191

Configurações BGP no router CLIENTE:

GX-R1#conf tGX-R1(config)#router bgp XGX-R1(config-router)#neighbor Z.Z.Z.Z remote-as YGX-R1(config-router)#neighbor Z.Z.Z.Z description Acordo bilateral-transito IPGX-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 nadaGX-R1(config-router)#endGX-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

Page 192: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 193: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 193

PERGUNTAS?PERGUNTAS?

3.11

Page 194: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 195: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 195

4.1

eBGP com Upstreams e Downstreams

Page 196: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 197: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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”

Page 198: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 199: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 200: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 200

Configurando Filtros de Upstreams

4.2

Page 201: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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;

Page 202: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 203: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 204: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 205: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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-LISTAip 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/24Gx-R1(config)#endGx-R1#show running-config | begin MINHA-LISTAip prefix-list MINHA-LISTA seq 5 permit 122.36.200.0/24ip prefix-list MINHA-LISTA seq 10 permit 44.0.0.0/24!...

4.2 - Configurando Filtros de Upstreams

Page 206: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 206

O que é o ”seq” ?

● A razão para o incremento de ”5 em 5” é a possibilidade deinserir 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-LISTAip prefix-list MINHA-LISTA seq 4 permit 10.0.30.0/24ip prefix-list MINHA-LISTA seq 5 permit 122.36.200.0/24ip prefix-list MINHA-LISTA seq 10 permit 44.0.0.0/24!…

4.2 - Configurando Filtros de Upstreams

Page 207: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 208: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 209: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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/22Gx-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

Page 210: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 211: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 211

GX-R1(config)#ip prefix-list NAO-RECEBER seq 10 deny X.0.0.0/8 le 32!--- blocos do meu próprio ASGX-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 privadoGX-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!--- loopbacksGX-R-1(config)#ip prefix-list NAO-RECEBER seq 60 deny 192.0.2.0/24 le 32!--- DocumentaçãoGX-R1(config)#ip prefix-list NAO-RECEBER seq 70 deny 192.168.0.0/16 le 32!--- uso privadoGX-R1(config)#ip prefix-list NAO-RECEBER seq 80 deny 224.0.0.0/4 le 32!--- multicastGX-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

Page 212: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 XGX-R1(config-router)#neighbor 100.X.1.1 prefix-list NAO-RECEBER inGX-R1(config-router)#neighbor 200.X.1.1 prefix-list NAO-RECEBER inGX-R1(config-router)#neighbor 187.16.216.253 prefix-list NAO-RECEBER inGX-R1(config-router)#neighbor (IP de peering) prefix-list NAO-RECEBER inGX-R1(config-router)#neighbor (acordo bilateral) prefix-list NAO-RECEBER in!--- Nesse caso apenas para quem é CLIENTE no acordo bilateralGX-R1(config-router)#endGX-R1#clear ip bgp *

4.2 - Configurando Filtros de Upstreams

LAB 1-4-1

Page 213: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 214: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 214

Desmistificando o ”Soft reconfiguration inbound”:

Para que serve de verdade?

4.2 - Configurando Filtros de Upstreams

Page 215: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 216: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 217: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 217

Vamos habilitar o ”Soft reconfiguration inbound” para todos os neighbors:

GX-R1(config)#router bgp XGX-R1(config-router)#neighbor 100.X.1.1 soft-reconfiguration inboundGX-R1(config-router)#neighbor 200.X.1.1 soft-reconfiguration inboundGX-R1(config-router)#neighbor 187.16.216.253 soft-reconfiguration inboundGX-R1(config-router)#neighbor (IP de peering) soft-reconfiguration inboundGX-R1(config-router)#neighbor (acordo bilateral) soft-reconfiguration inboundGX-R1(config-router)#endGX-R1#clear ip bgp * soft

4.2 - Configurando Filtros de Upstreams

LAB 1-4-1

Page 218: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 219: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 220: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 220

Melhor do que sair à procura de listas é estabelecer um peering com o cymru.

Para solicitar esse peering é preciso entrar em contato com [email protected] 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

Page 221: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 222: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 223: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 223

Adicionando as rotas recebidas em BLACKHOLE:

GX-R1(config)#ip bgp-community new-format!---habilita suporte à communities tipo xxxx:yyyyGX-R1(config)#ip route 192.0.2.1 255.255.255.255 null0!---cria a rota de blackholeGX-R1(config)#ip community-list 10 permit 65333:888!---adiciona a community 65333:888 na comm-list 10GX-R1(config)#route-map FILTRO-CYMRUBOGONS permit 10!---entra as opções do route-map de entradaGX-R1(config-route-map)#match community 10!---declara o conteudo da comm-list 10 para condição de mathGX-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 blackholeGX-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

Page 224: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 224

Configurando Filtros de Downstreams

4.3

Page 225: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 226: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 227: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 100XGX-R1(config-router)#neighbor X.X.100.2 weight 30GX-R1(config-router)#neighbor X.X.100.2 prefix-list BLOCOS-AS-100X in!--- filtro de ENTRADA para o DOWNSTREAM AS 99GX-R1(config-router)#neighbor 100.X.1.1 prefix-list ANUNCIAR-AS-100 out!--- filtro de SAIDA para o UPSTREAM AS 100GX-R1(config-router)#neighbor 200.X.1.1 prefix-list ANUNCIAR-AS-200 out!--- filtro de SAIDA para o UPSTREAM AS 200GX-R1(config-router)#neighbor 187.16.216.253 prefix-list ANUNCIAR-PTT out!--- filtro de SAIDA para o PTTGX-R1(config-router)#exitGX-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 listaGX-R1(config)#ip prefix-list ANUNCIAR-AS-100 permit 187.X.0.0/22 le 24GX-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 100GX-R1(config)#ip prefix-list ANUNCIAR-AS-200 permit 187.X.0.0/22 le 24GX-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 200GX-R1(config)#ip prefix-list ANUNCIAR-PTT permit 187.X.0.0/22 le 24GX-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 PTTGX-R1(config)#endGX-R1#clear ip bgp * out

4.3 - Configurando Filtros de Downstreams

LAB 1-4-2

Page 228: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 XGX-R2(router)#router bgp 100XGX-R2(config-router)#no auto-summaryGX-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 UPSTREAMGX-R1(config-router)#exitGX-R1(config)#interface loopback 0GX-R1(config-if)#ip address 187.X.0.0 255.255.252.0!--- configura um IP na loopback para que haja a ocorrência na FIBGX-R1#clear ip bgp *

4.3 - Configurando Filtros de Downstreams

LAB 1-4-2

Page 229: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 230: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 230

Entendendo o ”BGP REGEXP”

4.4

Page 231: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 231

4.4 - Entendendo o “BGP REGEXP”

Quando temos muitos clientes de trânsito é preciso estabelecer padrões para que 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.

Page 232: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 64512Router(config)#ip as-path access-list 1 deny 64513Router(config)#ip as-path access-list 1 deny 64514......Router(config)#ip as-path access-list 1 deny 65534Router(config)#ip as-path access-list 1 deny 65535Router(config)#ip as-path access-list 1 permit .*

4.4 - Entendendo o “BGP REGEXP”

Page 233: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 234: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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”

Page 235: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 236: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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”

Page 237: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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"

Page 238: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 239: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 240: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 mesma ló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

Page 241: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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...

Page 242: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 243: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 244: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 64511GX-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 65535GX-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 100GX-R1(config-router)#neighbor 100.X.1.1 filter-list 1 inGX-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

Page 245: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 hierarquiarouter(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)#exitrouter(config)#route-map UPSTREAM-1 permit 2 !--- cria um route-map ”em branco”que aceita todo o resto sem modificaçõesrouter(config-route-map)#exit

Page 246: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 hierarquiarouter(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)#exitrouter(config)#route-map UPSTREAM-2 permit 2 !--- cria um route-map ”em branco”que aceita todo o resto sem modificaçõesrouter(config-route-map)#exit

Page 247: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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...

Page 248: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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...

Page 249: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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...

Page 250: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 250

Enviando e Recebendo “Partial” e “Full-Routing”

4.5

Page 251: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 252: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 253: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 254: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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-path access-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

Page 255: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 256: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 257: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 258: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 259: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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,4}$

Ou seja, a palavra ([^ ]+_) à 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

Page 260: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 260

Route-Map x Prefix-List

4.6

Page 261: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 10router(config-route-map)#match ip address prefix-list MUDAR-METRIC router(config-route-map)#set metric 50

Page 262: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 10match 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 10router(config-route-map)#match ip address prefix-list MUDAR-METRIC router(config-route-map)#set metric 50

4.6 – Route-Map X Prefix-List

Page 263: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 120set weight 40set community 123:321

router(config)#route-map FILTROS-DE-ENTRADA permit 10router(config-route-map)#match ip address prefix-list MUDAR-METRIC router(config-route-map)#set metric 50

4.6 – Route-Map X Prefix-List

Page 264: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 10router(config-route-map)#set local-preference 200

4.6 – Route-Map X Prefix-List

Page 265: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 TESTEroute-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

Page 266: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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/24ip 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

Page 267: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 267

AS-Path Prepend

4.7

Page 268: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 269: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 neighbor 10.0.1.6 route-map prepend out!route-map prepend permit 10 set as-path prepend 65000 65000 65000

(Router-R2)R2#show ip bgpBGP table version is 3, local router ID is 10.2.0.2Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S StaleOrigin 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:

Page 270: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 bgpBGP table version is 2, local router ID is 10.0.0.1Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S StaleOrigin 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:

Page 271: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 271

Engenharia de Tráfego I

4.8

Page 272: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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-55AS-222

AS-111

AS-200AS-100

AS-100X

DOWNLOAD CLIENTE:

DOWNLOAD AS LOCAL:

AS-123

AS-X

Page 273: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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)#exitGX-R1(config)#route-map AS-200-OUT permit 1 !--- entra no modo de configuração do route-map seq 1GX-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

Page 274: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 274

PERGUNTAS?PERGUNTAS?

4.8

Page 275: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 [email protected].

Page 276: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 277: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 277

Implementando Múltiplas Saídas para Clientes de Trânsito

5.1

Page 278: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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:

Page 279: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 280: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 281: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 282: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 283: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 283

O router R3 (router central do AS) responde pelo IP X.X.100.1/24.

Cada membro do grupo vai configurar um IP da mesma rede em seu laptop, exemplo sugerido laptop1 X.X.100.2/24, laptop2 X.X.100.3/24 e laptop3 X.X.100.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

Page 284: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 285: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 285

Configurando eBGP com o downstream: AS 14X em R4:

LADO DA OPERADORAAS-X-R4#conf t AS-X-R4(config)#router bgp XAS-X-R4(config-router)#bgp router-id X.0.0.4!--- nesse LAB vamos configurar um Router-ID para facilitar a visualização das rotasAS-X-R4(config-router)#synchronization AS-X-R4(config-router)#neighbor X.14X.4.2 remote-as 14XAS-X-R4(config-router)#neighbor X.14X.4.2 description eBGP-downstream-AS-14XAS-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 DOWNSTREAMAS-X-R4(config-router)#exitAS-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

Page 286: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 286

Configurando eBGP com o downstream: AS 14X em R4:

LADO DO CLIENTEAS-14X-R1#conf t AS-14X-R1(config)#router bgp 14XAS-14X-R1(config-router)#bgp router-id 14X.0.0.1AS-14X-R1(config-router)#no synchronization AS-14X-R1(config-router)#network 14X.0.0.0 mask 255.0.0.0AS-14X-R1(config-router)#neighbor X.14X.4.1 remote-as XAS-14X-R1(config-router)#neighbor X.14X.4.1 description eBGP-upstream-AS-XAS-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 outAS-14X-R1(config-router)#exitAS-14X-R1(config)#ip prefix-list MEUS-BLOCOS permit 14X.0.0.0/8AS-14X-R1(config)#interface loopback 0AS-14X-R1(config-if)#ip address 14X.0.0.1 255.128.0.0AS-14X-R1(config-if)#exitAS-14X-R1(config)#ip route 14X.0.0.0 255.0.0.0 null 0AS-14X-R1(config)#endAS-14X-R1#clear ip bgp *

5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito

LAB 2-1-1

Page 287: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 287

Configurando eBGP com o downstream: AS 15X em R5:

LADO DA OPERADORAAS-X-R5#conf t AS-X-R5(config)#router bgp XAS-X-R5(config-router)#bgp router-id X.0.0.5!--- nesse LAB vamos configurar um Router-ID para facilitar a visualização das rotasAS-X-R5(config-router)#synchronization AS-X-R5(config-router)#neighbor X.14X.5.2 remote-as 15XAS-X-R5(config-router)#neighbor X.14X.5.2 description eBGP-downstream-AS-15XAS-X-R5(config-router)#neighbor X.14X.5.2 soft-reconfiguration inbound AS-X-R5(config-router)#neighbor X.14X.5.2 prefix-list BLOCOS-AS-15X in!--- declara o filtro de entrada para rotas recebidas desse DOWNSTREAMAS-X-R5(config-router)#exitAS-X-R5(config)#ip prefix-list BLOCOS-AS-14X 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

Page 288: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 288

Configurando eBGP com o downstream: AS 15X em R5:

LADO DO CLIENTEAS-15X-R1#conf t AS-15X-R1(config)#router bgp 15XAS-15X-R1(config-router)#bgp router-id 15X.0.0.1AS-15X-R1(config-router)#no synchronization AS-15X-R1(config-router)#network 15X.0.0.0 mask 255.0.0.0AS-15X-R1(config-router)#neighbor X.15X.5.1 remote-as XAS-15X-R1(config-router)#neighbor X.15X.5.1 description eBGP-upstream-AS-XAS-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 outAS-15X-R1(config-router)#exitAS-15X-R1(config)#ip prefix-list MEUS-BLOCOS permit 15X.0.0.0/8AS-15X-R1(config)#interface loopback 0AS-15X-R1(config-if)#ip address 15X.0.0.1 255.128.0.0AS-15X-R1(config-if)#exitAS-15X-R1(config)#ip route 15X.0.0.0 255.0.0.0 null 0AS-15X-R1(config)#endAS-15X-R1#clear ip bgp *

5.1 - Implementando Múltiplas Saídas para Clientes de Trânsito

LAB 2-1-1

Page 289: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 289

Vamos também configurar as sessões eBGP com os UPSTREAMS.

● Primeiro eBGP entre R1 e AS 100:

AS-X-R1#conf tAS-X-R1(config)#router bgp XAS-X-R1(config-router)#network X.0.0.0AS-X-R1(config-router)#auto-summary AS-X-R1(config-router)#synchronization AS-X-R1(config-router)#neighbor 100.X.1.1 remote-as 100AS-X-R1(config-router)#neighbor 100.X.1.1 soft-reconfiguration inboundAS-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-listAS-X-R1(config-router)#exit!--- volta para o modo de configuração globalAS-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 listaAS-X-R1(config)#ip prefix-list BLOCOS-AS-14X permit 14X.0.0.0/8AS-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

Page 290: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 10AS-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)#exitAS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 20 !--- cria um route-map de ação permit sequencia 20AS-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)#exitAS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 30 !--- cria um route-map de ação permit sequencia 30AS-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)#endAS-X-R1#clear ip bgp * soft

5.3 – Next-hop-self

LAB 2-1-1

Page 291: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 291

Vamos também configurar as sessões eBGP com os UPSTREAMS

● Em seguida eBGP entre R2 e AS 200:

AS-X-R2#conf tAS-X-R2(config)#router bgp XAS-X-R2(config-router)#network X.0.0.0AS-X-R2(config-router)#auto-summaryAS-X-R2(config-router)#synchronization AS-X-R2(config-router)#neighbor 200.X.2.1 remote-as 200AS-X-R2(config-router)#neighbor 200.X.2.1 soft-reconfiguration inboundAS-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-listAS-X-R2(config-router)#exit!--- volta para o modo de configuração globalAS-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 listaAS-X-R2(config)#ip prefix-list BLOCOS-AS-14X permit 14X.0.0.0/8AS-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

Page 292: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 10AS-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)#exitAS-X-R2(config)#route-map ANUNCIAR-AS-200 permit 20 !--- cria um route-map de ação permit sequencia 20AS-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)#exitAS-X-R2(config)#route-map ANUNCIAR-AS-200 permit 30 !--- cria um route-map de ação permit sequencia 30AS-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)#endAS-X-R2#clear ip bgp * soft

5.3 – Next-hop-self

LAB 2-1-1

Page 293: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 293

Configurando iBGP entre R4 e R1:

Configurando iBGP entre R4 e R2:

AS-X-R4#conf t AS-X-R4(config)#router bgp XAS-X-R4(config-router)#neighbor X.0.0.1 remote-as XAS-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 XAS-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

Page 294: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 294

Configurando iBGP entre R1 e R4:

Configurando iBGP entre R1 e R5:

AS-X-R1#conf t AS-X-R1(config)#router bgp XAS-X-R1(config-router)#bgp router-id X.0.0.1AS-X-R1(config-router)#neighbor X.0.0.4 remote-as XAS-X-R1(config-router)#neighbor X.0.0.4 description iBGP Router 4

AS-X-R1#conf t AS-X-R1(config)#router bgp XAS-X-R1(config-router)#neighbor X.0.0.5 remote-as XAS-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

Page 295: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 295

Configurando iBGP entre R5 e R1:

Configurando iBGP entre R5 e R2:

AS-X-R5#conf t AS-X-R5(config)#router bgp XAS-X-R5(config-router)#neighbor X.0.0.1 remote-as XAS-X-R5(config-router)#neighbor X.0.0.1 description iBGP Router 1

AS-X-R5#conf t AS-X-R5(config)#router bgp XAS-X-R5(config-router)#neighbor X.0.0.2 remote-as XAS-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

Page 296: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 296

Configurando iBGP entre R2 e R4:

Configurando iBGP entre R2 e R5

AS-X-R2#conf t AS-X-R2(config)#router bgp XAS-X-R2(config-router)#bgp router-id X.0.0.2AS-X-R2(config-router)#neighbor X.0.0.4 remote-as XAS-X-R2(config-router)#neighbor X.0.0.4 description iBGP Router 4

AS-X-R2#conf t AS-X-R2(config)#router bgp XAS-X-R2(config-router)#neighbor X.0.0.5 remote-as XAS-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

Page 297: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 298: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 299: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 300: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1Routing 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

Page 301: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 301

Analisando o BGP debug:

07:42:42: BGP: X.0.0.1 open active, delay 7672ms07:42:50: BGP: X.0.0.1 open active, local address X.X.4.207:42:50: BGP: X.0.0.1 open failed: Connection refused by remote host

5.2 - Update-source

Page 302: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 XAS-X-R4(config-router)#neighbor X.0.0.1 update-source loopback 0AS-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

Page 303: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.407:48:50: BGP: X.0.0.1 went from Active to OpenSent07:48:50: BGP: X.0.0.1 sending OPEN, version 4, my as: X07:48:50: BGP: X.0.0.1 rcv message type 1, length (excl. header) 2607:48:50: BGP: X.0.0.1 rcv OPEN, version 407:48:50: BGP: X.0.0.1 rcv OPEN w/ OPTION parameter len: 1607:48:50: BGP: X.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 607:48:50: BGP: X.0.0.1 OPEN has CAPABILITY code: 1, length 407:48:50: BGP: X.0.0.1 OPEN has MP_EXT CAP for afi/safi: 1/107:48:50: BGP: X.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 207:48:50: BGP: X.0.0.1 OPEN has CAPABILITY code: 128, length 007:48:50: BGP: X.0.0.1 OPEN has ROUTE-REFRESH capability(old) for all address-families07:48:50: BGP: X.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 207:48:50: BGP: X.0.0.1 OPEN has CAPABILITY code: 2, length 007:48:50: BGP: X.0.0.1 OPEN has ROUTE-REFRESH capability(new) for all address-families07:48:50: BGP: X.0.0.1 went from OpenSent to OpenConfirm07:48:50: BGP: X.0.0.1 went from OpenConfirm to Established07:48:50: %BGP-5-ADJCHANGE: neighbor X.0.0.1 Up

5.2 - Update-source

LAB 2-1-2

Page 304: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 304

… fazer a mesma mudança em R5:

AS-X-R5(config)#router bgp XAS-X-R5(config-router)#neighbor X.0.0.1 update-source loopback 0AS-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

Page 305: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 306: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 tAS-X-R1(config)#router bgp XAS-X-R1(config-router)#neighbor X.0.0.4 update-source loopback 0AS-X-R1(config-router)#neighbor X.0.0.5 update-source loopback 0

AS-X-R2#conf tAS-X-R2(config)#router bgp XAS-X-R2(config-router)#neighbor X.0.0.4 update-source loopback 0AS-X-R2(config-router)#neighbor X.0.0.5 update-source loopback 0

5.2 - Update-source

LAB 2-1-3

Page 307: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 308: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 6.116.4.2 0 100 0 14X i* i15X.0.0.0 6.126.5.2 0 100 0 15X i...

5.3 – Next-hop-self

LAB 2-1-3

Page 309: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.0BGP routing table entry for 14X.0.0.0/8, version 0Paths: (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

Page 310: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 tAS-X-R1(config)#router bgp XAS-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 tAS-X-R2(config)#router bgp XAS-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

Page 311: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 311

Continuando em R4 e R5...

Vamos agora verificar as mudanças...

AS-X-R4#conf tAS-X-R4(config)#router bgp XAS-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 tAS-X-R5(config)#router bgp XAS-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

Page 312: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.0BGP routing table entry for 14X.0.0.0/8, version 0Paths: (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

Page 313: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 313

Resolvendo o problema de maneira "duvidosa" em R1 e R2...

AS-X-R1#conf t AS-X-R1(config)#router bgp XAS-X-R1(config-router)#no synchronization AS-X-R1(config-router)#endAS-X-R1#clear ip bgp *

AS-X-R2#conf t AS-X-R2(config)#router bgp XAS-X-R2(config-router)#no synchronization AS-X-R2(config-router)#endAS-X-R2#clear ip bgp *

5.4 - BGP Synchronization

LAB 2-1-4

Page 314: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 314

Continuando em R4 e R5...

AS-X-R4#conf t AS-X-R4(config)#router bgp XAS-X-R4(config-router)#no synchronization AS-X-R4(config-router)#endAS-X-R4#clear ip bgp *

AS-X-R5#conf t AS-X-R5(config)#router bgp XAS-X-R5(config-router)#no synchronization AS-X-R1(config-router)#endAS-X-R5#clear ip bgp *

5.4 - BGP Synchronization

LAB 2-1-4

Page 315: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 316: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.0BGP routing table entry for 14X.0.0.0/8, version 16Paths: (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

Page 317: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.0.0.1

Type escape sequence to abort.Tracing the route to 14X.0.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

Page 318: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 319: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 320: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 320

AS 14X anuncia seus prefixos para R4...

5.4 - BGP Synchronization

Page 321: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 321

AS R4 anuncia para R1...

5.4 - BGP Synchronization

Page 322: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 322

AS R1 anuncia para o UPSTREAM AS 100...

5.4 - BGP Synchronization

Page 323: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 323

AS 100 anuncia para o AS 99...

5.4 - BGP Synchronization

Page 324: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 324

Caminho dos pacotes: Entram no AS 100...

5.4 - BGP Synchronization

Page 325: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 325

Caminho dos pacotes: em seguida no AS por R1...

5.4 - BGP Synchronization

Page 326: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 326

Caminho dos pacotes: agora complica um pouco, R1 conhece rota para 11X.0.0.0/8 através do next-hop X.0.0.4 (R4), e esse next-hop é alcançável via R3 (X.X.1.2).

5.4 - BGP Synchronization

Page 327: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 328: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 329: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 329

Caminho dos pacotes: E o loop se repete até o fim do TTL do pacote...

5.4 - BGP Synchronization

Page 330: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 331: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 331

Distribuindo as rotas BGP através do meu IGP:

!--- primeiro vamos habilitar novamente o syncronizationAS-X-R1#conf tAS-X-R1(config)#router bgp XAS-X-R1(config-router)#synchronization AS-X-R1(config-router)#exit!--- agora entrar na configuração do OSPFAS-X-R1(config)#router ospf 1AS-X-R1(config-router)#redistribute bgp X!--- habilita a distribuição por OSPF de rotas aprendias por BGP% Only classful networks will be redistributedAS-X-R1(config-router)#endAS-X-R1#clear ip ospf process !--- reinicia o processo OSPFReset ALL OSPF processes? [no]: yesAS-X-R1#!--- vamos repetir o mesmo processo para R2, R4 e R5

5.4 - BGP Synchronization

LAB 2-1-4

Page 332: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 332

Distribuindo as rotas BGP através do meu IGP:

!--- primeiro vamos habilitar novamente o syncronizationAS-X-R2#conf tAS-X-R2(config)#router bgp XAS-X-R2(config-router)#synchronization AS-X-R2(config-router)#exit!--- agora entrar na configuração do OSPFAS-X-R2(config)#router ospf 1AS-X-R2(config-router)#redistribute bgp X!--- habilita a distribuição por OSPF de rotas aprendias por BGP% Only classful networks will be redistributedAS-X-R2(config-router)#endAS-X-R2#clear ip ospf process !--- reinicia o processo OSPFReset ALL OSPF processes? [no]: yesAS-X-R2#

5.4 - BGP Synchronization

LAB 2-1-4

Page 333: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 333

Distribuindo as rotas BGP através do meu IGP:

!--- primeiro vamos habilitar novamente o syncronizationAS-X-R4#conf tAS-X-R4(config)#router bgp XAS-X-R4(config-router)#synchronization AS-X-R4(config-router)#exit!--- agora entrar na configuração do OSPFAS-X-R4(config)#router ospf 1AS-X-R4(config-router)#redistribute bgp X!--- habilita a distribuição por OSPF de rotas aprendias por BGP% Only classful networks will be redistributedAS-X-R4(config-router)#endAS-X-R4#clear ip ospf process !--- reinicia o processo OSPFReset ALL OSPF processes? [no]: yesAS-X-R4#

5.4 - BGP Synchronization

LAB 2-1-4

Page 334: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 334

Distribuindo as rotas BGP através do meu IGP:

!--- primeiro vamos habilitar novamente o syncronizationAS-X-R5#conf tAS-X-R5(config)#router bgp XAS-X-R5(config-router)#synchronization AS-X-R5(config-router)#exit!--- agora entrar na configuração do OSPFAS-X-R5(config)#router ospf 1AS-X-R5(config-router)#redistribute bgp X!--- habilita a distribuição por OSPF de rotas aprendias por BGP% Only classful networks will be redistributedAS-X-R5(config-router)#endAS-X-R5#clear ip ospf process !--- reinicia o processo OSPFReset ALL OSPF processes? [no]: yesAS-X-R5#

5.4 - BGP Synchronization

LAB 2-1-4

Page 335: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 336: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.0BGP routing table entry for 14X.0.0.0/8, version 5Paths: (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

Page 337: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 338: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 338

Mas antes vamos desconfigurar a redistribuição de prefixos via OSPF em R1, R2, R4 e R5...

AS-X-R1#conf tAS-X-R1(config)#router ospf 1AS-X-R1(config-router)#no redistribute bgp XAS-X-R1(config-router)#endAS-X-R1#clear ip ospf process !--- reinicia o processo OSPFReset ALL OSPF processes? [no]: yesAS-X-R1#!--- vamos repetir o mesmo processo para R2, R4 e R5

5.4 - BGP Synchronization

LAB 2-1-5

Page 339: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 339

R2

AS-X-R2#conf tAS-X-R2(config)#router ospf 1AS-X-R2(config-router)#no redistribute bgp XAS-X-R2(config-router)#endAS-X-R2#clear ip ospf process !--- reinicia o processo OSPFReset ALL OSPF processes? [no]: yesAS-X-R2#

5.4 - BGP Synchronization

LAB 2-1-5

Page 340: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 340

R4

AS-X-R4#conf tAS-X-R4(config)#router ospf 1AS-X-R4(config-router)#no redistribute bgp XAS-X-R4(config-router)#endAS-X-R4#clear ip ospf process !--- reinicia o processo OSPFReset ALL OSPF processes? [no]: yesAS-X-R4#

5.4 - BGP Synchronization

LAB 2-1-5

Page 341: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 341

R5

AS-X-R5#conf tAS-X-R5(config)#router ospf 1AS-X-R5(config-router)#no redistribute bgp XAS-X-R5(config-router)#endAS-X-R5#clear ip ospf process !--- reinicia o processo OSPFReset ALL OSPF processes? [no]: yesAS-X-R5#

5.4 - BGP Synchronization

LAB 2-1-5

Page 342: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 syncronizationAS-X-R1(config-router)#no neighbor X.0.0.4AS-X-R1(config-router)#no neighbor X.0.0.5!--- R1AS-X-R2(config)#router bgp XAS-X-R2(config-router)#no syncronizationAS-X-R2(config-router)#no neighbor X.0.0.4AS-X-R2(config-router)#no neighbor X.0.0.5!--- R2AS-X-R4(config)#router bgp XAS-X-R4(config-router)#no syncronizationAS-X-R4(config-router)#no neighbor X.0.0.1AS-X-R4(config-router)#no neighbor X.0.0.2!--- R4AS-X-R5(config)#router bgp XAS-X-R5(config-router)#no syncronizationAS-X-R5(config-router)#no neighbor X.0.0.1AS-X-R5(config-router)#no neighbor X.0.0.2

5.4 - BGP Synchronization

LAB 2-1-5

Page 343: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 343

Restabelecendo as sessões BGP em R1

● Em seguida iBGP entre R1 e R3:

AS-X-R1#conf tAS-X-R1(config)#router bgp XAS-X-R1(config-router)#neighbor X.0.0.3 remote-as XAS-X-R1(config-router)#neighbor X.0.0.3 description iBGP R3AS-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 0AS-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

Page 344: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 344

Reestabelecendo as sessões BGP em R1

● Em seguida iBGP entre R1 e R3:

AS-X-R2#conf tAS-X-R2(config)#router bgp XAS-X-R2(config-router)#neighbor X.0.0.3 remote-as XAS-X-R2(config-router)#neighbor X.0.0.3 description iBGP R3AS-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 0AS-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

Page 345: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 345

Configurando iBGP com R3

AS-X-R4#conf tAS-X-R4(config)#router bgp X

AS-X-R4(config-router)#neighbor X.0.0.3 remote-as XAS-X-R4(config-router)#neighbor X.0.0.3 description iBGP R3AS-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 0AS-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

Page 346: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 346

Configurando iBGP com R3

AS-X-R5#conf tAS-X-R5(config)#router bgp XAS-X-R5(config-router)#neighbor X.0.0.3 remote-as XAS-X-R5(config-router)#neighbor X.0.0.3 description iBGP R3AS-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 0AS-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

Page 347: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 347

Restabelecendo as sessões iBGP em R3:

AS-X-R3(config)#router bgp XAS-X-R3(config-router)#no synchronization AS-X-R3(config-router)#network X.0.0.0AS-X-R3(config-router)#bgp router-id X.0.0.3AS-X-R3(config-router)#auto-summary!--- iBGP com R1AS-X-R3(config-router)#neighbor X.0.0.1 remote-as XAS-X-R3(config-router)#neighbor X.0.0.1 description iBGP R1AS-X-R3(config-router)#neighbor X.0.0.1 update-source loopback 0AS-X-R3(config-router)#neighbor X.0.0.1 soft-reconfiguration inbound !--- iBGP com R2AS-X-R3(config-router)#neighbor X.0.0.2 remote-as XAS-X-R3(config-router)#neighbor X.0.0.2 description iBGP R2AS-X-R3(config-router)#neighbor X.0.0.2 update-source loopback 0AS-X-R3(config-router)#neighbor X.0.0.2 soft-reconfiguration inbound !--- iBGP com R4AS-X-R3(config-router)#neighbor X.0.0.4 remote-as XAS-X-R3(config-router)#neighbor X.0.0.4 description iBGP R4AS-X-R3(config-router)#neighbor X.0.0.4 update-source loopback 0AS-X-R3(config-router)#neighbor X.0.0.4 soft-reconfiguration inbound !--- iBGP com R5AS-X-R3(config-router)#neighbor X.0.0.5 remote-as XAS-X-R3(config-router)#neighbor X.0.0.5 description iBGP R5AS-X-R3(config-router)#neighbor X.0.0.5 update-source loopback 0AS-X-R3(config-router)#neighbor X.0.0.5 soft-reconfiguration inbound

5.4 - BGP Synchronization

LAB 2-1-5

Page 348: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.1Status codes: s suppressed, d damped, h history, * valid, > best, i - internalOrigin 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

Page 349: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 350: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 351: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 351

Route-Reflector

5.5

Page 352: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 353: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 354: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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.

Page 355: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 356: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 356

Obviamente já optamos pela opção número 3

● Vamos acrescentar apenas a opção RR:

AS-X-R3#conf tAS-X-R3(config)#router bgp X!--- iBGP com R1AS-X-R3(config-router)#neighbor X.0.0.1 route-reflector-client!--- iBGP com R2AS-X-R3(config-router)#neighbor X.0.0.2 route-reflector-client!--- iBGP com R4AS-X-R3(config-router)#neighbor X.0.0.4 route-reflector-client!--- iBGP com R5AS-X-R3(config-router)#neighbor X.0.0.5 route-reflector-client

5.5 - Route-Reflector

LAB 2-1-6

Page 357: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 358: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 358

5.6

Peer Groups

Page 359: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 359

5.6 - Peer Groups

Em nossa topologia, ficamos diante de uma situação:

R3 possui vários neighbors 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".

Page 360: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 360

Vamos praticar reconfigurando R3 com peer-groups:

!--- Primeiro vamos resetar as config de BGPAS-X-R3#conf tAS-X-R3(config)#no router bgp X!--- depois as configurações básicasAS-X-R3(config)#router bgp XAS-X-R3(config-router)#no synchronization AS-X-R3(config-router)#auto-summary AS-X-R3(config-router)#bgp router-id X.0.0.3AS-X-R3(config-router)#network X.0.0.0!--- Vamos declarar um peer-group chamado IBGPAS-X-R3(config-router)#neighbor IBGP peer-group AS-X-R3(config-router)#neighbor IBGP remote-as XAS-X-R3(config-router)#neighbor IBGP update-source loopback 0AS-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 grupoAS-X-R3(config-router)#neighbor X.0.0.1 peer-group IBGPAS-X-R3(config-router)#neighbor X.0.0.2 peer-group IBGPAS-X-R3(config-router)#neighbor X.0.0.4 peer-group IBGPAS-X-R3(config-router)#neighbor X.0.0.5 peer-group IBGP

5.6 - Peer Groups

LAB 2-1-7

Page 361: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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çãorouter(config-router)#neighbor IBGP prefix-list FILTRO-GERAL-DE-ENTRADA inrouter(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 individualAS-X-R3#clear ip bgp X.0.0.1 out

5.6 - Peer Groups

Page 362: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 363: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 363

Local Preference x Weight no iBGP

5.7

Page 364: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 365: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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 tAS-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-99AS-X-R1(config)#router bgp XAS-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 100AS-X-R1(config-router)#exitAS-X-R1(config)#route-map AS-100-IN permit 10AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-99AS-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 weightAS-X-R1(config-route-map)#exitAS-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 aceitoAS-X-R1(config-route-map)#endAS-X-R1#clear ip bgp 100.X.1.1 soft

5.7 - Local Preference x Weight no iBGP

LAB 2-1-8

Page 366: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 367: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 368: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 369: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 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

Page 370: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 370

PERGUNTAS?PERGUNTAS?

5.8

Page 371: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 371

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 [email protected].

Page 372: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 372

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

Page 373: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 373

6.1

Communities Padrão

Page 374: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 374

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.

Page 375: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 375

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

Page 376: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 376

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

Page 377: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 377

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

Page 378: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 378

NO-ADVERTISE-SUBCONFED usada para evitar que o prefixo seja exportado para AS's confederados.

6.1 – Communities Padrão

Page 379: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 379

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

Page 380: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 380

INTERNET na prática é a community padrão para anúncios externos, é o mesmo que não haver nenhuma.

6.1 – Communities Padrão

Page 381: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 381

LAB 1: Antes de começar remover todas as configurações do laboratório anterior

6.1 – Communities Padrão

Page 382: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 382

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 tAS-14X-R1(config)#router bgp 14XAS-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)#exitAs-14X-R1(config)#ip bgp-community new-format

AS-14X-R1(config)#route-map AS-X-OUT permit 10AS-14X-R1(config-route-map)#set community no-export

6.1 – Communities Padrão

LAB 2-1-10

Page 383: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 383

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 Xrouter(config-router)#neighbor A.B.C.D send-community both router(config-router)#exit

6.1 – Communities Padrão

LAB 2-1-10

Page 384: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 384

LAB 2 opcional: verificar a diferença enviando a community NO-ADVERTISE.

6.1 – Communities Padrão

LAB 2-1-11LAB 2-1-1

Page 385: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 385

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

Page 386: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 386

Communities Numéricas

6.2

Page 387: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 387

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.

Page 388: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 388

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.

Page 389: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 389

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

Page 390: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 390

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 trouter(config)#ip bgp-community new-format

Page 391: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 391

Identificando e Tratando Rotas de Peers Específicos

6.3

Page 392: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 392

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

Page 393: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 393

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 trouter(config)#route-map teste permit 10router(config-route-map)#set community 123:123router(config-route-map)#exitrouter(config)#route-map teste permit 10router(config-route-map)#set community 111:222router(config-route-map)#set community 333:214router(config-route-map)#endrouter#router#conf trouter(config)#route-map teste permit 10router(config-route-map)#set community 555:82

6.3 - Identificando e Tratando Rotas de Peers Específicos

Page 394: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 394

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 testeroute-map teste permit 10 set community 111:222 123:123 333:214 555:82!...

6.3 - Identificando e Tratando Rotas de Peers Específicos

Page 395: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 395

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

Page 396: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 396

Manipulando Trânsito (Nacional/Internacional) com

Communities

6.4

Page 397: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 397

Brasil Telecom8167:90 Set Local Preference 908167:100 Set Local Preference 1008167: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

Page 398: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 398

Embratel

4230:120 - Local Preference - marcar a rota como localpreference 1204230:10000 - Blackhole - bloqueia todo o tráfego para a rede/endereco4230: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 otrafego destinado a rede/endereco anunciado

6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities

Page 399: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 399

Global Crossing

3549:100 - set local preference 1003549:200 - set local preference 2003549:275 - set local preference 2753549:300 - set local preference 3003549: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

Page 400: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 400

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 8013701 MCI 8030 8031 8032 80331239 Sprint 8060 8061 8062 80631299 TeliaSonera 8250 8251 8252 82531668 AOL 8070 8071 8072 80732497 JPNIC 8080 8081 8082 80832516 KDDI 8100 8101 8102 81032914 NTT Verio 8120 8121 8122 81233257 Tiscali 8240 8241 8242 82433300 InfoNet Europe 8130 8131 8132 81333303 Swisscom 8140 8141 8142 81433320 T-Systems/DTAG 8150 8151 8152 81533356 Level 3 8160 8161 8162 81633561 Savvis 8170 8171 8172 81734134 ChinaNet 8230 8231 8232 82335511 OpenTransit 8190 8191 8192 81936461 AboveNet 8200 8201 8202 82036453 Teleglobe 8210 8211 8212 82137018 AT&T (US) 8220 8221 8222 82237738 Telemar 8290 8291 8292 8293

6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities

Page 401: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 401

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

Page 402: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 402

Intelig

17379:23004 - Community NO-EXPORT-INTERNACIONAL - Não anuncia para peersInternacionais.17379:23005 - Community NO-EXPORT-NACIONAL - Não anuncia para peersNacionais.No-export ? A rota não será anunciada para nenhum peer eBGP da Intelig.17379:60 = set local-preference 6017379:70 = set local-preference 7017379:80 = set local-preference 8017379:90 = set local-preference 90

Todo anuncio feito, sem a aplicação de communities tem por default ovalor 100 de local Preference.

6.4 – Manipulando Trânsito (Nacional/Internacional) com Communities

Page 403: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 403

Engenharia de Tráfego III

6.5

Page 404: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 404

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

Page 405: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 405

Solução:

AS-14X-R1#conf tAS-14X-R1(config)#route-map AS-X-OUT permit 10AS-14X-R1(config-route-map)#set community none!--- remove o ”set community” do lab anteriorAS-14X-R1(config-route-map)#set community 200:90AS-14X-R1(config-route-map)#endAS-14X-R1#clear ip bgp * soft

AS-15X-R1#conf tAS-15X-R1(config)#route-map AS-X-OUT permit 10AS-15X-R1(config-route-map)#set community noneAS-15X-R1(config-route-map)#set community 200:70!--- remove o ”set community” do lab anteriorAS-15X-R1(config-route-map)#endAS-15X-R1#clear ip bgp * soft

6.5 - Engenharia de Tráfego III

LAB 2-1-13

Page 406: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 406

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

Page 407: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 407

Solução Lab 2:!--- apagando o route map do lab anteriorAS-14X-R1(config)#no route-map AS-X-OUT

AS-14X-R1#conf tAS-14X-R1(config)#route-map AS-X-OUT permit 10AS-14X-R1(config-route-map)#set community 100:1090 100:9912AS-14X-R1(config-route-map)#endAS-14X-R1#clear ip bgp * soft

!--- apagando o RM do lab anteriorAS-15X-R1(config)#no route-map AS-X-OUT

AS-15X-R1#conf tAS-15X-R1(config)#route-map AS-X-OUT permit 10AS-15X-R1(config-route-map)#set community 100:1010 100:9912AS-15X-R1(config-route-map)#endAS-15X-R1#clear ip bgp * soft

6.5 - Engenharia de Tráfego III

LAB 2-1-14

Page 408: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 408

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

Page 409: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 409

Solução Lab 2-1-15: (AS Ímpar)

!--- apagando o RM do lab anteriorAS-14X-R1(config)#no route-map AS-X-OUT

AS-14X-R1#conf tAS-14X-R1(config)#route-map AS-X-OUT permit 10AS-14X-R1(config-route-map)#set community 100:9912 100:1023 100:1043 100:1063 100:1083AS-14X-R1(config-route-map)#endAS-14X-R1#clear ip bgp * soft

!--- apagando o RM do lab anteriorAS-15X-R1(config)#no route-map AS-X-OUT

AS-15X-R1#conf tAS-15X-R1(config)#route-map AS-X-OUT permit 10AS-15X-R1(config-route-map)#set community 100:9912 100:1023 100:1043 100:1063 100:1083AS-15X-R1(config-route-map)#endAS-15X-R1#clear ip bgp * soft

6.5 - Engenharia de Tráfego III

LAB 2-1-15

Page 410: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 410

Solução Lab 2-1-15: (AS Par)

!--- apagando o RM do lab anteriorAS-14X-R1(config)#no route-map AS-X-OUT

AS-14X-R1#conf tAS-14X-R1(config)#route-map AS-X-OUT permit 10AS-14X-R1(config-route-map)#set community 100:9912 100:1013 100:1033 100:1053 100:1073 100:1093AS-14X-R1(config-route-map)#endAS-14X-R1#clear ip bgp * soft

!--- apagando o RM do lab anteriorAS-15X-R1(config)#no route-map AS-X-OUT

AS-15X-R1#conf tAS-15X-R1(config)#route-map AS-X-OUT permit 10AS-15X-R1(config-route-map)#set community 100:9912 100:1013 100:1033 100:1053 100:1073 100:1093AS-15X-R1(config-route-map)#endAS-15X-R1#clear ip bgp * soft

6.5 - Engenharia de Tráfego III

LAB 2-1-15

Page 411: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 411

PERGUNTAS?PERGUNTAS?

6.5

Page 412: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 412

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 [email protected].

Page 413: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 413

7.0Filtros Avançados para Um AS de Trânsito7. 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• 7.6 PBR – Policy Based Routing

Page 414: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 414

7.1

Manipulando Rotas com Múltiplos PTTs

Page 415: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 415

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?

Page 416: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 416

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 trouter-SP(config)#route-map PTT-SAOPAULO-IN permit 1router-SP(config-route-map)#set community 28135:1111 additive...

Page 417: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 417

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 trouter-CampinaGrande(config)#route-map PTT-CAMPINAGRANDE-IN permit 1router-CampinaGrande(config-route-map)#set community 28135:2222 additive

Router(config)#ip community-list 70 permit 28135:1111Router(config)#ip community-list 70 permit 28135:2222!router(config)#route-map CLIENTE-OUT permit 10router(config-route-map)#match community 70

7.1 – Manipulando Rotas com Múltiplos Ptts

Page 418: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 418

Downstreams comDownstreams com Multihoming Multihoming

7.2

Page 419: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 419

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.

Page 420: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 420

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

Page 421: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 421

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 10router(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 AS 20

!--- voltamos no mesmo route-maprouter(config)#route-map ANUNCIAR-AS-XXX permit 10!--- e adicionamos a condiçãorouter(config-route-map)#match as-path 33

7.2 – Downtreams com Multihoming

Page 422: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 422

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 24router-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 10router-quagga(config-route-map)#match ip address prefix-list BLOCOS-AS-20router-quagga(config-route-map)#match as-path PATH-AS-20

7.2 – Downtreams com Multihoming

Page 423: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 423

7.3

AS de Trânsito no PTTparte I

Page 424: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 424

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 tAS-X-R1(config)#router bgp X!--- como os 2 neighbors terão as mesmas configurações, criaremos um peer-groupAS-X-R1(config-router)#neighbor PTT peer-group AS-X-R1(config-router)#neighbor PTT remote-as 555AS-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 neighborsAS-X-R1(config-router)#neighbor 187.16.216.253 peer-group PTTAS-X-R1(config-router)#neighbor 187.16.216.253 description PTT RS 1!--- ptt-rs1AS-X-R1(config-router)#neighbor 187.16.216.254 peer-group PTTAS-X-R1(config-router)#neighbor 187.16.216.254 description PTT RS 2!--- ptt-rs2AS-X-R1(config-router)#neighbor 187.16.216.252 remote-as 555AS-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

Page 425: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 425

...BGP com PTT...

AS-X-R1

!--- continuando...!--- vamos declarar em networks os prefixos mais específicosAS-X-R1(config-router)#network X.0.0.0 mask 255.128.0.0AS-X-R1(config-router)#network X.128.0.0 mask 255.128.0.0AS-X-R1(config-router)#exitAS-X-R1(config)#ip route X.0.0.0 255.128.0.0 null 0AS-X-R1(config)#ip route X.128.0.0 255.128.0.0 null 0!--- depois garantimos os dois blocos específicos (/9) na FIBAS-X-R1(config)#endAS-X-R1#clear ip bgp peer-group PTT out

!--- NOTA é preciso levantar o IP de participante na interface !--- conectada ao PTTAS-X-R1(config)#interface fastEthernet 0/0AS-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

Page 426: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 426

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 criadosAS-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 PTTAS-X-R1(config)#route-map PTT-IN permit 10AS-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

Page 427: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 427

Configurando as políticas de route-map para o PTT

AS-X-R1

(...continuação)AS-X-R1(config)#route-map PTT-OUT permit 10AS-X-R1(config-route-map)#match ip address prefix-list MEUS-BLOCOSAS-X-R1(config-route-map)#match as-path 10!--- libera os blocos do AS local XAS-X-R1(config-route-map)#exitAS-X-R1(config)#route-map PTT-OUT permit 20AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-14XAS-X-R1(config-route-map)#match as-path 20!--- libera os blocos do DOWNSTREAM 1AS-X-R1(config-route-map)#exitAS-X-R1(config)#route-map PTT-OUT permit 30AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-15XAS-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

Page 428: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 428

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 10AS-X-R1(config-route-map)#match ip address prefix-list MEUS-BLOCOSAS-X-R1(config-route-map)#match as-path 10!--- libera os blocos do AS local XAS-X-R1(config-route-map)#exitAS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 20AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-14XAS-X-R1(config-route-map)#match as-path 20!--- libera os blocos do DOWNSTREAM 1AS-X-R1(config-route-map)#exitAS-X-R1(config)#route-map ANUNCIAR-AS-100 permit 30AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-15XAS-X-R1(config-route-map)#match as-path 30!--- libera os blocos do DOWNSTREAM 2AS-X-R1(config-route-map)#endAS-X-R1#clear ip bgp * soft

7.3 - AS de Trânsito no PTT – parte I

LAB 2-3-1

Page 429: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 429

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 criadosAS-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 10AS-X-R2(config-route-map)#match ip address prefix-list MEUS-BLOCOSAS-X-R2(config-route-map)#match as-path 10!--- libera os blocos do AS local XAS-X-R1(config-route-map)#exitAS-X-R1(config)#route-map ANUNCIAR-AS-200 permit 20AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-14XAS-X-R1(config-route-map)#match as-path 20!--- libera os blocos do DOWNSTREAM 1AS-X-R1(config-route-map)#exitAS-X-R1(config)#route-map ANUNCIAR-AS-200 permit 30AS-X-R1(config-route-map)#match ip address prefix-list BLOCOS-AS-15XAS-X-R1(config-route-map)#match as-path 30!--- libera os blocos do DOWNSTREAM 2AS-X-R1(config-route-map)#endAS-X-R1#clear ip bgp * soft

7.3 - AS de Trânsito no PTT – parte I

LAB 2-3-1

Page 430: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 430

Todos esses route-maps podem deixar a 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/8AS-X-R1(config)#ip as-path access-list 20 permit ^(14X ?)+( 88)+$

AS-X-R1#show running-config | begin BLOCOS-AS-14Xip prefix-list BLOCOS-AS-11x seq 5 permit 14X.0.0.0/8ip prefix-list BLOCOS-AS-11x seq 10 permit 88.0.0.0/8!

7.3 - AS de Trânsito no PTT – parte I

Page 431: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 431

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-100route-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

Page 432: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 432

A configuração nos DOWNSTREAMS é muito mais simples:

AS-14X-R1

AS-14X-R1#conf tAS-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 0AS-14X-R1(config)#router bgp 14XAS-14X-R1(config-router)#network 14X.0.0.0 mask 255.128.0.0AS-14X-R1(config-router)#network 14X.128.0.0 mask 255.128.0.0AS-14X-R1(config-router)#neighbor PTT peer-group AS-14X-R1(config-router)#neighbor PTT remote-as 555AS-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 50AS-14X-R1(config-router)#neighbor PTT send-community both AS-14X-R1(config-router)#neighbor 187.16.216.253 peer-group PTTAS-14X-R1(config-router)#neighbor 187.16.216.253 description PTT RS 1AS-14X-R1(config-router)#neighbor 187.16.216.254 peer-group PTTAS-14X-R1(config-router)#neighbor 187.16.216.254 description PTT RS 2AS-14X-R1(config-router)#neighbor 187.16.216.252 remote-as 555AS-14X-R1(config-router)#neighbor 187.16.216.252 description LG do PTTAS-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-R4AS-14X-R1(config)#interface fastEthernet 0/0AS-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

Page 433: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 433

Seguimos a mesma lógica para o segundo DOWNSTREAM

AS-15X-R1

AS-15X-R1#conf tAS-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 0AS-15X-R1(config)#router bgp 15XAS-15X-R1(config-router)#network 15X.0.0.0 mask 255.128.0.0AS-15X-R1(config-router)#network 15X.128.0.0 mask 255.128.0.0AS-15X-R1(config-router)#neighbor PTT peer-group AS-15X-R1(config-router)#neighbor PTT remote-as 555AS-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 50AS-15X-R1(config-router)#neighbor PTT send-community both AS-15X-R1(config-router)#neighbor 187.16.216.253 peer-group PTTAS-15X-R1(config-router)#neighbor 187.16.216.253 description PTT RS 1AS-15X-R1(config-router)#neighbor 187.16.216.254 peer-group PTTAS-15X-R1(config-router)#neighbor 187.16.216.254 description PTT RS 2AS-15X-R1(config-router)#neighbor 187.16.216.252 remote-as 555AS-15X-R1(config-router)#neighbor 187.16.216.252 description LG do PTTAS-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 PTTAS-15X-R1(config)#interface fastEthernet 0/0AS-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

Page 434: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 434

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

Page 435: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 435

Configurando um Transporte Lan2Lan com xconnect/L2TP

7.4

Page 436: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 436

7.4 – Configurando um Transporte Lan2Lan com xconnect/L2TP

AS-X-R4(config)#l2tp-class transporte-l2AS-X-R4(config-l2tp-class)#cookie size 4AS-X-R4(config-l2tp-class)#exit!--- Declaramos uma class e demos o nome de “transporte-l2”AS-X-R4(config)#pseudowire-class transporte-l2AS-X-R4(config-pw-class)#encapsulation l2tpv3AS-X-R4 (config-pw-class)#protocol noneAS-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/0AS-X-R4(config)#no shutAS-X-R4(config-if)#xconnect X.0.0.1 14X encapsulation l2tpv3 manual pw-class transporte-l2AS-X-R4(config-if-xconn)#l2tp id 1 1AS-X-R4(config-if-xconn)#l2tp cookie local 4 1AS-X-R4(config-if-xconn)# l2tp cookie remote 4 1

LAB 2-4-1

Page 437: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 437

7.4 – Configurando um Transporte Lan2Lan com xconnect/L2TP

AS-X-R1(config)#l2tp-class transporte-l2AS-X-R1(config-l2tp-class)#cookie size 4AS-X-R1(config-l2tp-class)#exit!--- Declaramos uma class e demos o nome de “transporte-l2”AS-X-R1(config)#pseudowire-class transporte-l2AS-X-R1(config-pw-class)#encapsulation l2tpv3AS-X-R1 (config-pw-class)#protocol noneAS-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/0AS-X-R1(config)#no shutAS-X-R1(config-if)#xconnect X.0.0.4 14X encapsulation l2tpv3 manual pw-class transporte-l2AS-X-R1(config-if-xconn)#l2tp id 1 1AS-X-R1(config-if-xconn)#l2tp cookie local 4 1AS-X-R1(config-if-xconn)# l2tp cookie remote 4 1

LAB 2-4-1

Page 438: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 438

7.4 – Configurando um Transporte Lan2Lan com xconnect/L2TP

AS-X-R1#sh l2tun %No active L2F tunnelsL2TP Tunnel and Session Information Total tunnels 0 sessions 1LocID 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 tunnelsL2TP Tunnel and Session Information Total tunnels 0 sessions 1LocID 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

Page 439: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 439

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 prefixos que 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

Page 440: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 440

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

Page 441: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 441

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 tAS-X-R1(config)#ip as-path access-list 55 seq 1 deny _14X_AS-X-R1(config)#ip as-path access-list 55 seq 2 deny _15X_AS-X-R1(config)#ip as-path access-list 55 seq 99 permit .*AS-X-R1(config)#route-map PTT-IN deny 5AS-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

Page 442: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 442

Vamos efetuar novamente o traceroute partindo de AS-110-R1...

7.5 - AS de Trânsito no PTT – parte II

Page 443: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 443

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 [email protected].

Page 444: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 444

8.0Multiprotocol Label Switching (MPLS)

8. Mecanismos de Path Control

• 8.1 BGP através da nuvem MPLS• 8.2 AtoM - Any Transport Over MPLS• 8.3 Implementando serviço VPN-L3 (VPN-Multiponto)

Disponível na versão 2.2

Page 445: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 445

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 [email protected].

Page 446: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 446

9.0Mecanismos de Path

Control8. 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

Page 447: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 447

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 decomandos que são ativados para manipular a tabela deencaminhamento de um protocolo de roteamento ou bypass oencaminhamento padrão de um pacote.

Esta manipulação de informações de roteamento pode serrequerida para obter melhor desempenho.

9.1 PBR – Policy Based Routing

Page 448: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 448

Alguns Tópicos para Implementar Path Control

PBR – Policy-Based Routing;

IP SLA Tool (Service Level Agreements)

9.1 PBR – Policy Based Routing

Page 449: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 449

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

Page 450: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 450

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

Page 451: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 451

Um exemplo genérico de aplicação de PBRs pode ser visto na figura abaixo:

9.1 PBR – Policy Based Routing

Page 452: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 452

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

Page 453: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 453

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

Page 454: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 454

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

Page 455: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 455

Exemplo padrão:

9.1 PBR – Policy Based Routing

Page 456: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 456

PBR para que pacotes originados pelo PC2 sigam via R3:

9.1 PBR – Policy Based Routing

PBR Aplicada para origem 10.1.1.2

Page 457: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 457

Configurações:

9.1 PBR – Policy Based Routing

R1(config)#interface F0/0R1(config-if)#ip policy route-map PC2-via-R3R1(config-if)#exitR1(config)#route-map PC2-via-R3 permit 10R1(config-route-map)#match ip address 101R1(config-route-map)#set ip next-hop 10.1.14.4R1(config-route-map)#exitR1(config-if)#access-list 101 permit ip host 10.1.1.2 10.1.3.0 0.0.0.255

Page 458: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 458

PERGUNTAS?PERGUNTAS?

9.1

Page 459: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 459

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

Page 460: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 460

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

Page 461: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 461

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

Page 462: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 462

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

Page 463: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 463

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 tR3(config)#ip sla {monitor} responder

Page 464: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 464

Verificando:

9.2 IP SLA Tool

R3#show ip sla responderIP SLAs Responder is: EnabledNumber of Control Message received: 0 Number os errors:0Recent Sources:Recent error sources:

Page 465: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 465

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} 1R1(config-ip-sla)#{type} udp-echo 150.1.3.3 1234R1(config-ip-sla-udp)#frequency 30

Page 466: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 466

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

Page 467: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 467

Vamos observar como estão as coisas em R1, nosso transmitter:

9.2 IP SLA Tool

R1#show ip sla {monitor} configuration 1IP SLAs, Infrastructure Engine-II.Entry number: 1Owner:Tag:Type of operation to perform: udp-echoTarget address/Source address: 150.1.3.3/0.0.0.0Target port/Source port: 1234/0Request size (ARR data portion): 16Operation timeout (milliseconds): 5000Operation frequency (seconds): 30 (not considered if randomly scheduled)Next Scheduled Start Time: Start Time already passedThreshold (milliseconds): 5000Distribution Statistics:[...]

Page 468: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 468

Vamos observar como está do lado do responder (R3):

9.2 IP SLA Tool

R3#show ip sla responderIP SLAs Responder is: EnabledNumber of control message received: 9 Number of errors: 0Recent 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:

Page 469: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 469

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 tR1(config)#track 1 rtr 1 stateR1(config-track)#exitR1(config)#ip route 123.123.123.0 255.255.255.0 192.168.12.2 track 1

R1#sh ip route static123.0.0.0/24 is subnetted, 1 subnetsS 123.123.123.0 [1/0] via 192.168.12.2

R1(config)#ip sla {monitor} 1R1(config-ip-sla)#{type} udp-echo 123.123.123.3 1234R1(config-ip-sla-udp)#frequency 30

Page 470: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 470

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 l0R3(config-if)#shutdownR3(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->DownR1#sh ip sla statistics 1Round Trip Time (RTT) for Index 1Latest RTT: NoConnection/Busy/TimeoutLatest operation start time: *00:15:23.031 UTC Mon Jul 28 2008Latest operation return code: No connectionNumber of successes: 9Number of failures: 1Operation time to live: ForeverR1#sh ip route 123.123.123.0% Network not in table

Page 471: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 471

É 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”.

Page 472: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 472

PERGUNTAS?PERGUNTAS?

9.2

Page 473: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 473

MUITO OBRIGADO!!MUITO OBRIGADO!!

Page 474: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 474

100% desse material foi elaborado utilizando software livre, e é livre para ser copiado e distribuído desde que gratuitamente.

Está é a versão 2.1

Para reportar erros ou solicitar a versão mais recente entre em contado por email: [email protected]

Autor: Rinaldo Vaz

Posfácio

Page 475: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 475

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

Page 476: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 476

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

Page 477: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 477

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

Page 478: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 478

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

Page 479: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 479

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

Page 480: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 480

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..."

Page 481: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 481

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]+)$

Page 482: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 482

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

Page 483: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 483

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

Page 484: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 484

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"

Page 485: apostila-completa_curso_bgp_design_v2-1

v2.1 | Autor: Rinaldo Vaz | [email protected] 485

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