라우팅 정책 일치 조건에서의 정책 서브루틴 이해
다른 라우팅 정책에서 호출된 라우팅 정책을 일치 조건으로 사용할 수 있습니다. 이 프로세스는 호출된 정책을 서브루틴으로 만듭니다.
어떤 면에서 Junos OS 정책 프레임워크는 프로그래밍 언어와 유사합니다. 이러한 유사성에는 정책을 정책 서브루틴에 중첩하는 개념이 포함됩니다. 소프트웨어 프로그램의 서브루틴은 정기적으로 참조하는 코드 섹션입니다. 정책 서브루틴은 동일한 방식으로 작동하므로 기존 정책을 다른 정책의 일치 기준으로 참조합니다. 라우팅 디바이스는 먼저 서브루틴을 평가한 다음 메인 정책을 평가합니다. 서브루틴의 평가는 true 또는 false 부울 결과를 기본 정책에 리턴합니다. 서브루틴을 일치 기준으로 참조하기 때문에 true 결과는 기본 정책에 일치 항목이 있고 구성된 모든 작업을 수행할 수 있음을 의미합니다. 그러나 서브루틴의 잘못된 결과는 기본 정책에 일치 항목이 없음을 의미합니다.
서브루틴 구성
라우팅 정책의 서브루틴이 다른 라우팅 정책에서 호출되도록 구성하려면 서브루틴을 생성하고 다른 라우팅 정책의 또는 to
문에 from
있는 일치 조건을 사용하여 policy
이름을 지정합니다.
라우팅 정책 자체를 평가하지 마십시오. 그 결과 라우팅 정책과 일치하는 접두사가 없습니다.
서브루틴에 지정된 조치는 호출 정책에 일치 조건을 제공하는 데 사용됩니다. 서브루틴이 수락 조치를 지정하는 경우, 호출 정책은 라우트를 일치로 간주합니다. 서브루틴이 거부 작업을 지정하는 경우, 호출 정책은 경로가 일치하지 않는 것으로 간주합니다. 서브루틴이 경로 특성을 조작하기 위한 조치를 지정하는 경우, 변경사항이 작성됩니다.
서브루틴에서 종료 조치의 가능한 결과
특정 문이 있는 서브루틴은 동일한 문이 포함된 라우팅 정책과 다르게 작동할 수 있습니다. 서브루틴의 경우, 서브루틴 또는 기본 정책으로 지정된 수락 또는 거부의 가능한 종료 조치가 예상 결과에 큰 영향을 미칠 수 있음을 기억해야 합니다.
특히, 서브루틴에 지정된 경로와 일치가 발생하지 않는 경우와 수행된 기본 정책 작업이 예상하고 원하는 작업인 경우 어떻게 되는지 고려해야 합니다.
예를 들어 고객 A에게 서비스를 제공하는 ISP(인터넷 서비스 공급자)의 네트워크 관리자라고 가정해 보겠습니다. 고객 A가 다양한 링크에서 제공하는 여러 클래스의 이웃에 대해 여러 라우팅 정책을 구성했습니다. 고객 A에 대한 라우팅 정책을 유지하는 시간을 절약하기 위해 아래와 같이 해당 경로와 서브루틴을 호출하는 다양한 라우팅 정책을 식별하는 서브루틴을 구성했습니다.
[edit] policy-options { policy-statement customer-a-subroutine { from { route-filter 10.1/16 exact; route-filter 10.5/16 exact; route-filter 192.168.10/24 exact; } then accept; } } policy-options { policy-statement send-customer-a-default { from { policy customer-a-subroutine; } then { set metric 500; accept; } } } policy-options { policy-statement send-customer-a-primary { from { policy customer-a-subroutine; } then { set metric 100; accept; } } } policy-options { policy-statement send-customer-a-secondary { from { policy customer-a-subroutine; } then { set metric 200; accept; } } } protocols { bgp { group customer-a { export send-customer-a-default; neighbor 10.1.1.1; neighbor 10.1.2.1; neighbor 10.1.3.1 { export send-customer-a-primary; } neighbor 10.1.4.1 { export send-customer-a-secondary; } } } }
이 구성에서 다음과 같은 결과가 발생합니다.
group-level
export
문은 서브루틴 경로 필터와 일치하는 경로뿐만 아니라 neighbor 10.1.1.1 및 10.1.2.1에 모든 BGP 경로를 보급할 때 메트릭을 500으로 재설정합니다.neighbor-level
export
문은 서브루틴 경로 필터와 일치하는 BGP 경로뿐만 아니라 모든 BGP 경로를 neighbor 10.1.3.1 및 10.1.4.1에 각각 보급할 때 메트릭을 100 및 200으로 재설정합니다.
이러한 예기치 않은 결과는 서브루틴 정책이 경로 필터와 일치하지 않는 경로에 대한 종료 작업을 지정하지 않아 모든 BGP 경로를 수락하는 기본 BGP 내보내기 정책이 수행되기 때문에 발생합니다.
이 특정 서브루틴에 포함된 문이 호출 정책 자체에 포함된 경우 원하는 경로만 메트릭이 재설정됩니다.
이 예는 라우팅 정책과 서브루틴 간의 차이점과 서브루틴에서 종료 조치의 중요성을 보여줍니다. 여기서, 서브루틴에 대한 기본 BGP 내보내기 정책 조치는 신중하게 고려되지 않았습니다. 이 특정 예제에 대한 해결책은 경로 필터와 일치하지 않는 다른 모든 경로를 거부하는 용어를 서브루틴에 하나 더 추가하는 것입니다.
[edit] policy-options { policy-statement customer-a-subroutine { term accept-exact { from { route-filter 10.1/16 exact; route-filter 10.5/16 exact; route-filter 192.168.10/24 exact; } then accept; } term reject-others { then reject; } } }
일반적으로 서브루틴에 대한 종료 조치 전략에는 다음이 포함됩니다.
기본 정책 작업에 따라 다른 모든 경로를 처리합니다.
다른 모든 경로를 허용하는 용어를 추가합니다.
다른 모든 경로를 거부하는 용어를 추가합니다.
선택하는 옵션은 서브루틴으로 달성하려는 항목에 따라 다릅니다. 서브루틴을 신중하게 계획하십시오.