본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

BGP 필터

원문 보기 위키 갱신

BGP 필터 리소스(BGPFilter)는 BGP 피어 리소스(BGPPeer)로 지정한 BGP 피어에서 임포트하거나 그쪽으로 익스포트하는 라우트를 제어하는 방법을 나타내요.

BGPFilter 규칙은 순서대로 적용돼요. 처음으로 매칭된 규칙의 action이 즉시 실행돼요. 어떤 주소도 명시적인 BGP 필터 규칙에 매칭되지 않으면 기본 동작은 Accept예요.

BGPFilter를 BGP 피어링에서 쓰려면 해당 BGPPeer 리소스의 filters에 그 BGPFilter의 name을 추가해야 해요.

kubectl 커맨드에서는 CLI에서 리소스 타입을 지정할 때 다음과 같은 대소문자를 구분하는 별칭을 쓸 수 있어요: bgpfilters.projectcalico.org

출처: 문서

본문

샘플 YAML

apiVersion: projectcalico.org/v3
kind: BGPFilter
metadata:
  name: my-filter
spec:
  exportV4:
    - action: Accept
      matchOperator: In
      cidr: 77.0.0.0/16
      source: RemotePeers
    - action: Reject
      interface: '*.calico'
  importV4:
    - action: Accept
      matchOperator: In
      cidr: 55.0.0.0/16
      prefixLength:
        min: 30
    - action: Reject
      matchOperator: NotIn
      cidr: 44.0.0.0/16
  exportV6:
    - action: Reject
      source: RemotePeers
    - action: Reject
      interface: '*.calico'
  importV6:
    - action: Accept
      matchOperator: Equal
      cidr: 5000::0/64
    - action: Reject

BGP 필터 정의

메타데이터 (Metadata)

필드 설명 허용 값 스키마
name 이 리소스 인스턴스를 설명하는 고유한 이름이에요. 반드시 지정해야 해요. ., _, -를 선택적으로 포함할 수 있는 영숫자 문자열 string

사양 (Spec)

필드 설명 허용 값 스키마 기본값
exportV4 v4 CIDR과 익스포트 동작의 목록 BGP 필터 규칙 v4
importV4 v4 CIDR과 임포트 동작의 목록 BGP 필터 규칙 v4
exportV6 v6 CIDR과 익스포트 동작의 목록 BGP 필터 규칙 v6
importV6 v6 CIDR과 임포트 동작의 목록 BGP 필터 규칙 v6

BGP 필터 규칙 v4

필드 설명 허용 값 스키마 기본값
cidr IPv4 범위 유효한 IPv4 CIDR string
prefixLength PrefixLength 0부터 ipv4/6 최댓값(32, 128) 사이의 유효한 정수
matchOperator 후보 라우트를 매칭하는 방식 In, NotIn, Equal, NotEqual string
source 라우트의 출처를 나타내는 표시 RemotePeers는 다른 BGP 피어로부터 학습한 모든 라우트를 의미해요 string
interface 인터페이스 이름을 매칭할 문자열 인터페이스를 매칭할 유효한 패턴이에요. "*"를 와일드카드로 쓸 수 있어요. string
peerType 이 규칙을 지정한 BGP 피어 타입과 주고받는 라우트에만 적용해요. 비워 두면 모든 피어에 적용돼요. eBGP, iBGP string
priority 지정한 우선순위(메트릭)를 가진 라우트에만 이 규칙을 적용해요. FelixConfiguration의 ...RoutePriority 필드와 같은 단위를 써요. 1-2147483646 integer
communities 지정한 BGP 커뮤니티를 실은 라우트에만 이 규칙을 적용해요. BGP 필터 커뮤니티 매치를 참고하세요. object
action 이 규칙에 대해 취할 동작 Accept 또는 Reject string
operations 규칙이 매칭됐을 때 적용할 라우트 수정 작업의 순서 목록이에요. action이 Accept일 때만 유효해요. 최대 10개의 동작이 가능해요. BGP 필터 오퍼레이션을 참고하세요. list

BGP 필터 규칙 v6

필드 설명 허용 값 스키마 기본값
cidr IPv6 범위 유효한 IPv6 CIDR string
prefixLength PrefixLength 0부터 ipv4/6 최댓값(32, 128) 사이의 유효한 정수
matchOperator 후보 라우트를 매칭하는 방식 In, NotIn, Equal, NotEqual string
source 라우트의 출처를 나타내는 표시 RemotePeers는 다른 BGP 피어로부터 학습한 모든 라우트를 의미해요 string
interface 인터페이스 이름을 매칭할 문자열 인터페이스를 매칭할 유효한 패턴이에요. "*"를 와일드카드로 쓸 수 있어요. string
peerType 이 규칙을 지정한 BGP 피어 타입과 주고받는 라우트에만 적용해요. 비워 두면 모든 피어에 적용돼요. eBGP, iBGP string
priority 지정한 우선순위(메트릭)를 가진 라우트에만 이 규칙을 적용해요. FelixConfiguration의 ...RoutePriority 필드와 같은 단위를 써요. 1-2147483646 integer
communities 지정한 BGP 커뮤니티를 실은 라우트에만 이 규칙을 적용해요. BGP 필터 커뮤니티 매치를 참고하세요. object
action 이 규칙에 대해 취할 동작 Accept 또는 Reject string
operations 규칙이 매칭됐을 때 적용할 라우트 수정 작업의 순서 목록이에요. action이 Accept일 때만 유효해요. 최대 10개의 동작이 가능해요. BGP 필터 오퍼레이션을 참고하세요. list

BGP 필터 프리픽스 길이 (BGP Filter Prefix Length)

필드 설명 허용 값 스키마 기본값
min 매칭할 가장 작은 마스크 크기(기본값 0) 0부터 ipv4/6 최댓값(32, 128) 사이의 유효한 정수 int
max 매칭할 가장 큰 마스크 크기(기본값 32/128) 1부터 ipv4/6 최댓값(32, 128) 사이의 유효한 정수 int

BGP 필터 커뮤니티 매치 (BGP Filter Community Match)

필드 설명 허용 값 스키마
values 매칭에 사용할 BGP 커뮤니티 값의 목록이에요. 라우트는 이 커뮤니티 중 최소 하나를 실고 있어야 해요. 표준(aa:nn) 또는 대형(aa:nn:mm) 커뮤니티 값 list of string

BGP 필터 오퍼레이션 (BGP Filter Operation)

각 오퍼레이션은 다음 필드 중 정확히 하나만 설정된 객체예요.

필드 설명 스키마
addCommunity 라우트에 BGP 커뮤니티를 추가해요. AddCommunity
prependASPath 라우트의 AS 경로 앞에 AS 번호를 붙여요. PrependASPath
setPriority 라우트의 우선순위(메트릭)를 설정해요. SetPriority

BGP 필터 커뮤니티 추가 (BGP Filter Add Community)

필드 설명 허용 값 스키마
value 추가할 BGP 커뮤니티 값이에요. 표준(aa:nn) 또는 대형(aa:nn:mm) 커뮤니티 값 string

BGP 필터 AS 경로 앞붙이기 (BGP Filter Prepend AS Path)

필드 설명 허용 값 스키마
prefix 라우트의 AS 경로 앞에 붙일 AS 번호의 나열이에요. 결과 경로는 나열된 순서대로 이 AS 번호들로 시작해요(예: [65000, 65001]은 65000 65001 <원본>이 돼요). 유효한 AS 번호 1-10개의 목록 list of integer

BGP 필터 우선순위 설정 (BGP Filter Set Priority)

필드 설명 허용 값 스키마
value 라우트에 설정할 우선순위(메트릭) 값이에요. FelixConfiguration의 RoutePriority 필드와 같은 단위를 써요. 1-2147483646 integer

더 알아보기 (Learn more)

BGPFilter 규칙은 순서대로 평가되고 첫 매칭에서 동작이 실행된다는 점, 그리고 매칭이 없으면 Accept가 기본이라는 점만 기억하면 실수를 크게 줄일 수 있어요. 필터를 실제로 적용하려면 BGPPeer의 filters 목록에 이름을 넣는 것도 잊지 마세요. 라우트를 세밀하게 제어해야 하는 BGP 피어링 환경에서 활용해보세요.