Como se ha comentado en nuestro anterior artículo sobre el funcionamiento del protocolo de routing BGP, es un protocolo escalable y muy estable y es utilizado principalmente en Internet. Para su correcto funcionamiento utiliza unas especificaciones conocidas como atributos BGP, los cuales ayudan a encontrar la mejor ruta a un destino.
Los atributos principales que existe y que podemos utilizar manualmente parar modificar la manera que BGP funciona, son los siguientes: Weight, Local preference, Multi-exit discriminator, Origin, AS_path, Next hop y Community.
El primero de los atributos, que es el Weight (peso), es definido por la compañía Cisco y es local al router. Es un atributo que no es anunciado a los routers vecinos. Si el router aprende sobre más de una ruta al mismo destino, la ruta con el peso más alto es el preferido. Dicho de otra manera, de varias opciones posibles, la que tenga mayor peso será la que se instale en la tabla de rutas.
El atributo de Local preference (preferencia local) es usado para buscar una salida preferente de un sistema autónomo. A diferencia del atributo anterior, la preferencia local es propagada por todo el sistema autónomo local.
Si hay múltiples puntos de salida del AS, este atributo es usado para seleccionar la salida de una ruta específica. El atributo Multi-exit discriminator (MED) o también llamado de una forma más simple como métrica, es usado como una sugerencia a un sistema autónomo externo sobre la ruta preferida al AS que está anunciando la métrica. El término sugerencia es usado porque el sistema autónomo externo que está recibiendo este atributo podría estar usando otros atributos BGP para la selección de rutas.
El atributo Origin (de origen) indica como BGP ha aprendido sobre una ruta en particular. El atributo origen puede tener varios valores:
- IGP – La ruta es interna al sistema autónomo que la origina. Este valor es generado cuando el comando “network” es usado en la configuración del router de red para inyectar la ruta en BGP.
- EGP – La ruta es aprendida por la modalidad eBGP que se ha explicado en el anterior artículo.
- Incompleta – El origen de la ruta es desconocido o aprendido de otra manera. Un origen incompleto ocurre cuando una ruta es redistribuida dentro de BGP.
El atributo de AS_path es uno de los más interesantes ya que tiene una misión que nos puede ayudar a solucionar problemas en una red grande de Internet. Cuando una ruta es anunciada a través de un sistema autónomo, el número del AS es añadido a una lista ordenada de sistemas autónomos por lo que esta ruta propagada ha pasado. Se utiliza para evitar bucles de red en un sistema BGP. Básicamente lo que hace es no hacer caso de rutas anunciadas que le llegan de otros sistemas autónomos sobre redes que tiene localmente y que el mismo está anunciando. Si por algún motivo le vuelve una ruta propagada por el mismo, la descarta y no la pone en su tabla de rutas.
El atributo next-hop (siguiente salto) es la dirección IP que es usada para alcanzar el router de propagación. Para vecinos eBGP (routers en distinto AS y que están intercomunicados) la dirección next-hop es la dirección IP de la conexión entre ambos vecinos. Para iBGP la dirección next-hop es transportada dentro del sistema autónomo local. Por otro lado, el atributo Community nos provee de una manera de agrupar destinos, y se les llama comunidades. Se pueden aplicar decisiones de routing a estas comunidades (como puede ser preferencias, aceptación y redistribución). También se pueden utilizar route-maps para configurar este atributo al igual que los demás. Dentro del atributo Community ha varios tipos, los cuales se muestran a continuación:
- no-export – No anunciar esta ruta a vecinos eBGP.
- no-anunciar – No anunciar esta ruta a un vecino.
- Internet – Anunciar esta ruta a la comunidad de Internet; todos los routers en la red pertenecen a la comunidad.
¿Cómo se hace la selección de una ruta en el protocolo de routing BGP teniendo tantos atributos? Lo cierto es que los hace de una forma controlada y calculada, como veremos a continuación. BGP puede recibir múltiples mensajes de rutas propagadas por el mismo router desde diferentes fuentes. BGP selecciona solo una ruta como la ruta idónea. Cuando la ruta es seleccionada, BGP pone la ruta seleccionada en la tabla de rutas IP y propaga la ruta a sus vecinos. BGP usa el siguiente criterio en el mismo orden que se muestra, para seleccionar una ruta a un destino:
- Si la ruta especifica un siguiente salto (next-hop) que es inaccesible, se descarta la actualización.
- Se prefiere la ruta con el peso (Weight) más grande.
- Si los pesos son iguales, se prefiere la ruta con el local preference más grande.
- Si los atributos de local preference son iguales, se prefiere la ruta que fue originada por BGP funcionando en el propio router.
- Si no se ha originado una ruta, se prefiere la ruta que tiene el AS_path más corto.
- Si todas las rutas tienen la misma longitud de AS_path, se prefiere la ruta con el origen más bajo (donde IGP es más bajo que EGP y este último es más bajo que el estado incompleto).
- Si los atributos de origen son iguales, se prefiere la ruta con el atributo MED más bajo.
- Si las rutas tienen el mismo MED, se prefiere la ruta externa sobre la ruta interna.
- Si las rutas continúan siendo las mismas, se prefiere la ruta a través del vecino IGP más cercano.
- Por último, se prefiere la ruta con la dirección IP más baja, que se especifica con el identificador BGP del router (ID).
En la siguiente parte del artículo hablaremos de los router reflectors en BGP y como funcionan. Haz clic en el botón para verlo: