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