Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

동적 프로필의 사용자 정의 변수

사용자 정의 변수(User-Defined Variables)

동적 서비스 프로필에서 Junos OS를 사용하면 계층 수준에서 사용자 지정 변수를 [edit dynamic-profiles profile-name variables] 구성하고 계층에서 이러한 변수를 [edit dynamic-profiles] 사용할 수 있습니다. 동적 프로필은 가입자 인증 프로세스 중에 외부 서버(예: RADIUS)로부터 이러한 변수에 대한 데이터를 획득하고 대체합니다. 런타임 시 변수는 실제 값으로 대체되고 가입자 인터페이스를 구성하는 데 사용됩니다.

다음 문 중 하나를 사용하여 사용자 정의 변수를 구성할 수 있습니다.

  • default-value- 동적 프로파일에서 사용자 정의 변수의 기본값을 구성합니다. 시스템이 이러한 변수에 사용하는 값은 가입자가 인증할 때 적용됩니다. 기본값을 지정하면 외부 서버에 액세스할 수 없거나 변수 값을 포함하지 않는 경우 연관된 명령문에 대한 독립형 구성이나 명령문 구성에 대한 백업이 제공됩니다.

  • equals- 런타임에 계산되고 변수 값으로 반환되는 사용자 정의 변수에 대한 표현식을 구성합니다.

  • mandatory- 외부 서버(예: RADIUS)가 사용자 정의 변수에 대한 값을 반환해야 함을 지정합니다. 외부 서버가 변수에 대한 값을 반환하지 않으면 동적 프로파일이 실패합니다.

    메모:

    변수를 얻는 방법을 정의하는 순서가 중요합니다. 외부 서버에서 필수 변수를 가져오고 기본값 또는 변수 표현식을 통해 값을 파생하지 않도록 하려면 먼저 필수 변수를 정의해야 합니다.

  • uid- 서비스를 위해 생성된 동적 프로파일에서 매개 변수화된 필터 및 CoS에 대한 고유 ID를 구성합니다.

  • uid-reference- 서비스를 위해 생성된 동적 프로파일에서 매개 변수화된 필터 또는 CoS의 고유 ID를 참조하는 변수를 구성합니다.

동적 프로필에서 사용자 정의 동적 변수 구성

이 주제는 동적 서비스 프로필에서 사용자 정의 동적 변수를 구성하는 방법에 대해 설명합니다. 동적 서비스 프로필의 [edit dynamic-profiles profile-name variables] 다른 곳에서 사용되는 변수를 계층 수준에서 정의할 수 있습니다. 동적 프로필의 본문에 나타나는 동적 변수에 대한 기본값을 선택적으로 지정할 수 있습니다. 기본 변수 값은 라우터가 외부 서버(예: RADIUS)에 액세스할 수 없거나 동적 변수로 사용할 값을 얻을 수 없는 경우에 사용됩니다. 또는 RADIUS 반환 값을 사용하는 것이 필수임을 지정할 수 있습니다. 해당 값이 수신되지 않으면 프로필이 실패합니다.

동적 변수 기본값을 구성하기 전에:

  1. 기본 동적 프로필을 만듭니다.

    기본 동적 프로필 구성을 참조하십시오.

  2. 라우터가 클라이언트와 RADIUS 서버 간의 통신을 활성화하도록 구성되었는지 확인합니다.

    가입자 액세스를 위한 인증 및 계정 방법 지정을 참조하십시오.

  3. 가입자를 검증할 때 프로필이 사용할 모든 RADIUS 값을 구성합니다.

    가입자 액세스를 위한 RADIUS 서버 및 매개 변수를 참조하십시오.

동적 서비스 프로필에서 변수를 구성하려면 다음을 수행합니다.

  1. 원하는 동적 서비스 프로파일의 variables 스탠자에 액세스하십시오.
  2. 변수를 정의합니다.
  3. (선택 사항) 라우터가 외부 서버에 연결할 수 없거나 외부 서버가 할당된 속성에 대한 값을 포함하지 않는 경우 변수에서 사용할 기본값을 지정합니다.
  4. (선택사항) 외부 서버가 사용자 정의 변수에 대한 값을 반환하도록 지정합니다.
    메모:

    명령문을 포함할 mandatory 때 외부 서버가 변수 값을 반환하지 않으면 동적 서비스 프로필이 실패합니다.

사용자 정의 변수에서 변수 표현식 사용

Junos OS를 사용하면 동적 프로필 내에서 변수로 사용할 연산 연산자, 문자열 연산자 및 피연산자 그룹의 표현식을 만들 수 있습니다. 계층 수준에서 변수 식을 [dynamic-profiles profile-name variables] 구성합니다. 런타임에 변수 표현식이 계산되고 동적 가입자 인터페이스를 구성하기 위한 변수 값으로 사용됩니다.

동적 프로필에서 표현식을 구성할 때는 다음 규칙을 준수해야 합니다.

  • 동적 프로파일의 가변 스탠자 내에서만 표현식을 구성할 수 있습니다.

    메모:

    Junos OS 릴리스 19.3R1부터는 동적 프로필의 predefined-variable-defaults 문에 식을 구성할 수 있습니다. 동적 클라이언트 프로파일에 대한 사전 정의된 변수 기본값을 참조하십시오.

  • 사용자 정의 변수에 대한 표현식이 포함된 동적 프로파일은 서비스 활성화에만 사용해야 합니다.

  • 일반적으로 표현식은 사용자 정의 변수에만 지정합니다. 내부 변수 또는 미리 정의된 변수에 표현식을 할당할 수 없습니다.

    메모:

    Junos OS 릴리스 19.3R1부터는 제한된 수의 표현식을 구성하여 사전 정의된 변수에 대한 기본값을 설정할 수 있습니다. 동적 클라이언트 프로파일에 대한 사전 정의된 변수 기본값을 참조하십시오.

  • 표현식 값은 기본값보다 우선합니다.

  • 전체 표현식은 따옴표(" ")로 묶어야 합니다.

  • 표현식 내의 문자열은 작은따옴표(' ') 안에 따옴표로 묶어야 하며 작은따옴표에는 문자열만 포함될 수 있습니다.

  • 공백은 모든 피연산자 및 연산자에 대한 구분 기호로 처리됩니다. 표현식 내에서 만드는 공백을 포함하는 문자열은 단일 문자열로 처리되며 선행 또는 후행 공백을 포함합니다. 예를 들어:

  • 표현식은 모든 산술 연산자 또는 모든 문자열 연산자여야 합니다. 산술 연산자와 문자열 연산자를 혼합하는 것은 올바른 형식으로 올바르게 변환되지 않는 한 허용되지 않습니다.

  • 표현식은 다른 시스템 사전 정의된 변수 또는 다른 사용자 정의 변수를 참조할 수 있습니다. 그러나 변수 간의 순환 참조는 허용되지 않습니다. 예를 들어, 다음 참조는 올바르지 않습니다.

  • "default" 값 또는 "equals" 표현식을 포함하지 않는 모든 필수 변수는 서비스 활성화의 일부로 값을 포함해야 합니다. 예를 들어, 동적 서비스 프로필 정의 "service-video"에 두 개 이하의 필수 변수를 포함하는 "service-video( value1, value2)"와 같은 RADIUS 서비스 VSA는 성공합니다. 하나 이상의 필수 변수에 "default" 또는 "equals" 특성 평가를 통해 연결된 값이 없는 경우 서비스 활성화가 실패합니다.

표 1 에는 표현식을 만드는 데 사용할 수 있는 지원되는 연산자와 함수가 나열되어 있습니다.

메모:

우선 순위 5가 가장 높은 수준입니다.

표 1: 연산자 및 함수

수술

연산자

연관성

우선 순위

행동

산술 덧셈

+

왼쪽

1

연산자의 오른쪽과 왼쪽에 요소를 함께 추가합니다.

산술 뺄셈

-

왼쪽

1

연산자의 왼쪽에 있는 요소에서 연산자의 오른쪽에 있는 요소를 뺍니다.

산술 곱셈

*

왼쪽

2

연산자의 왼쪽에 있는 요소에 연산자의 오른쪽에 있는 요소를 곱합니다.

산술 구분

/

왼쪽

2

연산자의 왼쪽에 있는 요소를 연산자의 오른쪽에 있는 요소로 나눕니다.

산술 모듈로(Arithmetic Modulo)

%

왼쪽

2

연산자의 왼쪽에 있는 요소를 연산자의 오른쪽에 있는 요소로 나누고 정수 나머지를 반환합니다. 연산자의 왼쪽에 있는 요소가 연산자의 오른쪽에 있는 요소보다 작으면 결과는 연산자의 왼쪽에 있는 요소입니다.

연결

##

왼쪽

3

연산자 왼쪽의 문자열 값과 연산자의 오른쪽에 있는 값을 결합하여 새 문자열을 만듭니다.

최대

최대 (param1, param2)

왼쪽

4

매개 변수로 전달된 두 값의 최대값을 사용합니다.

최소

분 (param1, param2)

왼쪽

4

매개 변수로 전달된 두 값 중 최소값을 사용합니다.

둥근

라운드(param1)

-

4

값을 가장 가까운 정수로 반올림합니다.

잘라야

trunc(param1)

-

4

정수가 아닌 값을 소수점 왼쪽의 값으로 자릅니다.

문자열로 변환

toStr (매개 변수1)

-

4

괄호 안의 변수를 null로 끝나는 문자열로 변환합니다.

정수로 변환

toInt (매개 변수1)

-

4

매개 변수를 정수로 변환합니다. 단일 문자열 또는 변수가 매개 변수로 허용됩니다.

임의의

랜드()

-

4

임의의 숫자 값을 생성합니다.

0이 아닌 경우

ifNotZero(매개변수1, 매개변수2)

왼쪽

4

첫 번째 매개 변수가 0이 아닌 경우 두 번째 매개 변수를 반환합니다. 첫 번째 매개 변수가 0이면 NULL을 반환합니다.

괄호

( )

-

5

피연산자와 연산자를 그룹화하여 단순 우선 순위와 다른 결과를 얻습니다. 사실상 우선 순위가 가장 높습니다.

표현식은 변수가 값으로 채워진 후에 평가됩니다. 평가는 프로필 인스턴스화 직전에 수행되며 값 검사를 포함합니다. 계산된 값이 허용되지 않거나 표현식 구문을 제어하는 규칙이 위반되면 표현식 평가가 실패하고 프로필 인스턴스화가 발생하지 않으며 오류를 설명하는 메시지가 기록됩니다.

표 2 에는 가능한 표현식 오류 시나리오와 라우터 소프트웨어가 취한 조치가 나와 있습니다.

표 2: 표현식 오류 및 작업

오류

발생

행동

변수 값

구문 분석 오류

커밋 확인 단계

커밋 실패

해당 사항 없음

순환 변수 종속성 오류

커밋 확인 단계

커밋 실패

해당 사항 없음

표현식 내의 변수가 정의되지 않았습니다.

커밋 확인 단계

커밋 실패

해당 사항 없음

0으로 나누기

프로필 인스턴스화

프로필 인스턴스화 실패

제로(0)

숫자에 문자열 더하기

프로필 인스턴스화

프로필 인스턴스화 실패

제로(0)

오버플로 오류

프로필 인스턴스화

프로필 인스턴스화 실패

정의

언더플로우 오류

프로필 인스턴스화

프로필 인스턴스화 실패

정의

기본값으로 사용자 정의 변수를 구성할 수도 있습니다. 기본값은 RADIUS 서버에 액세스할 수 없거나 VSA 속성에 값이 포함되어 있지 않은 경우 연결된 문에 대한 독립형 구성을 제공하거나 문 구성에 대한 백업을 제공합니다.

동적 프로파일에서 변수 표현식 구성

동적 프로파일 내에서 변수로 사용할 산술 연산자, 문자열 연산자 및 피연산자 그룹의 표현식을 만들 수 있습니다. 이러한 표현식은 동적 가입자 인터페이스를 구성하기 위한 변수 값으로 사용됩니다.

동적 프로필 변수 표현식을 구성하려면,

  1. 변수 표현식을 만들려는 동적 프로파일에 액세스합니다.
  2. 동적 프로필의 variables 계층에 액세스합니다.
  3. 사용자 정의 변수에서 변수 표현식 사용에 설명된 표현식 연산자 및 피연산자를 사용하여 변수를 정의합니다.

표 3 에는 지원되는 연산자 및 함수를 사용하여 작성할 수 있는 식의 몇 가지 예가 나와 있습니다.

표 3: 표현식 예

본보기

묘사

video-filter는 "' Filter1' "과 같습니다.

문자열 "Filter1"을 동적 $video 필터 변수에 할당합니다.

video-filter2는 "$video-filter ## ' Filter2' "와 같습니다.

동적 변수 "$video-filter"를 문자열로 변환하고 새 문자열을 문자열 "Filter2"와 연결합니다. 결과는 $video-filter2 변수에 할당된 문자열 "$video-filter Filter2"입니다.

tempvar은 "120"과 같습니다.

"120"을 정수로 변환하고 $tempvar 변수에 정수를 할당합니다.

전송 속도2는 "( $transmit-rate1 * 2)/3 + $tempvar)"와 같습니다.

"transmit-rate1" 변수에 2를 곱하고 해당 값을 3의 합계와 "$tempvar" 값으로 나눕니다. 결과는 $transmit-rate2 변수에 할당됩니다.

host-ip는 " '203.0.113.2' "와 같습니다.

문자열 "203.0.113.2"를 $host-ip 변수에 할당합니다.

max-val "최대 ($max 1,$max 2)"

값 "max1" 또는 "max2" 중 큰 값을 $max-val 변수에 할당합니다.

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

"var1" 및 "30" 중 더 작은 값을 $min-val 변수에 할당합니다.

rounded-var는 "round($var 1 )"와 같습니다.

변수 "$var 1"의 값을 가장 가까운 정수로 반올림하고 값을 $rounded-var 변수에 할당합니다.

trunc-var는 "trunc(1234.5)"와 같습니다.

괄호 안의 값을 10진수 왼쪽으로 자르고 결과 값을 $trunc-var 변수에 할당합니다.

bwg-shaping-rate는 "$ancp-다운스트림 - ($ancp-다운스트림 % 2 * (1 - $sp-qos-cell-mode))"와 같습니다.

괄호 안에 설정된 우선 순위에 따라 표현식을 평가합니다.

temp-filter1은 " 'Filter1' ## toStr($filter)"과 같습니다.

"$filter" 변수를 문자열 값으로 변환하고 변환된 문자열을 문자열 "Filter1"에 연결합니다. 결합된 결과 문자열은 $temp-filter1 변수에 할당됩니다.

동적 프로필에 대한 조건부 구성 개요

동적 프로필에 대한 조건부 구성 문을 구성하여 클라이언트 또는 서비스에 대한 가입자 정보를 동적으로 획득할 수 있습니다.

조건부 구성에는 두 가지 주요 단계가 포함됩니다.

  1. 조건부 변수 정의

  2. 구성 문에서 조건부 변수 참조

조건변수는 표현식 ifNotZero (param1, param2)으로 정의됩니다. 이 표현식에서 은(는) param1 값이 RADIUS param2 와 같은 외부 서버에서 파생되는 사용자 정의 변수이며 사용자 정의 변수, 함수, 연산, 숫자 또는 문자열일 수 있습니다. 조건부 변수는 사용자 정의 변수 또는 고유 ID(UID) reference 변수일 수 있습니다. 사전 정의된 변수 또는 UID 변수가 될 수 없습니다. Junos OS에서 조건부 변수는 서비스 동적 프로필에 대해서만 지원됩니다.

조건부 변수가 참조되는 구성 문은 구성 문이라고 합니다 conditional . 조건부 변수가 정의된 후 구성 문에서 dynamic-profiles 참조되고 서비스 프로필이 인스턴스화될 때 처리됩니다. 다음 서비스 프로필 구성 문은 조건부 변수를 지원합니다.

  • 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

시스템은 서비스 프로필 인스턴스화 중에 조건부 변수 및 조건부 구성 문을 평가하는 동안 다음 규칙 세트를 따릅니다.

  • 함수ifNotZero(, )param2에서 a param1 의 값이 외부 서버로부터 수신되지 않고 기본값이 설정되지 않은 경우 변수의 값은 0이 아닌 것으로 처리되고 param2 평가param1됩니다.

  • 함수(, )의 값이 param1 0이면 식의 값으로 NULL이 반환되고 param2 평가되지 않습니다. param2param1ifNotZero 이 경우, 조건부의 값은 널(NULL)이 되고 조건부변수가 참조되는 구성문은 무시됩니다.

  • param1 값이 0 param2 이 아니면 가 평가되고 해당 값이 식의 값으로 반환됩니다.

다음 filter-servicecos-service 구성 예는 규칙이 적용되는 방법을 보여줍니다.

필터 서비스 구성 예

filter-service 구성 예에서, , policer1-refoutput-filter-ref, 및 term1 은(는) 조건부 변수이고input "$input-filter-ref" precedence 50, input-filter-ref, policer "$policer1-ref" output "$output-filter-ref" precedence 50term $term1, 은(는) 조건부 구성 문입니다. 이 예에서 의 input-filter-var 값이 0이면 조건부의 값은 input-filter-ref NULL이 된다. 따라서 조건부 변수가 참조되는 전체 구성 문 input “$input-filter-ref” precedence 50은 무시됩니다. 그러나 변수 값이 0이 아닌 경우, 서비스 프로필 인스턴스화 중에 구성 문이 처리됩니다.

CoS 서비스 구성 예

cos-service 구성 예에서 및 sch2_ref 은(는) 조건 변수인 반면forwarding-class best-effort scheduler "$sch1_ref", sch1_refforwarding-class assured-forwarding scheduler "$sch2_ref" 은(는) 조건부 구성 문입니다. 구성 예의 filter-service 평가와 유사하게, 조건부 변수에서 참조되는 변수의 값이 0인 경우, 조건부 변수가 참조되는 구성 문은 무시되고 CoS(class of service) 프로필 인스턴스화 중에 처리되지 않습니다.