정책 표현식 이해
정책 표현식은 정책 프레임워크 소프트웨어에 라우팅 정책을 평가하는 다른 방법을 제공합니다. 정책 표현식은 정책과 함께 부울 논리 연산자를 사용합니다. 논리 연산자는 정책을 평가하는 규칙을 설정합니다.
정책 표현식에서 라우팅 정책을 평가하는 동안 수락, 거부 또는 다음 정책의 정책 작업이 TRUE 또는 FALSE 값으로 변환됩니다. 그런 다음 이 값을 지정된 논리 연산자에 대해 평가하여 TRUE 또는 FALSE의 출력을 생성합니다. 그런 다음 출력은 수락, 거부 또는 다음 정책의 흐름 제어 작업으로 다시 변환됩니다. 정책 표현식의 결과는 단일 정책에 적용되는 것처럼 적용됩니다. 경로가 수락 또는 거부되고 평가가 종료되거나 다음 정책이 평가됩니다.
표 1 에서는 정책 작업과 해당 TRUE 및 FALSE 값, 흐름 제어 작업 값을 요약합니다. 표 2 에서는 논리 연산자를 설명합니다. 정책 표현식 평가에 대한 자세한 내용은 을 참조하십시오 정책 표현 평가.
정책 표현식은 괄호로 묶어야 합니다. 정책 표현식은 또는 문과 import
문의 아무 곳에나 배치할 수 있습니다from policy
.export
정책 작업 |
전환 가치 |
흐름 제어 작업 변환 값 |
---|---|---|
받아들이다 |
참 |
받아들이다 |
거절하다 |
거짓 |
거절하다 |
다음 정책 |
참 |
다음 정책 |
논리 연산자 |
정책 표현식 로직 |
논리 연산자가 정책 표현식 평가에 미치는 영향 |
---|---|---|
&& (논리 AND) |
논리 AND를 사용하려면 모든 값이 TRUE여야 TRUE의 출력을 생성할 수 있습니다. 라우팅 정책 값이 TRUE이고 TRUE이면 TRUE가 출력됩니다. TRUE 및 FALSE 값은 FALSE의 출력을 생성합니다. FALSE와 FALSE의 값은 FALSE의 출력을 생성합니다. |
첫 번째 라우팅 정책이 TRUE 값을 반환하면 다음 정책이 평가됩니다. 첫 번째 정책이 FALSE 값을 반환하면 식의 평가가 종료되고 식의 후속 정책은 평가되지 않습니다. |
|| (논리적 OR) |
논리적 OR을 사용하려면 TRUE 출력을 생성하기 위해 하나 이상의 값이 TRUE여야 합니다. 라우팅 정책 값이 TRUE이고 FALSE이면 TRUE가 출력됩니다. TRUE 및 TRUE 값은 TRUE의 출력을 생성합니다. FALSE와 FALSE의 값은 FALSE의 출력을 생성합니다. |
첫 번째 라우팅 정책이 TRUE 값을 반환하면 식의 평가가 종료되고 식의 후속 정책은 평가되지 않습니다. 첫 번째 정책이 FALSE 값을 반환하면 다음 정책이 평가됩니다. |
! (논리적 NOT) |
논리 NOT은 TRUE의 값을 FALSE로, FALSE의 값을 TRUE로 바꿉니다. 또한 수락 및 다음 정책을 거부하고 수락을 거부하는 작업을 반대로 합니다. |
논리 AND 연산자와 함께 사용할 경우 첫 번째 라우팅 정책 값 FALSE를 TRUE로 되돌리면 다음 정책이 평가됩니다. TRUE 값을 FALSE로 바꾸면 식의 평가가 종료되고 식의 후속 정책이 평가되지 않습니다. 논리 OR 연산자와 함께 사용할 때 첫 번째 라우팅 정책 값 FALSE를 TRUE로 되돌리면 표현식의 평가가 종료되고 표현식의 후속 정책은 평가되지 않습니다. TRUE 값을 FALSE로 바꾸면 다음 정책이 평가됩니다. 정책과 함께 사용되고 플로우 제어 작업이 수락 또는 다음 정책인 경우, 이러한 작업은 거부로 취소됩니다. 흐름 제어 작업이 거부되면 이 작업은 수락으로 되돌아갑니다. |
자세한 내용은 다음 섹션을 참조하세요.
정책 표현식 예제
다음 예제에서는 논리 연산자를 사용하여 정책 표현식을 만드는 방법을 보여 줍니다.
논리적 AND - 다음 예에서는 이(가)
policy1
먼저 평가됩니다. afterpolicy1
가 평가되면 TRUE 값이 반환되고policy2
평가됩니다. FALSE 값이 반환policy2
되면 평가되지 않습니다.export (policy1 && policy2)
논리적 OR - 다음 예에서는 이(가)
policy1
먼저 평가됩니다. afterpolicy1
가 평가되면 TRUE 값이 반환되고policy2
평가되지 않습니다. FALSE 값이 반환policy2
되면 평가됩니다.export (policy1 || policy2)
논리 OR 및 논리 AND - 다음 예에서는 이(가)
policy1
먼저 평가됩니다. afterpolicy1
가 평가되면 TRUE 값이 반환policy2
되고 건너뛰고policy3
평가됩니다. afterpolicy1
가 평가되면 FALSE 값이 반환되고policy2
평가됩니다. TRUE 값을 반환하면policy2
policy3
평가됩니다. FALSE 값을 반환하면policy2
policy3
평가되지 않습니다.export [(policy1 || policy2) && policy3]
논리적 NOT - 다음 예에서는 이(가)
policy1
먼저 평가됩니다. afterpolicy1
가 평가되면 TRUE 값이 반환되고 값이 FALSE로 반전되어policy2
평가되지 않습니다. FALSE 값이 반환되면 값이 TRUE로 반전되어policy2
평가됩니다.export (!policy1 && policy2)
순차적 목록은 [policy1 policy2 policy3]
정책 표현식 (policy1 && policy2 && policy3)
과 동일하지 않습니다.
순차적 목록은 라우팅 정책과 일치하는 경로를 기준으로 평가됩니다. 예를 들어 일치하고 작업이 accept
또는 reject
인 policy3
policy2
경우 policy1
평가되지 않습니다. 이 policy1
(가) 일치하지 않으면 은(는) policy2
일치가 발생하고 작업이 accept
또는 이 reject
될 때까지 평가됩니다.
정책 표현식은 TRUE 또는 FALSE 값으로 변환되는 라우팅 정책의 작업과 지정된 논리 연산자의 논리를 기반으로 평가됩니다. (정책 표현식 평가에 대한 자세한 내용은 을 참조하십시오 정책 표현 평가.) 예를 들어 if policy1
는 FALSE policy2
값을 반환하고 policy3
평가되지 않습니다. TRUE 값을 반환하면 policy1
policy2
평가됩니다. FALSE 값을 반환하면 policy2
policy3
평가되지 않습니다. TRUE 값을 반환하면 policy2
policy3
평가됩니다.
정책 표현식과 순차적 목록을 결합할 수도 있습니다. 다음 예제에서는 FALSE policy2
값을 반환하는 경우 policy1
가 평가됩니다. TRUE 값을 반환하고 작업을 policy3
포함하는 next policy
경우 policy2
가 평가됩니다. TRUE 값을 반환하지만 작업을 policy3
포함한 작업을 포함하지 next policy
않는 경우 policy2
여전히 평가됩니다(작업을 지정하지 않으면 다음 용어 또는 다음 정책이 기본 작업이기 때문). 값이 TRUE를 반환하고 작업을 policy3
포함하는 accept
경우 policy2
평가되지 않습니다.
export [(policy1 || policy2) policy3]
정책 표현 평가
평가 중에 정책 프레임워크 소프트웨어는 정책 작업을 TRUE 또는 FALSE 값으로 변환하며, 이는 경로에서 수행되는 플로우 제어 작업을 결정하는 요소입니다. 그러나 소프트웨어는 전체 정책 표현식을 평가할 때까지 경로에 대한 플로우 제어 작업을 실제로 수행하지 않습니다.
정책 프레임워크 소프트웨어는 다음과 같이 정책 표현식을 평가합니다.
소프트웨어는 정책 표현식의 첫 번째 라우팅 정책에 대해 경로를 평가하고 지정된 작업이나 기본 작업을 TRUE 또는 FALSE 값으로 변환합니다. (정책 작업 변환 값에 대한 자세한 내용은 을 참조하십시오 표 1.)
소프트웨어는 TRUE 또는 FALSE 값을 정책 표현식에 사용된 논리 연산자에 대해 평가합니다( 표 2참조). 소프트웨어는 사용된 논리 연산자에 따라 다음 정책(있는 경우)을 평가할지 여부를 결정합니다.
정책 프레임워크 소프트웨어는 바로 가기 평가 방법을 사용합니다. 정책 평가 결과가 전체 정책 표현식의 값을 미리 결정하는 경우, 소프트웨어는 표현식의 후속 정책을 평가하지 않습니다. 예를 들어, 정책 표현식이 논리 AND 연산자를 사용하고 정책 평가가 FALSE 값을 반환하는 경우, 평가되지 않은 정책의 값에 관계없이 표현식의 최종 값이 FALSE로 보장되므로 소프트웨어는 표현식의 후속 정책을 평가하지 않습니다.
소프트웨어는 정책 표현식의 각 후속 라우팅 정책에 대해 1단계와 2단계를 수행합니다(존재하는 경우 이를 평가해야 함).
마지막 라우팅 정책을 평가한 후 적절한 경우 소프트웨어는 각 라우팅 정책 평가에서 얻은 TRUE 또는 FALSE 값을 평가합니다. 사용된 논리 연산자에 따라 TRUE 또는 FALSE의 출력을 계산합니다.
소프트웨어는 TRUE 또는 FALSE의 출력을 다시 작업으로 변환합니다. (정책 작업 변환 값에 대한 자세한 내용은 을 참조하십시오 표 1.) 작업이 수행됩니다.
표현식의 각 정책이 TRUE 값을 반환한 경우 소프트웨어는 TRUE의 출력을 마지막 정책에 지정된 흐름 제어 작업으로 다시 변환합니다. 예를 들어, 정책 표현식
(policy1 && policy2)
이 지정되고policy1
지정accept
및policy2
가next term
next term
지정된 경우 작업이 수행됩니다.정책 중 하나에 지정된 작업이 경로 특성을 조작하는 경우 정책 프레임워크 소프트웨어는 나머지 정책을 평가하는 동안 새 경로 특성을 전달합니다. 예를 들어 정책 표현식의 첫 번째 정책에 지정된 작업이 경로의 메트릭을 500으로 설정하는 경우 이 경로는 다음 정책에 정의된 기준
metric 500
과 일치합니다. 그러나 정책 표현식의 중간 또는 끝에 위치한 정책에 경로 특성 조작 작업이 지정된 경우, 바로가기 평가로 인해 정책이 평가되지 않고 경로 특성의 조작이 발생하지 않을 수 있습니다.
정책 표현식 평가
다음 샘플 라우팅 정책에서는 세 가지 정책 표현식을 사용합니다.
[edit] policy-options { policy-statement policy-A { from { route-filter 10.10.0.0/16 orlonger; } then reject; } } policy-options { policy-statement policy-B { from { route-filter 10.20.0.0/16 orlonger; } then accept; } } protocols { bgp { neighbor 192.168.1.1 { export (policy-A && policy-B); } neighbor 192.168.2.1 { export (policy-A || policy-B); } neighbor 192.168.3.1 { export (!policy-A); } } }
정책 프레임워크 소프트웨어는 다음과 같이 샘플 라우팅 정책에 지정된 세 가지 정책 표현식에 대해 전송 BGP 경로 10.10.1.0/24를 평가합니다.
(policy-A & & policy-B) - 10.10.1.0/24는 에 대해
policy-A
평가됩니다. 10.10.1.0/24는 에 지정된policy-A
경로 목록과 일치하므로 의reject
지정된 작업이 반환됩니다.reject
는 FALSE 값으로 변환되고, FALSE는 지정된 논리 AND에 대해 평가됩니다. FALSE의 결과는 평가 결과가policy-B
무엇이든 확실하지 때문에(정책 표현식 논리에서 모든 결과와 FALSE 값은 FALSE의 출력을 생성함)policy-B
평가되지 않고 FALSE의 출력이 생성됩니다. FALSE 출력은 로 변환reject
되고 10.10.1.0/24는 거부됩니다.(policy-A || policy-B) - 10.10.1.0/24는 에 대해
policy-A
평가됩니다. 10.10.1.0/24는 에 지정된policy-A
경로 목록과 일치하므로 의reject
지정된 작업이 반환됩니다.reject
이 FALSE 값으로 변환되면 지정된 논리 OR에 대해 FALSE가 평가됩니다. 논리 OR은 TRUE 출력을 생성하기 위해 하나 이상의 TRUE 값이 필요하므로 10.10.1.0/24는 에 대해policy-B
평가됩니다. 10.10.1.0/24는 와 일치하지policy-B
않으므로 의next-policy
기본 작업이 반환됩니다. 이next-policy
(가) TRUE 값으로 변환된 다음 FALSE(평가용policy-A
) 및 TRUE(평가용policy-B
) 값이 지정된 논리 OR에 대해 평가됩니다. 정책 식 논리에서 FALSE 또는 TRUE는 TRUE의 출력을 생성합니다. TRUE의 출력은 로 변환next-policy
됩니다. (TRUE는 정책 프레임워크 소프트웨어에서 마지막으로 유지한 작업이기 때문에next-policy
로next-policy
변환됩니다.)policy-B
는 정책 표현식의 마지막 라우팅 정책이므로 BGP에 대한 기본 내보내기 정책에서 지정한 작업이 수행됩니다.(!policy-A) - 10.10.1.0/24는 에 대해
policy-A
평가됩니다. 10.10.1.0/24는 에 지정된policy-A
경로 목록과 일치하므로 의reject
지정된 작업이 반환됩니다.reject
는 FALSE 값으로 변환되고 FALSE는 지정된 논리 NOT에 대해 평가됩니다. FALSE의 값은 논리 NOT의 규칙에 따라 TRUE의 출력으로 반전됩니다. TRUE의 출력은 로 변환accept
되고 경로 10.10.1.0/24가 허용됩니다.