REDES MPLS
PROFESSOR: MARCOS A. A. GONDIM
Roteiro
Introdução ao BGP Sistema Autônomo Fundamentos do BGP Sessão BGP
Cabeçalho BGP Mensagem BGP Tabelas BGP Estados do BGP
Border Gateway Protocol (BGP)
Protocolos de roteamento podem ser
classificados como:
IGP EGP
RIP
EIGRP
OSPF
IS-IS
Distâncias Administrativas
Protocolo AD
Diretamente 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
Border Gateway Protocol (BGP)
BGP - Border Gateway Protocol
BGP1: RFC 1105 BGP2: RFC 1163 BGP3: RFC 1267
BGP4: RFC 4271 - versão atual, com suporte a VLSM.
O BGP é um protocolo de roteamento Path Vector
(Protocolo Vetor Distância avançado).
Path Vector
Informa os números dos AS que compõem o caminho até uma rede
O BGP pode ser usado em 2 cenários...
eBGP: quando o BGP realiza a divulgação de
rotas entre Sistemas Autônomos diferentes é
chamado de
Exterior BGP
.
iBGP: entretanto o BGP pode ser utilizado para
a divulgação de rotas dentro de um mesmo
Sistema Autônomo e é chamado de
Interior
Sistema Autônomo
É definido por um conjunto de roteadores sob
uma mesma política de roteamento e
administração.
Um dos roteadores é escolhido como o
roteador que comunica-se com outros
roteadores na Internet/MPLS e é capaz de
enviar rotas corretas aos demais.
O BGP associa redes com sistemas
Sistema Autônomo
Para diferir e identificar univocamente
cada sistema autônomo (AS), este será
associado a um número que o identifica
mediante os demais sistemas.
Esse número varia entre
1 e 65.535
Sistema Autônomo
IANA é a organização que gerencia globalmente a utilização de IPs e números dos
Sist. Autônomos.
Detecção de loops
O BGP realiza a
detecção de loops
montando um
“histórico” dos AS (Path Vector).
Os pacotes que passarem por um AS que consta no
Loops BGP
AS 7
172.31.254.0/23 AS Path - vazio
AS 25 AS 69 AS 19 172.31.254.0/23 172. 31.2 54.0 /23 AS Pa
th - 7 17 2.3 1.2 54 .0/23 AS Pa
th
–
7 25
172. 31.2
54.0 /23 AS Pa
th – 7 25
19
172.31.25 4.0/23 AS Pa
th – 7 25
19 69
Sessão BGP
Antes do estabelecimento de uma sessão BGP, os
roteadores vizinhos trocam mensagens entre si para
entrar em acordo sobre quais serão os parâmetros da
sessão.
Não havendo discordância e nem erros durante a
negociação dos parâmetros entre as partes, a sessão
BGP é estabelecida.
Caso contrário, serão enviadas mensagens de erro e a
Cabeçalho BGP
As mensagens trocadas em sessões BGP
têm o comprimento máximo de 4.096
bytes, e mínimo de 19 bytes.
Cabeçalho BGP
Campo Marcador
Verificar a autenticidade da mensagem recebida e se houve
perda de sincronização entre os roteadores vizinhos BGP.
Campo Comprimento
Deve conter um número que representa o comprimento total da
mensagem, incluindo o cabeçalho.
Como pode haver mensagens que não possuem dados após o
Cabeçalho BGP
Campo Tipo
Contém um número que representa o código de um tipo de
mensagem.
Existem 4 tipos de mensagens BGP:
Open;
Keepalive;
Update;
Mensagens BGP
A mensagem do tipo OPEN é enviada para se iniciar a abertura de uma sessão BGP
entre os vizinhos BGP, através da porta TCP = 179.
Version number: Indica qual a versão do BGP é utilizada (ex: BGP4).
AS number: Indica o número do AS do roteador local. O peer verifca o valor do
AS e caso não seja o valor esperado a sessão BGP é derrubada.
Hold time: Indica o valor máximo de tempo em segundos utilizado entre
mensagem keepalive ou update sucessivos.
BGP router ID: campo de 32-bits que identifca o originador BGP. O BGP ID é
um endereço IP que identifica o roteador. O BGP router ID é escolhido da mesma forma que no OSPF: ele é o maior endereço IP ativo existente e associado a uma interface (exceto IP de loopback). Caso haja um IP de loopback configurado ele terá a preferência com ID do BGP.
Mensagens BGP
A mensagem do tipo
KEEPALIVE
é
composta apenas de cabeçalho padrão
das mensagens BGP.
O tempo máximo de espera para o
Mensagens BGP
A mensagem
UPDATE
é enviada quando
há mudanças na rede.
Essa mudança pode ser:
uma nova rede disponível
remover uma rota que aponta para uma rede
Mensagens BGP
A mensagem do tipo
NOTIFICATION
é
enviada no caso da detecção de erros
durante ou após o estabelecimento de
uma sessão BGP.
São usadas para:
encerrar uma sessão;
informar o porquê do encerramento da
Mensagens BGP
Uma mensagem
UPDATE
contém as informações
abaixo:
Rotas Retiradas (Withdrawn Routes): Indica quais os prefixos
IP devem ser retirados da tabela de rotas por não estarem disponíveis.
Atributos de Caminho (Path attributes): Fazem parte deste
subcampo os atributos (AS Path , Local Preference, Weight etc).
Informação de disponibilidade (Network-layer reachability
Diferenças entre FIB e RIB:
Fowarding Information Base (FIB)
Armazena a melhor rota.
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
Tabelas BGP
A tabela de roteamento BGP é composta de 3 partes:
Adj-RIB-in, Loc-RIB, Adj-RIB-Out.
As rotas BGP são mantidas separadamente e apenas a
Estados dos BGP
Para o estabelecimento do BGP são necessárias 5
etapas:
Idle
–
Procurando por vizinhos.
Connect
–
TCP handshake-triplo completo com vizinho.
Open Sent
–
Enviada mensagem Open BGP.
Open Confirm
–
Resposta recebida.
Estados dos BGP
Enquanto a negociação está nas etapas: Idle,
Connect, Open Sent, Open Confirm é exibido o
status “Active”.
Atributos
Conhecidos
Opcionais (Well-known)
Atributos Obrigatórios/ Discricionários
Conhecidos obrigatórios (Well-known mandatory):
Precisam estar obrigatoriamente em todas as mensagens de
update trocadas entre os roteadores via BGP, independentemente do fabricante.
Conhecidos discricionários (Well-known discretionary):
Não precisam estar contidos em todas as mensagens de
Atributos Opcionais
Opcional transitivo (Optional transitive):
Não precisam ser implementados 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
Critério para escolha de rotas
Em primeiro lugar, o BGP apenas analisa os
atributos para "desempatar" duas ou mais rotas
para o
MESMO PREFIXO.
Caso haja um prefixo mais específico esse
sempre será preferido independentemente dos
seus atributos "mais favoráveis".
Exemplo:
Rota recebida: 200.123.0.0/23
Critério para desempate de rotas
Como o BGP escolhe uma rota:
Sempre que houver 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 (valor padrão = 0). Quanto maior melhor. 2. Rota com maior valor de LOCAL_PREF (valor padrão = 100). Quanto maior
melhor.
3. Rota originada localmente.
4. Rota com o menor AS_PATH (nº de AS’s por onde passou). Quanto menor
melhor.
5. Rota com menor tipo de origem. IGP (i) < EGP (e) < INCOMPLETE (? – rota
gerada pelo comando redistribute)
6. Rota com menor métrica multi-exit discriminator (MED). Quanto menor
melhor. OBS: É usado somente no caso de recebimento de rotas redundantes de um mesmo AS.
Critério para desempate de rotas
8. Rota com a menor métrica IGP para o nexthop BGP
Ex: O next-hopaprendido via OSPF (110) vai ”vencer” um next-hop aprendido via IS-IS
(115).
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(iBGP) apenas)
Habilitando o BGP
Este comando identifica a qual AS o
roteador pertence.
Somente uma instância BGP pode ser
Vizinhança BGP
Roteadores vizinhos que rodam BGP são
chamados
de neighbors
.
Os
neighbors
são descobertos através de
Determinando Vizinhos
Este comando ativa a sessão BGP com um vizinho.
O endereço IP vizinho será utilizado para realização de
atualizações.
O valor do remote-as indica se será utilizado IBGP ou
EBGP.
Vizinhança Externa (multi-hop)
Permite conexão BGP
Propagando redes através do BGP
Diferentemente dos IGPs o comando network
não inicia (start) o BGP em interfaces
específicas.
Em contrapartida, o comando
network
no BGP,
Desativando uma sessão
com um vizinho BGP
Comando utilizado para realizar
Next-hop-self
• O roteador C anuncia o prefixo 170.10/16 com next-hop 2.2.2.3
• Quanto A anuncia esta rota para B temos um PROBLEMA!
RTC# router bgp 300
EBGP Peering
Para o caso de utilização do
EBGP
, para o IP
do
neighbor
pode-se usar o IP da interface
diretamente conectada (não é a melhor
configuração).
Porém se uma interface de loopback for
utilizada como IP do
neighbor
em uma sessão
Cenário A
Aluno
Cenário A
Configuração do Roteador AS 1:
Router# debug bgp all !
Router(config)# router bgp 1
Router(config-router)# neighbor 100.1.1.1 remote-as 100
Router(config-router)# neighbor 100.1.1.1 description eBGP com AS 100 Router(config-router)# network 150.0.0.0 mask 255.255.255.0
Cenário A
Verficando Configuração do Roteador AS 1:
Router# show ip bgp summary !
Router# show ip bgp neighbors 100.1.1.1 routes !
Router# show ip bgp neighbors 100.1.1.1 advertised-routes !
Router# show ip bgp 123.0.0.0 !
ATENÇÃO: Router# show ip bgp neighbors 1.1.1.13 received-routes
Aluno
Soft-reconfiguration
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.
Para habilitar o soft reconfiguration inbound:
Cenário B
(Conexão com 2 links)
AS 200 AS 100 AS 1 AS 222 AS 123 AS 111 AS 55 Estamos aqui!!! 123.0.0.0/8 150.0.0.0/8 IP: 100.100.100.1 IP: 200.200.200.1 Melhor caminho!
Cenário B
(Conexão com 2 links)
1. WEIGHT (valor padrão = 0).
2. LOCAL_PREF (valor padrão = 100). 3. Rota originada localmente.
4. Rota com o menor AS_PATH
AS 2
Verficando Configuração do Roteador AS 1:
Router(config)# router bgp 1
Router(config-router)# neighbor 200.1.1.1 remote-as 100
Router(config-router)# neighbor 200.1.1.1 description eBGP com AS 200
Aluno
Cenário B
Verficando Configuração do Roteador AS 1:
Router# show ip bgp summary !
Router# show ip bgp neighbors 100.1.1.1 routes !
Router# show ip bgp neighbors 100.1.1.1 advertised-routes !
Router# show ip bgp 123.0.0.0
Aluno
Cenário B
Atenção!
• Neste cenário temos o AS 1 e 2 trocando
tráfego com os provedores do AS 200 e AS 100.
Mudando a preferência
AS 200 AS 100
Mudando a preferência
A figura abaixo mostra que o caminho
Mudando a preferência
Embora haja dois AS’s e o preferencial
Mudando a preferência
AS 200 AS 100
AS 16 AS 222 AS 123 AS 111 AS 55 Estamos aqui!!! 123.0.0.0/8 16.0.0.0/8 IP: 100.16.1.1 IP: 200.16.1.1
Mudando a preferência
Após a mudança do atributo weight temos
IBGP Peering
Qual IP deve-se utilizarpara configuração do neighbor em uma sessão entre os roteadores A e D?
Se o roteador D usar:
neighbor 10.3.3.1 remote-as 65102,
mas se o roteador A enviar pacotes BGP para o roteador D via roteador B, a
Update Source
Este comando ativa manualmente o IP de origem.
Caso não se utilize o Update Source, o IP do pacote BGP será o da
IBGP
Update Source
Caso a configuração em C fosse: neighbor 10.1.1.1 remote-as 65101 e a interface correspondente ao IP 10.1.1.1 fosse para down a sessão
Comando BGP: next-hop-self
O comando
neighbor next-hop-self
faz o BGP
usar o endereço IP da interface por onde os
pacotes saem (ou o IP da
loopback
) do próprio
roteador para o
update
como o
next-hop
para
Peer Group
É um agrupamento de
neighbors
com as
mesmas características.
Simplifica a configuração e torna o envio de
Peer Group
Peer Group
Sem Peer Group
Reset da tabela de roteamento
Caso sejam realizadas mudanças na rede
ou implementados novos filtros se faz
necessária atualizar a tabela de rotas
BGP.
Existem dois tipos de reset: Hard Reset e
Hard Reset
Reseta todas as conexões BGP com este roteador.
Toda a tabela BGP é descartada e refeita.
Reseta somente a conexão BGP com o neighbor
Hard Reset
Soft Reset
Deste modo as rotas aprendidas e disponíveis
não são perdidas;