Você está na página 1de 15

BGP - Border Gateway Protocol

Quando não usar BGP?


• Tiver uma conexão simples com Internet (ISP) ou outro AS;
• Não há preocupação com políticas e seleção de rotas;
• Mesma política de roteamento utilizada pelo ISP (Bloco CIDR
pertencente ao ISP);
• Roteador com pouca memória;
• Compreensão limitada de filtro de rotas e seleção de caminhos;
• Baixa largura de banda entre AS's.

Características

• Atualizações confiáveis (TCP 179);


• Não exige topologia hierárquica;
• Não possui mecanismo de retransmissão ou recuperação de
erro, pois utiliza o TCP;
• Envia mensagens periódicas de Keepalive, semelhante ao hello;
• Atualizações incrementais (triggered update);
• Livre de loop, pois não aceita atualizações de rotas;
• Possui uma lista do caminho completo até a rede de destino
incluindo os AS;
• Possui Split Horizon: rotas aprendidas por um IBGP não são
propagadas para os IBGPS vizinhos;
• É necessário Full-Mesh se não usar roteadores refletores ou
confederações;
• AS privados= 64512 to 65535;
• Não é aplicado nas interfaces e sim no router inteiro. Passive-
interface não funciona.

Tipos de BGP
• IBGP - Internal BGP roda entre vizinhos na mesma AS. Não
necessariamente precisam estar conectados entre si;
• EBGP - External BGP roda entre dois vizinhos conectados em
diferentes AS, não precisam estar diretamente conectados;
Quando o EBGP anuncia uma rota do seu vizinho ele anuncia o
vizinho como next-hop;
Somente rotas originadas no router IBGP são passadas para um
vizinho IBGP, rotas aprendidas não são. Rotas IBGP aprendidas por
outro IBGP são passadas apenas para o EBGP (solução: route-
reflector).

Roteamento baseado em Políticas


Com essas políticas não se pode influenciar como o AS vizinho irá
rotear o seu tráfego, mas pode influenciar a forma como o seu
trafego chega até o AS vizinho.

Atributos
São informações sobre as métricas BGP incluídas nas mensagens de
atualização do BGP

Well-Known mandatory - atributos bem conhecidos mandatórios -


devem aparecer na descrição da rota. É aquele que todas as
implementações do BGP devem reconhecer, se propaga para os
vizinhos.

• Origin - Tipo 1 - Indica a origem da rota. Na tabela BGP


aparece como: I= quando aprendida por IGP, E= Quando
aprendida por EGP e ?= Quando a origem da rota é
desconhecida (para rotas estáticas e de redistribuição);
• AS-path - Tipo 2 - Sempre que uma atualização de rota passa
através de uma AS o N.º da AS é pré-anexado aquela
atualização (colocado no inicio da lista de AS's que foram
atravessadas até chegar o destino. Os routers que divulgam
para IBGP não mudam o atributo AS-Path. Garante o ambiente
Isento os loops. Para manipular o tráfego com As-path usa-se o
prepend.
• Next-Hop - Tipo 3 - Anuncia o próximo salto para alcançar a
rede de destino. Geralmente o Next-Hop é o endereço da rede /
30. O router EBGP anuncia para o IBGP (routers internos) o
Next-Hop como o endereço da rede /30 (endereço da rede
entre os AS's), os routers do IBGP tem que conhecer a rede /30
entre os As's (EBGP) por um IGP ou rota estática. Em NBMA o
router se anuncia.
Well-Known discretionary - atributos bem conhecidos arbitrário
- Não precisa aparecer nas descrições de rotas.

• Local Preference - Tipo 5 - Roda internamente na AS, não é


passado para os peers EBGP e Informa no AS qual o melhor
caminho para sair do AS. Um caminho com Local preference
maior é preferido. Default Cisco = 100;
• Atomic aggregate - Tipo 6 - Informa o AS vizinho que o
router de origem agregou as rotas;

Optional Transitive - Opcional Transitivo - Opcional, caso o router


não possua, deve ser passado inalterado. Propaga-se entre os AS's.
Apenas os Opcionais Transitivos podem ser marcados como parciais;

• Community - Tipo 8 - Serve para filtrar rotas de entrada e


saída baseado na comunidade, 32bits (community Filters);
• Aggregator - Tipo 7 - Informa o ID do router e o AS que
executou a agregação da rota.

Optional nontransitive - Opcional não-transitivo - Roda dentro


da AS e deve ser excluído se não implementado

• MED - Tipo 4 - Chamado de métrica. É a divulgação de um


caminho preferido dentro de um AS para AS’s externos. É uma
forma de influenciar outro AS onde ele deve optar para atingir
determinada rota. Utilizado quando tem 2 entradas para o
mesmo AS, quanto mais baixo melhor. Se não estiver habilitado
a opção de verificar o MED, em routers CISCO é colocado por
default o 0 que indica a melhor rota, mas no padrão IETF é
colocado como infinito, a pior rota. Pode-se configurar para
manter o padrão: bgp bestpath missing-as-worst;
• Originator-ID – Tipo 9 - Atributo que carrega o router ID e o
AS de quem originou a rota;

Weight - Particular CISCO, uso local somente no router para definir


o peso da rota (preferencia) 0 - 65535, default=32768 e 0 para rotas
aprendidas por outro BGP speaker, mais alto melhor. Não é
propagado para nenhum vizinho, é apenas para uso local. Esse
atributo tem prioridade sobre o Local Preference.

Synchronization
Um router não deve anunciar uma rota fora da AS antes que todos os
outros tenham aprendido;
• Gera consistência das informações dentro da AS;
• Evita buracos negros dentro da AS;
• Ligado por Default;
• Não é necessário se o AS não é um AS de transito (AS que liga
ASs);
• Desabilitado a convergência é mais rápida;
• Pode ser desabilitado se todos os routers de trânsito estiverem
em full-mesh;

Quando estiver implementado o multihome, deve-se usar a


sincronização.

Tipos de Mensagens
Todas as mensagens possuem o mesmo cabeçalho

Open – (Tipo 1) Primeira mensagem enviada após a conexão TCP ser


estabelecida, e confirmada com um keepalive.

• Holdtime - tempo máximo entre mensagens sucessivas de


keepalive e update do remetente. 180s de default. Se o
holdtime fo zero os routers não enviaram Keepalive;
• BGP router ID - Identifica o remetente, é o maior ip da
interface ou da loopback. Igual ao OSPF;
• My AS - O numero da AS do remetente;
• Version - Versão do BGP, a utilizada é a 4;
• BGP identifier (Router ID) – É o identificador do remetente.
O ID do router é definido igual no OSPF, pelo maior IP ativo de
todas as interfaces a menos que exista um IP no
loopback;Authentication – Se usado;

Update – (Tipo 2) Contem informações sobre um caminho, diversos


caminhos exige diversas mensagens;

• Withdrawn routes – Lista dos prefixos de endereço IP que


estão sendo retiradas de serviço, se houver uma;
• Path attributes – Atributos de caminhos, são: As-Path, Origin,
Local Preference,... todos os atributos;
• Network layer reachability Information – Esse campo
contém uma lista dos prefixos de endereço IP que podem ser
atingidos por esse caminho.
Notification – (Tipo 3) Enviada quando ocorre um erro, a conexão é
fechada imediatamente ;

• 1 for a Message Header Error;


• 2 for an Open Message Error;
• 3 for an Update Message Error;
• 4 for Hold Time Expired;
• 5 for a Finite State Machine Error;
• 6 for a Cease.

Keepalive – (Tipo 4) Mensagens trocadas de 60 em 60s para


verificar se o router está OK, com tempo mais rápido que o holdtime

Estado do vizinho BGP


O protocolo BGP é uma máquina de estados, que leva um router
através dos seguintes estados:
Idle – Estado inicial;
Connect – Conexão TCP e aguardo;
Active – Realiza tentativas de conexão TCP;
OpenSent – Estado e espera da resposta de conexão do vizinho;
OpenConfirm – Conexão estabelecida;
Estabilished – Troca de mensagem de atualização, keepalive e
notificação.

Processo de Seleção de Rotas


Depois do BGP receber todas as informações de todos os AS’s e
destinos as começam a ser decididas. Apenas 1 rota para cada
destino. A decisão das melhores rotas baseia-se nos atributos.

1. Se o caminho for interno não deve preferir se a rota não estiver


sincronizada, ou seja, não esta na tabela de roteamento IGP ;
2. Não deve preferir se o endereço de Next-Hop não puder ser
acessado;
3. Preferir rota de maior Peso (weight), Preferencia local para
routers CISCO (O atributo proprietário Cisco tem maior
preferência);
4. Preferir rota com Local Preference mais alto dentro da AS
(melhor caminho pra sair da AS);
5. Se o Local Preference for igual, preferir rota originada pelo
router local;
6. Se nenhuma rota foi originada localmente, preferir rota com o
AS-Path mais curto para o destino;
7. Se os caminhos de AS’s forem iguais, preferir o código de
origem mais baixo sendo as rotas aprendidas por IGP o melhor
(IGP (I) <>
8. Se todos os códigos de origem forem iguais, preferir o caminho
com o MED mais baixo (MED é enviado por outro AS);
9. Se as rotas têm o mesmo MED, preferir caminhos Externos
(EBGP) em vez dos internos (IBGP);
10. Se a sincronização estiver desativada apenas existirá
caminhos internos, nesse caso escolher o caminho até o vizinho
IGP mais próximo, caminho interno mais curto;
11. Para caminhos externos EBGP escolher a rota mais antiga
para minimizar o efeito flapping (up down);
12. Preferir o caminho com o ID do router vizinho mais
baixo;13. Preferir a rota com o endereço IP do vizinho mais
baixo.

Opções de Configuração
Multihop – Usado para redundância de links, ou seja, o BGP é feito
na Loopback do router. Para isso deve-se informar que o IP encontra-
se a mais de um salto;

Load balance – Usado para fazer balanceamento em links iguais.

Graceful Restart – Como no OSPF e ISIS, o processo de restart de


um router pode gerar impactos na rede. O graceful restart faz com
que o processo de encaminhamento continue durante o restart e não
ocorra convergência de toda a rede (evita que os outros routers
enviem withdrawn para todos os vizinhos);

Processo de restart – Durante o fechamento da sessão de peering


cada router negocia a habilidade de graceful-restart, somente quando
os dois routers aceitam greceful-restart o recurso é usado. Após o
restart o router vizinho informa as informações para atualizar a
Database. Após isso o router envia uma End-RIB-In Marker.

Autenticação – Suporta MD5 tanto no modo global quanto no modo


neighbor;
Evitar colisão de conexão - Evita que os dois routers iniciem uma
conexão ao mesmo tempo e gere colisão. Configura-se um router
como passivo da conexão BGP. Pode-se configurar no modo global e
no modo neighbor;

• Allow – Configura um range de rede que o vizinho poderá


estabelecer uma conexão BGP;
• Prefix Limits – Configura um limite de prefixos de redes a ser
recebido do vizinho;
• Damping – Configura uam tolerância para rotas que ficam
entrando e saindo da tabela de roteamento. O JUNOS não faz
damping em rotas IBGP. O recurso usado para verificar o
damping é a figura de mérito com pontuações.

Peer Groups (Somente CISCO)


Muitos vizinhos são configurados com as mesmas políticas de
atualização (por exemplo, mesmo filtro). Em routers CISCO os
vizinhos com a mesma política de atualização podem ser agrupados
em peer groups. É definida uma política para o peer Group e todos os
vizinhos vinculados a esse peer group adotam as políticas.
O nome de um Peer Group é local do router onde ele é configurado e
não é passado para nenhum outro router.

• Simplifica a configuração dos vizinhos;


• Utilizado nas conexões iBGP e eBGP;
• Todos os vizinhos recebem o mesmo update;
• Updates são gerados uma vez para cada grupo.· Politicas
podem ser modificadas individualmente somente para
informações de rotas entrante e não para sainte.

Confederation
É a forma de dividir uma AS em várias ASs. Em determinado router
configura-se a AS privada (confederation) e dentro do config-router
se indica a AS Publica que essa AS privada pertence. Depois adiciona-
se os vizinhos de acordo com as ASs privadas ou publicas (no caso de
uma conexão eBGP).

• Cria-se Sub-AS privados dentro do AS principal;


• Todos os vizinhos internos do AS pertencem ao mesmo grupo;·
Sub-Grupos ao qual estão relacionados.
Multihoming
É o termo usado quando um AS está conectado a mais de um ISP. Os
ISP’s aos quais você conecta devem anunciar os seus prefixos na
Internet:

• Aumenta a confiabilidade da conexão com a Internet com


redundância;
• Aumenta o desempenho com distribuição.

Tipos de configuração Multihoming mais comuns:

• Multihoming sem BGP usa um router conectado a 2 ISPs com


configuração de rota statica e NAT;
• Multihoming com BGP usa-se um AS privado para conectar aos
ISPs;
• Todos os ISPs passam somente as rotas default para o AS;

Route Reflectors
Os refletores de rota modificam a regra do split-horizon que existe
por default onde nenhum router replica as rotas aprendidas por um
vizinho para outro vizinho, IBGP não replica para IBGP. No entanto
uma rota BGP aprendida por um vizinho EBGP é replicada para
vizinhos EBGP e IBGP.

Benefícios:

• Habilita um router para propagar as rotas aprendidas por um


IBGP para seus vizinhos;
• Resolve o problema do split horizon;
• Retira a necessidade do Full-Mesh;
• Diminui o n.º de relacionamentos entre vizinhos, minimizando
assim o n.º de conexões TCP;
• Muito usado por ISP's quando o n.º de declarações internas de
vizinhos se torna excessivo;
• Não afeta os caminhos que os pacotes IP's seguem, somente os
caminhos de atualização de rotas;
• Dentro de um AS podem ter vários refletores de rotas
escolhidos;
• Migração fácil, pois é protocolo aberto;
• Pode-se ter mais de um route-reflector server em um Cluster.
Todos devem ter o mesmo Cluster-ID.

Terminologias

• Router reflector - O router refletor de rotas que tem a


permissão de repassar as rotas aprendidas;
• Clients - quem recebe os anúncios de rotas sempre;
• Cluster - A relação entre os clientes e o router refletor;
• Nonclients - Não são cliente definidos pelo router refletor, mas
recebe algumas atualizações de rotas;
• Originator-ID - Atributo que carrega o router ID e o AS de
quem originou a rota;
• Cluster ID - Usado quando se tem mais de um router refletor,
para reconhecer de quem veio a atualização. Default =Router
ID.

Operação

• Refletores recebem atualizações de peer clients e nonclients


• Se a atualização for de um peer client ele reflete para os peer
clients e nonclients (exceto para o router que originou);
• Se a atualização for de um nonclient ele reflete para todos os
peer clients do cluster;
• Se a atualização for de um parceiro EBGP (outro AS) ele reflete
para todos os peer clients e todos nonclients

Dicas de migração do Refletor de Rota

• A primeira consideração é decidir quais routers devem ser os


refletores e quais devem ser clientes observando a topologia,
pois os refletores precisam de full mesh com os clientes.
• Os refletores de rota clientes não são compatíveis com os
grupos de parceiros (peer-groups), isso acontece porque um
router configurado com um peer-group deve enviar todas as
atualizações para todos do peer-group.

Anunciando Redes no BGP


• Usando o comando Network ele permite anunciar uma rede que
está na tabela IP. A lista de comandos Network deve incluir
todas as redes do AS que você deseja anunciar.
• Redistribuindo as rotas estáticas para null 0, usado para
anunciar as rotas agregadas. O problema do uso do null 0 é a
possível criação de black hole.
• Redistribuição das rotas estáticas do IGP para o BGP. Não
recomendado pois causa instabilidade, propaga para a Internet
as oscilações em rotas internas.
• Redistribuição de rotas do BGP para o IGP, deve se tomar
cuidado pois a tabela BGP é muito grande. Nos AS’s de ISP a
redistribuição do BGP normalmente não é requerida.

Manipulação de Tráfego
Filtros de AS-Path
Muitas das coisas feitas em BGP é baseado na construção desses
filtros. Ele cria um filtro para selecionar um caminho específico
(rotas) através da rede. Funciona como Access-Lists. ^ funciona
como o início do path, $ como o final do path

• * - Todas as rotas BGP


• ^$ - Rotas que se originam no meu AS
• ^(100|200|300)$ - Rotas originadas no 100, 200 ou 300
• ^1002$ - Rotas que se originam no AS 1002 , adjacente ao
meu AS
• _1002$ - Rotas que terminam no AS 1002
• ^1002_ - Rotas originadas no AS 1002
• _1002_ - Rotas que passaram no AS 1002
• (...)+(...) – Uma ou várias ocorrências do caracter especificado
antes ( + = ou )

Community Filters
O atributo Community, descrito na RFC 1997, habilita políticas de
roteamento a serem aplicadas para o destino. É um método de se
agrupar rotas com políticas comuns de roteamento onde uma rota
pode fazer parte de várias communities.
Possui 32 bits, sendo 16 bits para a AS e outros 16 específicos.
Pode-se criar communities de acordo com o tráfego que deseja-se
anunciar para os peers ou usar algumas communities pré definidas:

• No-export – Não anuncia para eBGP peers;


• No-advertise – Não anuncia para todos os peers;
• Internet – Anuncia para a comunidade Internet.

Route-map (uso somente em Cisco)


• Conjunto de instâncias numeradas;
• Maior facilidade para criação e edição de conjuntos de
comandos;
• Normalmente cada instância é composta de comandos “match”
e/ou “set”;
• Pode se editar cada instância sem influenciar as demais da
Route-map;
• O número seqüencial padrão é 10, esses números são
automáticos de 10 em 10 para cada regra;
• Possui um Deny-all no final de cada lista;

Se uma entrada for criada sem permit ou Deny, o permit é


colocado por padrão.

Prefix List
É uma política de controle que restringe as informações de
roteamento que o IOS aprende ou anuncia. Possui as seguintes
características:

• Performance significante;
• Suporta modificações incrementais;
• Linha de comando mais amigável;
• Maior flexibilidade;
• Uma lista de prefixo vazia permite tudo;
• Se um prefixo for permitido a rota é usada, caso contrario a
rota não é usada;
• O router inicia a pesquisa por uma coincidência na parte
superior da lista, a qual é o numero de seqüência mais baixo;
• Se ocorrer uma coincidência o router não procura o resto da
lista;
• Negativa implícita ocorre quando o prefixo não coincide com
nada;
• Deve ser numerada manualmente sendo o primeiro numero é
automaticamente o 5.

Comandos de configuração no Cisco


router# show ip bgp [rede]
Mostra todas as infos da tabela de roteamento BGP. A rota
selecionada tem um sinal ">" na esquerda da rota.

router# show ip bgp neighbors


Mostra info. Sobre as conexões BGP e TCP dos vizinhos, os clientes
do router reflector caso ele seja um router reflector.
router# show ip bgp paths
Mostra a topologia BGP.

router# show ip bgp summary


Mostra um resumo de todas as conexões BGP

router# debug ip bgp [dampening | events | keepalives | updates]


Debuga os eventos

router# show ip prefix-list detail name [network/len | [seq seq-num]


Mostra detalhes das entradas e de quantas vezes a lista foi usada
podendo discriminar pelo numero de sequencia, rede ou nome da
lista

router# show ip prefix-list detail name [network/len] longer


Mostra todas as entradas da lista mais específica

router# clear ip prefix-list name [network/len]


Reseta os contadores de match

router# clear ip bgp { * | endereço } [ soft [ in | out ] ]


Remove as entradas da tabela BGP e redefine as sessões do BGP
tanto de entrada (in) ou de envio (out), exige muita memoria e deve
ser evitado pois atrapalha o roteamento.

router# Clear ip bgp peer-group nome-peer-group

router(config)# router bgp autonomous-system


Habilita o roteamento BGP, o AS define se é IBGP ou EIBGP 64512
até 65520 são AS's privados.

router(config)# ip prefix-list nome-da-lista [seq sequencia] {deny |


permit} rede/CIDR [ge ge-value] [le le-value]
Configura uma lista de prefixos e define o range específico com ge e
le

router(config)# ip prefix-list sequence-number


Ativa a numeração sequencial automática da lista de prefixos.

router(config)# ip prefix-list nome-da-lista description descrição


Inclui uma descrição na lista de prefixos

router(config)# bgp cluster-id id-cluster


Configura um ID para um grupo de cluste caso existe mais de um
router-reflector na rede
router(config)# ip as-path access-list número {deny | permit} LINE
Cria entradas para uma lista de acesso de caminhos de Ass. LINE é
uma expressão regular a ser usada. (ex: _100$ , ^100$ )

router(config)# Set-overload-bit
Divulga para os vizinhos que o router está sobrecarregado e não está
fazendo trânsito.

Router(config-route)# neighbor {ip-address | peer-group-name}


remote-as autonomous-system
Ativa uma sessão BGP com outro router e configura o grupo de
parceiro

Router(config-route)# network network-number [mask network-


mask]
Anuncia uma rede se ela estiver presente na tabela de roteamento IP.
Indica quais redes ele deve originar apartir do seu router. Deve
incluir todas as redes do seu AS e não só as redes que estão
diretamente conectadas.

Router(config-route)# neighbor {ip-address | peer-group-name}


next-hop-self
Força a anunciar o seu proprio endereço BGP como proximo salto.
Usado em redes NBMA.

Router(config-route)# no synchronization
Desabilita o sincronismo (habilitado por default). Se o seu AS não for
um AS de transito entre AS é bom desabilitar

Router(config-route)# aggregate-address ip-address mask


Cria uma entrada agregada (resumo), mas continua anunciando as
específicas.

Router(config-route)# aggregate-address ip-address mask


[summary-only]
Anuncia somente as rotas agregadas (de resumo), o padrão é
anunciar tudo.

Router(config-route)# aggregate-address ip-address mask


[summary-only] [as-set]
Gera as informações do AS-Path com rotas agregadas com todas as
AS's. Se não usar o "as-set" as rotas serão anunciadas como geradas
em seu AS's

Router(config-route)# neighbor ip-address remove-private-as


O router não divulga os AS’s privados para o vizinho descrito.
Router(config-route)# neighbor ip-address route-reflector-client
Configura o router como reflector e aponta o vizinho cliente pelo IP.

Router(config-route)# neighbor {ip-address | peer-group-name}


prefix-list prefix-listname {in | out}
Aplica a lista no BGP apontando por ip ou por grupo quais routers
terão suas rotas filtradas, e informa se a lista será aplicada quando
receber as rotas ou quando enviar.

Router(config-route)# neighbor {ip-address | peer-group-name}


weight weight
Comando que influencia caminho tomado para rotas externas. É
atribuido um peso para a conexão com o vizinho. O default é 32768
para rotas locais (rotas que o router origina) e 0 para outras rotas.
Esse recurso é proprietário CISCO.

Router(config-route)# neighbor ip-address ebgp-multihop hop


Adiciona um vizinho localizado a x saltos.

Router(config-route)# neighbor ip-address peer-group peer-group-


name
Inclui o vizinho em um peer-group que compartilha os mesmo
updates e outras características.

Router(config-route)# bgp default local-preference value


Usado para mudar o atributo de Local-preference que influencia
internamente o melhor caminho pra sair do AS, um valor mais alto é
preferido. O default é 100.

Router(config-route)# bgp always-compare-med


Faz com que o BGP sempre compara o MED associado à rota recebida
de diferentes AS.

Router(config-route)# neighbor peer-group-name peer-group


Cria um peer-group

Router(config-route)# bgp confederation identifier Public-AS


Antes de usar esse comando deve-se usar - "router bgp Private-AS"
para que o router pertença a um AS dentro do AS público. Esse
comando define o AS publico onde o AS de confederação estará.

Router(config-route)# bgp confederation peers private-AS-1 private-


AS-2
Define os AS privados que o AS fará interação. A forma de adicionar
outros vizinhos é a mesma.

Router(config-router)# Bgp cluster-id cluster-id


Usado no Router-reflector para identificação quando existir
mais de um router reflector nos clientes.