Descripción de las expresiones de política
Las expresiones de política proporcionan al software del marco de políticas una forma diferente de evaluar las políticas de enrutamiento. Una expresión de política utiliza operadores lógicos booleanos con directivas. Los operadores lógicos establecen reglas mediante las cuales se evalúan las directivas.
Durante la evaluación de una política de enrutamiento en una expresión de política, la acción de política de aceptar, rechazar o siguiente política se convierte al valor de TRUE o FALSE. A continuación, este valor se evalúa con el operador lógico especificado para producir resultados de TRUE o FALSE. A continuación, el resultado se convierte de nuevo en una acción de control de flujo de aceptar, rechazar o directiva siguiente. El resultado de la expresión de política se aplica como se aplicaría a una sola política; La ruta es aceptada o rechazada y la evaluación termina, o se evalúa la siguiente política.
Tabla 1 resume las acciones de política y sus valores correspondientes TRUE y FALSE y valores de acción de control de flujo. Tabla 2 Describe los operadores lógicos. Para obtener información completa acerca de la evaluación de expresiones de política, consulte Evaluación de expresiones de políticas.
Debe incluir una expresión de directiva entre paréntesis. Puede colocar una expresión de política en cualquier parte de las import
instrucciones o export
y de la from policy
instrucción.
Acción política |
Valor de conversión |
Valor de conversión de la acción de control de flujo |
---|---|---|
Aceptar |
VERDADERO |
Aceptar |
Rechazar |
FALSO |
Rechazar |
Siguiente política |
VERDADERO |
Siguiente política |
Operador lógico |
Lógica de expresión de política |
Cómo afecta el operador lógico a la evaluación de expresiones de política |
---|---|---|
&& (Lógica Y) |
Lógico Y requiere que todos los valores sean TRUE para producir la salida de TRUE. El valor de la política de enrutamiento de TRUE y TRUE produce la salida de TRUE. El valor de TRUE y FALSE produce la salida de FALSE. El valor de FALSE y FALSE produce la salida de FALSE. |
Si la primera directiva de enrutamiento devuelve el valor de TRUE, se evalúa la siguiente directiva. Si la primera política devuelve el valor de FALSE, la evaluación de la expresión finaliza y las directivas posteriores de la expresión no se evalúan. |
|| (Lógica O) |
La lógica OR requiere que al menos un valor sea TRUE para producir la salida de TRUE. El valor de la política de enrutamiento de TRUE y FALSE genera la salida de TRUE. El valor de TRUE y TRUE produce la salida de TRUE. El valor de FALSE y FALSE produce la salida de FALSE. |
Si la primera directiva de enrutamiento devuelve el valor de TRUE, la evaluación de la expresión finaliza y las directivas posteriores de la expresión no se evalúan. Si la primera directiva devuelve el valor de FALSE, se evalúa la siguiente directiva. |
! (NOT lógico) |
Lógico NO invierte el valor de VERDADERO a FALSO y de FALSO a VERDADERO. También invierte las acciones de aceptar y la siguiente política de rechazar y rechazar de aceptar. |
Si se usa con el operador lógico AND y el primer valor de política de enrutamiento de FALSE se invierte a TRUE, se evalúa la siguiente directiva. Si el valor de TRUE se invierte a FALSE, la evaluación de la expresión finaliza y las directivas posteriores de la expresión no se evalúan. Si se usa con el operador OR lógico y el primer valor de política de enrutamiento de FALSE se invierte en TRUE, la evaluación de la expresión finaliza y las directivas posteriores de la expresión no se evalúan. Si el valor de TRUE se invierte a FALSE, se evalúa la siguiente directiva. Si se usa con una política y la acción de control de flujo es aceptar o la siguiente directiva, estas acciones se invierten para rechazar. Si se rechaza la acción de control de flujo, esta acción se invierte para aceptar. |
Para obtener más información, consulte las secciones siguientes:
Ejemplos de expresiones de política
En los ejemplos siguientes se muestra cómo utilizar los operadores lógicos para crear expresiones de directiva:
Lógica Y: en el ejemplo siguiente,
policy1
se evalúa primero. Si se evalúa afterpolicy1
, se devuelve un valor de TRUE,policy2
se evalúa. Si se devuelve un valor de FALSE,policy2
no se evalúa.export (policy1 && policy2)
Lógica O: en el ejemplo siguiente,
policy1
se evalúa primero. Si se evalúa afterpolicy1
, no se evalúa un valor de TRUE.policy2
Si se devuelve un valor de FALSE,policy2
se evalúa.export (policy1 || policy2)
Lógica O y lógica Y: en el ejemplo siguiente,
policy1
se evalúa primero. Si se evalúa afterpolicy1
, se devuelve un valor de TRUE,policy2
se omite ypolicy3
se evalúa. Si se evalúa afterpolicy1
, se devuelve un valor de FALSE.policy2
Sipolicy2
devuelve un valor de TRUE,policy3
se evalúa. Sipolicy2
devuelve un valor de FALSE,policy3
no se evalúa.export [(policy1 || policy2) && policy3]
NOT lógico: en el ejemplo siguiente,
policy1
se evalúa primero. Si se evalúa afterpolicy1
, se devuelve un valor de TRUE, el valor se invierte en FALSE ypolicy2
no se evalúa. Si se devuelve un valor de FALSE, el valor se invierte a TRUE ypolicy2
se evalúa.export (!policy1 && policy2)
La lista [policy1 policy2 policy3]
secuencial no es lo mismo que la expresión (policy1 && policy2 && policy3)
de directiva .
La lista secuencial se evalúa sobre la base de una ruta que coincide con una política de enrutamiento. Por ejemplo, si policy1
las coincidencias y la acción son accept
o reject
, policy2
y policy3
no se evalúan. Si policy1
no coincide, policy2
se evalúa y así sucesivamente hasta que se produce una coincidencia y la acción es accept
o reject
.
Las expresiones de política se evalúan en función de la acción de una política de enrutamiento que se convierte al valor de TRUE o FALSE y la lógica del operador lógico especificado. (Para obtener información completa acerca de la evaluación de expresiones de política, consulte Evaluación de expresiones de políticas.) Por ejemplo, si policy1
devuelve un valor de FALSE policy2
y policy3
no se evalúan. Si policy1
devuelve un valor de TRUE, policy2
se evalúa. Si policy2
devuelve un valor de FALSE, policy3
no se evalúa. Si policy2
devuelve un valor de TRUE, policy3
se evalúa.
También puede combinar expresiones de política y listas secuenciales. En el ejemplo siguiente, si policy1
devuelve un valor de FALSE, policy2
se evalúa. Si policy2
devuelve un valor de TRUE y contiene una next policy
acción, policy3
se evalúa. Si policy2
devuelve un valor de TRUE pero no contiene una acción, incluida una next policy
acción, policy3
se sigue evaluando (ya que si no especifica una acción, las acciones predeterminadas son el siguiente término o la siguiente directiva). Si policy2
devuelve un valor de TRUE y contiene una accept
acción, policy3
no se evalúa.
export [(policy1 || policy2) policy3]
Evaluación de expresiones de políticas
Durante la evaluación, el software del marco de políticas convierte las acciones de política en valores de TRUE o FALSE, que son factores para determinar la acción de control de flujo que se realiza en una ruta. Sin embargo, el software no realiza realmente una acción de control de flujo en una ruta hasta que evalúa una expresión de política completa.
El software del marco de políticas evalúa una expresión de política de la siguiente manera:
El software evalúa una ruta con respecto a la primera política de enrutamiento en una expresión de política y convierte la acción especificada o predeterminada en un valor de TRUE o FALSE. (Para obtener información acerca de los valores de conversión de acciones de directiva, consulte Tabla 1.)
El software toma el valor de TRUE o FALSE y lo evalúa en función del operador lógico utilizado en la expresión de política (consulte Tabla 2). Según el operador lógico utilizado, el software determina si se debe evaluar o no la siguiente política, si hay una presente.
El software del marco de políticas utiliza un método abreviado de evaluación: Si el resultado de la evaluación de una política predetermina el valor de toda la expresión de política, el software no evalúa las directivas posteriores de la expresión. Por ejemplo, si la expresión de política utiliza el operador lógico AND y la evaluación de una política devuelve el valor de FALSE, el software no evalúa las directivas posteriores en la expresión porque se garantiza que el valor final de la expresión será FALSE independientemente de los valores de las políticas no evaluadas.
El software realiza los pasos 1 y 2 para cada política de enrutamiento posterior en la expresión de política, si están presentes y es necesario evaluarlas.
Después de evaluar la última política de enrutamiento, si es apropiado, el software evalúa el valor de VERDADERO o FALSO obtenido de cada evaluación de política de enrutamiento. Basándose en el operador lógico utilizado, calcula una salida de TRUE o FALSE.
El software convierte la salida de TRUE o FALSE en una acción. (Para obtener información acerca de los valores de conversión de acciones de directiva, consulte Tabla 1.) La acción se realiza.
Si cada política de la expresión devuelve un valor de TRUE, el software convierte el resultado de TRUE en la acción de control de flujo especificada en la última directiva. Por ejemplo, si se especifica la expresión
(policy1 && policy2)
de directiva ypolicy1
especificaaccept
y especificanext term
,policy2
se realiza lanext term
acción.Si una acción especificada en una de las políticas manipula una característica de ruta, el software del marco de políticas lleva la nueva característica de ruta hacia adelante durante la evaluación de las políticas restantes. Por ejemplo, si la acción especificada en la primera política de una expresión de política establece la métrica de una ruta en 500, esta ruta coincide con los criterios definidos
metric 500
en la siguiente política. Sin embargo, si se especifica una acción de manipulación de característica de ruta en una política situada en el medio o al final de una expresión de política, es posible, debido a la evaluación de accesos directos, que la directiva nunca se evalúe y que nunca se produzca la manipulación de la característica de ruta.
Evaluación de expresiones de política
La siguiente directiva de enrutamiento de ejemplo utiliza tres expresiones de directiva:
[edit] policy-options { policy-statement policy-A { from { route-filter 10.10.0.0/16 orlonger; } then reject; } } policy-options { policy-statement policy-B { from { route-filter 10.20.0.0/16 orlonger; } then accept; } } protocols { bgp { neighbor 192.168.1.1 { export (policy-A && policy-B); } neighbor 192.168.2.1 { export (policy-A || policy-B); } neighbor 192.168.3.1 { export (!policy-A); } } }
El software del marco de políticas evalúa la ruta BGP de tránsito 10.10.1.0/24 con respecto a las tres expresiones de política especificadas en la política de enrutamiento de ejemplo de la siguiente manera:
(policy-A && policy-B): 10.10.1.0/24 se evalúa con respecto a . 10.10.1.0/24 coincide con
policy-A
la lista de rutas especificada en , por lo que se devuelve la acción especificada dereject
.reject
se convierte enpolicy-A
un valor de FALSE y FALSE se evalúa con el AND lógico especificado. Debido a que el resultado de FALSE es cierto sin importar cuáles sean los resultados de la evaluación depolicy-B
(en la lógica de expresión de política, cualquier resultado Y un valor de FALSE produce el resultado de FALSE),policy-B
no se evalúa y se produce el resultado de FALSE. El resultado FALSE se convierte enreject
, y se rechaza 10.10.1.0/24.(política-A || política-B): 10.10.1.0/24 se evalúa con respecto a
policy-A
. 10.10.1.0/24 coincide con la lista de rutas especificada en , por lo que se devuelve la acción especificada dereject
.reject
se convierte en un valor de FALSE y, apolicy-A
continuación, FALSE se evalúa con respecto al OR lógico especificado. Dado que OR lógico requiere al menos un valor de TRUE para producir un resultado de TRUE, 10.10.1.0/24 se evalúa con . 10.10.1.0/24 no coincidepolicy-B
conpolicy-B
, por lo que se devuelve la acción predeterminada denext-policy
. Elnext-policy
se convierte en un valor de TRUE, luego el valor de FALSE (parapolicy-A
evaluación) y TRUE (parapolicy-B
evaluación) se evalúan con respecto al OR lógico especificado. En lógica de expresión de políticas, FALSE O TRUE producen un resultado de TRUE. El resultado de TRUE se convierte ennext-policy
. (TRUE se convierte ennext-policy
porquenext-policy
fue la última acción retenida por el software del marco de políticas.)policy-B
es la última política de enrutamiento de la expresión de política, por lo que se lleva a cabo la acción especificada por la directiva de exportación predeterminada para BGP.(!policy-A): 10.10.1.0/24 se evalúa con respecto
policy-A
a . 10.10.1.0/24 coincide con la lista de rutas especificada en , por lo que se devuelve la acción especificada dereject
.reject
se convierte enpolicy-A
un valor de FALSE y FALSE se evalúa con el NOT lógico especificado. El valor de FALSE se invierte en una salida de TRUE basada en las reglas de NOT lógico. El resultado de TRUE se convierte aaccept
, y se acepta la ruta 10.10.1.0/24.