Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Variables définies par l’utilisateur dans des profils dynamiques

Variables définies par l’utilisateur

Dans les profils de service dynamiques, Junos OS vous permet de configurer des variables personnalisées au niveau de la [edit dynamic-profiles profile-name variables] hiérarchie et d’utiliser ces variables dans la [edit dynamic-profiles] hiérarchie. Le profil dynamique obtient et remplace les données de ces variables à partir d’un serveur externe (par exemple, RADIUS) pendant le processus d’authentification de l’abonné. Au moment de l’exécution, les variables sont remplacées par des valeurs réelles et utilisées pour configurer les interfaces abonnés.

Vous pouvez utiliser l’une des instructions suivantes pour configurer des variables définies par l’utilisateur :

  • default-value: permet de configurer la valeur par défaut d’une variable définie par l’utilisateur dans un profil dynamique. Les valeurs utilisées par le système pour ces variables sont appliquées lorsque l’abonné s’authentifie. La spécification d’une valeur par défaut fournit une configuration autonome pour l’instruction associée ou une sauvegarde pour la configuration de l’instruction si le serveur externe est inaccessible ou ne contient pas de valeur pour la variable.

  • equals: configurez une expression pour une variable définie par l’utilisateur qui est évaluée au moment de l’exécution et renvoyée en tant que valeur de variable.

  • mandatory: spécifie qu’un serveur externe (par exemple, RADIUS) doit renvoyer une valeur pour la variable définie par l’utilisateur. Si le serveur externe ne renvoie pas de valeur pour la variable, le profil dynamique échoue.

  • uid: configurez un ID unique pour les filtres et les CoS paramétrés dans un profil dynamique créé pour les services.

  • uid-reference: configurez une variable qui fait référence à un ID unique pour les filtres paramétrés ou CoS dans un profil dynamique créé pour les services.

Note:

L’ordre dans lequel vous définissez la façon dont les variables sont obtenues est important. Pour vous assurer que vous obtenez des variables obligatoires à partir d’un serveur externe et que vous ne dérivez pas de valeurs à partir de valeurs par défaut ou via des expressions de variables, vous devez d’abord définir les variables obligatoires.

Configuration de variables dynamiques définies par l’utilisateur dans des profils dynamiques

Cette rubrique explique comment configurer une variable dynamique définie par l’utilisateur dans un profil de service dynamique. Vous pouvez définir une variable au niveau de la [edit dynamic-profiles profile-name variables] hiérarchie qui est utilisée ailleurs dans le profil de service dynamique. Vous pouvez éventuellement spécifier une valeur par défaut pour toute variable dynamique qui apparaît dans le corps du profil dynamique. Les valeurs de variable par défaut sont utilisées dans le cas où le routeur n’est pas en mesure d’accéder à un serveur externe (par exemple, RADIUS) ou d’obtenir une valeur à utiliser comme variable dynamique. Vous pouvez également spécifier que l’utilisation d’une valeur retournée par RADIUS est obligatoire ; Si cette valeur n’est pas reçue, le profil échoue.

Avant de configurer les valeurs par défaut des variables dynamiques :

  1. Créez un profil dynamique de base.

    Reportez-vous à la section Configuration d’un profil dynamique de base.

  2. Assurez-vous que le routeur est configuré pour permettre la communication entre le client et le serveur RADIUS.

    Reportez-vous à la section Spécification des méthodes d’authentification et de comptabilisation de l’accès abonné.

  3. Configurez toutes les valeurs RADIUS que vous souhaitez que les profils utilisent lors de la validation des abonnés.

    Voir Serveurs RADIUS et paramètres pour l’accès abonné

Pour configurer des variables dans un profil de service dynamique :

  1. Accédez à la variables strophe dans le profil de service dynamique souhaité.
  2. Définissez la variable.
  3. (Facultatif) Spécifiez une valeur par défaut à utiliser par la variable dans le cas où le routeur ne peut pas contacter le serveur externe ou si le serveur externe ne contient pas de valeur pour l’attribut affecté.
  4. (Facultatif) Spécifiez que le serveur externe doit renvoyer une valeur pour une variable définie par l’utilisateur. Lorsque vous incluez l’instructionmandatory, si le serveur externe ne renvoie pas de valeur pour la variable, le profil de service dynamique échoue.

Utilisation d’expressions de variable dans des variables définies par l’utilisateur

Junos OS vous permet de créer des expressions (groupes d’opérateurs arithmétiques, d’opérateurs de chaîne et d’opérandes) à utiliser en tant que variables dans des profils dynamiques. Vous configurez des expressions de variable au niveau de la [dynamic-profiles profile-name variables] hiérarchie. Au moment de l’exécution, les expressions de variable sont calculées et utilisées comme valeurs de variable pour configurer des interfaces d’abonné dynamiques.

Lorsque vous configurez des expressions dans des profils dynamiques, vous devez respecter les règles suivantes :

  • Vous ne pouvez configurer des expressions qu’à l’intérieur d’une strophe variable d’un profil dynamique.

  • Les profils dynamiques qui contiennent des expressions pour des variables définies par l’utilisateur doivent être utilisés uniquement pour l’activation du service.

  • En règle générale, vous n’affectez des expressions qu’aux variables définies par l’utilisateur. Vous ne pouvez pas affecter d’expressions à des variables internes ou à des variables prédéfinies.

  • Les valeurs d’expression sont prioritaires sur les valeurs par défaut.

  • Les expressions entières doivent être placées entre guillemets ( » « ).

  • Les chaînes à l’intérieur des expressions doivent être entre guillemets simples (' ') et les guillemets simples ne peuvent contenir que des chaînes.

  • Les espaces blancs sont traités comme un délimiteur pour tous les opérandes et opérateurs. Les chaînes contenant des espaces que vous créez dans des expressions sont traitées comme des chaînes simples et incluent tout espace blanc de début ou de fin. Par exemple, pour créer un profil de service :

  • L’expression doit être soit tous les opérateurs arithmétiques, soit tous les opérateurs de chaîne ; Le mélange d’opérateurs arithmétiques et d’opérateurs de chaîne n’est pas autorisé à moins d’être correctement converti au type correct.

  • Les expressions peuvent faire référence à d’autres variables prédéfinies par le système ou à d’autres variables définies par l’utilisateur. Cependant, aucun référencement circulaire entre les variables n’est autorisé. Par exemple, la référence suivante est incorrecte :

  • Pour créer une interface dynamique et un ensemble d’interfaces pour le plan utilisateur BNG-CUPS, utilisez le format suivant :

    Vous pouvez configurer la priorité du filtre de service pour le plan utilisateur BNG-CUPS, afin de contrôler l’ordre d’évaluation du service pour les paquets. Vous pouvez ajouter la configuration de priorité au profil dynamique.

  • Toute variable obligatoire qui ne contient pas de valeur « default » ou d’expression « equals » doit contenir une valeur dans le cadre de l’activation du service. Par exemple, un VSA de service RADIUS tel que « service-video( value1, value2) » qui contient deux variables obligatoires ou moins dans la définition de profil de service dynamique « service-video » réussit. L’activation du service échoue si au moins une variable obligatoire n’est associée à aucune valeur, que ce soit par le biais de l’évaluation de l’attribut « default » ou « equals ».

Le tableau 1 répertorie les opérateurs et les fonctions pris en charge que vous pouvez utiliser pour créer des expressions. La priorité 5 est le niveau le plus élevé.

Tableau 1 : opérateurs et fonctions

Opération

Opérateur

Associativité

Préséance

Action

Addition arithmétique

+

Gauche

1

Ajoute les éléments à droite et à gauche de l’opérateur.

Soustraction arithmétique

-

Gauche

1

Soustrait l’élément à droite de l’opérateur de l’élément à gauche de l’opérateur.

Multiplication arithmétique

*

Gauche

2

Multiplie l’élément à gauche de l’opérateur par l’élément à droite de l’opérateur.

Division arithmétique

/

Gauche

2

Divise l’élément à gauche de l’opérateur par l’élément à droite de l’opérateur.

Arithmétique modulo

%

Gauche

2

Divise l’élément à gauche de l’opérateur par l’élément à droite de l’opérateur et renvoie le reste entier. Si l’élément à gauche de l’opérateur est inférieur à l’élément à droite de l’opérateur, le résultat est l’élément à gauche de l’opérateur.

Concaténation

##

Gauche

3

Crée une nouvelle chaîne en joignant les valeurs de chaîne à gauche de l’opérateur et les valeurs à droite de l’opérateur.

Maximum

max(param1,param2)

Gauche

4

Prend le maximum des deux valeurs passées en paramètres.

Minimum

min(param1,param2)

Gauche

4

Prend le minimum des deux valeurs passées en paramètres.

Rond

rond (param1)

-

4

Arrondit la valeur à l’entier le plus proche.

Tronquer

trunc(param1)

-

4

Tronque une valeur non entière à la valeur gauche de la virgule.

Convertir en chaîne

toStr(param1)

-

4

Convertit la variable entre parenthèses en une chaîne terminée par une valeur nulle.

Convertir en entier

toInt(param1)

-

4

Convertit le paramètre en entier. Une seule chaîne ou variable est autorisée en tant que paramètre.

Aléatoire

rand()

-

4

Génère une valeur numérique aléatoire.

Si ce n’est pas zéro

ifNotZero(param1, param2)

Gauche

4

Renvoie le deuxième paramètre si le premier paramètre n’est pas nul. Renvoie la valeur NULL si le premier paramètre est égal à zéro.

Parenthèses

( )

-

5

Regroupe les opérandes et les opérateurs pour obtenir des résultats différents de la simple précédence ; a effectivement la priorité la plus élevée.

Les expressions sont évaluées une fois que les variables sont renseignées avec des valeurs. L’évaluation est effectuée immédiatement avant l’instanciation du profil et comprend une vérification de la valeur. Si les valeurs calculées ne sont pas acceptables ou si les règles régissant la syntaxe des expressions ne sont pas respectées, l’évaluation de l’expression échoue, l’instanciation du profil ne se produit pas et des messages sont consignés pour décrire les erreurs.

Le Tableau 2 répertorie les scénarios d’erreur d’expression possibles et les mesures prises par le logiciel du routeur.

Tableau 2 : erreurs d’expression et actions

Erreur

Occurrence

Action

Valeur variable

Erreur d’analyse

Phase de vérification de la validation

Échec de la validation

sans objet

Erreur de dépendance de variable circulaire

Phase de vérification de la validation

Échec de la validation

sans objet

Les variables à l’intérieur des expressions ne sont pas définies

Phase de vérification de la validation

Échec de la validation

sans objet

Diviser par zéro

Instanciation de profil

Échec de l’instanciation du profil

Zéro (0)

Ajout d’une chaîne à un nombre

Instanciation de profil

Échec de l’instanciation du profil

Zéro (0)

Erreur de dépassement de capacité

Instanciation de profil

Échec de l’instanciation du profil

Indéfini

Erreur de sous-débit

Instanciation de profil

Échec de l’instanciation du profil

Indéfini

Vous pouvez également configurer les variables définies par l’utilisateur avec une valeur par défaut. La valeur par défaut fournit une configuration autonome pour l’instruction associée ou une sauvegarde pour la configuration de l’instruction si le serveur RADIUS est inaccessible ou si l’attribut VSA ne contient pas de valeur.

Historique des modifications des expressions de variable dans les variables définies par l’utilisateur

La prise en charge des fonctionnalités est déterminée par la plateforme et la version que vous utilisez. Utilisez l’explorateur de fonctionnalités pour déterminer si une fonctionnalité est prise en charge sur votre plateforme.

Tableau 3 : Historique des modifications des expressions de variable dans les variables définies par l’utilisateur
Description de la version
19.3

À partir de Junos OS version 19.3R1, vous pouvez configurer des expressions dans l’instruction predefined-variable-defaults dans un profil dynamique. Reportez-vous à la section Valeurs par défaut des variables prédéfinies pour les profils client dynamiques.

Vous pouvez également configurer un nombre limité d’expressions afin d’établir des valeurs par défaut pour des variables prédéfinies. Reportez-vous à la section Valeurs par défaut des variables prédéfinies pour les profils client dynamiques.

25.2 Junos OS Evolved

À partir de Junos OS Evolved version 25.2R1, vous pouvez configurer la priorité des filtres d’entrée ou de sortie de l’ensemble d’interfaces et de la famille (inet, inet6) pour les profils dynamiques en mode plan utilisateur BNG-CUPS.

Configuration d’expressions de variable dans les profils dynamiques

Vous pouvez créer des expressions (groupes d’opérateurs arithmétiques, d’opérateurs de chaîne et d’opérandes) à utiliser en tant que variables dans des profils dynamiques. Ces expressions sont utilisées comme valeurs de variable pour configurer des interfaces d’abonnés dynamiques.

Pour configurer des expressions de variables de profil dynamiques, procédez comme suit :

  1. Accédez au profil dynamique pour lequel vous souhaitez créer des expressions variables.
  2. Accédez à la variables hiérarchie du profil dynamique.
  3. Définissez la variable à l’aide des opérateurs d’expression et des opérandes décrits dans Utilisation d’expressions de variable dans les variables définies par l’utilisateur.

Le Tableau 4 fournit plusieurs exemples d’expressions que vous pouvez créer à l’aide des opérateurs et des fonctions pris en charge.

Tableau 4 : exemples d’expressions

Exemple

Description

video-filter est égal à « ' Filter1' »

Affecte la chaîne " Filter1 » à la variable dynamique $video-filter.

video-filter2 est égal à « $video-filter ## ' Filter2' »

Convertit la variable dynamique « $video-filter » en chaîne de caractères et concatène la nouvelle chaîne avec la chaîne " Filter2 ». Le résultat est la chaîne « $video-filter Filter2 » affectée à la variable $video-filter2.

tempvar est égal à « 120 »

Convertit « 120 » en entier et l’assigne à la variable $tempvar.

taux d’émission2 est égal à " ( $transmit-taux1 * 2)/3 + $tempvar) »

Multiplie la variable « transmit-rate1 » par 2 et divise cette valeur par la somme de 3 et la valeur de « $tempvar ». Le résultat est affecté à la variable $transmit-rate2.

host-ip est égal à " '203.0.113.2' »

Affecte la chaîne « 203.0.113.2 » à la variable $host-ip.

max-val « max($max 1,$max 2) »

Attribue la valeur la plus élevée entre « max1 » ou « max2 » à la variable $max-val.

min-val « $min($var 1,30) »

Affectez la valeur la plus petite des valeurs « var1 » et « 30 » à la variable $min-val.

rounded-var est égal à « round($var 1 ) »

Arrondit la valeur de la variable « $var 1 » à l’entier le plus proche et affecte la valeur à la variable $rounded-var.

trunc-var est égal à « trunc(1234.5) »

Tronque la valeur entre parenthèses sur le côté gauche de la décimale et affecte la valeur résultante à la variable $trunc-var.

bwg-shaping-rate est égal à « $ancp en aval - ($ancp % en aval 2 * (1 - $sp-qos-cell-mode)) »

Évalue l’expression selon la priorité définie entre parenthèses.

temp-filter1 est égal à " 'Filter1' ## toStr($filter) »

Convertit la variable « $filter » en valeur de chaîne et concatène la chaîne convertie en chaîne « Filter1 ». La chaîne combinée résultante est affectée à la variable $temp-filter1.

Vue d’ensemble de la configuration conditionnelle pour le profil dynamique

Vous pouvez configurer des instructions de configuration conditionnelle pour les profils dynamiques afin d’obtenir de manière dynamique des informations sur l’abonné d’un client ou d’un service.

La configuration conditionnelle implique deux étapes principales :

  1. Définition de la variable conditionnelle

  2. Référencement de la variable conditionnelle dans une instruction de configuration

Une variable conditionnelle est définie comme une expression ifNotZero (param1, param2). Dans cette expression, param1 il s’agit d’une variable définie par l’utilisateur dont la valeur est dérivée d’un serveur externe tel que RADIUS et param2 peut être une variable définie par l’utilisateur, une fonction, une opération, un nombre ou une chaîne. Une variable conditionnelle peut être définie par l’utilisateur ou une variable d’ID unique (UID). reference Il ne peut pas s’agir d’une variable prédéfinie ou d’une variable UID. Dans Junos OS, les variables conditionnelles sont prises en charge uniquement pour les profils dynamiques de service.

Les instructions de configuration dans lesquelles les variables conditionnelles sont référencées sont appelées conditional instructions de configuration. Une fois les variables conditionnelles définies, elles sont référencées dans dynamic-profiles les instructions de configuration et sont traitées lors de l’instanciation du profil de service. Les instructions de configuration de profil de service suivantes prennent en charge les variables conditionnelles :

  • dynamic-profiles profile-name interfaces interface-name unit unit-no family type filter input filter-name

  • dynamic-profiles profile-name interfaces interface-name unit unit-no family type filter output filter-name

  • dynamic-profiles profile-name firewall family type filter filter-name term term-name

  • dynamic-profiles profile-name firewall family type filter filter-name term term-name then policer policer-name

  • dynamic-profiles profile-name firewall family type filter filter-name term term-name then hierarchical-policer policer-name

  • dynamic-profiles profile-name class-of-service scheduler-maps map-name forwarding-class class-name scheduler scheduler-name

Le système suit l’ensemble de règles suivant lors de l’évaluation des variables conditionnelles et des instructions de configuration conditionnelles lors de l’instanciation du profil de service :

  • Dans la fonction ifNotZero(param1, param2), si la valeur de a param1 n’est pas reçue d’un serveur externe et si la valeur par défaut n’est pas configurée, la valeur de la variable est traitée comme différente de zéro et param2 est évaluée.

  • Si la valeur de param1 dans la fonction ifNotZero(param1, param2) est 0, la valeur NULL est renvoyée comme valeur de l’expression et param2 n’est pas évaluée. Dans ce cas, la valeur de la variable conditionnelle devient NULL et l’instruction de configuration dans laquelle la variable conditionnelle est référencée est ignorée.

  • Si la valeur de est différente de param1 zéro, elle param2 est évaluée et sa valeur est renvoyée en tant que valeur de l’expression.

Les exemples de configuration suivants filter-service cos-service montrent comment les règles sont appliquées :

Exemple de configuration du service de filtrage

Dans l’exemple de filter-service configuration, input-filter-ref, output-filter-ref, policer1-refet term1 sont des variables conditionnelles tandis que input "$input-filter-ref" precedence 50, output "$output-filter-ref" precedence 50, term $term1et policer "$policer1-ref" sont des instructions de configuration conditionnelles. Dans cet exemple, si la valeur de input-filter-var est 0, la valeur de la variable input-filter-ref conditionnelle devient NULL. Ainsi, toute l’instruction de configuration, input “$input-filter-ref” precedence 50, dans laquelle la variable conditionnelle est référencée, est ignorée. Toutefois, si la valeur de la variable est différente de zéro, l’instruction de configuration est traitée lors de l’instanciation du profil de service.

Exemple de configuration d’un service CoS

Dans l’exemple de cos-service configuration, sch1_ref et sch2_ref sont des variables conditionnelles tandis que forwarding-class best-effort scheduler "$sch1_ref" et forwarding-class assured-forwarding scheduler "$sch2_ref" sont des instructions de configuration conditionnelles. Comme pour l’évaluation dans l’exemple filter-service de configuration, si la valeur d’une variable référencée dans une variable conditionnelle est 0, l’instruction de configuration dans laquelle la variable conditionnelle est référencée est ignorée et n’est pas traitée lors de l’instanciation du profil de service CoS.