O Border Gateway Protocol (BGP) é um padrão da Internet Engineering Task Force (IETF) e o mais escalável de todos os protocolos de roteamento.
BGP é o protocolo de roteamento da Internet global, bem como para redes privadas de Provedores de Serviços. O BGP expandiu seu propósito original de transportar informações de acessibilidade da Internet e agora pode transportar rotas para Multicast, IPv6, VPNs e uma variedade de outros dados.
A Cisco suporta todos os padrões IETF BGP, bem como a maioria ou todos os drafts da Internet para BGP. Além disso, a Cisco é um participante ativo nos grupos de trabalho do BGP no IETF e colaborador frequente de novas extensões do BGP.
Primeiro, considere as semelhanças entre o BGP e vários IGPs (OSPF, EIGRP). O BGP precisa anunciar prefixos IPv4, assim como os IGPs. O BGP precisa anunciar algumas informações para que os roteadores possam escolher uma das muitas rotas para um determinado prefixo como a melhor rota no momento. O BGP estabelece uma sessão TCP antes de trocar informações de topologia com um roteador vizinho.
Em seguida, considere as diferenças. O BGP não exige que os vizinhos sejam ligados à mesma rede. Em vez disso, os roteadores BGP usam uma conexão TCP (porta 179) para passar mensagens BGP, permitindo que roteadores vizinhos estejam na mesma rede ou sejam separados por vários roteadores.
Outra diferença está em como os protocolos de roteamento escolhem a melhor rota. Em vez de escolher a melhor rota apenas usando uma métrica inteira, o BGP usa um processo mais complexo, denominado Path Attributes.
Por padrão, se nenhum PA foi definido explicitamente, os roteadores usam o BGP AS_PATH (autonomous system path) ao escolher a melhor rota entre muitas rotas concorrentes.
O BGP usa o AS_PATH para executar duas funções principais:
- Escolher a melhor rota para um prefixo com base no AS_Path mais curto (menor número de ASNs listados).
- Evitar loops de roteamento.
O BGP usa ASN (Autonomous System Number) para identificar exclusivamente uma organização que se considera autônoma de outras organizações. Cada empresa cuja rede corporativa se conecta à Internet pode ser considerada um sistema autônomo e pode receber um ASN BGP (a IANA/ICANN também atribui ASNs globalmente exclusivos). Além disso, cada ISP tem um ASN, ou possivelmente vários, dependendo do tamanho do ISP.
ASN podem ser:
ASPLAIN (older) | 2-byte (octet) / 16-bit 4-byte (octet) / 32-bit | 1 - 65535 65536 - 4294967295 |
ASDOT (newer) | 2-byte (octet) / 16-bit 4-byte (octet) / 32-bit | 1 - 65535 1.0 - 65535.65535 |
Ao estabelecer ligações com o ISP (Internet Service Provider), existem as seguintes topologias:
Single-homed | 1 ISP usando um único link (interface) |
Dual-homed | 1 ISP usando dois ou mais links (interfaces) |
Single-multihomed | 2 ISP usando um link por cada ISP (interface) |
Dual-multihomed | 2 ISP usando dois ou mais links por cada ISP (interfaces) |
Existem dois tipos de roteadores vizinhos BGP: iBGP e eBGP.
iBGP
- Não substitui o IGP. Nenhuma conectividade direta necessária
- "Split-horizon" como prevenção de loop. As rotas iBGP não são encaminhadas para outros vizinhos iBGP, mas são anunciados para vizinhos eBGP.
- Apenas anuncia a melhor rota em qualquer mensagem BGP UPDATE.
- BGP apenas redistribui rotas ebgp em um IGP
- BGP não redistribui rotas externas ospf por padrão
- As sessões iBGP têm TTL (Time To Live) de 255
R3
router bgp 65200
neighbor 192.168.23.2 remote-as 65200
R2
router bgp 65200
neighbor 192.168.23.3 remote-as 65200
eBGP
- O vizinho deve estar em um AS diferente
- O vizinho deve estar conectado diretamente ou adicionar ebgp-multihop (ou ttl-security hops) que altera o TTL padrão
- Caso contrário, um protocolo de roteamento IGP deve fornecer acessibilidade
- Rotas com o mesmo AS são rejeitadas se observadas nas mensagens AS_PATH recebidas (AS_SEQUENCE e/ou AS_SET)
- Todas as melhores rotas (e apenas as melhores rotas) são anunciadas e aceites na mensagem UPDATE
- eBGP tem TTL de 1
R1
router bgp 65100
neighbor 192.168.12.2 remote-as 65200
R2
router bgp 65200
neighbor 192.168.12.1 remote-as 65100
Anunciar redes em BGP
Para anunciar redes em BGP podemos usar o comando network rede mask mâscara_de_rede, podemos redistribuir redes provenientes de outros protocolos para dentro do BGP.
Exemplo:
router bgp 64512
network 192.168.1.0 mask 255.255.255.0
BGP Path Attributes e Best Path Algorithm
Quando o routeador BGP recebe uma duas mais rotas para o mesmo destino, por defeito ele escolhe somente uma de acordo a ordem de preferência descrita na tabela abaixo:
Preference | Path Attribute | Hint | Description | Scope | Preference |
0 | NEXT_HOP | N | Next hop needs to reachable | Local | If no route to NEXT_HOP exists, prefix will not be used |
1 | WEIGHT | W | Cisco proprietary weight attribute (not a PA) Only locally significant, any prefix learned from neighbor has a weight of 0. Can only influence local decisions | Local | Higher is better (default is 32768) |
2 | LOCAL PREFERENCE | L | Only relevant in own AS, can influence other iBGP neighbors | Non-transitive | Higher is better (default is 100) |
3 | LOCALLY INJECTED/ ORIGINATED PREFIXES | L | Routes are either locally injected, or learned from a neighbor (iBGP / eBGP) | Local | Locally injected (network, redistribution, aggregate) over remotely learned (iBGP or eBGP) |
4 | AS_PATH | A | Prefer path with the shortest AS_PATH length | Transitive | Less hops is better |
5 | ORIGIN TYPE | O | The method with which routes were originally (or altered) advertised 0 (i) is internal, 1 (e) is external (absent), 2 (?) is redistributed (incomplete) | Transitive | i > e > ? IGP > EGP > ? value for the Origin code e is absent by default in IOS, usually the result of an alternation using a route-map |
6 | MED | M | Multi-exit Discriminator. Used to influence direct neighbor (and only direct neighbor) or peers in own AS Often used by dual-homed ISPs to create active/passive connection Only used when all other attributes match (preference / origin / etc) | Transitive (only one AS) | Lower is better, default is 0 or 'missing' in IOS (see below) |
7 | NEIGHBOR TYPE | N | The neighbor type, eBGP or iBGP neighbors | Local | Prefer eBGP over iBGP neighbor paths |
8 | IGP METRIC for reaching the NEXT_HOP | I | BGP routes will receive a metric when NEXT_HOP is learned through an IGP (eigrp / ospf / static / etc) protocol | Local | Lower metric is better Prefer the path with the minimum IGP metric to reach the NEXT_HOP IP address. |
9 | OLDEST | O | Oldest eBGP route | Local | Older is better |
10 | RID | R | Lowest neighbor router-ID (RID) | Local | Lower is better |
11 | IP | I | Lowest neighbor IP address | Local | Lower is better |
Leitura adicional
https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_bgp/configuration/xe-16/irg-xe-16-book/bgp-4.html