Descripción de las subrutinas de política en condiciones de coincidencia de política de enrutamiento
Puede usar una política de enrutamiento llamada desde otra política de enrutamiento como condición de coincidencia. Este proceso hace que la política llamada sea una subrutina.
En cierto modo, el marco de políticas de Junos OS es similar a un lenguaje de programación. Esta similitud incluye el concepto de anidación de políticas en una subrutina de políticas. Una subrutina en un programa de software es una sección de código a la que hace referencia regularmente. Una subrutina de políticas funciona de la misma manera: se hace referencia a una política existente como criterio de coincidencia en otra política. El dispositivo de enrutamiento primero evalúa la subrutina y, luego, evalúa la política principal. La evaluación de la subrutina devuelve un resultado booleano verdadero o falso a la política principal. Dado que está haciendo referencia a la subrutina como un criterio de coincidencia, un resultado verdadero significa que la política principal tiene una coincidencia y puede realizar cualquier acción configurada. Sin embargo, un resultado falso de la subrutina significa que la política principal no tiene coincidencia.
Configuración de subrutinas
Para configurar una subrutina en una política de enrutamiento para que se llame desde otra política de enrutamiento, cree la subrutina y especifique su nombre mediante la policy condición de coincidencia en la from o to instrucción de otra política de enrutamiento.
No evalúe una política de enrutamiento en sí misma. El resultado es que ningún prefijo coincide con la política de enrutamiento.
La acción especificada en una subrutina se utiliza para proporcionar una condición de coincidencia a la política de llamada. Si la subrutina especifica una acción de aceptar, la política de llamada considera que la ruta es coincidente. Si la subrutina especifica una acción de rechazo, la política de llamada considera que la ruta no coincide. Si la subrutina especifica una acción destinada a manipular las características de la ruta, se realizarán los cambios.
Posibles consecuencias de acciones de rescisión en subrutinas
Una subrutina con instrucciones particulares puede comportarse de manera diferente a una política de enrutamiento que contenga las mismas instrucciones. Con una subrutina, debe recordar que las posibles acciones de terminación de aceptar o rechazar especificadas por la subrutina o la política predeterminada pueden afectar en gran medida los resultados esperados.
En particular, debe considerar lo que sucede si no se produce una coincidencia con las rutas especificadas en una subrutina y si la acción de política predeterminada que se realiza es la acción que espera y desea.
Por ejemplo, imagine que es un administrador de red en un proveedor de servicios de Internet (ISP) que proporciona servicio al cliente A. Ha configurado varias políticas de enrutamiento para las diferentes clases de vecinos que el cliente A presenta en varios vínculos. Para ahorrar tiempo en el mantenimiento de las políticas de enrutamiento del cliente A, ha configurado una subrutina que identifica sus rutas y varias políticas de enrutamiento que llaman a la subrutina, como se muestra a continuación:
[edit]
policy-options {
policy-statement customer-a-subroutine {
from {
route-filter 10.1/16 exact;
route-filter 10.5/16 exact;
route-filter 192.168.10/24 exact;
}
then accept;
}
}
policy-options {
policy-statement send-customer-a-default {
from {
policy customer-a-subroutine;
}
then {
set metric 500;
accept;
}
}
}
policy-options {
policy-statement send-customer-a-primary {
from {
policy customer-a-subroutine;
}
then {
set metric 100;
accept;
}
}
}
policy-options {
policy-statement send-customer-a-secondary {
from {
policy customer-a-subroutine;
}
then {
set metric 200;
accept;
}
}
}
protocols {
bgp {
group customer-a {
export send-customer-a-default;
neighbor 10.1.1.1;
neighbor 10.1.2.1;
neighbor 10.1.3.1 {
export send-customer-a-primary;
}
neighbor 10.1.4.1 {
export send-customer-a-secondary;
}
}
}
}
Con esta configuración se producen los siguientes resultados:
La instrucción a nivel
exportde grupo restablece la métrica a 500 cuando se anuncian todas las rutas del BGP a los vecinos 10.1.1.1 y 10.1.2.1 en lugar de solo las rutas que coinciden con los filtros de ruta de subrutina.Las instrucciones de nivel
exportde vecino restablecen la métrica a 100 y 200 cuando anuncian todas las rutas del BGP a los vecinos 10.1.3.1 y 10.1.4.1, respectivamente, en lugar de solo las rutas del BGP que coinciden con los filtros de ruta de subrutina.
Estos resultados inesperados se producen porque la política de subrutina no especifica una acción de terminación para rutas que no coinciden con el filtro de ruta y, por lo tanto, se toma la política de exportación predeterminada del BGP de aceptar todas las rutas del BGP.
Si las instrucciones incluidas en esta subrutina en particular se hubieran contenido en las propias políticas de llamada, solo se restablecerían sus métricas las rutas deseadas.
En este ejemplo, se ilustran las diferencias entre las políticas de enrutamiento y las subrutinas, y la importancia de la acción de terminación en una subrutina. Aquí, la acción predeterminada de política de exportación del BGP para la subrutina no se consideró detenidamente. Una solución a este ejemplo en particular es agregar un término más a la subrutina que rechaza todas las demás rutas que no coincidan con los filtros de ruta:
[edit]
policy-options {
policy-statement customer-a-subroutine {
term accept-exact {
from {
route-filter 10.1/16 exact;
route-filter 10.5/16 exact;
route-filter 192.168.10/24 exact;
}
then accept;
}
term reject-others {
then reject;
}
}
}
Las estrategias de acción de terminación para subrutinas en general incluyen las siguientes:
Dependa de la acción de política predeterminada para controlar el resto de rutas.
Agregue un término que acepte todas las demás rutas.
Agregue un término que rechace todas las demás rutas.
La opción que elija depende de lo que desee lograr con su subrutina. Planifique sus subrutinas con cuidado.
