Descripción de las subrutinas de políticas en condiciones de coincidencia de políticas de enrutamiento
Puede usar una política de enrutamiento llamada desde otra directiva de enrutamiento como condición de coincidencia. Este proceso convierte a la política llamada en 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 anidar 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 se hace referencia regularmente. Una subrutina de directiva 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 evalúa primero la subrutina y, a continuación, evalúa la directiva principal. La evaluación de la subrutina devuelve un resultado booleano verdadero o falso a la directiva principal. Dado que hace referencia a la subrutina como criterio de coincidencia, un resultado verdadero significa que la directiva principal tiene una coincidencia y puede realizar cualquier acción configurada. Un resultado falso de la subrutina, sin embargo, significa que la política principal no tiene una coincidencia.
Configuración de subrutinas
Para configurar una subrutina de una directiva de enrutamiento para llamarla desde otra directiva de enrutamiento, cree la subrutina y especifique su nombre mediante la condición de policy
coincidencia de la from
instrucción o to
de otra directiva de enrutamiento.
No evalúe una política de enrutamiento dentro de 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 aceptación, la política de llamada considera que la ruta es una coincidencia. 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 realizan los cambios.
Posibles consecuencias de las acciones de terminación en subrutinas
Una subrutina con instrucciones determinadas puede comportarse de forma diferente a una directiva de enrutamiento que contiene 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 a los resultados esperados.
En concreto, debe tener en cuenta qué sucede si no se produce una coincidencia con rutas especificadas en una subrutina y si la acción de directiva predeterminada que se realiza es la acción que espera y desea.
Por ejemplo, imagine que es administrador de red en un proveedor de servicios Internet (ISP) que proporciona servicio al cliente A. Ha configurado varias directivas de enrutamiento para las distintas clases de vecinos que el cliente A presenta en varios vínculos. Para ahorrar tiempo en el mantenimiento de las directivas de enrutamiento para el cliente A, ha configurado una subrutina que identifica sus rutas y varias directivas 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 obtienen los siguientes resultados:
La instrucción de nivel
export
de grupo restablece la métrica a 500 cuando se anuncian todas las rutas 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 la subrutina.Las instrucciones de nivel
export
de vecino restablecen la métrica a 100 y 200 cuando se anuncian todas las rutas BGP a los vecinos 10.1.3.1 y 10.1.4.1, respectivamente, en lugar de solo las rutas BGP que coinciden con los filtros de ruta de subrutina.
Estos resultados inesperados se producen porque la directiva de subrutina no especifica una acción de finalización para las rutas que no coinciden con el filtro de ruta y, por lo tanto, se toma la directiva de exportación BGP predeterminada de aceptar todas las rutas BGP.
Si las instrucciones incluidas en esta subrutina en particular se hubieran contenido dentro de las propias políticas de llamada, solo se restablecerían las métricas de las rutas deseadas.
En este ejemplo se ilustran las diferencias entre las directivas y subrutinas de enrutamiento, así como la importancia de la acción de terminación en una subrutina. En este caso, la acción de política de exportación de BGP predeterminada para la subrutina no se consideró cuidadosamente. 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 coinciden 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 lo siguiente:
Depende de la acción de política predeterminada para controlar todas las demás 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 elijas depende de lo que quieras lograr con tu subrutina. Planifique sus subrutinas cuidadosamente.