Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Como especificar a instância de roteamento em aplicativos Python 3 em dispositivos que executam o Junos OS Evolved

Entender o módulo libpyvrf

Uma instância de roteamento é uma coleção de tabelas de roteamento, interfaces e parâmetros de protocolo de roteamento. Cada instância de roteamento tem um nome único e uma tabela ip unicast correspondente, que pode ser usada para separar o tráfego dessa instância de outro tráfego. Por exemplo, em dispositivos que executam o Junos OS Evolved, você pode habilitar uma instância mgmt_junosdedicada de roteamento e encaminhamento virtual de gerenciamento (VRF), que usa uma tabela de roteamento administrativa separada dedicada a tarefas de gerenciamento.

As instâncias de roteamento permitem isolar o tráfego que atravessa a rede sem usar vários dispositivos para segmentar sua rede. Quando você usa instâncias de roteamento para isolar o tráfego, os serviços de rede gostam ping e ssh devem fazer referência à instância de roteamento correta, a fim de enviar o tráfego para um destino que possa ser alcançado por essa instância.

A imagem do Junos OS Evolved é executado nativamente no Linux, fornecendo acesso direto a todos os serviços e operações do Linux, incluindo as bibliotecas Python que fazem parte da imagem base. A biblioteca Python 3 em dispositivos que executam o Junos OS Evolved também inclui o módulo Juniper Networks libpyvrf , que permite que aplicativos Python 3 executados na shell especifiquem a instância de roteamento a ser usada para processos específicos e serviços de rede.

A Tabela 1 descreve as libpyvrf funções que você pode usar em aplicativos Python 3 executados na camada Linux. Você pode usar as funções para instruir um processo a usar uma instância de roteamento específica. Se o mesmo processo exigir várias instâncias de roteamento, você também pode definir o contexto da instância de roteamento para um soquete específico, o que não afeta o contexto do processo em si. Os pacotes por meio do soquete usam a tabela de roteamento associada a essa instância. Quando você define a instância de roteamento para um processo ou soquete, o libpyvrf módulo define o contexto para o Linux VRF que corresponde à instância de roteamento do Junos OS.

Tabela 1: funções de libpyvrf

libpyvrf Função

Descrição

get_host_vrf_name()

Devolva o Linux VRF correspondente a uma instância de roteamento do Junos OS.

get_table_id()

Devolva o índice da tabela de roteamento associado à instância de roteamento especificada.

get_task_vrf()

Devolva a instância de roteamento associada à tarefa especificada.

Nota:

Essa função é preterida a partir do Junos OS Evolved Release 22.1R1.

get_vrf()

Devolva a instância de roteamento associada ao processo atual.

set_socket_vrf()

Defina a instância de roteamento para o soquete especificado.

set_task_vrf()

Defina a instância de roteamento para o processo especificado.

Nota:

Essa função é preterida a partir do Junos OS Evolved Release 22.1R1.

set_vrf()

Defina a instância de roteamento para o processo atual.

As funções do libpyvrf módulo podem aumentar as seguintes exceções, dependendo da função e do erro:

  • libpyvrf.error— Gerado quando libvrf retorna um erro.

  • libpyvrf.evo_not_ready— Gerado quando a pilha de rede Junos OS Evolved não está pronta, por exemplo, quando o dispositivo está inicializando.

  • libpyvrf.invalid_table— Gerado quando a instância de roteamento ou o ID da tabela especificados são inválidos.

A amostra a seguir do script Python tenta encontrar um host que só pode ser alcançado por meio da mgmt_junos instância de roteamento. O script inicialmente pinga no host antes de chamar a set_vrf() função. O script então chama a set_vrf() função para associar a mgmt_junos instância de roteamento ao processo atual e coloca o host novamente.

Quando você executa o script, o primeiro comando de ping falha, porque o processo usa a instância de roteamento padrão neste caso, e o host só pode ser alcançado por meio da mgmt_junos instância de roteamento. O segundo comando de ping, que usa a mgmt_junos instância de roteamento, tem sucesso.

Você pode redefinir a instância de roteamento de volta à associação de instâncias de roteamento padrão em um aplicativo Python especificando uma string vazia para o nome da instância de roteamento. Por exemplo:

Se um aplicativo não especificar uma instância de roteamento, a associação de instâncias de roteamento padrão depende do ambiente do processo. Se o ambiente pré-carregar a biblioteca libsi.so , por padrão, o aplicativo usará a instância e a tabela de roteamento padrão. default.inet Caso contrário, não há uma instância de roteamento padrão associada ao processo ou tomadas.

Para determinar se o ambiente pré-carrega a biblioteca libsi.so , verifique se o LD_PRELOAD valor da variável do ambiente inclui o caminho até a biblioteca.

Se a LD_PRELOAD variável não incluir o caminho da biblioteca libsi.so , você pode usar os comandos apropriados para sua concha para adicioná-lo, por exemplo:

função get_host_vrf_name()

Sintaxe

Descrição

Devolva o Linux VRF correspondente a uma instância de roteamento do Junos OS.

Parâmetros

vrf_name

Nome de uma instância de roteamento Junos OS.

Valor de retorno

host_vrf_name

Nome do Linux VRF correspondente à instância de roteamento Junos OS.

Exemplos de uso

O exemplo a seguir imprime o Linux VRF correspondente a várias instâncias de roteamento do Junos OS:

Informações de lançamento

Função introduzida no Junos OS Evolved Release 20.3R1.

função get_table_id()

Sintaxe

Descrição

Devolva o índice da tabela de roteamento associado à instância de roteamento especificada. Se a instância de roteamento não for definida, a função retorna -1.

Parâmetros

vrf_name

Nome de uma instância de roteamento Junos OS.

Valor de retorno

table_id

Índice da tabela de roteamento para uma determinada instância de roteamento.

Exemplos de uso

O exemplo a seguir recupera e imprime o índice de tabela para a mgmt_junos instância de roteamento e uma instância foode roteamento indefinida.

O script devolve o índice de tabela para a mgmt_junos instância e retorna -1 para a instância indefinida.

Informações de lançamento

Função introduzida no Junos OS Evolved Release 20.3R1.

função get_task_vrf()

Sintaxe

Descrição

Devolva a instância de roteamento junos OS associada ao ID do processo especificado.

Parâmetros

tid

ID de processo para o qual recuperar a instância de roteamento associada.

Valor de retorno

vrf_name

Nome da instância de roteamento associada ao ID do processo.

Exemplos de uso

O exemplo a seguir recupera o ID do processo para o processo atual e associa a instância de roteamento a mgmt_junos esse processo. Quando o script liga para a get_task_vrf() função para solicitar a instância de roteamento para esse ID de processo, ele retorna a mgmt_junos instância de roteamento.

Informações de lançamento

Função introduzida no Junos OS Evolved Release 20.3R1.

Função preterida no Junos OS Evolved Release 22.1R1.

função get_vrf()

Sintaxe

Descrição

Devolva a instância de roteamento Junos OS associada ao processo atual.

Valor de retorno

vrf_name

Nome da instância de roteamento associada ao processo atual.

Exemplos de uso

O exemplo a seguir associa a mgmt_junos instância de roteamento ao processo atual. Quando o script chama a get_vrf() função para solicitar a instância de roteamento para o processo atual, ele retorna a mgmt_junos instância de roteamento.

Informações de lançamento

Função introduzida no Junos OS Evolved Release 20.3R1.

função set_socket_vrf()

Sintaxe

Descrição

Defina a instância de roteamento usada pelo soquete especificado. Definir a instância de roteamento para um soquete é útil quando vários soquetes dentro da mesma aplicação precisam usar diferentes instâncias de roteamento. Você pode definir o contexto da instância de roteamento para cada soquete individualmente sem afetar o contexto da instância de roteamento para o processo ou a aplicação.

Parâmetros

socket_fd

Descritor de arquivos da Socket.

vrf_name

Nome de uma instância de roteamento Junos OS.

  • Valores: Os valores aceitáveis incluem"default", "mgmt_junos""iri"ou o nome definido para qualquer instância de roteamento configurada pelo usuário na configuração do Junos OS.

Informações de lançamento

Função introduzida no Junos OS Evolved Release 20.3R1.

função set_task_vrf()

Sintaxe

Descrição

Defina a instância de roteamento que o processo com o ID de processo especificado usará para realizar operações.

Considerando que set_vrf() define a instância de roteamento para o processo atual, set_task_vrf() define a instância de roteamento para o processo com o ID do processo especificado.

Parâmetros

tid

Identificação de processo para o processo que usará a instância de roteamento especificada.

vrf_name

Nome de uma instância de roteamento Junos OS.

  • Valores: Os valores aceitáveis incluem"default", "mgmt_junos""iri"ou o nome definido para qualquer instância de roteamento configurada pelo usuário na configuração do Junos OS.

Exemplos de uso

O script Python da amostra a seguir recupera o ID do processo para o processo atual e associa a instância de roteamento a mgmt_junos esse processo. Em seguida, o script encontra um host que só pode ser alcançado por essa instância de roteamento.

Informações de lançamento

Função introduzida no Junos OS Evolved Release 20.3R1.

Função preterida no Junos OS Evolved Release 22.1R1.

função set_vrf()

Sintaxe

Descrição

Defina a instância de roteamento que o processo atual usará para realizar operações. As buscas futuras usarão essa instância de roteamento.

Para associar uma instância de roteamento a um processo específico em vez do processo atual, use a set_task_vrf() função.

Parâmetros

vrf_name

Nome de uma instância de roteamento Junos OS.

  • Valores: Os valores aceitáveis incluem"default", "mgmt_junos""iri"ou o nome definido para qualquer instância de roteamento configurada pelo usuário na configuração do Junos OS.

Exemplos de uso

O script Python da amostra a seguir associa a mgmt_junos instância de roteamento ao processo atual. Em seguida, o script encontra um host que só pode ser alcançado por essa instância de roteamento.

Informações de lançamento

Função introduzida no Junos OS Evolved Release 20.3R1.