Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Comment spécifier l’instance de routage dans les applications Python 3 sur les équipements exécutant Junos OS Evolved

Comprendre le module libpyvrf

Une instance de routage est un ensemble de tables de routage, d’interfaces et de paramètres de protocole de routage. Chaque instance de routage a un nom unique et une table ip unicast correspondante, qui peuvent être utilisées pour séparer le trafic de cette instance de l’autre. Par exemple, sur les équipements exécutant Junos OS Evolved, vous pouvez activer une instance VRF (Virtual Routing and Forwarding) de gestion dédiée, mgmt_junosqui utilise une table de routage administrative distincte dédiée aux tâches de gestion.

Les instances de routage vous permettent d’isoler le trafic traversant le réseau sans utiliser plusieurs équipements pour segmenter votre réseau. Lorsque vous utilisez des instances de routage pour isoler le trafic, les services publics ping réseau aiment et ssh doivent référencer l’instance de routage correcte afin d’envoyer le trafic vers une destination accessible via cette instance.

L’image de Junos OS Evolved s’exécute nativement sur Linux, fournissant un accès direct à tous les services et opérations Linux, y compris les bibliothèques Python qui font partie de l’image de base. La bibliothèque Python 3 sur les équipements exécutant Junos OS Evolved comprend également le module Juniper Networks libpyvrf , qui permet aux applications Python 3 exécutées dans le shell de spécifier l’instance de routage à utiliser pour des processus et des services réseau spécifiques.

Le tableau 1 présente les libpyvrf fonctions que vous pouvez utiliser dans les applications Python 3 exécutées dans le shell Linux. Vous pouvez utiliser les fonctions pour instruire un processus d’utilisation d’une instance de routage spécifique. Si le même processus nécessite plusieurs instances de routage, vous pouvez également définir le contexte d’instance de routage pour un socket spécifique, ce qui n’affecte pas le contexte du processus lui-même. Les paquets via le socket utilisent ensuite la table de routage associée à cette instance. Lorsque vous définissez l’instance de routage d’un processus ou d’un socket, le libpyvrf module définit le contexte du VRF Linux qui correspond à l’instance de routage Junos OS.

Tableau 1 : fonctions libpyvrf

libpyvrf Fonction

Description

get_host_vrf_name()

Renvoyez le VRF Linux correspondant à une instance de routage Junos OS.

get_table_id()

Renvoyez l’index de la table de routage associée à l’instance de routage spécifiée.

get_task_vrf()

Renvoyez l’instance de routage associée à la tâche spécifiée.

Note:

Cette fonction est obsolète à partir de Junos OS Evolved version 22.1R1.

get_vrf()

Renvoyez l’instance de routage associée au processus en cours.

set_socket_vrf()

Définissez l’instance de routage pour le socket spécifié.

set_task_vrf()

Définissez l’instance de routage pour le processus spécifié.

Note:

Cette fonction est obsolète à partir de Junos OS Evolved version 22.1R1.

set_vrf()

Définissez l’instance de routage pour le processus actuel.

Les fonctions du libpyvrf module peuvent soulever les exceptions suivantes en fonction de la fonction et de l’erreur :

  • libpyvrf.error— Généré en cas libvrf d’erreur.

  • libpyvrf.evo_not_ready— Généré lorsque la pile réseau Junos OS Evolved n’est pas prête, par exemple lorsque l’équipement est en cours de démarrage.

  • libpyvrf.invalid_table— Généré lorsque l’instance de routage ou l’ID de table spécifié n’est pas valide.

L’exemple de script Python suivant tente d’envoyer un ping à un hôte qui n’est accessible que via l’instance de mgmt_junos routage. Le script ping d’abord l’hôte avant d’appeler la set_vrf() fonction. Le script appelle ensuite la set_vrf() fonction pour associer l’instance de mgmt_junos routage au processus en cours et ping à l’hôte.

Lorsque vous exécutez le script, la première commande ping échoue, car le processus utilise l’instance de routage par défaut dans ce cas, et l’hôte n’est accessible que par l’instance de mgmt_junos routage. La deuxième commande ping, qui utilise l’instance de mgmt_junos routage, réussit.

Vous pouvez réinitialiser l’instance de routage à l’association d’instance de routage par défaut dans une application Python en spécifiant une chaîne vide pour le nom de l’instance de routage. Par exemple :

Si une application ne spécifie pas d’instance de routage, l’association d’instance de routage par défaut dépend de l’environnement du processus. Si l’environnement précharge la bibliothèque de libsi.so , l’application utilise par défaut l’instance de routage et la table par défaut, default.inet. Dans le cas contraire, aucune instance de routage par défaut n’est associée au processus ou aux sockets.

Pour déterminer si l’environnement précharge la bibliothèque libsi.so , vérifiez que la valeur de la LD_PRELOAD variable d’environnement inclut le chemin d’accès à la bibliothèque.

Si la LD_PRELOAD variable n’inclut pas le chemin de bibliothèque libsi.so , vous pouvez utiliser les commandes appropriées à votre shell pour l’ajouter, par exemple :

fonction get_host_vrf_name()

Syntaxe

Description

Renvoyez le VRF Linux correspondant à une instance de routage Junos OS.

Paramètres

vrf_name

Nom d’une instance de routage Junos OS.

Valeur de retour

host_vrf_name

Nom du VRF Linux correspondant à l’instance de routage Junos OS.

Exemples d’utilisation

L’exemple suivant imprime le VRF Linux correspondant à plusieurs instances de routage Junos OS :

Informations de publication

Fonction introduite dans Junos OS Evolved version 20.3R1.

fonction get_table_id()

Syntaxe

Description

Renvoyez l’index de la table de routage associée à l’instance de routage spécifiée. Si l’instance de routage n’est pas définie, la fonction renvoie -1.

Paramètres

vrf_name

Nom d’une instance de routage Junos OS.

Valeur de retour

table_id

Index de la table de routage pour l’instance de routage donnée.

Exemples d’utilisation

L’exemple suivant récupère et imprime l’index de la table pour l’instance de mgmt_junos routage et une instance foode routage non défini .

Le script renvoie l’index de la table pour l’instance mgmt_junos et -1 pour l’instance non défini.

Informations de publication

Fonction introduite dans Junos OS Evolved version 20.3R1.

fonction get_task_vrf()

Syntaxe

Description

Renvoyez l’instance de routage Junos OS associée à l’ID de processus spécifié.

Paramètres

tid

ID de processus pour lequel récupérer l’instance de routage associée.

Valeur de retour

vrf_name

Nom de l’instance de routage associée à l’ID de processus.

Exemples d’utilisation

L’exemple suivant récupère l’ID de processus du processus en cours et associe l’instance de mgmt_junos routage à ce processus. Lorsque le script appelle la get_task_vrf() fonction pour demander l’instance de routage pour cet ID de processus, elle renvoie l’instance de mgmt_junos routage.

Informations de publication

Fonction introduite dans Junos OS Evolved version 20.3R1.

Fonction dépréciée dans Junos OS Evolved version 22.1R1.

fonction get_vrf()

Syntaxe

Description

Renvoyez l’instance de routage Junos OS associée au processus en cours.

Valeur de retour

vrf_name

Nom de l’instance de routage associée au processus en cours.

Exemples d’utilisation

L’exemple suivant associe l’instance de mgmt_junos routage au processus en cours. Lorsque le script appelle la get_vrf() fonction pour demander l’instance de routage pour le processus en cours, elle renvoie l’instance de mgmt_junos routage.

Informations de publication

Fonction introduite dans Junos OS Evolved version 20.3R1.

fonction set_socket_vrf()

Syntaxe

Description

Définissez l’instance de routage utilisée par le socket spécifié. Il est utile de définir l’instance de routage pour un socket lorsque plusieurs sockets au sein d’une même application doivent utiliser différentes instances de routage. Vous pouvez définir le contexte d’instance de routage pour chaque socket individuellement sans affecter le contexte de l’instance de routage pour le processus ou l’application.

Paramètres

socket_fd

Descripteur de fichiers de Socket.

vrf_name

Nom d’une instance de routage Junos OS.

  • Valeurs: Les valeurs acceptables comprennent "default", "iri", "mgmt_junos"ou le nom défini pour toute instance de routage configurée par l’utilisateur dans la configuration Junos OS.

Informations de publication

Fonction introduite dans Junos OS Evolved version 20.3R1.

fonction set_task_vrf()

Syntaxe

Description

Définissez l’instance de routage que le processus avec l’ID de processus spécifié utilisera pour effectuer des opérations.

Alors que set_vrf() définit l’instance de routage pour le processus en cours, set_task_vrf() l’instance de routage du processus avec l’ID de processus spécifié.

Paramètres

tid

ID de processus pour le processus qui utilisera l’instance de routage spécifiée.

vrf_name

Nom d’une instance de routage Junos OS.

  • Valeurs: Les valeurs acceptables comprennent "default", "iri", "mgmt_junos"ou le nom défini pour toute instance de routage configurée par l’utilisateur dans la configuration Junos OS.

Exemples d’utilisation

L’exemple de script Python suivant récupère l’ID de processus du processus en cours et associe l’instance de mgmt_junos routage à ce processus. Le script ping ensuite un hôte qui n’est accessible que via cette instance de routage.

Informations de publication

Fonction introduite dans Junos OS Evolved version 20.3R1.

Fonction dépréciée dans Junos OS Evolved version 22.1R1.

fonction set_vrf()

Syntaxe

Description

Définissez l’instance de routage que le processus actuel utilisera pour effectuer les opérations. Les futures recherches utiliseront cette instance de routage.

Pour associer une instance de routage à un processus spécifique au lieu du processus en cours, utilisez la set_task_vrf() fonction.

Paramètres

vrf_name

Nom d’une instance de routage Junos OS.

  • Valeurs: Les valeurs acceptables comprennent "default", "iri", "mgmt_junos"ou le nom défini pour toute instance de routage configurée par l’utilisateur dans la configuration Junos OS.

Exemples d’utilisation

L’exemple de script Python suivant associe l’instance de mgmt_junos routage au processus en cours. Le script ping ensuite un hôte qui n’est accessible que via cette instance de routage.

Informations de publication

Fonction introduite dans Junos OS Evolved version 20.3R1.