Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

사용자 정의 변수

동적 서비스 프로필에서 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 표현식을 구성할 수 있습니다. Predefined Variable Defaults for Dynamic Client Profiles(동적 클라이언트 프로파일에 대한 사전 정의된 변수 기본값)를 참조하십시오.

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

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

    참고:

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

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

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

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

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

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

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

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

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

참고:

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

표 1: 연산자 및 기능

작업

연산자

연관성

우선 순위

작업

산술 덧셈

+

왼쪽

1

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

산술 빼기

-

왼쪽

1

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

산술 곱셈

*

왼쪽

2

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

산술 나눗셈

/

왼쪽

2

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

산술 모듈로

%

왼쪽

2

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

연결

##

왼쪽

3

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

최대

최대(param1,param2)

왼쪽

4

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

최소

최소(param1,param2)

왼쪽

4

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

라운드

라운드(param1)

-

4

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

잘라야

trunc(param1)

-

4

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

문자열로 변환

toStr(param1)

-

4

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

정수로 변환

toInt(param1)

-

4

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

임의의

랜드()

-

4

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

0이 아닌 경우

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

왼쪽

4

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

괄호

( )

-

5

피연산자와 연산자를 그룹화하여 단순 우선 순위와 다른 결과를 얻습니다. 효과적으로 가장 높은 우선 순위를 갖습니다.

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

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

표 2: 표현식 오류 및 작업

오류

발생

작업

변수 값

구문 분석 오류

커밋 확인 단계

커밋 실패

해당 사항 없음

순환 변수 종속성 오류

커밋 확인 단계

커밋 실패

해당 사항 없음

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

커밋 확인 단계

커밋 실패

해당 사항 없음

0으로 나누기

프로필 인스턴스화

프로필 인스턴스화 실패

제로(0)

숫자에 문자열 추가

프로필 인스턴스화

프로필 인스턴스화 실패

제로(0)

오버플로 오류

프로필 인스턴스화

프로필 인스턴스화 실패

정의

언더플로 오류

프로필 인스턴스화

프로필 인스턴스화 실패

정의

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

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

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

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

  1. 변수 표현식을 작성하려는 동적 프로필에 액세스합니다.
  2. 동적 프로필의 variables 계층에 액세스합니다.
  3. Using Variable Expressions in User-Defined Variables에 설명된 표현식 연산자와 피연산자를 사용하여 변수를 정의합니다.

표 3 에서는 지원되는 연산자 및 함수를 사용하여 작성할 수 있는 표현식의 몇 가지 예를 제공합니다.

표 3: 표현식 예

예제

설명

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

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

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

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

tempvar은 "120"과 같습니다.

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

transmit-rate2는 " ( $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-downstream - ($ancp-downstream % 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(param1, param2)에서 a param1 값이 외부 서버로부터 수신되지 않고 기본값이 구성되지 않은 경우 변수 값은 0이 아닌 값으로 처리되어 param2 평가됩니다.

  • 함수(, )의 값이 param1 0이면 표현식의 값으로 NULL이 반환되고 param2 계산되지 않습니다. param2param1ifNotZero 이 경우, 조건변수의 값은 NULL이 되며, 조건변수가 참조되는 설정문은 무시된다.

  • param1 값이 0이 아닌 경우 이(가 param2 ) 평가되고 해당 값이 표현식의 값으로 반환됩니다.

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

필터 서비스 구성 예

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

CoS 서비스 구성 예

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