라우팅 정책 일치 조건에서 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 작업임).