Cómo se evalúan las comunidades BGP y las comunidades extendidas en las condiciones de coincidencia de la política de enrutamiento
Cuando se utilizan comunidades de BGP y comunidades extendidas como condiciones de coincidencia en una política de enrutamiento, el software del marco de políticas las evalúa de la siguiente manera:
Cada ruta se evalúa con cada comunidad designada en una instrucción de política de
fromenrutamiento. Si una ruta coincide con una de las comunidades nombradas en lafromdeclaración, la evaluación del término actual continúa. Si una ruta no coincide, finaliza la evaluación del término actual.La ruta se evalúa según cada miembro de una comunidad designada. La evaluación de todos los miembros debe ser exitosa para que la evaluación de la comunidad nombrada sea exitosa.
Cada miembro de una comunidad designada se identifica por un valor de comunidad literal o por una expresión regular. Se evalúa a cada miembro en relación con cada comunidad asociada con la ruta. (Las comunidades son propiedad no ordenada de una ruta. Por ejemplo, 1:2 3:4 es lo mismo que 3:4 1:2.) Solo se requiere una comunidad de la ruta para que la evaluación del miembro tenga éxito.
Las expresiones regulares de la comunidad se evalúan carácter por carácter. Por ejemplo, si una ruta contiene community 1234:5678, las expresiones regulares verán nueve caracteres discretos, incluidos los dos puntos (:), en lugar de dos conjuntos de números (1234 y 5678) separados por dos puntos. Por ejemplo:
[edit] policy-options { policy-statement one { from { community [comm-one comm-two]; } } community comm-one members [ 1:2 "^4:(5|6)$" ]; community comm-two members [ 7:8 9:10 ]; }Si un miembro de la comunidad es una expresión regular, se hace una coincidencia de cadena en lugar de una coincidencia numérica.
Por ejemplo:
community example1 members 100:100 community example2 members 100:1..
Dada una ruta con un valor de comunidad de 1100:100, esta ruta coincide,
community example2pero noexample1.Para que coincida con la política
onede enrutamiento, la ruta debe coincidir ocomm-onecomm-two.Para que la ruta coincida
comm-one, la ruta debe tener una comunidad que coincida con 1:2 y una comunidad que coincida con 4:5 o 4:6.Para que la ruta coincida
comm-two, la ruta debe tener una comunidad que coincida con 7:8 y una comunidad que coincida con 9:10.
Varios partidos
Cuando se encuentran varias coincidencias, la agregación de etiquetas no se produce. Considere la siguiente configuración:
family inet-vpn {
unicast {
aggregate-label {
community community-name;
}
}
}
family inet-vpn {
labeled-unicast {
aggregate-label {
community community-name;
}
}
}
Supongamos, por ejemplo, que se reciben dos rutas con atributos target:65000:1000 origin:65200:2000 de comunidad y que el nombre de comunidad es "5...:.*". En este caso, tanto los atributos target:65000:1000origin:65200:2000 de la comunidad extendida como la expresión regular del nombre de la comunidad. En este caso, no se produce la agregación de etiquetas. En el ejemplo siguiente, el Label operation campo muestra que las etiquetas no se agregan.
user@host> show route table VPN detail | match "^10 | Communities | Push"
10.1.1.0/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: target:65000:1000 origin:65200:2000
10.1.1.4/30 (1 entry, 1 announced)
Label operation: Push 101056
Push 101056
Communities: target:65000:1000 origin:65200:2000Puede resolver este problema de cualquiera de las siguientes maneras:
Sea más específico en la expresión regular si el atributo de comunidad extendida del sitio de origen no se superpone con el de destino.
Especifique el sitio de origen en el nombre de la comunidad.
Ambos métodos se muestran en los ejemplos siguientes.
Sea más específico en la expresión regular
user@host# set policy-options community community-name members "52..:.*" user@host# commit
user@host> show route table VPN detail | match "^10 | Communities | Push"
10.1.1.0/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: target:65000:1000 origin:65200:2000
10.1.1.4/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: target:65000:1000 origin:65200:2000Especifique el sitio de origen en el nombre de la comunidad
user@host# set policy-options community community-name members "origin:65...:.*" user@host# commit
user@host> show route table VPN detail | match "^10 | Communities | Push"
10.1.1.0/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: target:65000:1000 origin:65200:2000
10.1.1.4/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: target:65000:1000 origin:65200:2000Invertir los partidos de la comunidad
La community condición de coincidencia define una expresión regular y, si coincide con el atributo community del prefijo recibido, Junos OS devuelve un resultado VERDADERO. Si no es así, Junos OS devuelve un resultado FALSE. La invert-match declaración hace que Junos OS se comporte de lo contrario. Si hay una coincidencia, Junos OS devuelve un resultado FALSE. Si no hay coincidencia, Junos OS devuelve un resultado VERDADERO. Para invertir los resultados de la coincidencia de expresión de comunidad, incluya la invert-match instrucción en la configuración de comunidad.
[edit policy-options community name] invert-match;
Tipo de comunidad extendida
Las expresiones regulares no toman en cuenta el tipo de comunidad extendida. Considere, por ejemplo, los siguientes atributos y nombre de comunidad.
Comunidades:
-
5200:1000
-
target:65000:1000 -
origin:65200:2000
Atributo de comunidad:
-
miembros de nombre de la comunidad "5...:.*"
En este caso, tanto el atributo de comunidad extendida como el atributo 5200:1000 de comunidad extendida, origin:65200:2000, coinciden con la expresión regular del nombre de comunidad. Por lo tanto, la agregación de etiquetas no se produce, como se muestra aquí:
user@host> show route table VPN detail | match "^10 | Communities | Push"
10.1.1.0/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: 5200:1000 target:65000:1000 origin:65200:2000
10.1.1.4/30 (1 entry, 1 announced)
Label operation: Push 101056
Push 101056
Communities: 5200:1000 target:65000:1000 origin:65200:2000Puede resolver este problema mediante una expresión regular más específica. Por ejemplo, puede usar el carácter de ancla (^) para enlazar la ubicación de los dígitos, como se muestra aquí:
user@host# set policy-options community community-name members "^5...:.*" user@host# commit
user@host> show route table VPN detail | match "^10 | Communities | Push"
10.1.1.0/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: 5200:1000 target:65000:1000 origin:65200:2000
10.1.1.4/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: 5200:1000 target:65000:1000 origin:65200:2000Con la implementación de la característica de comunidad grande en la versión 17.3, Junos OS comprueba para evitar la coincidencia de comunidades extendidas o grandes con comunidades de expresión regular de BGP base o BGP base. En otras palabras, una comunidad recibida solo puede ser emparejada con el patrón apropiado de comunidad salvaje, como comunidades normales contra simples salvajes, comunidades extendidas contra salvajes extendidas y comunidades grandes contra patrones de grandes salvajes. Por ejemplo, para permitir el anuncio de rutas que llevan la comunidad de origen extendida, utilice la origin:*:65020 expresión.
Varias comunidades se emparejan con la lógica ex-O
Esto difiere de la lógica de coincidencia AND usada para las comunidades no extendidas en el BGP.
Si, por ejemplo, se reciben cuatro rutas con dos conjuntos de atributos de comunidad, la expresión regular puede coincidir con ambos atributos de comunidad. Considere el siguiente ejemplo:
Communities—5200:1000 target:65000:1000
Communities—target:65000:1000 origin:65200:2000
Atributo de la comunidad—miembro del nombre de la comunidad [ "^5...:.*" origin:65.*:.* ]
Ambas etiquetas se agregan, como se muestra aquí:
user@host> show route table VPN detail | match "^10 | Communities | Push"
10.1.1.0/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: target:65000:1000 origin:65200:2000
10.1.1.4/30 (1 entry, 1 announced)
Label operation: Push 101040
Push 101040
Communities: target:65000:1000 origin:65200:2000
10.1.1.16/30 (1 entry, 1 announced)
Label operation: Push 121104
Push 101104
Communities: 5200:1000 target:65000:1000
10.1.1.20/30 (1 entry, 1 announced)
Label operation: Push 121104
Push 101104
Communities: 5200:1000 target:65000:1000Aquí se muestra un ejemplo más completo de los valores de la comunidad:
user@host> show policy-options community community-name members [ "(^1...:*)|(^3...:*)|(^4...:*)" origin:2.*:* origin:3.*:* origin:6.*:* ]
Esta expresión regular coincide con los valores de comunidad a partir de 1, 3 o 4, y coincide con los valores extendidos de comunidad de origen tipo cuyo valor administrativo comienza con 2, 3 o 6.
Incluir comunidades BGP y comunidades extendidas en condiciones de coincidencia de política de enrutamiento
Para incluir una comunidad de BGP o una comunidad extendida en una condición de coincidencia de política de enrutamiento, incluya la community condición en la from declaración de un término de política:
from {
community [ names ];
}
Además, puede excluir explícitamente la información de la comunidad del BGP con una ruta estática mediante la none opción. Incluya esta opción al configurar una ruta individual en la route parte para reemplazar una opción de comunidad especificada en la defaults parte.
Puede incluir los nombres de varias comunidades en la condición de community coincidencia. Si hace esto, solo debe coincidir una comunidad para que ocurra una coincidencia (la coincidencia es efectivamente una operación O lógica).
