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

Felix 구성 파트 7

원문 보기 위키 갱신

Felix 구성 레퍼런스의 일곱 번째 파트예요. 앞 파트에 이어서 BPF 데이터플레인의 세부 설정이 계속 이어져요. conntrack 정리 방식과 타임아웃, DSR 옵트아웃 CIDR, 데이터 인터페이스 패턴처럼 BPF 모드의 세부 동작을 조정하는 키들이 모여 있죠. 각 항목은 구성 파일 키와 환경 변수 탭으로 각각 확인할 수 있어요.

출처: 문서

본문

탭: 구성 파일

속성 값
키 BPFConntrackCleanupMode
설명 BPF conntrack 엔트리를 정리하는 방식을 제어해요. Auto는 지원되면 BPF 프로그램을 사용하고, 지원되지 않으면 사용자 영역(userspace) 정리 코드로 폴백해요. Userspace는 항상 사용자 영역 정리 코드를 사용해요. BPFProgram은 항상 BPF 프로그램을 사용해요(지원되지 않으면 실패해요). / 이후 버전에서 폐기(deprecated)될 예정이에요. conntrack 맵 타입이 lru_hash로 바뀌었고, 이제 사용자 영역 정리만 지원되는 모드이기 때문이에요.
스키마 Auto, BPFProgram, Userspace 중 하나
기본값 Auto

탭: 환경 변수

속성 값
키 FELIX_BPFCONNTRACKCLEANUPMODE
설명 BPF conntrack 엔트리를 정리하는 방식을 제어해요. Auto는 지원되면 BPF 프로그램을 사용하고, 지원되지 않으면 사용자 영역(userspace) 정리 코드로 폴백해요. Userspace는 항상 사용자 영역 정리 코드를 사용해요. BPFProgram은 항상 BPF 프로그램을 사용해요(지원되지 않으면 실패해요). / 이후 버전에서 폐기(deprecated)될 예정이에요. conntrack 맵 타입이 lru_hash로 바뀌었고, 이제 사용자 영역 정리만 지원되는 모드이기 때문이에요.
스키마 Auto, BPFProgram, Userspace 중 하나
기본값 Auto

BPFConntrackLogLevel

탭: 구성 파일

속성 값
키 BPFConntrackLogLevel
설명 주기적으로 실행되어 만료된 BPF conntrack 엔트리를 정리하는 BPF conntrack 정리 프로그램의 로그 레벨을 제어해요.
스키마 debug, off 중 하나
기본값 off

탭: 환경 변수

속성 값
키 FELIX_BPFCONNTRACKLOGLEVEL
설명 주기적으로 실행되어 만료된 BPF conntrack 엔트리를 정리하는 BPF conntrack 정리 프로그램의 로그 레벨을 제어해요.
스키마 debug, off 중 하나
기본값 off

BPFConntrackTimeouts

탭: 구성 파일

속성 값
키 BPFConntrackTimeouts
설명 설정하면 지정된 conntrack 타이머의 기본값을 BPFConntrackTimers가 대체해요. 각 값은 기간(duration)이거나, Linux conntrack 타임아웃에서 값을 가져오는 Auto일 수 있어요. 설정할 수 있는 타이머는 CreationGracePeriod, TCPSynSent, TCPEstablished, TCPFinsSeen, TCPResetSeen, UDPTimeout, GenericTimeout, ICMPTimeout이에요. 설정하지 않은 값은 기본값으로 대체되고, 잘못된 값에는 경고 로그가 남아요.
스키마 쉼표로 구분된 key=value 쌍 목록
기본값 CreationGracePeriod=10s,TCPSynSent=20s,TCPEstablished=1h,TCPFinsSeen=Auto,TCPResetSeen=40s,UDPTimeout=60s,GenericTimeout=10m,ICMPTimeout=5s

탭: 환경 변수

속성 값
키 FELIX_BPFCONNTRACKTIMEOUTS
설명 설정하면 지정된 conntrack 타이머의 기본값을 BPFConntrackTimers가 대체해요. 각 값은 기간(duration)이거나, Linux conntrack 타임아웃에서 값을 가져오는 Auto일 수 있어요. 설정할 수 있는 타이머는 CreationGracePeriod, TCPSynSent, TCPEstablished, TCPFinsSeen, TCPResetSeen, UDPTimeout, GenericTimeout, ICMPTimeout이에요. 설정하지 않은 값은 기본값으로 대체되고, 잘못된 값에는 경고 로그가 남아요.
스키마 쉼표로 구분된 key=value 쌍 목록
기본값 CreationGracePeriod=10s,TCPSynSent=20s,TCPEstablished=1h,TCPFinsSeen=Auto,TCPResetSeen=40s,UDPTimeout=60s,GenericTimeout=10m,ICMPTimeout=5s

BPFDSROptoutCIDRs

탭: 구성 파일

속성 값
키 BPFDSROptoutCIDRs
설명 DSR에서 제외할 CIDR 목록이에요. 즉, 해당 CIDR에 속한 클라이언트는 BPFExternalServiceMode가 Tunnel로 설정된 것처럼 서비스 node port에 접근해요.
스키마 쉼표로 구분된 CIDR 목록
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_BPFDSROPTOUTCIDRS
설명 DSR에서 제외할 CIDR 목록이에요. 즉, 해당 CIDR에 속한 클라이언트는 BPFExternalServiceMode가 Tunnel로 설정된 것처럼 서비스 node port에 접근해요.
스키마 쉼표로 구분된 CIDR 목록
기본값 없음

BPFDataIfacePattern

탭: 구성 파일

속성 값
키 BPFDataIfacePattern
설명 네트워크와 오가는 트래픽을 잡도록 Felix가 BPF 프로그램을 붙일 인터페이스를 제어하는 정규식이에요. Calico 워크로드 트래픽이 흐르는 인터페이스와, 클러스터 밖에서 nodeport와 서비스로 들어오는 트래픽을 처리하는 인터페이스도 모두 매칭되어야 해요. 워크로드 인터페이스(보통 cali...로 명명)나 Calico가 직접 관리하는 다른 특수 장치(예: 터널)와는 매칭되면 안 돼요.
스키마 정규식
기본값 ^((en|wl|ww|sl|ib)[Popsx].*|(eth|wlan|wwan|bond).*)

탭: 환경 변수

속성 값
키 FELIX_BPFDATAIFACEPATTERN
설명 네트워크와 오가는 트래픽을 잡도록 Felix가 BPF 프로그램을 붙일 인터페이스를 제어하는 정규식이에요. Calico 워크로드 트래픽이 흐르는 인터페이스와, 클러스터 밖에서 nodeport와 서비스로 들어오는 트래픽을 처리하는 인터페이스도 모두 매칭되어야 해요. 워크로드 인터페이스(보통 cali...로 명명)나 Calico가 직접 관리하는 다른 특수 장치(예: 터널)와는 매칭되면 안 돼요.
스키마 정규식
기본값 ^((en|wl|ww|sl|ib)[Popsx].*|(eth|wlan|wwan|bond).*)

BPFDisableGROForIfaces

탭: 구성 파일

속성 값
키 BPFDisableGROForIfaces
설명 Felix가 Generic Receive Offload [GRO] 옵션을 비활성화할 인터페이스를 제어하는 정규식이에요. 워크로드 인터페이스(보통 cali...)와는 매칭되면 안 돼요.
스키마 정규식
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_BPFDISABLEGROFORIFACES
설명 Felix가 Generic Receive Offload [GRO] 옵션을 비활성화할 인터페이스를 제어하는 정규식이에요. 워크로드 인터페이스(보통 cali...)와는 매칭되면 안 돼요.
스키마 정규식
기본값 없음

BPFDisableUnprivileged

탭: 구성 파일

속성 값
키 BPFDisableUnprivileged
설명 활성화하면 Felix가 kernel.unprivileged_bpf_disabled sysctl을 설정해 권한 없는 BPF 사용을 막아요. 덕분에 권한 없는 사용자는 Calico의 BPF 맵에 접근할 수 없고, Calico를 방해하는 자체 BPF 프로그램을 삽입할 수도 없어요.
스키마 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요.
기본값 true

탭: 환경 변수

속성 값
키 FELIX_BPFDISABLEUNPRIVILEGED
설명 활성화하면 Felix가 kernel.unprivileged_bpf_disabled sysctl을 설정해 권한 없는 BPF 사용을 막아요. 덕분에 권한 없는 사용자는 Calico의 BPF 맵에 접근할 수 없고, Calico를 방해하는 자체 BPF 프로그램을 삽입할 수도 없어요.
스키마 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요.
기본값 true

BPFEnabled

탭: 구성 파일

속성 값
키 BPFEnabled
설명 활성화하면 Felix가 BPF 데이터플레인을 사용해요.
스키마 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요.
기본값 false

탭: 환경 변수

속성 값
키 FELIX_BPFENABLED
설명 활성화하면 Felix가 BPF 데이터플레인을 사용해요.
스키마 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요.
기본값 false

BPFEnforceRPF

탭: 구성 파일

속성 값
키 BPFEnforceRPF
설명 인터페이스별 또는 전역 설정과 무관하게, BPF 프로그램이 붙은 모든 호스트 인터페이스에 strict RPF를 강제해요. 가능한 값은 Disabled, Strict, Loose예요.
스키마 Disabled, Loose, Strict 중 하나
기본값 Loose

탭: 환경 변수

속성 값
키 FELIX_BPFENFORCERPF
설명 인터페이스별 또는 전역 설정과 무관하게, BPF 프로그램이 붙은 모든 호스트 인터페이스에 strict RPF를 강제해요. 가능한 값은 Disabled, Strict, Loose예요.
스키마 Disabled, Loose, Strict 중 하나
기본값 Loose

BPFExcludeCIDRsFromNAT

탭: 구성 파일

속성 값
키 BPFExcludeCIDRsFromNAT
설명 호스트가 직접 처리하도록 NAT 해석에서 제외할 CIDR 목록이에요. 대표적인 활용 사례는 노드 로컬 DNS 캐시예요.
스키마 쉼표로 구분된 CIDR 목록
기본값 없음

탭: 환경 변수

속성 값
키 FELIX_BPFEXCLUDECIDRSFROMNAT
설명 호스트가 직접 처리하도록 NAT 해석에서 제외할 CIDR 목록이에요. 대표적인 활용 사례는 노드 로컬 DNS 캐시예요.
스키마 쉼표로 구분된 CIDR 목록
기본값 없음

BPFExportBufferSizeMB

탭: 구성 파일

속성 값
키 BPFExportBufferSizeMB
설명 BPF 모드에서 felix에게 BPF 이벤트를 보낼 때 사용하는 버퍼 크기를 제어해요.
스키마 정수
기본값 1

탭: 환경 변수

속성 값
키 FELIX_BPFEXPORTBUFFERSIZEMB
설명 BPF 모드에서 felix에게 BPF 이벤트를 보낼 때 사용하는 버퍼 크기를 제어해요.
스키마 정수
기본값 1

BPFExtToServiceConnmark

탭: 구성 파일

속성 값
키 BPFExtToServiceConnmark
설명 BPF 모드에서 외부 클라이언트에서 로컬 서비스로 향하는 커넥션에 설정되는 32비트 mark를 제어해요. 이 mark로 그 커넥션의 패킷이 호스트 내부에서 어떻게 라우팅되는지, RPF 검사가 라우팅을 어떻게 해석하는지 제어할 수 있어요.
스키마 정수
기본값 0

탭: 환경 변수

속성 값
키 FELIX_BPFEXTTOSERVICECONNMARK
설명 BPF 모드에서 외부 클라이언트에서 로컬 서비스로 향하는 커넥션에 설정되는 32비트 mark를 제어해요. 이 mark로 그 커넥션의 패킷이 호스트 내부에서 어떻게 라우팅되는지, RPF 검사가 라우팅을 어떻게 해석하는지 제어할 수 있어요.
스키마 정수
기본값 0

BPFExternalServiceMode

탭: 구성 파일

속성 값
키 BPFExternalServiceMode
설명 BPF 모드에서 클러스터 밖에서 서비스(node port와 cluster IP)로 들어온 커넥션을 원격 워크로드로 전달하는 방식을 제어해요. "Tunnel"로 설정하면 요청과 응답 트래픽이 모두 터널링되어 원격 노드로 전달돼요. "DSR"로 설정하면 요청 트래픽은 터널링되지만 응답 트래픽은 원격 노드에서 직접 전송돼요. "DSR" 모드에서는 원격 노드가 ingress 노드의 IP를 사용하는 것처럼 보이는데, 관대한(permissive) L2 네트워크가 필요해요.
스키마 dsr, tunnel 중 하나
기본값 tunnel

탭: 환경 변수

속성 값
키 FELIX_BPFEXTERNALSERVICEMODE
설명 BPF 모드에서 클러스터 밖에서 서비스(node port와 cluster IP)로 들어온 커넥션을 원격 워크로드로 전달하는 방식을 제어해요. "Tunnel"로 설정하면 요청과 응답 트래픽이 모두 터널링되어 원격 노드로 전달돼요. "DSR"로 설정하면 요청 트래픽은 터널링되지만 응답 트래픽은 원격 노드에서 직접 전송돼요. "DSR" 모드에서는 원격 노드가 ingress 노드의 IP를 사용하는 것처럼 보이는데, 관대한(permissive) L2 네트워크가 필요해요.
스키마 dsr, tunnel 중 하나
기본값 tunnel

BPFForceTrackPacketsFromIfaces

탭: 구성 파일

속성 값
키 BPFForceTrackPacketsFromIfaces
설명 BPF 모드에서 이 인터페이스들에서 들어온 트래픽이 Calico의 iptables NOTRACK 규칙을 건너뛰도록 강제해, 해당 인터페이스의 트래픽을 Linux conntrack이 추적하도록 허용해요. Calico 패브릭에 사용되지 않는 인터페이스에만 사용해야 해요. 예를 들어 Calico 네트워킹을 쓰지 않는 컨테이너를 위한 docker 브리지 장치가 있어요.
스키마 쉼표로 구분된 문자열 목록이며, 각 항목은 정규식 ^[a-zA-Z0-9:._+-]{1,15}$과 일치해요
기본값 docker+

탭: 환경 변수

속성 값
키 FELIX_BPFFORCETRACKPACKETSFROMIFACES
설명 BPF 모드에서 이 인터페이스들에서 들어온 트래픽이 Calico의 iptables NOTRACK 규칙을 건너뛰도록 강제해, 해당 인터페이스의 트래픽을 Linux conntrack이 추적하도록 허용해요. Calico 패브릭에 사용되지 않는 인터페이스에만 사용해야 해요. 예를 들어 Calico 네트워킹을 쓰지 않는 컨테이너를 위한 docker 브리지 장치가 있어요.
스키마 쉼표로 구분된 문자열 목록이며, 각 항목은 정규식 ^[a-zA-Z0-9:._+-]{1,15}$과 일치해요
기본값 docker+

BPFHostConntrackBypass

탭: 구성 파일

속성 값
키 BPFHostConntrackBypass
설명 BPF 모드에서 워크로드와 서비스에 대해 Linux conntrack을 우회할지 제어해요.
스키마 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요.
기본값 false

탭: 환경 변수

속성 값
키 FELIX_BPFHOSTCONNTRACKBYPASS
설명 BPF 모드에서 워크로드와 서비스에 대해 Linux conntrack을 우회할지 제어해요.
스키마 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요.
기본값 false

BPFHostNetworkedNATWithoutCTLB

탭: 구성 파일

속성 값
키 BPFHostNetworkedNATWithoutCTLB
설명 BPF 모드에서 Felix가 CTLB 없이 NAT을 수행할지 제어해요. 이 값과 BPFConnectTimeLoadBalancing이 함께 CTLB 동작을 결정해요.
스키마 Disabled, Enabled 중 하나
기본값 Enabled

탭: 환경 변수

속성 값
키 FELIX_BPFHOSTNETWORKEDNATWITHOUTCTLB
설명 BPF 모드에서 Felix가 CTLB 없이 NAT을 수행할지 제어해요. 이 값과 BPFConnectTimeLoadBalancing이 함께 CTLB 동작을 결정해요.
스키마 Disabled, Enabled 중 하나
기본값 Enabled

BPFIPFragTimeout

탭: 구성 파일

속성 값
키 BPFIPFragTimeout
설명 BPF 모드에서 IP 조각 재조립(reassembly) 타임아웃을 제어해요. 조각난 IP 패킷의 모든 조각이 도착하기까지 BPF 데이터플레인이 기다리는 최대 시간으로, 이 시간이 지나면 조각을 폐기해요. 설정하지 않으면 Linux 커널 sysctl인 net.ipv4.ipfrag_time에서 값을 읽어요(기본값 30초).
스키마 초 (부동소수점)
기본값 0 (0s)

탭: 환경 변수

속성 값
키 FELIX_BPFIPFRAGTIMEOUT
설명 BPF 모드에서 IP 조각 재조립(reassembly) 타임아웃을 제어해요. 조각난 IP 패킷의 모든 조각이 도착하기까지 BPF 데이터플레인이 기다리는 최대 시간으로, 이 시간이 지나면 조각을 폐기해요. 설정하지 않으면 Linux 커널 sysctl인 net.ipv4.ipfrag_time에서 값을 읽어요(기본값 30초).
스키마 초 (부동소수점)
기본값 0 (0s)

BPFIPFragmentReassemblyEnabled

탭: 구성 파일

속성 값
키 BPFIPFragmentReassemblyEnabled
설명 외부 네트워크에서 들어온 순서가 뒤섞인 IP 조각을 재조립하는 BPF 프로그램을 Felix가 로드할지 제어해요. 이 프로그램은 5.10보다 새로운 커널이 필요해요. 활성화(기본값) 상태에서 프로그램 로드에 실패하면, 사용자가 false로 설정할 때까지 Felix가 not-ready를 보고해요. false이면 외부에서 들어온 조각난 패킷은 폐기돼요.
스키마 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요.
기본값 true

탭: 환경 변수

속성 값
키 FELIX_BPFIPFRAGMENTREASSEMBLYENABLED
설명 외부 네트워크에서 들어온 순서가 뒤섞인 IP 조각을 재조립하는 BPF 프로그램을 Felix가 로드할지 제어해요. 이 프로그램은 5.10보다 새로운 커널이 필요해요. 활성화(기본값) 상태에서 프로그램 로드에 실패하면, 사용자가 false로 설정할 때까지 Felix가 not-ready를 보고해요. false이면 외부에서 들어온 조각난 패킷은 폐기돼요.
스키마 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요.
기본값 true

BPFJITHardening

탭: 구성 파일

속성 값
키 BPFJITHardening
설명 BPF JIT hardening을 제어해요. "Auto"로 설정하면 현재 값이 2(성능을 해치는 strict 모드)임을 감지했을 때 JIT hardening을 1로 설정해요. "Strict"로 설정하면 Felix가 JIT hardening 설정을 수정하지 않아요.
스키마 Auto, Strict 중 하나
기본값 Auto

탭: 환경 변수

속성 값
키 FELIX_BPFJITHARDENING
설명 BPF JIT hardening을 제어해요. "Auto"로 설정하면 현재 값이 2(성능을 해치는 strict 모드)임을 감지했을 때 JIT hardening을 1로 설정해요. "Strict"로 설정하면 Felix가 JIT hardening 설정을 수정하지 않아요.
스키마 Auto, Strict 중 하나
기본값 Auto

BPFKubeProxyHealthzPort

더 알아보기 (Learn more)

Felix 구성 옵션 전체는 Felix 구성 레퍼런스의 이전·다음 파트에서 이어져요. BPF 데이터플레인을 처음 켤 때는 BPFEnabled부터 확인하고, 서비스 포워딩 방식은 BPFExternalServiceMode로 조정해 보세요.