Archive
Comunidades em BGP (BGP Communities)
…
Todos os infortúnios que vivi me tornaram um homem mais forte,
me ensinaram lições importantes. Aprendi a tolerar os medíocres;
afinal, Deus deve amá-los, porque fez vários deles.
…
ABRAHAM LINCOLN
16o presidente norte-americano
Prefácio Póstumo
Em “strong>Oportunidades Disfarçadas”.
Carlos Domingos.
Editora Sextante 2009
Introdução
Há alguns meses atrás, quando instalava o empareamento de um AS no PTT-SP, em primeira experiência fizemos, também, o empareamento com o Team-Cymru para obter a lista de bogons em IPv4. O Team-Cymru (pronuncia-se, “Team kum-ree”) entrega uma community representada por: 65333:888. Onde 65333 era o ASN (privativo!) usado pelo Team-Cymru no emparemento. O que era uma community já se sabia, mas nunca tinhamos usado-a.
A dificuldade inicial com a tecnologia de uso do Mikrotik complicou um pouco as coisas. E, ficou pior, ainda, quando algumas pessoas disseram que a forma de “não anunciar” prefixos listados no bogon recebido do Team-Cymru era usando community. Mas, ninguém explicou como! Na época faltou-nos tempo para pensar a respeito e , outras técnicas foram usadas para bloquear o anúncio do bogon para os vizinhos.
Mais recentemente houve um debate sobre communities em BGP, na lista GTER, provocado pelo Samyr, da Netcetera, de Minas Gerais. O debate acabou não sendo tão claro como se esperava e, muito menos, completo. Então, resolveu-se entender communities, cujo resultado é esse artigo, como parte da sequência de artigos sobre BGP. Na difiuldade do Samyr foi constatado um problema relacionado com a implementação, ainda não generalizada, do ASN de 32 bits, nos valores das comunidades, [8]. Mais tarde, Samyr informou que o problema era maior e estava associado a deficiências técncias em uma de suas operadoras de trânsito.
Escrever é ótimo, sem nenhuma dúvida. Entretanto, exige algumas decisões complicadas. Primeiro a questão da didática. É preciso que o leitor entenda o que se está escrevendo e, mais importante e fundamental, que você entenda o que escreve. Outra cruel decisão é o uso de termos, que em nossa área adormecem em inglês americano, sobrepondo-se à nossa cultura e, sempre acho isso desconfortável. Pensar assim é um comportamento estritamente pessoal, embora o anglicismo seja um vício de linguagem e, insistentemente perseguidos por algumas. Outros não se incomodam com isso. Por essa razão, temos preocupado em usar o termo empareamento ao invés de peering e, usaremos comunidade(s), evitando o vício de linguagem, tendo em mente que, no texto e no contexto trata-se de comunidade(s) em BGP. EMHO (não em, IMHO), vale a pena uma leitura do debate exibido entre alguns Senadores da República, em [1], a este respeito.
* Para aqueles com o privilégio do gosto pela leitura, geralmente, o nome de um autor é um indicativo de um bom livro. Quem deixaria de ler qualquer coisa de Humberto Eco, por exemplo? Muitas vezes, contudo, alguns autores, pouco conhecidos, terão seu texto avaliado, após a leitura da página final. Se chegamos ao final, já é um indicativo de que o livro é bom. Nesse caso, se lendo até o final, ao término sentimos uma agradável satisfação e, mais ainda, nos surpreendemos, o livro certamente é sensacional! Por tal razão, em homenagem ao Carlos Domingos, autor do fascinante livro, “Oportunidades Disfarçadas” – Editora Sextante 2009 -, a citação feita no início desse texto, abordando parte do Prefácio Póstumo, assinado por uma personalidade gigante e lembrando que o Póstumo é uma dúvida que torna o autor, mais surpreendente, ainda, no final.
O que são Comunidades em BGP?
Para que servem tais Comunidades e, quem usa?
The BGP communities attribute provides a way of grouping destinations into a single entity, named community, to which similar routing decisions might be applied. A BGP communities attribute is composed of one or more 32 bits numbers. These numbers are structured as follows: the high-order 16 bits represent an AS number, while the low-order 16 bits define the semantic of the value. Each AS can use the 216 communities whose high-order 16 bits are equal to its own AS number.
Uso de comunidades
Codificando comunidades
Richard A Steenbergen e Tom Scholl12, propõe alguns formatos, como uma forma de identificar visualmente as comunidades criadas. Isso, naturalmente se aplica mais, a grandes provedores de trânsito, embora possa ser seguido por qualquer um. Eis um exemplo:
- O formato da comunidade seria ASN:TCRPP, onde:
- T representa o Tipo de Relacionamento
- C representa o Código do Continente
- R representa o Código da Região
- PP representa o código do Ponto de Presença.
Respeitando a proposta acima, a comunidade, 65535:31311 representaria: um empareamento privado (3), América do Norte (1), Região do Meio-Atlântico (3) e POP de Ashburn, VA (11), na definição do AS65535, ficticiamente falando.
No Mikrotik tal proposta esbarra na impossibilidade de se usar expressões regulares para fortalecer o filtro de comunidades. Em outras palavras, o Mikrotik não nos permite alterar a política de roteamento através do uso de expressões regulares sobre o formato de comunidades (informe-se aqui). Mas, nada impede o uso de comunidades definidas pelos operadores de trânsito, até porque, não possuem o hábito de divulgar o significado de seus formatos12.
Operadoras de trânsito, entretanto, costumam divulgar suas comunidades e existem sítios especializados em exibir detalhes15. Vale a pena dar uma olhada.
Um exemplo de uso de comunidades em empareamento com o Team Cymru
O Team Cymru16 possui um esquema de passar as informações sobre bogons através de empareamento BGP. Ele possui três tipos de empareamentos: bogon IPv4 tradicional (com 9 prefixos), o bogon IPv4 completo (com 7.000 prefixos) e o bogon IPv6 completo (com 37.000 prefixos). Vale a pena usar o IPv4 e/ou IPv6 completos. O números de prefixos recebidos não deve nos assustar.
Para emparear com o Team Cymru, é necessário enviar um e-mail para bogonrs (at) cymru.com contendo as seguintes informações, em inglês16, aqui descritas em português:
- Quais os tipos de bogons você deseja receber: IPv4 tradicional, IPv4 completo e/ou IPv6 completo.
- Seu ASN.
- Endereço IP do seu emparemento. Aqui pode ser uma interface Loopback, talvez.
- Se seu equipamento suporta sessões BGP com senha MD5 (O Mikrotik suporta!)
- Opcionalmente, sua chave pública GPG/PGP.
O Team Cymru, faz pelo menos duas sessões, como redundância e usa ASN privativo. Se desejar menos ou mais sessões, avise-os. Se, por alguma razão estiver impedido de usar empareamento com ASN privativo, não mande a solicitação. Ele alerta, também, que o empareado receberá algo em torno de 50.000 prefixos para o bogon IPv4 e IPv6 completos. Finalmente, o Team Cymru informa que usa comunidades. Para o bogon completo a comunidade é 65332:888
Dúvidas ao usar o Team Cymru
Algumas questões devem estar agitando nossos pensamentos. Eis algumas delas com as respectivas observações:
- Porque ASN privativo?:
- Senha MD5?:
- Porque duas sessões BGP?:
- Para cada protocolo, IPv4 e IPv6, serão necessárias duas sessões BGP?:
- É recomendável usar chave pública GPG/PGP?:
- Interface Loopback, talvez?:
- Porque o Team Cymru usa comunidade?:
# Full Bogons Mikrotik Template # Work on RouterOS 4.X # 2010-11-01 by Ricardo Ozelo # BGP instance setup /routing bgp instance set default as= \ router-id= # ROUTING FILTERS - Install these routes as blackholes, # does NOT receive or announce anything else /routing filter add action=accept bgp-communities=65332:888 \ chain=cymru-in comment="" disabled=no invert-match=no \ set-type=blackhole /routing filter add action=discard chain=cymru-in comment="" \ disabled=no invert-match=no /routing filter add action=discard chain=cymru-out comment="" \ disabled=no invert-match=no # Peering #1 /routing bgp peer add address-families=ip,ipv6 disabled=no in-filter=cymru-in \ instance=default multihop=yes name=FULLBOGONS-CYMRU-1 out-filter=cymru-out \ remote-address= remote-as=65332 tcp-md5-key= # Peering #2 /routing bgp peer add address-families=ip,ipv6 disabled=no in-filter=cymru-in \ instance=default multihop=yes name=FULLBOGONS-CYMRU-2 out-filter=cymru-out \ remote-address= remote-as=65332 tcp-md5-key=
Comunidades e a engenharia de tráfego
/routing filter add bgp-communities=111:222 chain=bgp-in action=discard
BGP communities attribute is widely used for implementing policy routing. Network operators can manipulate BGP communities attribute based on their network policy. BGP communities attribute is defined in RFC1997 – BGP Communities Attribute and RFC1998 – An Application of the BGP Community Attribute in Multi-home Routing. It is an optional transitive attribute, therefore local policy can travel through different autonomous system.
Communities attribute is a set of communities values. Each communities value is 4 octet long. The following format is used to define communities value.
AS:VAL
This format represents 4 octet communities value. AS is high order 2 octet in digit format. VAL is low order 2 octet in digit format. This format is useful to define AS oriented policy value. For example, 7675:80 can be used when AS 7675 wants to pass local policy value 80 to neighboring peer.
internet
internet represents well-known communities value 0.
no-export
no-export represents well-known communities value NO_EXPORT
(0xFFFFFF01). All routes carry this value must not be advertised to outside a BGP confederation boundary. If neighboring BGP peer is part of BGP confederation, the peer is considered as inside a BGP confederation boundary, so the route will be announced to the peer.
no-advertise
no-advertise represents well-known communities value NO_ADVERTISE
(0xFFFFFF02). All routes carry this value must not be advertise to other BGP peers.
local-AS
local-AS represents well-known communities value NO_EXPORT_SUBCONFED (0xFFFFFF03). All routes carry this value must not be advertised to external BGP peers. Even if the neighboring router is part of confederation, it is considered as external BGP peer, so the route will not be announced to the peer.
When BGP communities attribute is received, duplicated communities value in the communities attribute is ignored and each communities values are sorted in numerical order.
BGP communities can be defined in three different formats: decimal, hexadecimal, and AA:NN. By default, Cisco IOS uses the decimal format. To configure and display in AA:NN, use the following global command:
ip bgp-community new-format
Referências
-
Ronaldo Cunha Lima, A língua portuguesa e os anglicismos, Disponível em: http://www.novomilenio.inf.br/idioma/19981112.htm. Acessado em: 05/04/2011.
-
RFC1997, BGP Communities Attribute R. Chandra, P. Traina, T. Li [ August 1996 ] (TXT = 8275) (Status: PROPOSED STANDARD) (Stream: IETF, Area: rtg, WG: idr).
-
RFC1998, An Application of the BGP Community Attribute in Multi-home Routing E. Chen, T. Bates [ August 1996 ] (TXT = 16953) (Status: INFORMATIONAL) (Stream: IETF, Area: rtg, WG: idr).
-
RFC3765, NOPEER Community for Border Gateway Protocol (BGP) Route Scope Control G. Huston [ April 2004 ] (TXT = 16500) (Status: INFORMATIONAL) (Stream: INDEPENDENT).
-
RFC4364, BGP/MPLS IP Virtual Private Networks (VPNs) E. Rosen, Y. Rekhter [ February 2006 ] (TXT = 116446) (Obsoletes RFC2547) (Updated-By RFC4577, RFC4684, RFC5462) (Status: PROPOSED STANDARD) (Stream: IETF, Area: rtg, WG: l3vpn).
-
RFC4384, BGP Communities for Data Collection D. Meyer [ February 2006 ] (TXT = 26078) (Also BCP0114) (Status: BEST CURRENT PRACTICE) (Stream: IETF, Area: ops, WG: grow).
-
RFC4360, BGP Extended Communities Attribute S. Sangli, D. Tappan, Y. Rekhter [ February 2006 ] (TXT = 24145) (Status: PROPOSED STANDARD) (Stream: IETF, Area: rtg, WG: idr).
-
RFC5668, 4-Octet AS Specific BGP Extended Community Y. Rekhter, S. Sangli, D. Tappan [ October 2009 ] (TXT = 9017) (Status: PROPOSED STANDARD) (Stream: IETF, Area: rtg, WG: l3vpn).
-
Benoit Donnet e Olivier Bonaventure, ACM SIGCOMM Computer Communication Review Volume 38 Issue 2, April 2008 On BGP Communities. Disponível aqui. Acessado em: 01/03/2011.
-
Cisco, BGP Communities. 2003. Acessado em: 01/03/2011.
-
Kris Foster, “Application of BGP communities,” Cisco Internet Protocol Journal (IPJ), vol. 6, no. 2, pp. 2–9, September 2003. Disponível em: http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_6-2/bgp_communities.html. Acessado em 02/03/2011.
-
Richard A Steenbergen e Tom Scholl, BGP Communities: A Guide for Service Provider Networks. Acessado em: 27/02/2011.
-
Shahid Ajaz, ORION BGP communities. November 24, 2003. Acessado em: 01/03/2011.
-
Philip Smith, Rob Evans, Mike Hughes, RIPE Routing Working Group Recommendations on Route Aggregation, ripe-399, December 2006. Disponível em: ftp://ftp.ripe.net/ripe/docs/ripe-399.pdf. Acessado em 03/03/2011.
- ***Ver [routing-wg] IPv6 Routing Recommendations em 23/02/2011
-
BGP Community Guide. Disponível em: http://www.onesc.net/communities/. Acessado em 03/03/2011.
-
Cymru, Bogons via BGP – Examples. Disponível em: http://www.team-cymru.org/Services/Bogons/bgp.html. Acessado em 05/05/2011.
-
van Beijnum, I. BGP Building Reliable Networks with the Border Gateway Protocol. Setembro 2002. 304 páginas. O’Reilly. Capítulo 6 – Traffic Engineering, disponível em: http://oreilly.com/catalog/bgp/chapter/ch06.html. Acessado em 12/05/2011.
-
Ludwig, C., Traffic engineering with BGP. Seminar “Internet Routing”, Technical University Berlin, SS 2009 (version from July 2, 2009). Disponível em: http://www.net.t-labs.tu-berlin.de/teaching/ss09/IR_seminar/talks/traffic_engineering_ludwig.handout.pdf. Acessado em 12/05/2011.