BGP - Border Gateway Protocol

18
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;

Transcript of BGP - Border Gateway Protocol

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-PathMuitas 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 FiltersO 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 neighborsMostra 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 pathsMostra a topologia BGP.

router# show ip bgp summaryMostra 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] longerMostra 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-systemHabilita 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-numberAtiva a numeração sequencial automática da lista de prefixos.

router(config)# ip prefix-list nome-da-lista description descriçãoInclui uma descrição na lista de prefixos

router(config)# bgp cluster-id id-clusterConfigura 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} LINECria 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-bitDivulga 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-systemAtiva 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-selfForça a anunciar o seu proprio endereço BGP como proximo salto. Usado em redes NBMA.

Router(config-route)# no synchronizationDesabilita 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 maskCria 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-asO router não divulga os AS’s privados para o vizinho descrito.

Router(config-route)# neighbor ip-address route-reflector-clientConfigura 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 weightComando 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 hopAdiciona um vizinho localizado a x saltos.

Router(config-route)# neighbor ip-address peer-group peer-group-nameInclui o vizinho em um peer-group que compartilha os mesmo updates e outras características.

Router(config-route)# bgp default local-preference valueUsado 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-medFaz com que o BGP sempre compara o MED associado à rota recebida de diferentes AS.

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

Router(config-route)# bgp confederation identifier Public-ASAntes 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-2Define os AS privados que o AS fará interação. A forma de adicionar outros vizinhos é a mesma.

Router(config-router)# Bgp cluster-id cluster-idUsado no Router-reflector para identificação quando existir mais de um router reflector nos clientes.