Referencia de atributos de políticas de rutas BGP

En esta página se muestran ejemplos de políticas de rutas BGP que usan el lenguaje de expresión común (CEL) para Cloud Router.

Las políticas de rutas BGP se definen como una lista ordenada de términos. Cada término se evalúa en el orden que especifiques e incluye una condición y una acción correspondiente para cuando una ruta coincida con ese término. Una política de ruta BGP concreta solo se puede aplicar en una dirección: de entrada para las rutas aprendidas o de salida para las rutas anunciadas, pero no en ambas simultáneamente. Sin embargo, las políticas de ruta BGP se pueden aplicar a varios peers BGP en Cloud Router.

Atributos de coincidencia

En la siguiente tabla se describen los atributos de coincidencia disponibles para las políticas de rutas BGP:

Atributos

Descripción

communities

Lista de comunidades atribuidas a la ruta BGP.

destination

Intervalo de IPs de la ruta BGP

Operaciones de coincidencia

En la siguiente tabla se describen las operaciones de coincidencia disponibles para las políticas de rutas BGP:

Operación

Descripción

communities.matchesEvery('65001:1234')

Devuelve el valor "true" si las comunidades son un superconjunto de la lista. '65001:1234'.

Un community_value es un campo de 32 bits dividido en dos secciones de 16 bits. Por convención, los primeros 16 bits del valor codifican el número del sistema autónomo (AS) de la red de la que procede la comunidad, pero Cloud Router no aplica esta convención. Los segundos 16 bits del valor codifican un número único asignado por el AS de origen.

Solo se puede importar.

destination == '192.168.0.0/24'

Devuelve true si una ruta BGP coincide con 192.168.0.0/24 (coincidencia exacta).

destination != '192.168.0.0/24'

Devuelve true si una ruta BGP no coincide 192.168.0.0/24 (coincidencia exacta).

destination.inAnyRange(r)

Devuelve true si una ruta BGP está en el intervalo r, donde r es uno de los siguientes:

  • Una cadena con un prefijo codificado en CIDER, como 192.168.0.0/24.
  • El tipo abstracto devuelto por prefix() o uno de los métodos fluidos que puedes llamar en prefix(), como longer().
  • Una lista heterogénea en la que cada elemento debe ser uno de los valores descritos anteriormente.

Se puede negar con !.

prefix('192.168.0.0/24')

Devuelve un objeto de prefijo que representa el intervalo CIDR 192.168.0.0/24, que se usa con destination.inAnyRange().

prefix('192.168.0.0/24').longer()

Devuelve un objeto de intervalo de prefijo que es una copia de prefix() con el final del intervalo definido como el máximo por familia de direcciones del prefijo de entrada (/32 o /128) y el inicio del intervalo definido como la longitud del prefijo de entrada más uno.

prefix().orLonger()

Devuelve un objeto de intervalo de prefijo que es una copia de prefix() con el final del intervalo definido como el máximo por familia de direcciones del prefijo de entrada (/32 o /128).

prefix().lengthRange(20, 30)

Devuelve un objeto de intervalo de prefijo que es una copia de prefix() con el inicio del intervalo definido en /20 y el final en /30.

prefix().upTo(30)

Devuelve un objeto de intervalo de prefijo que es una copia de prefix() con el final del intervalo definido en /30 del prefijo de entrada.

x || y

Devuelve true si x o y es true.

x e y deben ser expresiones booleanas que utilicen el atributo communities o el destination.

Debido a las reglas de las operaciones || (O), todas las condiciones son efectivamente cero o más operaciones de coincidencia destination conectadas por el operador O.

(D0 || D1 || ... || Dm)

En la siguiente tabla se muestra un ejemplo de cómo usar prefix para crear expresiones regulares complejas en comparación con algunos proveedores de routers:

Cloud Router Cisco Juniper Explicación

'192.168.0.1'

192.168.0.1

192.168.0.1

Concordancia exacta con el prefijo 192.168.0.1/32

'192.168.0.0/24'

prefix('192.168.0.0/24')

192.168.0.0/24

192.168.0.0/24 exact

Concordancia exacta con el prefijo 192.168.0.0/24

prefix('192.168.0.0/24').longer()

192.168.0.0/24 ge 25 le 32

192.168.0.0/24 longer

Coincide con el intervalo de 192.168.0.0/25 a 192.168.0.0/32

prefix('192.168.0.0/24').orLonger()

192.168.0.0/24 le 32

192.168.0.0/24 orlonger

Coincide con el intervalo de 192.168.0.0/24 a 192.168.0.0/32

prefix('192.168.0.0/24').lengthRange(25, 30)

192.168.0.0/24 ge 25 le 30

192.168.0.0/24 prefix-length-range /25-/30

Coincide con el intervalo de 192.168.0.0/25 a 192.168.0.0/30

prefix('192.168.0.0/24').upTo(30)

192.168.0.0/24 le 30

192.168.0.0/24 up to /30

Coincide con el intervalo de 192.168.0.0/24 a 192.168.0.0/30

Coincidir con todas las rutas

En la siguiente tabla se describen ejemplos que coinciden con todas las rutas de la expresión de coincidencia de una política de rutas BGP:

Operación

Descripción

communities.matchesEvery([])

Coincide con todas las rutas de las políticas de importación.

destination.inAnyRange(prefix('0.0.0.0/0').orLonger())

Coincide con todas las direcciones IPv4 de las políticas de importación o exportación.

destination.inAnyRange(prefix('::/0').orLonger())

Coincide con todas las direcciones IPv6 para importar o exportar políticas.

destination.inAnyRange([prefix('0.0.0.0/0').orLonger(), prefix('::/0').orLonger()])

Coincide con todas las rutas de las políticas de importación o exportación.

Atributos de acción

En la siguiente tabla se describen los atributos de acción disponibles para las políticas de ruta BGP:

Atributo

Descripción

Restricciones

asPath

La lista de números de AS por los que ha pasado la actualización de la ruta BGP

Exportar e importar políticas

communities

Lista de comunidades de la ruta

Exportar solo políticas

med

Discriminador de salida múltiple (MED) de la ruta

Exportar e importar políticas

Operaciones de acción

En la siguiente tabla se describen las operaciones de acción disponibles para las políticas de ruta BGP:

Operación

Descripción

Restricciones

accept()

Acepta la ruta BGP y detiene la evaluación de las políticas o los términos de la ruta BGP, incluidas las acciones que se realicen después de esta.

Ninguno

drop()

Filtra la ruta BGP y detiene la evaluación posterior de las políticas o los términos de BGP, incluidas las acciones que se realicen después de esta.

Ninguno

nextPolicy()

Detiene la ejecución de los términos restantes de esta política de rutas BGP (incluidas las acciones posteriores a este término) y pasa a la siguiente política de rutas BGP aplicada (si la hay).

Ninguno

asPath.prependSequence([1, 2, 3])

Antepone una lista de números de AS al atributo AS-PATH como una secuencia.

Los argumentos deben ser números enteros dentro del intervalo de 32 bits.

Ninguno

communities.add('65001:1234')

Añade el valor de la comunidad a la lista de comunidades.

El valor de la comunidad puede ser una sola comunidad o una lista.

Cloud Router ignora los valores de comunidad de las comunidades privadas que se asignan a los siguientes ASNs propiedad de Google:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Exportar solo políticas

communities.remove('65001:1234')

Elimina el valor de la comunidad de la lista de comunidades.

El valor de la comunidad puede ser una sola comunidad o una lista.

Cloud Router ignora los valores de comunidad de las comunidades privadas que se asignan a los siguientes ASNs propiedad de Google:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Exportar solo políticas

communities.replaceAll(['65001:1234'])

Sustituye la lista de comunidades por el valor de la comunidad, que puede estar vacío.

Cloud Router ignora los valores de comunidad de las comunidades privadas asignadas a los siguientes ASNs propiedad de Google:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Exportar solo políticas

med.set(12345)

Define MED como 12345.

El valor de MED debe ser un número entero sin signo comprendido entre 0 y 232.

Ninguno

med.add(12345)

Añade 12345 al valor definido de MED.

El valor de MED debe ser un número entero sin signo comprendido entre 0 y 232. Si el resultado de la suma es mayor que 232 - 1, esta operación asigna a MED el valor 232 - 1.

Ninguno

med.subtract(12345)

Resta 12345 del valor definido de MED.

El valor de MED debe ser un número entero sin signo comprendido entre 0 y 232. Si el resultado de la resta es inferior a 0, esta operación asigna el valor 0 a MED.

Ninguno