Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Variáveis definidas pelo usuário em perfis dinâmicos

Variáveis definidas pelo usuário

Em perfis de serviço dinâmicos, o Junos OS permite configurar variáveis personalizadas no nível de [edit dynamic-profiles profile-name variables] hierarquia e usar essas variáveis na [edit dynamic-profiles] hierarquia. O perfil dinâmico obtém e substitui dados por essas variáveis a partir de um servidor externo (por exemplo, RADIUS) durante o processo de autenticação do assinante. Em tempo de execução, as variáveis são substituídas por valores reais e usadas para configurar interfaces de assinantes.

Você pode usar qualquer uma das seguintes declarações para configurar variáveis definidas pelo usuário:

  • default-value— Configure um valor padrão para uma variável definida pelo usuário em um perfil dinâmico. Os valores que o sistema usa para essas variáveis são aplicados quando o assinante autentica. Especificar um valor padrão fornece uma configuração independente para a declaração associada ou um backup para a configuração da declaração se o servidor externo estiver inacessível ou não conter um valor para a variável.

  • equals— Configure uma expressão para uma variável definida pelo usuário que é avaliada no momento da execução e devolvida como o valor variável.

  • mandatory— Especifique que um servidor externo (por exemplo, RADIUS) deve devolver um valor para a variável definida pelo usuário. Se o servidor externo não devolver um valor para a variável, o perfil dinâmico falhará.

  • uid— Configure uma ID única para filtros parametrizados e CoS em um perfil dinâmico criado para serviços.

  • uid-reference— Configure uma variável que faz referência a uma ID única para filtros parametrizados ou CoS em um perfil dinâmico criado para serviços.

Nota:

A ordem em que você define como as variáveis são obtidas é importante. Para garantir que você obtenha quaisquer variáveis obrigatórias de um servidor externo e não obtenha valores de padrões ou por meio de expressões variáveis, você deve definir quaisquer variáveis obrigatórias primeiro.

Configuração de variáveis dinâmicas definidas pelo usuário em perfis dinâmicos

Este tópico discute como configurar uma variável dinâmica definida pelo usuário em um perfil de serviço dinâmico. Você pode definir uma variável no nível de [edit dynamic-profiles profile-name variables] hierarquia que é usada em outros lugares do perfil de serviço dinâmico. Você pode especificar opcionalmente um valor padrão para qualquer variável dinâmica que aparece no corpo do perfil dinâmico. Os valores variáveis padrão são usados caso o roteador não possa acessar um servidor externo (por exemplo, RADIUS) ou obter um valor para uso como variável dinâmica. Como alternativa, você pode especificar que o uso de um valor devolvido por RADIUS é obrigatório; se esse valor não for recebido, o perfil falha.

Antes de configurar qualquer valor padrão variável dinâmico:

  1. Crie um perfil dinâmico básico.

    Veja configuração de um perfil dinâmico básico.

  2. Certifique-se de que o roteador esteja configurado para permitir a comunicação entre o cliente e o servidor RADIUS.

    Veja especificando os métodos de autenticação e contabilidade para acesso ao assinante.

  3. Configure todos os valores RADIUS que você deseja que os perfis usem ao validar os assinantes.

    Veja os servidores e parâmetros RADIUS para acesso ao assinante

Para configurar variáveis em um perfil de serviço dinâmico:

  1. Acesse a variables estrofe no perfil de serviço dinâmico desejado.
  2. Definir a variável.
  3. (Opcional) Especifique um valor padrão para uso pela variável caso o roteador não possa entrar em contato com o servidor externo ou se o servidor externo não conter um valor para o atributo atribuído.
  4. (Opcional) Especifique que o servidor externo deve devolver um valor para uma variável definida pelo usuário. Quando você inclui a mandatory declaração, se o servidor externo não devolver um valor para a variável, o perfil dinâmico de serviços falha.

Usando expressões variáveis em variáveis definidas pelo usuário

O Junos OS permite que você crie expressões — grupos de operadores aritméticos, operadores de cordas e operações — para uso como variáveis dentro de perfis dinâmicos. Você configura expressões variáveis no nível de [dynamic-profiles profile-name variables] hierarquia. Em tempo de execução, as expressões variáveis são calculadas e usadas como valores variáveis para configurar interfaces dinâmicas de assinantes.

Ao configurar expressões em perfis dinâmicos, você deve seguir as seguintes regras:

  • Você pode configurar expressões apenas dentro de uma estrofe variável de um perfil dinâmico.

  • Perfis dinâmicos que contenham expressões para variáveis definidas pelo usuário devem ser usados apenas para ativação de serviços.

  • Você geralmente atribui expressões apenas a variáveis definidas pelo usuário. Você não pode atribuir expressões a variáveis internas ou variáveis predefinidas.

  • Os valores de expressão têm precedência sobre os valores padrão.

  • Expressões inteiras devem ser contidas entre aspas (" ").

  • As cordas dentro das expressões devem ser citadas dentro de cotações únicas (" ") e as marcas de cotação única podem conter apenas strings.

  • O espaço branco é tratado como um dirigível para todas as operações e operadores. As cordas que contêm espaços que você cria dentro das expressões são tratadas como cordas individuais e incluem qualquer espaço branco líder ou em trilha. Por exemplo, para criar um perfil de serviço:

  • A expressão deve ser todos operadores aritméticos ou todos os operadores de strings; a mistura de operadores aritméticos e operadores de strings não é permitida a menos que seja convertida adequadamente para o tipo correto.

  • As expressões podem se referem a outras variáveis predefinidas do sistema ou outras variáveis definidas pelo usuário. No entanto, nenhuma referência circular entre variáveis é permitida. Por exemplo, a referência a seguir é incorreta:

  • Para criar uma interface dinâmica e um conjunto de interface para o plano de usuário BNG-CUPS, use o seguinte formato:

    Você pode configurar a precedência do filtro de serviço para o plano de usuário BNG-CUPS, para controlar a ordem de avaliação de serviço para os pacotes. Você pode adicionar a configuração de precedência ao perfil dinâmico.

  • Qualquer variável obrigatória que não contenha um valor "padrão" ou uma expressão "igual" deve conter um valor como parte da ativação do serviço. Por exemplo, um serviço RADIUS VSA como "vídeo de serviço(valor1, valor2)" que contém duas ou menos variáveis obrigatórias na definição dinâmica do perfil de serviço "vídeo de serviço" é bem-sucedida. A ativação do serviço falha se pelo menos uma variável obrigatória não tiver nenhum valor associado a ela, seja por meio de avaliação de atributo "padrão" ou "igual".

A Tabela 1 lista operadores e funções compatíveis que você pode usar para criar expressões. A precedência 5 é o mais alto nível.

Tabela 1: Operadores e funções

Operação

Operador

Associatividade

Precedência

Ação

Adição aritmética

+

Esquerda

1

Adiciona os elementos à direita e à esquerda do operador juntos.

Subtração aritmética

-

Esquerda

1

Subtrai o elemento à direita do operador do elemento à esquerda do operador.

Multiplicação aritmética

*

Esquerda

2

Multiplica o elemento à esquerda do operador pelo elemento à direita do operador.

Divisão Aritmética

/

Esquerda

2

Divide o elemento à esquerda do operador pelo elemento à direita do operador.

Modulo aritmético

%

Esquerda

2

Divide o elemento à esquerda do operador pelo elemento à direita do operador e devolve o restante inteiro. Se o elemento à esquerda do operador for menor do que o elemento à direita do operador, o resultado será o elemento à esquerda do operador.

Concatenação

##

Esquerda

3

Cria uma nova sequência juntando os valores de string à esquerda do operador e os valores à direita do operador juntos.

Máximo

max(param1,param2)

Esquerda

4

Leva o máximo dos dois valores aprovados como parâmetros.

Mínimo

min(param1,param2)

Esquerda

4

Leva o mínimo dos dois valores aprovados como parâmetros.

Redondo

rodada(param1)

-

4

Arredonda o valor para o inteiro mais próximo.

Truncar

trunc(param1)

-

4

Trunca um valor não inteiro para o valor deixado do ponto decimais.

Converta em String

toStr(param1)

-

4

Converte a variável dentro dos parênteses em uma corda terminada nula.

Converta-se em Integer

toInt(param1)

-

4

Converte o parâmetro em um inteiro. Uma única corda ou variável é permitida como parâmetro.

Aleatório

rand()

-

4

Gera um valor numérico aleatório.

Se não for zero

ifNotZero(param1, param2)

Esquerda

4

Devolu o segundo parâmetro se o primeiro parâmetro não for zero. Devolu NULL se o primeiro parâmetro for zero.

Parênteses

( )

-

5

Grupos de operações e operadores para alcançar resultados diferentes da simples precedência; efetivamente tem a mais alta precedência.

As expressões são avaliadas após a população de variáveis com valores. A avaliação é realizada imediatamente antes da instanciação do perfil e inclui verificação de valor. Se os valores computados não forem aceitáveis ou as regras que regem a sintaxe de expressão forem quebradas, a avaliação de expressão falhar, a instanciação do perfil não ocorrer e as mensagens forem registradas para descrever os erros.

A Tabela 2 lista os possíveis cenários de erro de expressão e as medidas tomadas pelo software do roteador.

Tabela 2: Erros e ações de expressão

Erro

Ocorrência

Ação

Valor variável

Erro de análise

Fase de verificação de confirmação

O Commit falha

não aplicável

Erro de dependência de variável circular

Fase de verificação de confirmação

O Commit falha

não aplicável

As variáveis dentro das expressões não são definidas

Fase de verificação de confirmação

O Commit falha

não aplicável

Divida por zero

Instanciação de perfil

A instanciação do perfil falha

Zero (0)

Adicionar string a um número

Instanciação de perfil

A instanciação do perfil falha

Zero (0)

Erro de transbordamento

Instanciação de perfil

A instanciação do perfil falha

Indefinido

Erro de subfluxo

Instanciação de perfil

A instanciação do perfil falha

Indefinido

Você também pode configurar as variáveis definidas pelo usuário com um valor padrão. O valor padrão fornece uma configuração independente para a declaração associada ou um backup para a configuração da declaração se o servidor RADIUS estiver inacessível ou o atributo VSA não conter um valor.

Alterar o histórico de expressões variáveis em variáveis definidas pelo usuário

O suporte de recursos é determinado pela plataforma e versão que você está usando. Use o Feature Explorer para determinar se um recurso é suportado em sua plataforma.

Tabela 3: Alterar o histórico de expressões variáveis em variáveis definidas pelo usuário
Descrição da versão
19.3

A partir do Junos OS Release 19.3R1, você pode configurar expressões na predefined-variable-defaults declaração em um perfil dinâmico. Veja padrões variáveis predefinidos para perfis dinâmicos de clientes.

Você também pode configurar um número limitado de expressões para estabelecer valores padrão para variáveis predefinidas. Veja padrões variáveis predefinidos para perfis dinâmicos de clientes.

25.2 Junos OS Evolved

A partir do Junos OS Evolved Release 25.2R1, você pode configurar o conjunto de interfaces e a precedência do filtro de entrada ou saída (inet, inet6) para perfis dinâmicos no modo plano de usuário BNG-CUPS.

Configuração de expressões variáveis em perfis dinâmicos

Você pode criar expressões — grupos de operadores aritméticos, operadores de cordas e operações — para uso como variáveis dentro de perfis dinâmicos. Essas expressões são usadas como valores variáveis para configurar interfaces dinâmicas de assinantes.

Para configurar expressões variáveis de perfil dinâmico:

  1. Acesse o perfil dinâmico para o qual você deseja criar expressões variáveis.
  2. Acesse a variables hierarquia para o perfil dinâmico.
  3. Definir a variável usando os operadores de expressão e operações descritos no uso de expressões variáveis em variáveis definidas pelo usuário.

A Tabela 4 oferece vários exemplos de expressões que você pode criar usando os operadores e funções suportados.

Tabela 4: Exemplos de expressão

Exemplo

Descrição

o filtro de vídeo é igual a "' Filter1"

Atribui a string "Filter1" à variável dinâmica de filtro de $video.

filtro de vídeo2 é igual a "$video-filtro ## ' Filter2' "

Converte a variável dinâmica "filtro de $video" em uma corda e concatena a nova corda com a corda " Filter2". O resultado é o string "$video-filter Filter2" atribuído à variável $video-filter2.

tempvar é igual a "120"

Converte "120" em um inteiro e atribui o inteiro à variável $tempvar.

taxa de transmissão2 é igual " ( taxa de $transmit 1 * 2)/3 + $tempvar)"

Multiplica a variável "taxa de transmissão1" por 2 e divide esse valor pela soma de 3 e pelo valor de "$tempvar". O resultado é atribuído à variável $transmit taxa2.

host-ip é igual a " '203.0.113.2' "

Atribui a string "203.0.113.2" à variável $host ip.

max-val "máximo($max 1,$max 2)"

Atribui o maior valor "máximo1" ou "máximo2" à variável $max-val.

min-val "$min($var 1,30)"

Atribua o menor valor "var1" e "30" à variável $min val.

var arredondado é igual a "round($var 1)"

Arredonda o valor da variável "$var 1" para o inteiro mais próximo e atribui o valor à variável $rounded-var.

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

Trunca o valor em parênteses para o lado esquerdo do decimais e atribui o valor resultante à variável $trunc-var.

a taxa de modelagem de bwg é igual a "$ancp-downstream - ($ancp-downstream % 2 * (1 - $sp-qos-cell-mode)"

Avalia a expressão conforme o conjunto de precedência nos parênteses.

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

Converte a variável "$filter" em um valor de string e concatena a corda convertida para a corda "Filtrar1". A string combinada resultante é atribuída à variável $temp filtro1.

Configuração condicional para visão geral dinâmica do perfil

Você pode configurar declarações de configuração condicionais para perfis dinâmicos para obter dinamicamente informações de assinantes para um cliente ou serviço.

A configuração condicional envolve duas etapas principais:

  1. Definir a variável condicional

  2. Fazendo referência à variável condicional em uma declaração de configuração

Uma variável condicional é definida como uma expressão ifNotZero (param1, param2). Nesta expressão, param1 é uma variável definida pelo usuário cujo valor é derivado de um servidor externo como RADIUS e param2 pode ser uma variável definida pelo usuário, uma função, operação, número ou string. Uma variável condicional pode ser definida pelo usuário ou variável ID única (UID reference ). Não pode ser uma variável predefinida ou UID. No Junos OS, as variáveis condicionais são suportadas apenas para os perfis dinâmicos de serviço.

As declarações de configuração em que as variáveis condicionais são mencionadas são chamadas conditional de declarações de configuração. Após a variável condicional ser definida, elas são referenciadas em dynamic-profiles declarações de configuração e são processadas quando o perfil do serviço é instanciado. As declarações de configuração do perfil de serviço a seguir oferecem suporte a variáveis condicionais:

  • 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

O sistema segue o seguinte conjunto de regras enquanto avalia as variáveis condicionais e as declarações de configuração condicionais durante a instanciação do perfil de serviço:

  • Na função ifNotZero(param1, param2), se o valor de um não for recebido de um param1 servidor externo e se o valor padrão não estiver configurado, o valor da variável é tratado como não zero e param2 é avaliado.

  • Se o valor da param1 função ifNotZero(param1, param2) for 0, então o NULL é devolvido como o valor da expressão e param2 não é avaliado. Neste caso, o valor da variável condicional torna-se NULL e a declaração de configuração na qual a variável condicional é referenciada é ignorada.

  • Se o valor não param1 for zero, então param2 é avaliado e seu valor é devolvido como o valor da expressão.

Os exemplos a seguir filter-service e cos-service de configuração mostram como as regras são aplicadas:

Exemplo de configuração de serviço de filtro

No exemplo de filter-service configuração, input-filter-ref, output-filter-refe policer1-refterm1 são variáveis condicionais enquantoinput "$input-filter-ref" precedence 50, , term $term1output "$output-filter-ref" precedence 50e policer "$policer1-ref" são declarações de configuração condicionais. Neste exemplo, se o valor for input-filter-var 0, o valor da variável input-filter-ref condicional se tornará NULL. Assim, toda a declaração de configuração, input “$input-filter-ref” precedence 50na qual a variável condicional é mencionada, é ignorada. Se, no entanto, o valor da variável não for zero, a declaração de configuração será processada durante a instanciação do perfil do serviço.

Exemplo de configuração de serviço cos

No exemplo de cos-service configuração, sch1_ref e sch2_ref são variáveis condicionais enquanto forwarding-class best-effort scheduler "$sch1_ref" e forwarding-class assured-forwarding scheduler "$sch2_ref" são declarações de configuração condicionais. Semelhante à avaliação no exemplo de filter-service configuração, se o valor de qualquer variável, referenciado em uma variável condicional for 0, a declaração de configuração em que a variável condicional é referenciada é ignorada e não processada durante a instanciação do perfil do serviço CoS.