Application Notes: BGP. Treinamento sobre o protocolo de roteamento L3 BGP - PDF
Download "Application Notes: BGP. Treinamento sobre o protocolo de roteamento L3 BGP"
Armando do Amaral Canejo
1 Application Notes: BGP Treinamento sobre o protocolo de roteamento L3 BGP
2 Application Notes: BGP Treinamento sobre o protocolo de roteamento L3 BGP. Data 07/05/2010, Revisão 1.3 Parecer Introdução Sistemas Autônomos Unindo-se à Rede Prefixos ou Rotas? Outro atributos Políticas de Roteamento Externo e Interno Desenvolvimento Básico: dois roteadores, dois AS Configurações Testes Trânsito indevido? Configurações Testes Ajustes Balanceamento de tráfego Configurações Testes Considerações Finais Parecer Este documento apresenta o leitor ao Border Gateway Protocol, responsável pelo roteamento na Internet atual. Serão listados aspectos técnicos teóricos e práticos, através da utilização deste protocolo na família DmSwitch. Introdução Para facilitar o entimento desta Introdução, são apresentados tópicos em subseções. Recoma-se a leitura atenta e na ordem, para melhor compreensão. Será abordado o BGP, Border Gateway Protocol, que utiliza-se do algoritmo de vetor distância para calcular a melhor rota a um determinado prefixo. Inicialmente é demonstrada a aplicação prática deste protocolo e seu uso no dia-a-dia, e através do estudo prático os conceitos são analisados internamente. DATACOM 1
3 Ao término será possível compreer tanto o protocolo, sua aplicação real, quanto a configuração necessária. Sistemas Autônomos Na Internet existem diversas organizações indepentes que possuem como objetivo comunicarem entre si, através desta rede de computadores. São exemplos destas organizações os provedores, carriers, empresas de grande porte, universidades, entre outras. Como cada entidade é administrativamente indepente, existe um conceito técnico para possibilitar a construção da rede como um todo: o Autonomous System (AS), chamado Sistema Autônomo em tradução livre para o Português. Cada organização que assim desejar pode solicitar um AS ao órgão regulador em sua região geográfica. Estas entidades e suas regiões de atuação são delegadas pela IANA (Internet Assigned Numbers Authority) e suas filiadas por região do globo. A divisão auxilia para ajustar para as necessidades de cada região, como os requisitos técnicos e financeiros. Ao receber o seu número AS, a empresa pode então pedir blocos IP a serem alocados para seu uso. Com estes blocos e o número do AS é possível então que um provedor seja contratado para oferecer acesso desta empresa ao resto da rede. Obviamente, o processo não é para muitos: poucos passam pela análise técnica necessária para a obtenção do AS. Felizmente, pois o AS originalmente possui apenas 16 bits, totalizando menos de entradas realmente disponíveis. Não será abordado o AS4, evolução para utilizar 32 bits. Unindo-se à Rede Ao realizar a contratação com o provedor, que a partir de agora nos referiremos como uplink, o novo AS pedirá para ter acesso ao BGP - um serviço adicional à conexão. A sessão BGP será estabelecida entre os roteadores, que estarão na borda dos AS. Aí se explica o nome do Protocolo de Roteadores de Borda. Com a sessão BGP estável, o roteador do novo AS enviará os seus blocos e receberá os prefixos que seu uplink assim desejar enviar. Caso sejam enviados todos os prefixos conhecidos na Internet, este será um full routing. Em Outubro/2009 este valor está em aproximadamente prefixos únicos. Qualquer valor diferente do total será considerado partial routing, a não ser que seja enviada apenas a rota default, chamado simplesmente de default-only routing. Caso o novo AS não conecte-se a outros uplinks, o ideal é que receba apenas a default para economizar memória de seu roteador. Conforme forem contratados outros provedores para BGP, pode-se aumentar o número de prefixos a serem recebidos. Prefixos ou Rotas? Importante ressaltar aqui o termo prefixos. Um prefixo é um ereço IP e sua respectiva máscara no formato VSLM (Variable Length Subnet Mask), por exemplo: DATACOM 2
4 Rede: Máscara: /24, ou Analisando estas informações na forma binária (separando em grupos de 1 bits) Rede: Máscara: Sabe-se que os hosts desta rede podem estar apenas alocados através dos bits de máscara marcados com 0. Logo, seriam válidos entre até Alterando a máscara desta rede, obtem-se um prefixo diferente: Rede: Máscara: /25, ou Em binário: Rede: Máscara: É importante ressaltar que estes são prefixos diferentes, pois referem-se a espaços distintos de ereçamento. A rede /25, é um outro prefixo. Este conceito é importante pois caso se recebam dois anúncios BGP para um mesmo prefixo porém com caminhos (AS Path ou gateway) diferentes têm-se duas rotas distintas. É costume falar em rotas, pois é como o hardware internamente trabalhará. A divisão ocorre também conceitualmente, na definição de RIB e FIB. A Routing Information Base, base das informações de roteamento, é onde estão todos os prefixos recebidos e suas devidas rotas. Após a escolha da(s) melhor(es) rota(s), deriva-se a Forwarding Information Base, que será efetivamente utilizada pelos chips (ASIC) de comutação para atingir as melhores taxas de encaminhamento dos pacotes. Importante ressaltar que em geral escolhe-se uma única rota por prefixo, a não ser em casos especiais como no uso do ECMP (Equal Cost Multipath, não aprofundado neste documento). Outro atributos Além de comunicar os prefixos, suas rotas, e seus next-hop, o BGP ainda informa outros atributos. São alguns: prefixo e máscara; next-hop (roteador destino, não necessariamente quem comunicou a rota); AS path completo; preferência local pela rota; comunidades; protocolo (para uso no MP-BGP). DATACOM 3
5 Especialmente importante saber que o next-hop da rota não é necessariamente quem anunciou o prefixo, pois é um erro comum de configuração não colocar o atributo next-hop-self na comunicação com o vizinho. O AS path completo serve internamente ao protocolo para evitar loops na informação de roteamento. Por padrão, ignora-se qualquer prefixo que já possua o AS local no AS path. Desta forma, é seguro que um prefixo local não será trafegado por um caminho externo. A preferência local (local-preference) é uma configuração que afeta dentro de um mesmo AS qual a importância que uma rota sobre as outras. Pode inclusive sobrepor o cálculo original, que basea-se no menor AS path. Políticas de Roteamento O BGP, assim como os outros protocolos de roteamento, serve para anunciar as rotas dos seus vizinhos (neighbors) para os outros. Porém, no o caso deste novo AS so ativado: ele comprou conexão de outros dois provedores indepentes. Se não configurar nenhuma política de roteamento, seu precioso link poderia estar so saturado pelo tráfego entre um provedor e outro. Sim, o novo provedor estaria so usado como caminho por aqueles que deveriam fornecer os caminhos. Para evitar isso existem as já citadas políticas de roteamento. Elas consistem em limitar quais prefixos e/ou caminhos um roteador anuncia para seus vizinhos. Outros fabricantes chamam esta técnica de Policy Based Routing (PBR). No caso o provedor deve configurar para que apenas o seu prefixo e/ou seu AS sejam anunciados em cada link, e (opcionalmente) filtrar tráfego de saída quando a origem for diferente dos blocos que ele possui. Estas configurações serão apresentadas passo-a-passo ao longo da seção de Desenvolvimento. Externo e Interno Ao longo da Introdução foram exemplificados apenas os casos do BGP como protocolo de roteamento externo, o dito ebgp (e para external). Existe também o ibgp (internal), que é muito útil para sua utilização dentro de um mesmo AS. A diferença é mais sútil do que apenas a utilização de AS diferentes ou não, partindo para cálculos internos tais como manutenção de atributos das rotas, diferenciação para saída, etc. O ibgp é especialmente útil em backbones conectados de forma full-mesh, todos-com-todos, ou no formato route server, onde N (em geral, 2) roteadores servem como ponto de encontro para outros M (geralmente, mais do que 3) roteadores. A escolha do ibgp varia por muitos critérios técnicos, e por tratar de uma gama diferente de opções não será trabalhada nesta apresentação. DATACOM 4
6 Desenvolvimento A seção de Desenvolvimento está demonstrada de forma incremental para melhor compreensão dos conceitos introduzidos. Básico: dois roteadores, dois AS O aprizado da base do BGP necessita apenas dois roteadores, cada um operando um AS diferente. O equipamento nomeado uplink-1, possui uma configuração baseada no ereço da interface loopback e anuncia suas rotas mais uma rota default. O outro, nomeado cliente, apenas possui uma configuração mínima. Configurações Por serem de segmentos de rede diferente, recoma-se não utilizar uma VLAN tagged. Neste exemplo será criada uma VLAN com IP e configuração untagged na porta entre os equipamentos. Depois esta VLAN será colocada em uma instância única de vlan-group para evitar que protocolos como STP ajam. Para efeitos práticos, considerar as configurações abaixo a partir da default-config. A lista dos atributos so configurados segue abaixo. VLAN utilizada no ponto-a-ponto: 10 Endereçamento IP: /30 (.1 uplink-1,.2 cliente) Portas utilizadas: 1/1 no uplink-1 (DM4001), 1/28 no cliente (DmSwitch3324F2) AS: 1 (uplink-1) (cliente) IPs interface loopback: /32 (uplink-1) O uplink-1 comunica-se através da loopback 0, que é conhecida no cliente via rota estática. Existe a configuração de ebgp-multihop para que a conexão seja estabelecida com a loopback remota. O uplink está anunciando uma rota default apenas. DATACOM 5
7 Ambos os roteadores estão reescrevo as rotas anunciadas colocando-se como next-hop. O soft-reconfiguration inbound auxilia para atualizações mais dinâmicas no protocolo, sem necessitar um clear ip bgp a cada mudança de configuração. Roteador uplink-1 hostname uplink-1 ip routing interface loopback 0 ip address /32 interface vlan 10 set-member untagged ethernet 1/1 ip address /30 interface ethernet 1/1 switchport native vlan 10 description Cliente interface vlan 1 no set-member ethernet 1/1 vlan-group 10 vlan-group 10 vlan 10 router bgp 1 bgp router-id neighbor remote-as neighbor next-hop-self neighbor soft-reconfiguration inbound neighbor update-source neighbor default-originate Roteador cliente hostname cliente ip routing interface vlan 10 set-member untagged ethernet 1/28 ip address /30 interface ethernet 1/28 switchport native vlan 10 description Uplink-1 interface vlan 1 no set-member ethernet 1/28 vlan-group 10 vlan-group 10 vlan 10 ip route / router bgp neighbor remote-as 1 neighbor next-hop-self DATACOM 6
8 Testes neighbor soft-reconfiguration inbound neighbor ebgp-multihop 2 neighbor update-source Com estas configurações já é possível observar que a sessão BGP está estabelecida e que o cliente recebe uma rota. O uplink não está recebo rotas do cliente pois este ainda não configurou um network ou redistribute. Estado do BGP no uplink-1 uplink-1#show ip bgp summary BGP router identifier , local AS number 1 0 BGP AS-PATH entries 0 BGP community entries Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd :05:01 0 Total number of neighbors 1 uplink-1#show ip bgp No BGP network exists Total number of prefixes 0 uplink-1# Estado do BGP no cliente cliente#show ip bgp sum BGP router identifier , local AS number BGP AS-PATH entries 0 BGP community entries Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd :05:02 1 Total number of neighbors 1 cliente#show ip bgp BGP table version is 0, local router ID is Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP,? - incomplete Network Next Hop Metric LocPrf Weight Path *> i Total number of prefixes 1 cliente# DATACOM 7
9 Trânsito indevido? Considere agora que o cliente deseja contratar mais um link. O novo fornecedor, chamado uplink-2, enviará apenas as rotas marcadas com a comunidade 2:100, arbritrada pelo provedor em questão. A primeira diferença da configuração apresentada no uplink-2 para as configurações demonstradas anteriormente é a criação de route-maps. Um mapeamento de rotas, por assim dizer, é um conjunto de regras que será aplicado nas rotas existentes na RIB antes destas serem processadas. Cada route-map recebe um nome e um número, que será a ordem de execução da mesma (sequencial, do menor para o maior). Ou seja, route-maps de mesmo nome fazem parte de um mesmo grupo. Uma rota frente a um route-map tem comportamento lógico: o resultado da comparação pode ser verdadeiro ou falso. É com a resposta lógica que o route-map agirá: uma rota com resultado verdadeiro em um route-map de deny será negada. A complexidade no uso dos route-maps está quando utilizando-se de casos não previstos. Quando uma rota não dispara dos itens do grupo de route-map, ela será considerada contra a primeira regra de route-map. Ou seja, uma rota que não seja considerada para nenhum deny estará automaticamente marcada como permit. Casos práticos serão apresentados no decorrer do texto. Configurações A lista dos atributos so configurados segue abaixo. VLAN utilizada no ponto-a-ponto: 20 Endereçamento IP: /30 (.1 uplink-2,.2 cliente) Portas utilizadas: 1/1 no uplink-2 (DM4001), 1/27 no cliente (DmSwitch3324F2) AS: 2 (uplink-2) (cliente) O uplink-2 comunica-se diretamente através da interface conectada, sem uso de loopback. O uplink-2 está anunciando três rotas, geradas localmente e marcadas com comunidade. Ambos os roteadores estão reescrevo as rotas anunciadas colocando-se como next-hop. O soft-reconfiguration inbound auxilia para atualizações mais dinâmicas no protocolo, sem necessitar um clear ip bgp a cada mudança de configuração. Roteador uplink-2 hostname uplink-2 ip routing interface vlan 20 set-member untagged ethernet 1/1 ip address /30 interface ethernet 1/1 switchport native vlan 20 description Cliente interface vlan 1 no set-member ethernet 1/1 DATACOM 8
10 Testes vlan-group 20 vlan-group 20 vlan 20 router bgp 2 neighbor remote-as neighbor next-hop-self neighbor soft-reconfiguration inbound route-map Cliente_OUT permit 10 set community 2:100 exit router bgp 2 network /8 network /24 network /24 neighbor route-map Cliente_OUT out Roteador cliente Esta configuração é no mesmo cliente do exemplo anterior. Alguns pontos da configuração estão omitidos, utilizar o mesmo setup. interface vlan 20 set-member untagged ethernet 1/27 ip address /30 interface ethernet 1/27 switchport native vlan 20 description Uplink-2 interface vlan 1 no set-member ethernet 1/27 vlan-group 20 vlan-group 20 vlan 20 router bgp neighbor remote-as 2 neighbor next-hop-self neighbor soft-reconfiguration inbound Observar que algo não desejável acontece neste exemplo: o cliente, que paga para receber anúncios de seus provedores, está so usado como trânsito entre eles. Comprova-se isso através do show ip bgp nos roteadores uplink. uplink-1 DATACOM 9
11 uplink-1#show ip bgp BGP table version is 0, local router ID is Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP,? - incomplete Network Next Hop Metric LocPrf Weight Path *> i *> / i *> / i Total number of prefixes 3 uplink-1# uplink-2 uplink-2#show ip bgp BGP table version is 0, local router ID is Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP,? - incomplete Network Next Hop Metric LocPrf Weight Path *> i *> i *> / i *> / i Total number of prefixes 4 uplink-2# O correto é que o cliente não esteja so caminho entre os seus fornecedores, logo é necessário que ele filtre e anuncie apenas as redes geradas em si. A seguir é demonstrado como o cliente deve proceder esta configuração. Ajustes Mediante estes problemas, é necessário ajustar a configuração do cliente. Segue abaixo a correção necessária através do uso de Políticas de Roteamento. Para exemplo prático, o cliente estará divulgando apenas bloco que lhe foi alocado: /8. Roteador cliente ip prefix-list MeusIPs permit /8 route-map Uplink_1_OUT permit 10 match ip address prefix-list MeusIPs exit route-map Uplink_2_OUT permit 10 match ip address prefix-list MeusIPs router bgp network /8 DATACOM 10
12 network /24 neighbor route-map Uplink_2_OUT out neighbor route-map Uplink_1_OUT out Pode ser necessário um clear ip bgp all no cliente para estas alterações entrarem em funcionamento. Com esta configuração verifica-se que os uplink não estão recebo outros anúncios além daqueles que estiverem de acordo com a prefix-list chamada MeusIPs. Se o cliente assim desejar, é possível adicionar outros prefixos à lista: ip prefix-list MeusIPs seq 2 permit /24 Com estas ferramentas já é possível organizar consideravelmente a topologia BGP do provedor. No uplink-1 tem-se a seguinte visão: uplink-1#show ip bgp BGP table version is 0, local router ID is Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP,? - incomplete Network Next Hop Metric LocPrf Weight Path *> i *> / i Total number of prefixes 2 uplink-1# No cliente ela encontra-se da seguinte forma. Importante ressaltar também as comunidades apridas nas redes : cliente#show ip bgp BGP table version is 0, local router ID is Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP,? - incomplete Network Next Hop Metric LocPrf Weight Path *> i *> i *> / i *> / i *> i *> / i Total number of prefixes 6 cliente#show ip bgp BGP routing table entry for /8 Paths: (1 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: Local from ( ) Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best DATACOM 11
13 Last update: Thu Jan 1 03:48: cliente#show ip bgp BGP routing table entry for /8 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer from ( ) Origin IGP, metric 0, localpref 100, valid, external, best Community: 2:100 Last update: Thu Jan 1 03:52: cliente# Balanceamento de tráfego As ferramentas de route-map e prefix-/list vão além da proteção dos anúncios. É possível inclusive ajustar as escolhas das rotas para criar preferências por onde o tráfego irá passar, tanto para a comunicação originada no AS quanto aquela destinada à ele. São os atributos de métrica, preferência local e distância do vetor AS path, bem como escolhas no comprimento do prefixo, lembrando sempre o longest prefix match. Neste caso o cliente deseja duplicar o AS path enviado ao uplink-1 e tornar este link menos utilizado para o tráfego ingressante, porém aumentando a local-pref deste fornecedor para que o tráfego originado localmente prefira sair por este caminho. Observar que a route-map de saída (out) já existia com o valor 10, logo esta configuração alterará a existente, acrescentando a informação de prep. Configurações Roteador cliente NOTA: o as-path prep utiliza a lista de AS a fazer concatenação no vetor, e não o número de vezes de concatenar o AS local. Este comportamento pode variar em outros fabricantes. route-map Uplink_1_OUT permit 10 set as-path prep exit route-map Uplink_1_IN permit 10 set local-preference 200 exit router bgp neighbor route-map Uplink_1_IN in DATACOM 12
14 Testes Como mencionado, o cliente irá preferir aumentar a local-pref para 200 nas rotas apridas do uplink-1 e este irá ver com AS path aumentado as rotas daquele. cliente uplink-1#show ip bgp BGP table version is 0, local router ID is Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP,? - incomplete Network Next Hop Metric LocPrf Weight Path *> i *> / i Total number of prefixes 2 uplink-1# uplink-1 BGP table version is 0, local router ID is Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP,? - incomplete Network Next Hop Metric LocPrf Weight Path *> i *> i *> / i *> / i *> i *> / i Total number of prefixes 6 cliente# Considerações Finais A introdução inicial e os exemplos demonstrados ao longo deste documento servem para auxílio no uso básico do BGP. Foram analisados os conceitos teóricos do protocolo, o estabelecimento de sessões com vizinhos de diferentes níveis (trânsito, peering e clientes downstream), bem como filtragem e comunidades. Existem conceitos mais avançados que não foram abordados, por limitação de escopo: router-reflector, router server, confederações BGP, MP-BGP, entre outros. Estes tópicos são suportados pelo DmSwitch em sua configuração, porém necessitam de análises teóricos que tornariam este documento de difícil compreensão. Com o apresentado no texto é possível um uso completo do BGP para a vasta maioria dos casos existentes na Internet. Recoma-se o uso do material sobre BGP da NANOG e do Registro.BR para aprofundar o conhecimento. A família DmSwitch possui um bom suporte ao protocolo, não so um limitador para a DATACOM 13