BGP Communities

En otras entradas cuando he hablado de BGP como el Blackhole hacía referencia al uso de communities. Explicaremos qué es, para que se usa y ejemplos de uso en proveedores.

BGP

Aunque si estais consultando esto, se dan por hecho que sabéis que es. El BGP es un protocolo de comunicaciones en el que se establece una relación (peering) entre dos operadores. En esa relación entre ambos se pasan las rutas que tienen disponibles. Ya sea porque esas rutas son suyas o porque les pasa todas las rutas existentes produciendose un full routes.

Communities

Las communities son etiquetas que se pasan con las rutas. Fueron deficinidas en la rfc 1997 aunque después han ido teniendo mejoras y actualizaciones. Esas etiquetas son para comunicar algo ó para uso interno. La community más común o usado es precisamente la de Blackhole. Esa community que como ya comenté en el artículo es AS:666 o 65535:666 .

El router que recibe esas rutas, en base a sus filtros, puede leer las comunnities que le pasamos y en base a sus filtros hacer algo con esa ruta.

Existen dos tipos de communities, las de información, que son las que nos da el peer al pasarnos sus rutas, como por ejemplo, dónde aprendió esa ruta, y las de operación, que son las que le pasamos al peer para que en base a esa community haga algo en concreto.

Tipos de Communities

Standard Communities

Es un grupo de 32 bits que pueden ser incluidos en una ruta para pasar información entre routers que establecen una sesión BGP. Fueron definidas en el rfc 1997 como comentamos antes. Los primeros 16 bits corresponden a un Número AS, y los 16 restantes corresponden a un número facilitado por los AS para interactuar con ellos. La estructura es  as-number:community-value. Son las más usadas. Cualquier router con capacidad para hacer sesiones BGP es compatibles con ellas.

Extended Communities

Fueron creadas por la necesidad que tenían algunos tipos de redes como las VPN, en los que las communities estandar se quedaban cortas. Están formadas por 8 octetos, en los que los 2 primeros corresponden al tipo y los otros 6 corresponden con la información pasada. Su formato es type:administrator:assigned-number. Fueron definidas en el rfc 4360 y no todos los routers la soportan a día de hoy.

Largue Communities

Ha sido el último en definirse. Su creación se ha debido a que en algunas ocasiones las Extended Communities con sus 8 octetos se quedaban cortos y han sido ampliados a 12. Su formato ahora tiene 4 grupos estructurados así large:global administrator:assigned number:assigned number. Han sido definidos en el rfc 8092.

Casos de Uso

BlackHole

Es el caso más conocido y que ya hemos explicado, pero no es el único.

Local Preference

El proveedor nos puede permitir establecer el local preference que queremos para esas rutas. Se suele usar, por ejemplo, cuando anunciamos la misma ruta en dos ubicaciones distintas. Con esto indicamos que tome una ruta como principal y que la otra sólo sea usada en caso de fallo.

No-Export

Es cuando queremos anunciar la ruta al proveedor, pero no queremos que este proveedor la anuncie a sus peers. Puede ser un No Anuncio a nadie o algunos operadores nos permiten una community donde se especifica una ubicación, peer ó punto neutro donde no anunciarla.

ASpath Prepend

En este caso lo que indicamos es cuantas veces tiene que poner el AS en el AS path. De esta forma, restamos prioridad a la ruta. A diferencia del Local Preference que era una orden para el peer que lo recibía, en este caso es para los peers sucesivos.

Received from

Este caso es para las rutas que recibimos. Nos indica ese proveedor por donde ha recibido esa ruta. Puede ser especificada por país, continente o punto neutro.

Ejemplos en proveedores:

Entenderemos que todos los proveedores tienen una community de blackhole, ya sea en la relación de peering normal, o estableciendo una sesión de peering sólo para anunciar el blackhole en sus servidores centrales como es el caso de Cogent. Por este motivo no vamos a tenerlo en cuenta en el siguiente listado.

BGP Communities Colt

Colt nos da la opción de establecer el Local Preference así como el jugar donde queremos anunciar los rangos y con que prepend. Además nos trasmite en sus rutas información sobre dónde ha recibido esas rutas. Podéis encontrar más información aquí.

BGP Communities Cogent

Cogent nos permite establecer el Local Preference, establecer el prepend e indicar donde queremos anunciarlo. Además nos permite que no anuncie fuera de su red. Como ya pasaba con Colt, en las rutas recibidas nos indica donde han sido aprendidas. Puedes obtener más información aquí.

BGP Communities De-Cix

En el cado de De-Cix, las communities se aplican al route server. De-Cix tiene una community que permite decirle a que peers no quieres que anuncie esa ruta al igual que otra para indicarle a que peers sí quieres que sea anunciada. En el caso de De-Cix, tiene dentro de su Academy un curso sobre el uso de las communities. Puedes tener más información aquí.

BGP Communities Init7

Init7 sigue las mismas pautas que las anteriores, solo que además nos da opciones de anuncios por paises o puntos neutros de forma individualizada. La verdad es que las opciones son muy buenas. Mas información aquí.

BGP Communities Telia

Quizás uno de los casos más limpios y claros a la hora de explicarlo, siguen los comunes de Local Preference y Contienente por el que lo han recibido. Más información aquí.

BGP Communities GTT

GTT tiene las opciones típo, de no anunciar, o hacerlo solo a quien deseemos. Además tiene algunas curiosas como la geolocalización de la ruta. Más información aquí.

Recomendación

Mi recomendación es que cuando establezcas una relación de peering, ya sea con un proveedor de tránsito o un peering directo, preguntes si disponen de alguna community que pueda ser usada en esa sesión BGP. Es posible que no la uses, si las tienes disponibles, míralas, lo mismo puede haber alguna interesante ahora o en un momento futuro. Siempre es mejor tenerlas y poder usarla en caso de necesidad.