라우팅 정책 일치 조건에서 BGP 커뮤니티 및 확장 커뮤니티를 평가하는 방법
BGP 커뮤니티 및 확장 커뮤니티를 라우팅 정책의 일치 조건으로 사용하는 경우 정책 프레임워크 소프트웨어는 다음과 같이 평가합니다.
각 경로는 라우팅 정책
from
문에서 명명된 각 커뮤니티에 대해 평가됩니다. 경로가 문에from
명시된 커뮤니티 중 하나와 일치하면 현재 용어에 대한 평가가 계속됩니다. 경로가 일치하지 않으면 현재 용어의 평가가 종료됩니다.경로는 명명된 커뮤니티의 각 구성원에 대해 평가됩니다. 지명된 커뮤니티 평가가 성공하려면 모든 구성원의 평가가 성공해야 합니다.
명명된 커뮤니티의 각 구성원은 리터럴 커뮤니티 값 또는 정규식으로 식별됩니다. 각 구성원은 경로와 연결된 각 커뮤니티에 대해 평가됩니다. (커뮤니티는 경로의 순서가 지정되지 않은 속성입니다. 예를 들어 1:2 3:4는 3:4 1:2와 같습니다.) 구성원 평가가 성공하려면 경로에서 하나의 커뮤니티만 일치해야 합니다.
커뮤니티 정규 표현식은 문자별로 평가됩니다. 예를 들어, 경로에 커뮤니티 1234:5678이 포함된 경우 정규 표현식에는 콜론으로 구분된 두 개의 숫자 집합(1234 및 5678) 대신 콜론(:)을 포함하여 9개의 개별 문자가 표시됩니다. 예:
[edit] policy-options { policy-statement one { from { community [comm-one comm-two]; } } community comm-one members [ 1:2 "^4:(5|6)$" ]; community comm-two members [ 7:8 9:10 ]; }
커뮤니티 구성원이 정규식인 경우 숫자 일치가 아닌 문자열 일치가 이루어집니다.
예:
community example1 members 100:100 community example2 members 100:1..
커뮤니티 값이 1100:100인 경로가 주어지면 이 경로는 일치
community example2
하지만 일치하지는 않습니다example1
.라우팅 정책
one
과 일치하려면 경로가 또는comm-two
와 일치해야comm-one
합니다.일치
comm-one
하려면 경로에 1:2와 일치하는 커뮤니티와 4:5 또는 4:6과 일치하는 커뮤니티가 있어야 합니다.일치
comm-two
하려면 경로에 7:8과 일치하는 커뮤니티와 9:10과 일치하는 커뮤니티가 있어야 합니다.
여러 일치
일치하는 항목이 여러 개 발견되면 레이블 집계가 발생하지 않습니다. 다음과 같은 구성을 고려하십시오.
family inet-vpn { unicast { aggregate-label { community community-name; } } }
family inet-vpn { labeled-unicast { aggregate-label { community community-name; } } }
예를 들어, 커뮤니티 속성을 target:65000:1000 origin:65200:2000
가진 두 개의 경로가 수신되고 커뮤니티 이름이 "5...:.*"
라고 가정해봅시다. 이 경우, 확장된 커뮤니티 속성 target:65000:1000
및 은 origin:65200:2000
모두 커뮤니티 이름의 정규식과 일치합니다. 이 경우 레이블 집계가 발생하지 않습니다. 다음 예에서 Label operation
필드는 레이블이 집계되지 않았음을 보여줍니다.
user@host> show route table VPN detail | match "^10 | Communities | Push" 10.1.1.0/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: target:65000:1000 origin:65200:2000 10.1.1.4/30 (1 entry, 1 announced) Label operation: Push 101056 Push 101056 Communities: target:65000:1000 origin:65200:2000
다음 방법 중 하나로 이 문제를 해결할 수 있습니다.
site-of-origin 확장 커뮤니티 속성이 대상 속성과 겹치지 않는 경우 정규식에서 더 구체적으로 작성해야 합니다.
커뮤니티 이름에 원본 사이트를 지정합니다.
두 방법 모두 다음 예제에 나와 있습니다.
정규 표현식에서 더 구체적이어야 합니다.
user@host# set policy-options community community-name members "52..:.*" user@host# commit
user@host> show route table VPN detail | match "^10 | Communities | Push" 10.1.1.0/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: target:65000:1000 origin:65200:2000 10.1.1.4/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: target:65000:1000 origin:65200:2000
커뮤니티 이름에 원본 사이트 지정
user@host# set policy-options community community-name members "origin:65...:.*" user@host# commit
user@host> show route table VPN detail | match "^10 | Communities | Push" 10.1.1.0/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: target:65000:1000 origin:65200:2000 10.1.1.4/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: target:65000:1000 origin:65200:2000
커뮤니티 매치 반전
community
일치 조건은 정규식을 정의하며, 수신된 접두사의 community 속성과 일치하면 Junos OS는 TRUE 결과를 반환합니다. 그렇지 않은 경우, Junos OS는 FALSE 결과를 반환합니다. 명령문은 Junos OS가 invert-match
반대로 동작하도록 합니다. 일치하는 항목이 있으면 Junos OS는 FALSE 결과를 반환합니다. 일치하는 항목이 없으면 Junos OS는 TRUE 결과를 반환합니다. 커뮤니티 표현식 일치 결과를 반전시키려면 커뮤니티 구성에 문을 포함합니다 invert-match
.
[edit policy-options community name] invert-match;
확장 커뮤니티 유형
확장 커뮤니티 유형은 정규식에 의해 고려되지 않습니다. 예를 들어, 다음과 같은 커뮤니티 속성과 커뮤니티 이름을 고려해 보십시오.
커뮤니티:
-
5200:1000
-
target:65000:1000
-
origin:65200:2000
커뮤니티 속성:
-
커뮤니티 이름 구성원 "5...:.*"
이 경우, 확장 커뮤니티 속성 5200:1000
과 확장 커뮤니티 속성 origin:65200:2000
은(는) 모두 커뮤니티 이름의 정규식과 일치합니다. 따라서 다음과 같이 레이블 집계가 발생하지 않습니다.
user@host> show route table VPN detail | match "^10 | Communities | Push" 10.1.1.0/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: 5200:1000 target:65000:1000 origin:65200:2000 10.1.1.4/30 (1 entry, 1 announced) Label operation: Push 101056 Push 101056 Communities: 5200:1000 target:65000:1000 origin:65200:2000
보다 구체적인 정규식을 사용하여 이 문제를 해결할 수 있습니다. 예를 들어, 다음과 같이 앵커 문자(^
)를 사용하여 숫자의 위치를 바인딩할 수 있습니다.
user@host# set policy-options community community-name members "^5...:.*" user@host# commit
user@host> show route table VPN detail | match "^10 | Communities | Push" 10.1.1.0/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: 5200:1000 target:65000:1000 origin:65200:2000 10.1.1.4/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: 5200:1000 target:65000:1000 origin:65200:2000
릴리스 17.3에서 대규모 커뮤니티 기능이 구현됨에 따라 Junos OS는 확장 또는 대규모 커뮤니티가 기본 BGP 또는 기본 BGP 정규식 커뮤니티와 일치하지 않도록 확인합니다. 다시 말해, 수신 된 커뮤니티는 단순 야생에 대한 일반 커뮤니티, 확장 된 야생 및 대규모 야생 패턴에 대한 대규모 커뮤니티와 같은 적절한 야생 커뮤니티 패턴과 일치 할 수 있습니다. 예를 들어 원본 확장 커뮤니티를 전달하는 경로의 보급을 허용하려면 식을 사용합니다 origin:*:65020
.
여러 커뮤니티가 Ex-OR 로직과 일치합니다.
이는 BGP의 비확장 커뮤니티에 사용되는 AND 매칭 로직과 다릅니다.
예를 들어, 두 개의 커뮤니티 속성 세트와 함께 네 개의 경로가 수신되는 경우 정규 표현식은 두 커뮤니티 속성과 일치할 수 있습니다. 다음과 같은 예를 생각해 볼 수 있습니다.
커뮤니티—5200:1000 목표:65000:1000
커뮤니티—목표:65000:1000 원본:65200:2000
커뮤니티 속성 - 커뮤니티 커뮤니티 이름 구성원 [ "^5...:.*" origin:65.*:.* ]
두 레이블 모두 다음과 같이 집계됩니다.
user@host> show route table VPN detail | match "^10 | Communities | Push" 10.1.1.0/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: target:65000:1000 origin:65200:2000 10.1.1.4/30 (1 entry, 1 announced) Label operation: Push 101040 Push 101040 Communities: target:65000:1000 origin:65200:2000 10.1.1.16/30 (1 entry, 1 announced) Label operation: Push 121104 Push 101104 Communities: 5200:1000 target:65000:1000 10.1.1.20/30 (1 entry, 1 announced) Label operation: Push 121104 Push 101104 Communities: 5200:1000 target:65000:1000
커뮤니티 가치에 대한 보다 완전한 예는 다음과 같습니다.
user@host> show policy-options community community-name members [ "(^1...:*)|(^3...:*)|(^4...:*)" origin:2.*:* origin:3.*:* origin:6.*:* ]
이 정규 표현식은 1, 3 또는 4로 시작하는 커뮤니티 값과 일치하며, 관리 값이 2, 3 또는 6으로 시작하는 원본 유형의 확장 커뮤니티 값과 일치합니다.
라우팅 정책 일치 조건에 BGP 커뮤니티 및 확장 커뮤니티 포함
라우팅 정책 일치 조건에 BGP 커뮤니티 또는 확장 커뮤니티를 포함하려면 정책 용어 문에 조건을 포함합니다community
.from
from { community [ names ]; }
또한 옵션을 사용하여 none
정적 경로의 BGP 커뮤니티 정보를 명시적으로 제외할 수 있습니다. 부분에 지정된 커뮤니티 옵션을 재정의하도록 부분에 개별 defaults
경로를 route
구성할 때 이 옵션을 포함합니다.
일치 조건에 여러 커뮤니티의 community
이름을 포함할 수 있습니다. 이렇게 하면 일치가 발생하기 위해 하나의 커뮤니티만 일치해야 합니다(일치는 사실상 논리적 OR 작업임).