NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
19 de janeiro de 2001 | volume 5, número 1

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Dicas na Configuração do Protocolo BGP-4 - Parte 1

Alex Soares de Moura <>

OptiGlobe Telecomunicações Ltda.
Engenharia de Redes

Resumo
1. Introdução
2. Políticas de Filtros BGP
3. Expressões Regulares em Filtros BGP
4. Filtros BGP
4.1. Filtragem por prefixos
4.2. Filtragem por AS_Path
5. Conclusão
6. Glossário
7. Sites relacionados
Referências bibliográficas

Resumo

O protocolo BGP possui facilidades que oferecem grande flexibilidade de configurações às organizações (ISPs, IDCs, NAPs, PIRs, empresas, universidades etc.) que mantêm Sistemas Autônomos (no inglês, Autonomous Systems - AS) conectados à Internet. Estas características do protocolo BGP - que minimizam erros de configurações e diminuem a carga do processamento nos roteadores, entre outras vantagens - são o tema deste artigo.

^

1. Introdução

O funcionamento da Internet global depende, atualmente, do uso do protocolo BGP-4, que, por sua vez, requer a sinergia entre todos os ASs para funcionar de forma estável, precisa e segura. Caso ocorram problemas com as informações de roteamento que trafegam nas mensagens do BGP trocadas entre ASs, essas redes  (que podem ser grandes backbones) podem "sair do ar" ou ficar inacessíveis temporariamente, causando grandes prejuízos para todos os usuários da Internet, principalmente para empresas. A maioria dos problemas que, infelizmente, ainda ocorrem com freqüência são causados por equívocos na configuração deste protocolo.

Veremos, então, como certas características do protocolo BGP-4 podem ser usadas para minimizar problemas e otimizar o desempenho dos roteadores que rodam este protocolo.

^

2. Políticas de Filtros BGP

Cada Sistema Autônomo possui sua política de roteamento, e nela devem estar definidas como devem ser as trocas de informações de rotas com outros ASs. As trocas de tráfego acontecem após o estabelecimento de um peering (acordo de troca de tráfego, com ou sem compromisso financeiro) entre dois ou mais ASs. Em qualquer modelo de peering usado, é preciso que cada AS determine quais blocos de rotas vai anunciar para os vizinhos BGP. Deve definir também quais rotas vai receber através dos anúncios dos ASs vizinhos.

Estas configurações são necessárias para evitar as instabilidades nas informações de roteamento e também para agregar rotas, evitando o crescimento explosivo da tabela de rotas da Internet global, o que poderia vir a comprometer o desempenho desta. Atualmente, a tabela de rotas CIDR chega a conter entre 95.000 e 100.000 entradas (Tony Bates' CIDR Report [1],Jan/2001 e Telstra BGP table Statistics [2]). Quanto mais rotas na tabela, serão necessários roteadores mais poderosos e com muitos megabytes de memória RAM para conseguir armazenar e processar todas com eficiência.

Com o tempo, os operadores de ISPs observaram quais as melhores práticas com relação às configurações adequadas para um funcionamento estável, preciso e seguro do BGP-4. As observações permitiram a criação de modelos de filtragem [3] e recomendações [4] para configuração de roteamento na Internet. Basicamente, as recomendações referem-se a:

Além destas recomendações, é interessante verificar os modelos de filtros BGP em uso por ISPs ( ISP Filter Policies ), que tomam precauções extras como:

Cada AS deve decidir quais destas recomendações se aplicam, ou não, e criar suas próprias políticas de filtros BGP adequadas ao seu caso.

Uma ferramenta útil é o banco de dados RABD ( RADB Database ) desenvolvido pelo Internet Routing Registry , no qual um AS pode especificar e registrar exatamente quais anúncios deseja aceitar. A ferramenta RtConfig (do pacote RAToolSet ) gera, automaticamente, configurações para roteadores Cisco e sistemas com GateD, usando informações registradas no RADB. Essa configuração automatizada traz benefícios como:

^

3. Expressões Regulares em Filtros BGP

Não é o objetivo deste artigo explicar detalhadamente expressões regulares, mas uma apresentação é necessária para facilitar a criação dos filtros BGP. O exemplo abaixo mostra as expressões mais comuns usadas nestes.

.* representa todo o conjunto de rotas BGP
^$ representa somente as rotas locais do próprio AS
^65535$ somente as rotas pertencentes ao AS65535
_65535$ rotas que foram originadas no AS65535 e podem ter passado por outros ASs
^65535_ rotas recebidas do AS65535 que podem ter sido originadas em outros ASs
_65535_ rotas que atravessaram o AS65535

Tabela 1 - Expressões regulares usadas em filtros BGP

A tabela a seguir define o significado dos caracteres especiais.

. representa somente um caractere qualquer, incluindo espaço em branco
^ representa o início da string
$ representa o final da string
* representa 0 ou mais ocorrências da string especificada
+ representa 1 ou mais ocorrências da string especificada
? representa 0 ou 1 ocorrência da string
- separa os extremos de uma faixa (range
_ representa uma vírgula (,) chaves ({ }), parênteses, início da string, fim da string ou espaço em branco

Tabela 2 - Caracteres com significado especial numa expressão regular

Com estas informações, já é possível construir os filtros necessários para implementação das recomendações de roteamento mencionadas anteriormente.

As expressões regulares são um recurso poderoso e de grande utilidade em muitas linguagens de programação, na linha de comandos de shells de sistemas UNIX, Linux etc. Veja a seção de sites relacionados para indicações de bibliografia especializada no tema.

^

4. Filtros BGP

Os filtros BGP servem para controlar o fluxo de entrada e saída de atualizações de rotas do protocolo, ou seja, podem ser aplicados tanto para anúncios (outbound) quanto para o recebimento de anúncios (inbound) originados em AS vizinhos e de clientes. Existem os seguintes métodos de filtragem:

^

4.1. Filtragem por prefixos

A filtragem por prefixos é uma lista de acesso (access-list - ACL) aplicada a cada vizinho BGP com o qual o AS mantém um peering. A lista de acesso de saída (out) garante que o AS não fará anúncios não permitidos pela sua política de filtros, e a lista de acesso (in) garante que o mesmo não vai receber anúncios de rotas erradas, resultantes de configurações erradas em outros AS, bugs de software ou feitos com intenções maliciosas. Abaixo, um exemplo de um filtro BGP que restringe o anúncio e o recebimento de rotas inválidas na Internet, através do uso do comando distribute-list e deve ser aplicado na configuração de cada vizinho BGP. Também no exemplo que segue, vê-se que o 65535 usa o filtro para controlar o tráfego de rotas inválidas de/para o roteador vizinho, pertencente ao AS 64512 (o exemplo usa comandos dos roteadores Cisco):

router bgp 65535 neighbor 200.200.0.1 remote-as 64512 neighbor 200.200.0.1 distribute-list 1 out neighbor 200.200.0.1 distribute-list 1 in ! access-list 1 deny ip host 0.0.0.0 any access-list 1 deny ip 0.0.0.0 0.255.255.255 255.0.0.0 0.255.255.255 access-list 1 deny ip 1.0.0.0 0.255.255.255 255.0.0.0 0.255.255.255 access-list 1 deny ip 10.0.0.0 0.255.255.255 255.0.0.0 0.255.255.255 access-list 1 deny ip 19.255.0.0 0.0.255.255 255.255.0.0 0.0.255.255 access-list 1 deny ip 59.0.0.0 0.255.255.255 255.0.0.0 0.255.255.255 access-list 1 deny ip 127.0.0.0 0.255.255.255 255.0.0.0 0.255.255.255 access-list 1 deny ip 129.156.0.0 0.0.255.255 255.255.0.0 0.0.255.255 access-list 1 deny ip 172.16.0.0 0.15.255.255 255.240.0.0 0.15.255.255 access-list 1 deny ip 192.0.2.0 0.0.0.255 255.255.255.0 0.0.0.255 access-list 1 deny ip 192.9.200.0 0.0.0.255 255.255.255.0 0.0.0.255 access-list 1 deny ip 192.9.99.0 0.0.0.255 255.255.255.0 0.0.0.255 access-list 1 deny ip 192.168.0.0 0.0.255.255 255.255.0.0 0.0.255.255 access-list 1 deny ip any 255.255.255.128 0.0.0.127 access-list 1 permit ip any any

^

4.2. Filtragem por AS_Path

Neste tipo de filtro, é usado o valor do atributo AS_PATH para selecionar quais anúncios podem entrar e sair de/para os AS vizinhos. Como exemplo, supondo a ligação entre três ASs: AS 65535, AS 65520 e AS 65501, sendo que o AS 65535 tem um peering estabelecido com o AS 65520. Este, por sua vez, tem um peering com o AS 65501 (ver Figura 1).

Esquema de ASs

Figura 1 - Esquema de Conexão entre ASs

Digamos que o AS 65520 deseja receber somente anúncios originados no AS 65535 e mais nenhuma das rotas da Internet. Então, é possível aplicar um filtro no roteador (IP 10.0.0.1) do AS 65520, que é vizinho do roteador do AS 65535 (IP 172.16.0.1) com os seguintes comandos (baseado nos roteadores Cisco):

ip as-path access-list 1 permit ^65535$ ! router bgp 65520    neighbor 172.16.0.1 remote-as 65535    neighbor 172.16.0.1 route-map FiltroEntrada in ! route-map FiltroEntrada permit 10    match as-path 1

Assim, o AS 65520 assegura que o seu roteador (IP 10.0.0.1) somente aceitará as rotas anunciadas pelo roteador do AS 65535 (IP 172.16.0.1) que sejam originadas no próprio AS 65535.

Outra situação é o AS 65501 (roteador IP 192.168.0.1) desejar receber do AS 65520 somente anúncios de rotas que tenham passado pelo AS 65535 (roteador IP 172.16.0.1). Nesse caso, o AS 65501 pode aplicar um filtro de entrada no seu roteador:

ip as-path access-list 1 permit _65535_ ! router bgp 65501    neighbor 10.0.0.1 remote-as 65520    neighbor 10.0.0.1 route-map FiltroEntrada in ! route-map FiltroEntrada permit 10    match as-path 1

Usando o caractere especial (_) no início e no fim da expressão regular, o filtro vai ignorar todos os ASNs que aparecerem antes e principalmente depois (lembrando que o entre o AS 65501 e o 65535 está o 65520) do AS 65535 no AS_Path das rotas que forem aceitas.

Outro exemplo seria o do caso do AS 65535 desejar aceitar rotas originadas no AS 65520 e de ASs diretamente conectados ao AS 65520. Então, o AS 65535 deve aplicar o filtro de entrada no roteador 172.16.0.1 da seguinte forma:

ip as-path access-list 1 permit ^65520$ ip as-path access-list 1 permit ^65520_[1-9]*$ ! router bgp 65535    neighbor 10.0.0.1 remote-as 65520    neighbor 10.0.0.1 route-map FiltroEntrada in ! route-map FiltroEntrada permit 10    match as-path 1

No comando ip as-path access-list, o caractere (^) inicia a string e determina que as rotas a serem aceitas sempre devem ter, no início do AS_Path, o AS 65520. O caractere (_) da expressão regular significa que há um caractere nulo após o "65520" e a expressão [1-9]*$ determina que a string AS_Path das rotas aceitas devem conter somente mais um ASN (pois o caractere $ determina o fim da string) após o "65520", o que significa que quaisquer sejam esses ASs, eles têm que ter peering com o AS 65520.

Pode-se confirmar o funcionamento da expressão antes de criar o filtro com o comando:

roteador-AS65535>sh ip bgp regexp ^65520_[1-9]*$

A saída apresentada será similar a este exemplo:

BGP table version is 133742, local router ID is 10.0.0.1 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 *>i10.0.0.0/8 10.0.0.1 100 0 65520 i *>i192.168.0.0/21 10.0.0.1 100 0 65520 65501 i *>i192.168.80.0/20 10.0.0.1 100 0 65520 65501 i *>i192.168.160.0/20 10.0.0.1 100 0 65520 65501 i *>i192.168.176.0/20 10.0.0.1 100 0 65520 65501 i * i192.168.48.0/20 10.0.0.1 100 0 65520 65501 i *>i192.168.192.0/18 10.0.0.1 100 0 65520 65501 i

^

5. Conclusão

Neste artigo, foram apresentadas algumas características do protocolo BGP-4 como filtros por prefixo e por AS_Path que são freqüentemente usados em sua operação na Internet. Na continuação do mesmo, serão apresentadas as outras formas de filtragem de rotas e mais extensões e características do protocolo BGP-4, como Peer Groups, Community, Route Reflector, Confederation, Route Flap Dampening.

^

6. Glossário

AS - Autonomous System
ASN - Autonomous System Number
BGP-4 - Border Gateway Protocol versão 4
IANA - Internet Assigned Numbers Authority
IDC - Internet Data Center
ISP - Internet Service Provider
NAP - Network Access Point
PIR - Ponto de Interconexão de Redes

^

7. Sites relacionados

CIDR: Uma Receita para a Redução do Espaço de Endereçamento: http://www.rnp.br/newsgen/0001/cidr.html

Classless Inter-Domain Routing (CIDR) Overview: http://public.pacbell.net/dedicated/cidr.html

Regular Expressions: http://www.cisco.com/univercd/cc/td/doc/product/software/ios102/rpcr/74054.htm

Using Regular Expressions in BGP: http://www.cisco.com/warp/public/459/26.html

ISP Filter Policies: http://www.nanog.org/filter.html

Mastering Regular Expressions: http://www.oreilly.com/catalog/regex/

^

Referências bibliográficas

[1] Tony Bates' CIDR Report: http://www.employees.org/~tbates/cidr-report.html

[2] Telstra BGP Table Statistics: http://www.telstra.net/ops/bgptable.html

[3] Route-Filtering Model for Improving Global Internet Routing Robustness: http://www.iops.org/Documents/routing.html

[4] Recommendations for Internet Routing: http://www.merit.edu/ipma/docs/help.html

[5] RFC2439 - BGP Route Flap Dampening: ftp://ftp.isi.edu/in-notes/rfc2439.txt

[6] Cisco BGP Route Flap Dampening: http://www.ieng.com/warp/public/459/16.html#A24.4

[7] BGP Configuration From the IRR: http://www.isi.edu/ra/rps/training/

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004