Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Cómo especificar la instancia de enrutamiento en aplicaciones de Python 3 en dispositivos que ejecutan Junos OS evolucionado

Descripción del módulo libpyvrf

Una instancia de enrutamiento es una colección de tablas de enrutamiento, interfaces y parámetros de protocolo de enrutamiento. Cada instancia de enrutamiento tiene un nombre único y una tabla de unidifusión IP correspondiente, que se puede utilizar para separar el tráfico de esa instancia de otro tráfico. Por ejemplo, en dispositivos que ejecutan Junos OS Evolved, puede habilitar una instancia dedicada de enrutamiento y reenvío virtual de administración (VRF), mgmt_junosque utiliza una tabla de enrutamiento administrativo independiente dedicada a las tareas de administración.

Las instancias de enrutamiento le permiten aislar el tráfico que atraviesa la red sin usar varios dispositivos para segmentar su red. Cuando usa instancias de enrutamiento para aislar el tráfico, las utilidades de red como ping y ssh deben hacer referencia a la instancia de enrutamiento correcta para enviar tráfico a un destino al que se puede acceder a través de esa instancia.

La imagen Evolved de Junos OS se ejecuta de forma nativa en Linux, lo que proporciona acceso directo a todas las utilidades y operaciones de Linux, incluidas las bibliotecas python que forman parte de la imagen base. La biblioteca de Python 3 en dispositivos que ejecutan Junos OS Evolved también incluye el módulo Juniper Networks libpyvrf , que permite que las aplicaciones de Python 3 que se ejecutan en el shell especifiquen la instancia de enrutamiento que se usará para procesos específicos y utilidades de red.

La tabla 1 describe las libpyvrf funciones que puede usar en aplicaciones de Python 3 que se ejecutan en el shell de Linux. Puede utilizar las funciones para indicar a un proceso que utilice una instancia de enrutamiento específica. Si el mismo proceso requiere varias instancias de enrutamiento, también puede establecer el contexto de instancia de enrutamiento para un socket específico, lo que no afecta al contexto del propio proceso. Los paquetes a través del socket luego usan la tabla de enrutamiento asociada con esa instancia. Cuando se establece la instancia de enrutamiento para un proceso o socket, el libpyvrf módulo establece el contexto en el VRF de Linux que corresponde a la instancia de enrutamiento de Junos OS.

Tabla 1: funciones libpyvrf

libpyvrf Función

Descripción

get_host_vrf_name()

Devuelva el VRF de Linux correspondiente a una instancia de enrutamiento de Junos OS.

get_table_id()

Devuelva el índice de la tabla de enrutamiento asociada con la instancia de enrutamiento especificada.

get_task_vrf()

Devuelva la instancia de enrutamiento asociada con la tarea especificada.

Nota:

Esta función está en desuso a partir de Junos OS versión Evolved 22.1R1.

get_vrf()

Devuelva la instancia de enrutamiento asociada con el proceso actual.

set_socket_vrf()

Establezca la instancia de enrutamiento para el socket especificado.

set_task_vrf()

Establezca la instancia de enrutamiento para el proceso especificado.

Nota:

Esta función está en desuso a partir de Junos OS versión Evolved 22.1R1.

set_vrf()

Establezca la instancia de enrutamiento para el proceso actual.

Las funciones del libpyvrf módulo pueden generar las siguientes excepciones según la función y el error:

  • libpyvrf.error: se genera cuando libvrf se devuelve un error.

  • libpyvrf.evo_not_ready: se genera cuando la pila de red Evolved de Junos OS no está lista, por ejemplo, cuando el dispositivo se está iniciando.

  • libpyvrf.invalid_table: se genera cuando la instancia de enrutamiento o el ID de tabla especificados no son válidos.

La siguiente secuencia de comandos de Python de ejemplo intenta hacer ping a un host al que solo se puede acceder a través de la instancia de mgmt_junos enrutamiento. Inicialmente, la secuencia de comandos hace ping al host antes de llamar a la set_vrf() función. A continuación, la secuencia de comandos llama a la set_vrf() función para asociar la instancia de mgmt_junos enrutamiento con el proceso actual y vuelve a hacer ping al host.

Cuando se ejecuta la secuencia de comandos, se produce un error en el primer comando ping, ya que el proceso utiliza la instancia de enrutamiento predeterminada en este caso, y el host solo es accesible a través de la instancia de mgmt_junos enrutamiento. El segundo comando ping, que usa la instancia de mgmt_junos enrutamiento, se realiza correctamente.

Puede restablecer la instancia de enrutamiento a la asociación de instancia de enrutamiento predeterminada en una aplicación de Python especificando una cadena vacía para el nombre de instancia de enrutamiento. Por ejemplo:

Si una aplicación no especifica una instancia de enrutamiento, la asociación de instancia de enrutamiento predeterminada depende del entorno del proceso. Si el entorno precarga la biblioteca de libsi.so , de forma predeterminada, la aplicación utiliza la instancia y la tabla de enrutamiento predeterminadas. default.inet De lo contrario, no hay ninguna instancia de enrutamiento predeterminada asociada con el proceso o los sockets.

Para determinar si el entorno carga previamente la biblioteca de libsi.so , compruebe que el valor de la LD_PRELOAD variable de entorno incluye la ruta de acceso a la biblioteca.

Si la LD_PRELOAD variable no incluye la ruta de biblioteca libsi.so , puede usar los comandos adecuados para su shell para agregarla, por ejemplo:

Función get_host_vrf_name()

Sintaxis

Descripción

Devuelva el VRF de Linux correspondiente a una instancia de enrutamiento de Junos OS.

Parámetros

vrf_name

Nombre de una instancia de enrutamiento de Junos OS.

Valor devuelto

host_vrf_name

Nombre del VRF de Linux correspondiente a la instancia de enrutamiento de Junos OS.

Ejemplos de uso

En el siguiente ejemplo, se imprime el VRF de Linux correspondiente a varias instancias de enrutamiento de Junos OS:

Información de la versión

Función introducida en Junos OS versión Evolved 20.3R1.

Función get_table_id()

Sintaxis

Descripción

Devuelva el índice de la tabla de enrutamiento asociada con la instancia de enrutamiento especificada. Si la instancia de enrutamiento no está definida, la función devuelve -1.

Parámetros

vrf_name

Nombre de una instancia de enrutamiento de Junos OS.

Valor devuelto

table_id

Índice de la tabla de enrutamiento para la instancia de enrutamiento dada.

Ejemplos de uso

En el ejemplo siguiente se recupera e imprime el índice de tabla para la instancia de mgmt_junos enrutamiento y una instancia foode enrutamiento no definida.

El script devuelve el índice de tabla para la mgmt_junos instancia y devuelve -1 para la instancia no definida.

Información de la versión

Función introducida en Junos OS versión Evolved 20.3R1.

Función get_task_vrf()

Sintaxis

Descripción

Devuelva la instancia de enrutamiento de Junos OS asociada con el ID de proceso especificado.

Parámetros

tid

ID de proceso para el que recuperar la instancia de enrutamiento asociada.

Valor devuelto

vrf_name

Nombre de la instancia de enrutamiento asociada con el ID de proceso.

Ejemplos de uso

En el ejemplo siguiente, se recupera el ID de proceso del proceso actual y se asocia la instancia de mgmt_junos enrutamiento con ese proceso. Cuando la secuencia de comandos llama a la get_task_vrf() función para solicitar la instancia de enrutamiento para ese ID de proceso, devuelve la instancia de mgmt_junos enrutamiento.

Información de la versión

Función introducida en Junos OS versión Evolved 20.3R1.

Función en desuso en Junos OS versión Evolved 22.1R1.

Función get_vrf()

Sintaxis

Descripción

Devuelva la instancia de enrutamiento de Junos OS asociada con el proceso actual.

Valor devuelto

vrf_name

Nombre de la instancia de enrutamiento asociada con el proceso actual.

Ejemplos de uso

En el ejemplo siguiente, se asocia la instancia de mgmt_junos enrutamiento con el proceso actual. Cuando la secuencia de comandos llama a la get_vrf() función para solicitar la instancia de enrutamiento para el proceso actual, devuelve la instancia de mgmt_junos enrutamiento.

Información de la versión

Función introducida en Junos OS versión Evolved 20.3R1.

Función set_socket_vrf()

Sintaxis

Descripción

Establezca la instancia de enrutamiento utilizada por el socket especificado. Establecer la instancia de enrutamiento para un socket es útil cuando varios sockets dentro de la misma aplicación necesitan usar distintas instancias de enrutamiento. Puede establecer el contexto de instancia de enrutamiento para cada socket de forma individual sin afectar el contexto de la instancia de enrutamiento para el proceso o la aplicación.

Parámetros

socket_fd

Descriptor de archivo del socket.

vrf_name

Nombre de una instancia de enrutamiento de Junos OS.

  • Valores: Los valores aceptables incluyen "default", "iri", o "mgmt_junos"el nombre definido para cualquier instancia de enrutamiento configurada por el usuario en la configuración de Junos OS.

Información de la versión

Función introducida en Junos OS versión Evolved 20.3R1.

Función set_task_vrf()

Sintaxis

Descripción

Establezca la instancia de enrutamiento que el proceso con el ID de proceso especificado usará para realizar operaciones.

Mientras que set_vrf() establece la instancia de enrutamiento para el proceso actual, set_task_vrf() establece la instancia de enrutamiento para el proceso con el ID de proceso especificado.

Parámetros

tid

ID de proceso para el proceso que usará la instancia de enrutamiento especificada.

vrf_name

Nombre de una instancia de enrutamiento de Junos OS.

  • Valores: Los valores aceptables incluyen "default", "iri", o "mgmt_junos"el nombre definido para cualquier instancia de enrutamiento configurada por el usuario en la configuración de Junos OS.

Ejemplos de uso

La siguiente secuencia de comandos de Python de ejemplo recupera el ID de proceso para el proceso actual y asocia la instancia de mgmt_junos enrutamiento con ese proceso. A continuación, la secuencia de comandos hace ping a un host al que solo se puede acceder a través de esa instancia de enrutamiento.

Información de la versión

Función introducida en Junos OS versión Evolved 20.3R1.

Función en desuso en Junos OS versión Evolved 22.1R1.

Función set_vrf()

Sintaxis

Descripción

Establezca la instancia de enrutamiento que usará el proceso actual para realizar operaciones. Las búsquedas futuras usarán esta instancia de enrutamiento.

Para asociar una instancia de enrutamiento a un proceso específico en lugar del proceso actual, utilice la set_task_vrf() función.

Parámetros

vrf_name

Nombre de una instancia de enrutamiento de Junos OS.

  • Valores: Los valores aceptables incluyen "default", "iri", o "mgmt_junos"el nombre definido para cualquier instancia de enrutamiento configurada por el usuario en la configuración de Junos OS.

Ejemplos de uso

La siguiente secuencia de comandos de Python de ejemplo asocia la instancia de mgmt_junos enrutamiento con el proceso actual. A continuación, la secuencia de comandos hace ping a un host al que solo se puede acceder a través de esa instancia de enrutamiento.

Información de la versión

Función introducida en Junos OS versión Evolved 20.3R1.