Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Variables definidas por el usuario en perfiles dinámicos

Variables definidas por el usuario

En los perfiles de servicio dinámicos, Junos OS le permite configurar variables personalizadas en el [edit dynamic-profiles profile-name variables] nivel de jerarquía y usar esas variables en la [edit dynamic-profiles] jerarquía. El perfil dinámico obtiene y reemplaza datos de estas variables desde un servidor externo (por ejemplo, RADIUS) durante el proceso de autenticación del suscriptor. En tiempo de ejecución, las variables se sustituyen por valores reales y se utilizan para configurar las interfaces del suscriptor.

Puede usar cualquiera de las siguientes instrucciones para configurar variables definidas por el usuario:

  • default-value— Configure un valor predeterminado para una variable definida por el usuario en un perfil dinámico. Los valores que el sistema usa para estas variables se aplican cuando el suscriptor se autentica. La especificación de un valor predeterminado proporciona una configuración independiente para la instrucción asociada o una copia de seguridad para la configuración de instrucción si no se puede acceder al servidor externo o no contiene un valor para la variable.

  • equals— Configure una expresión para una variable definida por el usuario que se evalúa en tiempo de ejecución y se devuelve como el valor de la variable.

  • mandatory— Especifique que un servidor externo (por ejemplo, RADIUS) debe devolver un valor para la variable definida por el usuario. Si el servidor externo no devuelve un valor para la variable, se produce un error en el perfil dinámico.

    Nota:

    El orden en el que se define cómo se obtienen las variables es importante. Para asegurarse de obtener variables obligatorias de un servidor externo y no derivar valores de valores predeterminados o a través de expresiones de variable, primero debe definir las variables obligatorias.

  • uid: configure un ID único para filtros parametrizados y CoS en un perfil dinámico creado para los servicios.

  • uid-reference: configure una variable que haga referencia a un ID único para filtros parametrizados o CoS en un perfil dinámico creado para servicios.

Configuración de variables dinámicas definidas por el usuario en perfiles dinámicos

En este tema, se explica cómo configurar una variable dinámica definida por el usuario en un perfil de servicio dinámico. Puede definir una variable en el [edit dynamic-profiles profile-name variables] nivel de jerarquía que se utilice en otra parte del perfil de servicio dinámico. Opcionalmente, puede especificar un valor predeterminado para cualquier variable dinámica que aparezca en el cuerpo del perfil dinámico. Los valores predeterminados de la variable se utilizan en caso de que el enrutador no pueda tener acceso a un servidor externo (por ejemplo, RADIUS) u obtener un valor para su uso como variable dinámica. Alternativamente, puede especificar que el uso de un valor devuelto RADIUS es obligatorio; si no se recibe ese valor, se produce un error en el perfil.

Antes de configurar valores predeterminados de cualquier variable dinámica:

  1. Cree un perfil dinámico básico.

    Consulte Configuración de un perfil dinámico básico.

  2. Asegúrese de que el enrutador está configurado para habilitar la comunicación entre el cliente y el servidor RADIUS.

    Consulte Especificar los métodos de autenticación y contabilidad para el acceso del suscriptor.

  3. Configure todos los valores RADIUS que desea que los perfiles usen al validar suscriptores.

    Consulte Servidores y parámetros RADIUS para el acceso de los suscriptores

Para configurar variables en un perfil de servicio dinámico:

  1. Acceda a la variables estrofa en el perfil de servicio dinámico deseado.
  2. Defina la variable.
  3. (Opcional) Especifique un valor predeterminado para su uso por la variable en caso de que el enrutador no pueda contactar con el servidor externo o si el servidor externo no contiene un valor para el atributo asignado.
  4. (Opcional) Especifique que el servidor externo debe devolver un valor para una variable definida por el usuario.
    Nota:

    Cuando se incluye la mandatory instrucción, si el servidor externo no devuelve un valor para la variable, se produce un error en el perfil de servicio dinámico.

Uso de expresiones de variable en variables definidas por el usuario

Junos OS le permite crear expresiones (grupos de operadores aritméticos, operadores de cadena y operandos) para su uso como variables dentro de perfiles dinámicos. Puede configurar expresiones de variable en el [dynamic-profiles profile-name variables] nivel jerárquico. En tiempo de ejecución, las expresiones de variable se calculan y se utilizan como valores de variable para configurar interfaces de suscriptor dinámicas.

Al configurar expresiones en perfiles dinámicos, debe cumplir las siguientes reglas:

  • Solo puede configurar expresiones dentro de una estrofa variable de un perfil dinámico.

    Nota:

    A partir de Junos OS versión 19.3R1, puede configurar expresiones en la predefined-variable-defaults instrucción en un perfil dinámico. Consulte Valores predeterminados de variables predefinidos para perfiles de cliente dinámicos.

  • Los perfiles dinámicos que contengan expresiones para variables definidas por el usuario se deben usar solo para la activación del servicio.

  • Por lo general, se asignan expresiones solo a variables definidas por el usuario. No puede asignar expresiones a variables internas o variables predefinidas.

    Nota:

    A partir de Junos OS versión 19.3R1, puede configurar un número limitado de expresiones para establecer valores predeterminados para variables predefinidas. Consulte Valores predeterminados de variables predefinidos para perfiles de cliente dinámicos.

  • Los valores de expresión tienen prioridad sobre los valores predeterminados.

  • Las expresiones completas deben estar contenidas entre comillas (" ").

  • Las cadenas de las expresiones deben estar citadas entre comillas únicas (' ') y las comillas únicas pueden contener solo cadenas.

  • El espacio en blanco se trata como un delimitador para todos los operandos y operadores. Las cadenas que contienen espacios que se crean dentro de expresiones se tratan como cadenas únicas e incluyen cualquier espacio en blanco principal o final. Por ejemplo:

  • La expresión debe ser todos los operadores aritméticos o todos los operadores de cadena; no se permite mezclar operadores aritméticos y operadores de cadena a menos que se convierta correctamente en el tipo correcto.

  • Las expresiones pueden hacer referencia a otras variables predefinidas del sistema u otras variables definidas por el usuario. Sin embargo, no se permite ninguna referencia circular entre variables. Por ejemplo, la siguiente referencia es incorrecta:

  • Cualquier variable obligatoria que no contenga un valor "predeterminado" o una expresión "igual" debe contener un valor como parte de la activación del servicio. Por ejemplo, un VSA de servicio RADIUS como "service-video( value1, value2)" que contiene dos o menos variables obligatorias en la definición de perfil de servicio dinámico "service-video" tiene éxito. La activación del servicio falla si al menos una variable obligatoria no tiene ningún valor asociado con ella, ya sea mediante evaluación de atributo "predeterminado" o "igual".

La tabla 1 enumera los operadores y funciones compatibles que puede usar para crear expresiones.

Nota:

La prioridad 5 es el nivel más alto.

Tabla 1: Operadores y funciones

Operación

Operador

Asociatividad

Precedencia

Acción

Adición aritmética

+

Izquierda

1

Agrega los elementos a la derecha y a la izquierda del operador juntos.

Sustracción aritmética

-

Izquierda

1

Resta el elemento a la derecha del operador del elemento a la izquierda del operador.

Multiplicación aritmética

*

Izquierda

2

Multiplica el elemento a la izquierda del operador por el elemento a la derecha del operador.

División de aritmética

/

Izquierda

2

Divide el elemento a la izquierda del operador por el elemento a la derecha del operador.

Módulo aritmético

%

Izquierda

2

Divide el elemento a la izquierda del operador por el elemento a la derecha del operador y devuelve el resto entero. Si el elemento a la izquierda del operador es menor que el elemento a la derecha del operador, el resultado es el elemento a la izquierda del operador.

Concatenación

##

Izquierda

3

Crea una nueva cadena uniendo los valores de cadena a la izquierda del operador y los valores a la derecha del operador juntos.

Máximo

máx(param1,param2)

Izquierda

4

Toma el máximo de los dos valores pasados como parámetros.

Mínimo

min(param1,param2)

Izquierda

4

Toma el mínimo de los dos valores pasados como parámetros.

Redondo

round(param1)

-

4

Redondea el valor al entero más cercano.

Truncar

trunc(param1)

-

4

Trunca un valor no entero en el valor de la izquierda del punto decimal.

Convertir a cadena

toStr(param1)

-

4

Convierte la variable dentro de los paréntesis en una cadena nula terminada.

Convertir a enteros

toInt(param1)

-

4

Convierte el parámetro en un entero. Se permite una sola cadena o variable como parámetro.

Aleatorio

rand()

-

4

Genera un valor numérico aleatorio.

Si no es cero

ifNotZero(param1, param2)

Izquierda

4

Devuelve el segundo parámetro si el primer parámetro no es cero. Devuelve NULL si el primer parámetro es cero.

Paréntesis

( )

-

5

Agrupa operandos y operadores para lograr resultados diferentes a la prioridad simple; tiene la prioridad más alta.

Las expresiones se evalúan después de completar las variables con valores. La evaluación se realiza inmediatamente antes de la instanciación del perfil e incluye la comprobación del valor. Si los valores calculados no son aceptables o las reglas que rigen la sintaxis de expresión se rompen, se produce un error en la evaluación de expresión, no se produce la instanciación de perfil y se registran mensajes para describir los errores.

La tabla 2 enumera los posibles escenarios de error de expresión y la acción tomada por el software del enrutador.

Tabla 2: Errores y acciones de expresión

Error

Ocurrencia

Acción

Valor variable

Error de análisis

Fase de comprobación de confirmación

Error en la confirmación

no aplicable

Error de dependencia de variable circular

Fase de comprobación de confirmación

Error en la confirmación

no aplicable

Las variables dentro de las expresiones no están definidas

Fase de comprobación de confirmación

Error en la confirmación

no aplicable

Dividir por cero

Instanciación de perfil

Error en la instanciación de perfil

Cero (0)

Agregar cadena a un número

Instanciación de perfil

Error en la instanciación de perfil

Cero (0)

Error de desbordamiento

Instanciación de perfil

Error en la instanciación de perfil

Indefinido

Error de flujo inferior

Instanciación de perfil

Error en la instanciación de perfil

Indefinido

También puede configurar las variables definidas por el usuario con un valor predeterminado. El valor predeterminado proporciona una configuración independiente para la instrucción asociada o una copia de seguridad para la configuración de instrucción si no se puede acceder al servidor RADIUS o el atributo VSA no contiene un valor.

Configuración de expresiones de variables en perfiles dinámicos

Puede crear expresiones (grupos de operadores aritméticos, operadores de cadena y operandos) para usarlas como variables dentro de perfiles dinámicos. Estas expresiones se utilizan como valores de variable para configurar interfaces de suscriptor dinámicas.

Para configurar expresiones de variable de perfil dinámico:

  1. Acceda al perfil dinámico para el que desea crear expresiones de variable.
  2. Acceda a la variables jerarquía del perfil dinámico.
  3. Defina la variable mediante los operadores de expresión y operandos descritos en Uso de expresiones de variable en variables definidas por el usuario.

En la tabla 3 se proporcionan varios ejemplos de expresiones que puede crear mediante los operadores y funciones compatibles.

Tabla 3: Ejemplos de expresión

Ejemplo

Descripción

el filtro de video equivale a "' Filter1' "

Asigna la cadena " Filter1" a la variable dinámica $video-filter.

video-filter2 equivale a "$video-filter ## ' Filter2' "

Convierte la variable dinámica "$video-filter" en una cadena y concatena la nueva cadena con la cadena " Filter2". El resultado es la cadena "$video-filter Filter2" asignada a la variable $video-filter2.

tempvar es igual a "120"

Convierte "120" en un entero y asigna el entero a la variable $tempvar.

transmisión-rate2 es igual a " ( $transmit-rate1 * 2)/3 + $tempvar)"

Multiplica la variable "transmit-rate1" por 2 y divide ese valor entre la suma de 3 y el valor de "$tempvar". El resultado se asigna a la variable $transmit-rate2.

host-ip es igual a " '203.0.113.2' "

Asigna la cadena "203.0.113.2" a la variable $host-ip.

valor máximo "máx($max 1,$max 2)"

Asigna el mayor valor "max1" o "max2" a la variable $max-val.

valor mínimo "$min($var 1,30)"

Asigne los valores más pequeños "var1" y "30" a la variable $min-val.

el var redondeado es igual a "round($var 1 )"

Redondea el valor de la variable "$var 1" al entero más cercano y asigna el valor a la variable $rounded-var.

trunc-var es igual a "trunc(1234.5)"

Trunca el valor entre paréntesis al lado izquierdo del decimal y asigna el valor resultante a la variable $trunc-var.

bwg-shaping-rate equivale a "$ancp-descendente - ($ancp-descendente % 2 * (1 - $sp-qos-cell-mode)"

Evalúa la expresión según la precedencia establecida entre paréntesis.

temp-filter1 equivale a " 'Filter1' ## toStr($filter)"

Convierte la variable "$filter" a un valor de cadena y concatena la cadena convertida a la cadena "Filter1". La cadena combinada resultante se asigna a la variable $temp-filter1.

Configuración condicional para descripción general del perfil dinámico

Puede configurar instrucciones de configuración condicional para perfiles dinámicos para obtener dinámicamente información de suscriptor para un cliente o servicio.

La configuración condicional implica dos pasos principales:

  1. Definición de la variable condicional

  2. Hacer referencia a la variable condicional en una instrucción de configuración

Una variable condicional se define como una expresión ifNotZero (param1, param2). En esta expresión, param1 es una variable definida por el usuario cuyo valor se deriva de un servidor externo como RADIUS y param2 puede ser una variable definida por el usuario, una función, una operación, un número o una cadena. Una variable condicional puede ser definida por el usuario o id. único (UID). reference No puede ser una variable predefinida o UID. En Junos OS, las variables condicionales solo se admiten para los perfiles dinámicos de servicio.

Las instrucciones de configuración en las que se hace referencia a las variables condicionales se denominan conditional instrucciones de configuración. Después de definir la variable condicional, se hace referencia a estas instrucciones de dynamic-profiles configuración y se procesan cuando se instancia el perfil de servicio. Las siguientes instrucciones de configuración de perfil de servicio admiten variables condicionales:

  • 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

El sistema sigue el siguiente conjunto de reglas mientras evalúa las variables condicionales y las instrucciones de configuración condicional durante la instanciación del perfil de servicio:

  • En la función ifNotZero(param1, param2), si el valor de a param1 no se recibe de un servidor externo y si el valor predeterminado no está configurado, el valor de la variable se trata como no cero y param2 se evalúa.

  • Si el valor de param1 la función ifNotZero(param1, param2) es 0, null se devuelve como el valor de la expresión y param2 no se evalúa. En este caso, el valor de la variable condicional se convierte en NULL y la instrucción de configuración en la que se hace referencia a la variable condicional se omite.

  • Si el valor de param1 no es cero, entonces param2 se evalúa y su valor se devuelve como el valor de la expresión.

Los siguientes filter-service ejemplos de cos-service configuración muestran cómo se aplican las reglas:

Ejemplo de configuración del servicio de filtro

En el ejemplo de filter-service configuración, input-filter-ref, output-filter-ref, policer1-ref, y term1 son variables condicionales mientras que input "$input-filter-ref" precedence 50, output "$output-filter-ref" precedence 50, term $term1, y policer "$policer1-ref" son instrucciones de configuración condicional. En este ejemplo, si el valor de input-filter-var es 0, el valor de la variable input-filter-ref condicional se convierte en NULL. Por lo tanto, se omite toda la instrucción de configuración, input “$input-filter-ref” precedence 50en la que se hace referencia a la variable condicional. Sin embargo, si el valor de la variable no es cero, la instrucción de configuración se procesa durante la instanciación del perfil de servicio.

Ejemplo de configuración del servicio CoS

En el ejemplo de cos-service configuración, sch1_ref y sch2_ref son variables condicionales mientras forwarding-class best-effort scheduler "$sch1_ref" y forwarding-class assured-forwarding scheduler "$sch2_ref" son instrucciones de configuración condicional. De manera similar a la evaluación en el filter-service ejemplo de configuración, si el valor de cualquier variable, a la que se hace referencia en una variable condicional es 0, la instrucción de configuración en la que se hace referencia a la variable condicional se omite y no se procesa durante la instanciación de perfil de servicio CoS.