Escolar Documentos
Profissional Documentos
Cultura Documentos
Autonomous System
- Cada organização tem seu AS exclusivo.
- Desde o início do BGP era necessário o AS para o seu funcionamento, troca de
mensagens, etc. Cada AS ocupa 16bits no cabeçalho, porém com o crescimento da
internet, foi criada a RFC 4893 que permitiu a expansão disso para 32bits.
Aumentando a capacidade de ASs no mundo.
- CIDR (Classful Inter-domain Routing) permite que possamos rotear endereços
privados definidos pela RFC 1918.
- Assim como temos endereços IP privados, temos ASs privados da mesma forma.
Nem toda empresa tem um ASN, pois então podem usar o BGP usando ASs
privados, que foram feitos para essa utilidade, por exemplo dentro de uma
infraestrutura de empresas de grande porte, por mais que não tenham um ASN e
queiram usar as funcionalidades do BGP podem utilizar os ASN privados.
- Casos que uma empresa tenha conteúdos que precisam ser acessados de fora da
internet, é interessante usar o BGP, em um acordo com a empresa de Upstream, a
ISP que contrata o link, combinam de fechar uma sessão usando ASN privados, pra
anunciar para a internet, a ISP remove essa informação de ASN privado, e anuncia
com seu ASN.
- ASNs privados de 16-bits, são de 64,512 até 65,535, já em 32-bits são de 4.2bi até
4,294,467,294.
- Ninguém pode anunciar ASN privados na internet, se não poderá dar problema em
grande escala na internet inteira.
Sessão
- Antes de qualquer anúncio de rotas, o BGP precisa estabelecer uma sessão com
seu peer. E para isso acontecer, há a troca de mensagens entre os dois.
- o BGP roda no topo do protocolo TCP, utilizando a porta 179.
- Transportado por um IP, protocolo 6. E em L2, sobre o ethernet, que tem o
ethertype 0x0800. Então basicamente a pilha do BGP se trata:
BGP > TCP (Porta 179) > IP (Nº6) > L2 (Ethertype 0x0800).
- BGP é um protocolo Unicast, diferente da maioria dos protocolos de roteamento.
- BGP dentro de um AS, iBGP e entre AS distintos, eBGP.
Mensagens de BGP
- No BGP são usados 5 tipos de mensagens: OPEN, UPDATE, NOTIFICATION,
KEEPALIVE e ROUTE REFRESH.
- Mensagem OPEN: OPEN é a mensagem usada para subir e estabelecer uma
sessão BGP, a mensagem de OPEN, contém a versão do BGP, AS de origem do
roteador que originou a mensagem, hold time, identificador BGP e outros
parâmetros opcionais usados para estabelecer uma sessão, isso acontece depois
do 3-way handshake.
● Hold Time: Quando uma sessão BGP é estabelecida, o menor valor de
HoldTime é adotado para a sessão. O valor de HoldTime deve ser no mínimo
até 3s, por padrão em routers Cisco o valor é de 180s, quando esse valor
chega em 0, a sessão é considerada DOWN e as rotas são desinstaladas,
uma mensagem de UPDATE é enviada para os outros neighbors para
informar que não está mais repassando os prefixos da sessão que caiu.
● BGP Identifier: o BGP router-id (RID) é um número único de 32-bits, para
identificar o roteador, pode ser usado para prevenir loops também, o valor de
0 é setado como o IP de origem da sessão BGP.
- Mensagem UPDATE: É utilizada para atualizar os anúncios de rotas ou qualquer
mudança que haja, caso seja para retirar um anúncio, ou se uma rota que está
sendo repassada tenha caído, também é comunicado o outro peer para desinstalar
a rota, uma mensagem de UPDATE pode servir como KEEPALIVE para reduzir
tráfego.
- Mensagem NOTIFICATION: É uma mensagem encaminhada indicando um erro na
sessão em condição com o neighbor BGP, como uma requisição de reset na
sessão, parâmetros para a sessão alterados, quando holt time zera, etc, as
mensagens de NOTIFICATION tem os números para cada erro notificado;
1 - Erro no cabeçalho da mensagem
2 - Erro na mensagem de OPEN
3 - Erro na mensagem de UPDATE
4 - Hold Time foi expirado, sessão vai cair.
5 - Erro nos estágios de Formação de Vizinhança (FSM)
6 - Cease, notifica o fechamento da sessão.
7 - Erro na mensagem de ROUTE-REFRESH
Anúncio de prefixos: O BGP só vai anunciar a rota se ele tiver instalado essa rota
em sua tabela, caso não tenha, ele não vai chegar a anunciar.
Não importa qual o tipo de rota que tiver, se for uma rota conectada, estática ou de
um IGP, se for anunciado um prefixo, e algo desse prefixo for instalado de outra
forma na tabela, o BGP vai anunciar o que der match com aquele prefixo.
- Quando você tiver uma rede conectada e anunciar essa rede no BGP o next-hop
será 0.0.0.0, o próprio router o atributo de origem é setado para i, de IGP. e BGP
weight vai para 32768.
- Quando for rota estática ou protocolo de roteamento terá o next-hop daquele IP de
next-hop que já tem na tabela de roteamento do roteador, o atributo de origem é
setado para i, de IGP. BGP weight também é setado para 32768 e o multi-exit
discriminator ou MED é setado para o valor de IGP.
- Podemos redistribuir tudo que instalamos na tabela de roteamento atráves de
outros protocolos de roteamento, além de anunciarmos o prefixo que dê match com
que tenhamos instalados por outros protocolos, podemos utilizar a redistribuição do
protocolo dentro da coniguração do BGP, por exemplo, redistribute OSPF 1.
- o BGP tem os anúncios de 3 formas, nativamente com prefixos onde dentro do
processo setamos o que queremos anunciar, segunda forma, de forma agregada,
agregando prefixos em um menos específico, ATOMIC AGGREGATE. E a terceira
forma, com redistribuição de outros protocolos de roteamento.
Existe o processo de RIB check, pra ver se de fato existe a rota dentro da tabela de
roteamento do roteador, tendo isso, segue para a loc-RIB onde tem a NLRI criada e
passa para os próximos passos da mesma forma de NLRIs que chegam na adj-RIB-
in.
*Quando uma NLRI entra no seu AS, nativamente nenhum atributo é modificado,
por isso é necessário recursividade.
Visando o cenário acima, o Router do 65001 anuncia alguma coisa para o R1 que
tem sessão com R4, ele por natureza do protocolo BGP repassa o prefixo para o
R4, o R4 porém não instala a rota na routing-table global, por não ter recursividade
para chegar até o prefixo e validar ele. Já que, como não é modificado os PAs
quando a NLRI entra no AS, o next-hop dessa NLRI segue sendo o 10.0.0.18.
Sendo assim para o R1 a rota é válida, mas para o R4 não é válida.
A rota não é valida, porque na NLRI que o R1 recebe o next-hop é 10.0.0.18, e
repassa isso para o R4, para ter recursividade para o next-hop, é necessário que o
R1 coloque a interface dentro do OSPF de forma passiva, ou anuncia a rota
10.0.0.16/30 para o OSPF, dessa forma o R4 chegará no 10.0.0.18. Outra opção
melhor, é modificar o atributo next-hop para next-hop self, sendo assim a NLRI
modifica o atributo next-hop para a Loopback do R1, sendo assim tudo vai chegar
nele e ele manda para o eBGP.
Manipulação de redistribute com policies.
Criando duas rotas fictícias na tabela.
AS65001-RTR(config)#ip route 172.16.3.0 255.255.255.0 null 0 name ROTA-TESTE
AS65001-RTR(config)#ip route 200.200.200.0 255.255.255.0 null 0 name ROTA-
TESTE
Criamos uma prefix-list dessas rotas,
AS65001-RTR(config)#ip prefix-list export-static-bgp seq 5 permit
200.200.200.0/24
AS65001-RTR(config)#ip prefix-list export-static-bgp seq 5 permit 172.16.3.0/24
Criamos uma policy pra isso,
AS65001-RTR(config)#route-map export-static-bgp
AS65001-RTR(config-route-map)#match ip address prefix-list export-static-bgp
Dentro do processo de BGP, redistribuímos a static com a policy sendo aplicada.
AS65001-RTR(config-router)#redistribute static route-map export-static-bgp
Após isso, já vamos ver os anúncios NLRI gerados com isso dentro da loc-RIB.
AS65001-RTR#show ip bgp
BGP table version is 13, local router ID is 10.0.0.18
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
A origem fica Incomplete (?), podemos manipular isso para IGP dentro da policy.
AS65001-RTR(config)#route-map export-static-bgp
AS65001-RTR(config-route-map)#set origin igp
Após isso a loc-RIB terá mudanças, será alterado a origem das duas NLRIs.
AS65001-RTR#show ip bgp
BGP table version is 15, local router ID is 10.0.0.18
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
RouteReflectors.
RFC 1966 implementou a ideia de haver um peering iBGP que apenas refletisse as
rotas iBGP para outros peers dentro do iBGP, dentro do mesmo AS. Esse peer que
reflete as rotas é conhecido como Router Reflector, o roteador que recebe as rotas
refletidas se trata de um Reflector Client. O Router reflector e a reflexão de rotas
seguem 3 regras básicas.
● Regra 1: Se o RR receber uma NLRI de um non-RR client (Roteador que não
é um client do RR), ele reflete a NLRI para os RR-client (Reflector Client).
Isso não é refletido para os non-RR client.
● Regra 2: Se o RR receber uma NLRI de um RR-client, ele reflete essa NLRI
para o RR-client e non-RR client. Sempre que o RR-client encaminha aum
anúncio NLRI, ele recebe uma cópia da rota, mas descarta ela por ser ele
mesmo um originador da rota.
● Regra 3: Se o RR recebe uma rota via eBGP, ele reflete a NLRI para os RR-
client e non-RR client.
O roteador que é RR-client não sabe que é cliente do RouteReflector, pois a
configuração é feita somente no RR.
Confederations