«

»

set 06 2008

O Protocolo BGP4 – Parte 1

Pessoal,

Buscando na Net, me deparei com este excelente artigo sobre o BGP, escrito há algum tempo por Alex Soares de Moura, para o site da RNP (Rede Nacional de Pesquisa). Como alguns leitores aqui já pedirama publicação de algo sobre este protocolo, pensei em começarmos por este artigo. Partindo dele, vou escrevendo, aos poucos, posts relacionados à este complexo protocolo (BGP).

Atenção! Eu não sou autor do artigo abaixo! Estou apenas colocando-o para leitura e discussão. Mais adiante, estou planejando colocar alguns estudos de caso reais, para discussão. Mas estes apenas serão úteis se a teoria básica for compreendida. Espero que este post ajude neste sentido!

Autor do post original: Alex Soares de Moura <>
Publicado no site da Rede Nacional de Ensino e Pesquisa (RNP)


Introdução

Este artigo procura apresentar uma introdução ao protocolo de roteamento Border Gateway Protocol Version 4, BGP-4, que podemos considerar, parafraseando o Dr. Douglas E. Comer, “a cola que mantém a Internet unida e permite a interconexão universal” atualmente.

O BGP-4 possibilita o intercâmbio de informações de roteamento entre os diversos sistemas autônomos, ou ASs (Autonomous Systems), que em conjunto, formam a Internet. Explicando de uma forma simplificada, ele permite que os dados trafeguem entre os ASs até chegar ao AS de destino, e dentro dele siga até o seu destino final (máquina).

Uma vez que o BGP-4 também está presente (em uma versão chamada BGP-4+ [RFC 2283]) no backbone Internet do futuro, o 6bone, conhecer seus mecanismos básicos é fundamental para qualquer um que esteja ou deseja estar envolvido na administração de um AS de qualquer porte ou que precisa saber mais sobre roteamento na Internet.

^

Histórico

Há alguns anos, quando o principal backbone da Internet era a ARPANET, as instituições de pesquisa conectadas à rede precisavam gerenciar manualmente as tabelas de rotas para todos os possíveis destinos, ou seja, todas as outras redes conectadas (ver Figura 1).

Com o crescimento da Internet, verificou-se que era impraticável manter todas as tabelas atualizadas dessa forma, e que mecanismos de atualização automática eram necessários. Os pesquisadores da Internet optaram, então, por usar uma arquitetura que consistia de um reduzido e centralizado grupo de roteadores (core routers) que tinham, em suas tabelas, as rotas para todos os possíveis destinos da Internet; e um outro grupo maior de roteadores que possuíam em suas tabelas apenas informações (rotas) parciais, e não para toda a Internet.

Os core routers eram administrados pelo INOC (Internet Network Operations Center), e o grupo maior de roteadores externos ficou conhecido pelo termo “noncore routers” (roteadores fora do núcleo), que conectavam as redes locais das instituições de pesquisa ao backbone da ARPANET.

arpanet.gif (19694 bytes)

Figura 1: Backbone da ARPANET

Foi desenvolvido, então, o protocolo GGP (Gateway-To-Gateway Protocol), que foi usado nos core routers para atualização automática das tabelas de rotas entre eles. O GGP era um protocolo baseado no algoritmo de vetor de distância (Vector-Distance, também conhecido como Bellman-Ford).

Essa arquitetura tem, tecnicamente, graves pontos fracos principalmente com relação a sua capacidade de expansão, e a Internet acabou crescendo muito, indo além de um únicobackbone gerenciado de forma centralizada. Verificou-se, portanto, não ser possível expandir esse backbone arbitrariamente, por haver diversas limitações técnicas.

Como o backbone de cada site pode ter uma estrutura complexa, o esquema de core routers não iria conseguir suportar conectar todas as redes diretamente. Era necessário um novo esquema que permitisse aos noncore routers passar informações aos core routers sobre as redes que estavam “atrás” de si, além de oferecer autonomia de gerenciamento aos sites.

Até o momento, estava sendo usado o conceito de interconexão que levava em conta apenas a arquitetura do roteamento em uma internet e não contemplava as questões administrativas envolvidas.

Os projetistas notaram que as interconexões de um backbone com arquitetura complexa não devem ser encaradas como várias redes independentes conectadas a uma internet, mas como uma organização que controla várias redes e que garante que as informações sobre as rotas internas são consistentes e que pode escolher um de seus roteadores para fazer a ponte de comunicação para o “mundo exterior”.

Entra em cena o conceito do Sistema Autônomo (Autonomous Systems – AS), no qual as redes e roteadores estão sob o controle de uma mesma entidade administrativa. Esse conceito substitui a idéia das redes locais conectadas ao backbone central. Cada AS tem a liberdade de escolher o esquema e arquitetura que melhor lhe convém para descobrir, propagar, validar e verificar a consistência das suas rotas internas e a responsabilidade de anunciar para os outros ASs as rotas para suas redes internas não visíveis. A Figura 2 ilustra o conceito de Sistema Autônomo.

as1916.gif (26882 bytes)

Figura 2: Exemplo de Sistema Autônomo

Para anunciar as rotas para suas redes internas entre si, os ASs precisavam concordar em usar um esquema único, como um mesmo idioma por toda a Internet; e para permitir um algoritmo de roteamento automatizado distinguir entre um AS e outro, foi designado a cada AS, um número (Autonomous System Number – ASN) pela mesma autoridade central encarregada de atribuir todos os endereços identificadores das redes conectadas à Internet (ver Figura 3).

arqt-as.gif (27207 bytes)

Figura 3: Arquitetura de Backbone Usando o Conceito de ASs

^

Exterior Gateway Protocol – EGP

Dois roteadores que pertençam a ASs diferentes e trocam informações de roteamento entre si são considerados “vizinhos externos” (exterior neighbors). Se ambos pertencerem ao mesmo AS são considerados “vizinhos internos” (interior neighbors). O protocolo de roteamento usado pelos exterior neighbors é o Exterior Gateway Protocol ou simplesmente EGP [RFC 904]. É ele que permite o anúncio das rotas para as redes internas do AS para o núcleo (core) da Internet (ver Figura 4).

Com o tempo, o EGP apresentou diversas limitações técnicas e potenciais problemas para ser usado na Internet. Apesar das tentativas para produzir novas versões (EGP2 e EGP3) do protocolo, os projetistas não obtiveram sucesso por haver a necessidade de muitas alterações fundamentais na estrutura do mesmo.

O EGP apresentou deficiências insustentáveis, como restrições em topologia, incapacidade de evitar “loops” de roteamento e pouca flexibilidade para a configuração de políticas de roteamento.

Um grande desafio para os projetistas era a solução de como transformar uma arquitetura internet para não depender de um sistema centralizado (core routers) – deixando uma topologia organizada hierarquicamente e iniciando outra, com diferente estrutura. Além disso, tinha o desafio de como fazer uma arquitetura internet suportar uma forma de colaboração mais próxima entre certos ASs do que entre outros.

arq-as-egp.gif (26208 bytes)

Figura 4: Arquitetura da NFSNET Usando o EGP

Isso levou os engenheiros do IETF a desenvolver uma solução para esses problemas através de um novo, mais moderno e mais robusto protocolo de roteamento externo, como será visto a seguir.

^

Border Gateway Protocol Version 4 – BGP-4

O BGP é um protocolo de roteamento para ser usado entre múltiplos sistemas autônomos em internets baseadas no protocolo TCP/IP. O BGP-4 [RFCs 1771, 1772] tornou-se o sucessor natural do EGP, efetivamente atacando suas deficiências mais sérias, ou seja, evitando “loops” de roteamento e permitindo o uso de políticas de roteamento entre ASs baseado em regras arbitrárias por eles definidas. Além disso, o BGP-4 foi a primeira versão do BGP a suportar endereços agregados (Classless Interdomain Routing, ou simplesmente CIDR) e o conceito de supernets.

O protocolo BGP-4 assume que o roteamento interno do AS é feito através de um sistema IGP (Interior Gateway Protocol) de roteamento interno. Este pode ser um protocolo de roteamento como o RIP, OSPF, IGRP, EIGRP; ou até mesmo através de rotas estáticas. O BGP constrói um gráfico dos ASs, usando as informações trocadas pelos “vizinhos BGP” (BGP neighbors), que são compostas dos números identificadores dos ASs, os ASN. A conexão entre ASs forma um “caminho” (path), e a coleção desses caminhos acaba formando uma rota composta pelos números dos ASs que devem ser percorridos até se chegar a um determinado AS destino.

O BGP faz uso do TCP (porta 179) para o transporte das informações de roteamento de modo que ele próprio não precisa preocupar-se a respeito a correta da transmissão das informações.

Outra característica do BGP-4 é atualização das tabelas de rotas feitas de forma incremental, como nos algoritmos de estado de enlace. A atualização completa da tabela de rotas é feita somente uma vez, quando se estabelece a sessão entre os neighbors ou peers.

Para o estabelecimento de uma sessão BGP entre neighbors ou peers, basicamente, os seguintes passos são executados:

  • É estabelecida a conexão TCP entre os dois roteadores que trocam mensagens de abertura da sessão e negociam os parâmetros de operação;
  • O primeiro fluxo de dados transmitido é a tabela de rotas BGP completa. Posteriores atualizações nesta tabela são feitas, incrementalmente, à medida que as mudanças ocorrerem;
  • Como não há a atualização completa da tabela após a primeira, o roteador mantém a informação da versão da tabela que todos os seus peers possuem, enquanto durar a sessão entre eles. Se esta for interrompida por qualquer motivo, o processo é iniciado novamente a partir do primeiro passo;
  • Mensagens de keepalive são enviadas periodicamente para manter a sessão aberta;
  • Mensagens de aviso são enviadas quando ocorrem erros ou outras situações especiais;
  • Caso uma conexão verifique um erro, uma mensagem é enviada e a conexão fechada, encerrando a sessão.

A figura abaixo representa a atual arquitetura da Internet, onde ASs comunicam-se via BGP-4.

internetbgp4.gif (12665 bytes)

Figura 5: ASs Comunicando-se Via BGP-4

^

O uso do BGP-4

O BGP é usado nas situações em que uma rede precisa conectar-se a mais de um provedor simultaneamente (multi-home), ou quando se deseja ter um pouco mais de controle sobre quais caminhos seus dados seguirão pela Internet.

Basicamente, o BGP serve para informar às redes externas a um AS quais são as rotas para redes atingíveis dentro de sua rede. Falando de outra forma, o propósito do BGP-4 é anunciar rotas para outras redes externas, ou sistemas autônomos. Esses anúncios são como “promessas” de que os dados serão transportados para o espaço IP representado pela rota sendo anunciada.

Se, por exemplo, um AS anunciar uma rota para 192.168.4.0/24 (na sintaxe anterior ao CIDR, este endereço é a classe “C” que começa em 192.168.4.0 e termina em 192.168.4.255) e alguém enviar dados destinados a qualquer endereço dentro dessa faixa, esse AS está “garantindo” que sabe enviar os dados até o destino.

^

Neighbors, Peers, eBGP e iBGP

Sistemas (roteadores) que são “vizinhos BGP” (BGP neighbors) comunicam-se através de “sessões” estabelecidas entre eles. Os roteadores de “borda” (border routers) de ASs vizinhos são considerados peers. Esses peers são as “fronteiras políticas” dos ASs, que trocam tráfego de acordo com as regras definidas pelos ASs participantes.

São chamados neighbors os sistemas BGP (roteadores) que possuem sessões BGP estabelecidas entre eles. Então, os roteadores de borda são neighbors? Sim. Porém, quando uma importância política é a eles atribuída, a forma correta de chama-los é de peers, enquanto que os neighbors são quaisquer vizinhos BGP.

Existem outras situações em que os vizinhos BGP não são, obrigatoriamente, os roteadores entre ASs e sim roteadores do mesmo AS. Neste caso as sessões estabelecidas entre eles acontece internamente ao AS. O que permite isso é o iBGP ou internal BGP, que permite a troca de rotas no mesmo AS. De forma análoga, a troca de rotas entre ASs é feita pelo eBGP (exterior BGP). Um importante conceito do iBGP é que os neighbors não têm a obrigação de estar diretamente conectados (ver Figura 6) através de uma linha serial ou via interface Ethernet, por exemplo. Os peers por outro lado não podem estar conectados de outra forma que não seja a direta, seja link serial ou interface Ethernet.

ibgpebgp.gif (17366 bytes)

Figura 6: Exemplo de Peers, Neighbors, eBGP e iBGP

O algoritmo do eBGP trabalha, basicamente, anunciando todas rotas que conhece, enquanto o do iBGP faz o possível para não anunciar rotas. Assim, para fazer o iBGP funcionar adequadamente dentro de um AS é necessário estabelecer sessões BGP entre todos os roteadores que “falam” iBGP (ver Figura 7), formando uma “malha completa” (full mesh) de sessões iBGP dentro do AS.

fullmesh.gif (21318 bytes)
legenda.gif (1227 bytes)

Figura 7: Exemplo de Configuração “Malha Completa” de iBGP

Estas características serão abordadas de foma mais completa posteriomente.

^

Atributos do BGP

Atributos do BGP são um conjunto de parâmetros usados para controlar informações específicas relativas a rotas, como informação sobre o caminho (path), grau de preferência da rota, o valor do next-hop da rota e informações sobre agregação. Estes parâmetros são usados pelo algoritmo do BGP como elementos para decisão da escolha das rotas e para decisão sobre filtragem de rotas. Alguns dos atributos do BGP são:

  • AS_path
  • Next hop
  • Local preference
  • Multi-Exit Discriminator (MED)
  • Origin
  • Atomic Aggregator
  • Agregator
  • Community
  • Weight

Os atributos e outras características do BGP4 serão explicados em detalhes na próxima parte deste artigo.

^

Conclusão

Nesta primeira parte do artigo, foi mostrado como era a arquitetura inicial da Internet e sua evolução. Com o crescimento da rede, tornou-se necessária a criação de sistemas automatizados de configuração de rotas. Para tal, inicialmente, foi desenvolvido o EGP e, posteriormente, veio o BGP. Foram abordados, ainda que superficialmente, alguns conceitos e características do BGP-4. Na continuação deste artigo, será feita uma abordagem mais profunda do protocolo, com exemplos de configuração baseados na implementação da Cisco Systems em seus roteadores.

^

Referências bibliográficas

Internetworking with TCP/IP – Principles, Protocols and Architecture
Douglas E. Comer, 3rd Edition, 1995, Prentice Hall

Routing In The Internet
Christian Huitema, 1995, Prentice Hall

Internet Routing Architectures
Bassam Halabi, 1997, Cisco Press

RFC 1771
A Border Gateway Protocol 4 (BGP-4)
ftp://ftp.isi.edu/in-notes/rfc1771.txt

RFC 1772
Application of the Border Gateway Protocol in the Internet
ftp://ftp.isi.edu/in-notes/rfc1772.txt

RFC 1773
Experience with the BGP-4 protocol
ftp://ftp.isi.edu/in-notes/rfc1773.txt

RFC 1930
Guidelines for creation, selection, and registration of an Autonomous System
ftp://ftp.isi.edu/in-notes/rfc1930.txt

RFC 1965
Autonomous System Confederations for BGP
ftp://ftp.isi.edu/in-notes/rfc1965.txt

BGP Route Reflection – An alternative to full mesh IBGP
ftp://ftp.isi.edu/in-notes/rfc1966.txt

RFC 1997
BGP Communities Attribute
ftp://ftp.isi.edu/in-notes/rfc1997.txt

RFC 2270
Using a Dedicated AS for Sites Homed to a Single Provider
ftp://ftp.isi.edu/in-notes/rfc2270.txt

^

Sites relacionados

BGP-4 Protocol Overview
http://www.FreeSoft.org/CIE/Topics/88.htm

Using the Border Gateway Protocol for Interdomain Routing
http://www.cisco.com/univercd/cc/td/doc/cisintwk/ics/icsbgp4.htm

2
0

28 comentários

Pular para o formulário de comentário

  1. Plinio Monteiro

    Excelente post Marco, será de grande utilidade. 😀

    0

    0
  2. Carlos Eduardo

    Parabens Marco , cada dia aprendendo mais com o blog

    0

    0
  3. Ronaldo Echevenguá

    Blz Marco,
    com certeza o entendimento deste protocolo de forma clara, ajudara muita gente no dia a dia de serviço, apesar de estarmos no CCNA ainda, mas já tratamos diretamente com ele em nossas tarefas…

    tks,

    Ronaldo Echevenguá.

    0

    0
  4. Minu

    Grandeeee tutorial!
    Lembro de ter lido ele quando estava tendo BGP na faculdade. Foi de grande ajuda para resolver alguns problemas em sala de aula e ter uma idéia da grandiosidade deste protocolo.

    0

    0
  5. pogo

    Excelente texto. Esclareceu muitas dúvidas que tinha sobre o BGP.

    Na próxima parte vamos ter uma idéia básica de como se configura o BGP-4 (não tenho a mínima noção quanto à dificuldade disso 🙂 )? Outra dúvida que tenho é se o BGP-4 já suporta IPv6.

    Parabéns novamente!

    0

    0
  6. George

    Beleza Marco, ótima introdução ao BGP.

    Valeu.

    0

    0
  7. Marcelopebo

    muito bom Marco, mas para eu que estou começando ainda ta meio confuso

    0

    0
  8. Douglas

    Muito bom! Mesmo eu sendo iniciante, consegui compreender a maioria das informações.

    0

    0
  9. Rodrigo Falcão

    Muito bom. Que venha a parte II!!

    Abs!

    0

    0
  10. Felipe Azevedo

    Muito bom o tutorial!

    0

    0
  11. Chaider.lima

    muito bem explicado , melhor que o conteúdo do CCNA V3.1

    0

    0
  12. Edgarmc7

    Muito bom este post..

    Bem explicado..

    Vlw marco mais uma vez!!

    0

    0
  13. Renato Silva

    AGUARDO A CONTINUAÇÃO…. PARA QUEM ESTÁ A SE PREPARAR PARA O BSCI!!!

    0

    0
  14. bruno.tadeu

    Muito bom!!!!!!!!!!!!
    Era o que eu estava precisando!

    valew

    0

    0
  15. Fernando Avelino

    PARABÉNS MARCO, EXCELENTE POST !!!!!!!!

    0

    0
  16. Fabricio Neves

    Exato Renato, ótimo para quem está no BSCI.
    Vlw Marco!

    0

    0
  17. Alexandre Schulze

    ótimo post… mas….

    ..não era o protocolo BGP que o pessoal estava comentando que havia uma vulnerabilidade?
    Ela atinge quais versões do IOS da Cisco?

    0

    0
  18. Tiago Frigério

    Boa noite,
    Muito legal Marco, ainda estou estudando para o ccna mais ja é um grande comeco para ir pensando no proximo passo.

    vlw!!
    Tiago

    0

    0
  19. Renato Silva

    Kd a parte II?

    0

    0
  20. Marcelo Nunes

    Se tiver a parte 2, vai ser bem vinda.

    Abs
    Marcelo Nunes

    0

    0
  21. Richard

    Queria ler a 2 parte, e a 3, 4…

    0

    0
  22. Marco Filippetti

    Richard / pessoal, prometo que o próximo post será a continuação deste 😉

    Obrigado!

    Marco.

    0

    0
  23. kwilliams

    Aqui na empresa tem um setor só de BGP, esse tutorial vem muito a calhar !
    Parabéns !
    Obrigado.

    0

    0
  24. filipisaldanha

    O post protocolo-bgp4-parte-2 foi retirado do blog?

    0

    0
  25. Edson

    Muito bom.
    Pena que a RNP não tem mais a newsletter 🙁

    Aos interessados, o restante do artigo:

    http://www.rnp.br/newsgen/9905/bgp4p2.html
    e
    http://www.rnp.br/newsgen/9907/pgbp4p3.html

    Outro material muito bom é a apostila da ANID

    http://anid.com.br/pub/tst/cursobgp/curso_bgp_design_apostila_full_v1.1.pdf

    Bons estudos.

    0

    0
  26. alexsm

    Olá, Marco

    Sou o autor dos artigos da RNP sobre o protocolo BGP.
    Aproveito para também parabenizar pelo seu grande trabalho e pelos livros, bastante usados e elogiados pelos alunos das pós-graduações que coordeno e sou professor.
    Agradeço por seu apoio e pelos elogios seus e dos participantes do CCNA Cloud Campus.
    Foi um trabalho grande, feito há muitos anos. Atualmente os artigos estão disponíveis em novos endereços:

    O Protocolo BGP4 – Parte 1 (vol.3, no.2): https://goo.gl/SyXoAa

    O Protocolo BGP4 – Parte 2 (vol.3, no.3): https://goo.gl/xQ6gJY

    O Protocolo BGP4 – Parte 3 (Final) (vol.3, no.4): https://goo.gl/CBSURT

    Dicas na Configuração do Protocolo BGP-4 – Parte 1 (vol.5, no.1): https://goo.gl/zeP0an

    Dicas na Configuração do Protocolo BGP-4 (final) (vol.5, no.5): https://goo.gl/2l9rxZ

    Abraços,
    Alex
    http://fb.ProfAlexMoura | http://twitter.com/alexsm | http://www.linkedin.com/in/alexsm

    1

    0
  27. Marco Filippetti

    Alex, obrigado! Vou editar pois os links para as figuras aqui estão quebrados! Abração!

    0

    0
  28. Marco Filippetti

    Alex, os outros 2 foram publicados hoje por aqui! Mantive todos os links originais, conforme o post original. Parabéns pelo trabalho!

    Abs!!

    0

    0

Deixe uma resposta