eBPF: 핵심은 관찰 가능성입니다

F5 에코시스템 | 2022년 6월 14일


가끔 멋진 기술이 실제 비즈니스 요구와 그 기술의 강점이 맞물리는 변곡점에 도달할 때가 있습니다. 이때 기술은 단순히 실현 가능한 수준을 넘어 실용적인 기술이 됩니다. Berkeley Packet Filter(BPF)는 최근 Linux 개발자들 사이에서 이러한 변곡점에 도달했습니다. BPF는 Linux 호스트에서 매우 효율적으로 가로채기와 처리를 수행하는 지점으로, 머지않아 Windows 서버로도 확장될 것으로 기대됩니다. 활용 가능한 데이터의 범위가 방대하여 사이트 신뢰성 엔지니어링(SRE) 운영 작업에 필요한 풀 스택 가시성을 직접적으로 높여 줍니다. 또한 보안 및 트래픽 관리와 관련된 과제를 해결하는 데에도 자연스럽게 부합합니다. 훅의 범위 역시 매우 넓어 관측 가능성, 보안 및 네트워크 전문가에게 유용한 BPF 애플리케이션 트리거 지점을 다양하게 제공합니다. BPF는 큰 비용 부담 없이 관측 가능성을 구현할 수 있는 적합한 기술입니다. 그리고 그 모든 것은 관측 가능성에서 시작됩니다.

BPF의 기본 설계 덕분에 BPF는 컴퓨팅 작업을 수행하는 데 있어 가능한 한 효율적인 방식에 가깝습니다(와트당 비용 기준). 더 좋은 점은 툴체인이 바이트코드를 대신 생성해 주므로, 저수준 어셈블리 언어와 같은 프로그래밍이 아니라 원하는 결과에 집중할 수 있다는 것입니다. 어떻게 가능할까요? 다음 두 가지 설계 특성 덕분에 BPF가 진가를 발휘합니다:

명령어 집합 설계

BPF의 소프트웨어 설계는 새롭게 등장하던 현대적 CPU 아키텍처를 의도적으로 본떠 만들어졌습니다. 실제로 프로세서 용어가 사용되는 이유는 BPF의 구성 요소와 용도를 정확하게 설명하기 때문입니다. BPF에는 레지스터와 명령어가 있으며, CPU가 직접 처리할 수 있도록 설계되었습니다. BSD 패킷 필터 설계(1992년)를 기반으로 하는 BPF는 오늘날의 레지스터 기반 CPU 아키텍처에 더 적합하도록 재설계된 패킷 캡처 필터 머신입니다. 이 설계는 2014년에 ‘Enhanced Berkeley Packet Filter’, 즉 eBPF가 Linux v3.18 커널에 도입되면서 자연스럽게 발전의 계기를 맞았습니다. 출시 초기에는 eBPF를 Classic Berkeley Packet Filter(cBPF)와 구분하는 것이 중요했습니다. 하지만 현재 지원되는 모든 커널 버전에 2014년의 개선 사항이 포함되어 있으므로 오늘날에는 이러한 구분이 그다지 중요하지 않습니다. 주목할 만한 개선 사항으로는 더 넓어진 레지스터(32비트에서 64비트로 확장되어 캐시 라인 또는 클록 사이클당 더 많은 작업을 처리할 수 있음), 더 많아진 레지스터(2개에서 10개로 늘어나 현대적 CPU 레지스터와 커널 ABI 간의 일대일 매핑이 확대됨), 그리고 BPF 프로그램을 더 안전하고 유용하게 만드는 몇 가지 추가 명령어 집합 개선 사항이 있습니다.

링크 계층

BPF는 네트워크 탭과 패킷 필터로 구성됩니다. 탭은 유선망에서 특정 네트워크 인터페이스로 패킷이 들어올 때 데이터 링크 계층에서 작동합니다. 탭은 필터가 검사할 수 있도록 패킷을 복사합니다. 이 삽입 지점 덕분에 BPF는 Linux 호스트의 네트워크 경로 전체를 파악할 수 있습니다. 인그레스 트래픽의 경우 호스트 프로세서가 처리를 시작하기 전이며, 이그레스 트래픽의 경우 호스트를 떠나기 위해 유선망으로 전송되기 직전입니다. 이 다이어그램은 BPF가 데이터 링크 계층에서 인그레스 패킷 경로와 교차하는 모습을 보여 줍니다.

인그레스 경로

사용 가능한 데이터의 범위는 방대하며, SRE 운영 작업을 위한 풀 스택 가시성을 직접적으로 높여 줍니다. 이 예에서는 가장 일반적으로 사용되는 몇 가지 필드를 IPv4 헤더에서 살펴봅니다.

인그레스 경로

이 데이터를 사용하여 패킷 필터링을 사용자 지정하는 정책을 정의할 수 있습니다. 다음 정책은 특정 대상 IP 주소로 전송되는 TCP 패킷을 필터링합니다.

관측 가능성을 위해 eBPF를 활용하면 하나로 두 가지 효과를 얻을 수 있습니다. 관측된 데이터를 관측 이외의 용도, 예를 들어 트래픽 라우팅이나 보안에도 활용할 수 있습니다.

앞서 공유한 데이터 세트를 다시 살펴보면, Linux 호스트의 트래픽 인그레스 경로를 관찰하는 데 사용되는 데이터 중 일부는 다른 용도로도 유용합니다. 예를 들어 소스 IP, 대상 IP, 대상 호스트 및 포트는 인그레스 트래픽 라우팅과 액세스 제한 모두에 유용합니다.

용도와 관계없이 모든 것은 BPF 탭이 패킷을 복사하는 것에서 시작됩니다. 복사본이 생성되면 데이터를 메모리에 저장할 수 있으며(자세한 내용은 BPF 맵 참조), 이후 텔레메트리 스트림으로 내보내는 동시에 정책 및 필터링 작업을 지정하는 다른 BPF 프로그램에서도 활용할 수 있습니다. 바로 이 지점에서 관측 가능성이 트래픽 관리와 보안으로 확장됩니다. BPF의 탁월한 효율성을 최대한 활용하려면 어떤 데이터가 필요하고 그 데이터를 어떻게 사용할지 명확히 파악하는 것이 출발점입니다. 이 시리즈의 다음 게시물에서는 제 동료 Muhammad Waseem Sarwar가 Linux 네트워크 스택의 여러 위치에서 BPF를 프로그래밍하는 방법을 살펴볼 예정입니다.




공유

작성자 소개

관련 블로그 게시물

AI 시대의 새로운 애플리케이션 제공 원칙으로 복잡성 극복하기
F5 에코시스템 | 2025. 02. 20.

AI 시대의 새로운 애플리케이션 제공 원칙으로 복잡성 극복하기

보안, 일관성, 완전 자동화에 중점을 둔 애플리케이션 제공의 새로운 6가지 원칙을 도입하여 복잡성 없이 하이브리드 멀티클라우드의 유연성을 누리세요.

디지털 혁신을 가속화하는 6가지 기술 역량
F5 에코시스템 | 2023. 01. 05.

디지털 혁신을 가속화하는 6가지 기술 역량

오늘날의 엔터프라이즈 아키텍처에는 기술 변화를 주도하는 데 핵심적인 민첩성, 확장성, 보안 및 관찰 가능성이 부족하지만, 이 여섯 가지 핵심 역량은 기업이 디지털 혁신 전반에 걸쳐 위험과 과제를 관리하는 데 도움이 될 것입니다.

하이브리드 근무가 ID 중심 보안으로의 전환을 이끌고 있습니다
F5 에코시스템 | 2021. 08. 16.

하이브리드 근무가 ID 중심 보안으로의 전환을 이끌고 있습니다

자동화와 디지털화의 폭발적인 성장에 하이브리드 근무 모델로의 전환 추세가 더해지면서, IP 기반 보안에서 벗어나 ID 기반 액세스 전략으로 전환하는 움직임이 더욱 가속화될 것입니다.

관점의 현대화: 애플리케이션에서 경험으로
F5 에코시스템 | 2021. 04. 05.

관점의 현대화: 애플리케이션에서 경험으로

그리스와 로마의 신들처럼, 여러 신화에서도 동일한 존재가 다양한 모습으로 나타나는 것을 볼 수 있습니다. 본질적으로 각각의 화신은 기존 존재가 새로운 얼굴로 드러난 것입니다. 디지털 세계에서도 이와 비슷한 양상이 나타납니다. 우리가 ‘애플리케이션’이라고 부르는 것들은 흔히 기존 기능이 새로운 형태로 구현된 것이라 볼 수 있습니다.

코로나19 이후 기업 결제의 디지털 전환
F5 에코시스템 | 2020. 06. 01.

코로나19 이후 기업 결제의 디지털 전환

디지털 결제는 과거의 현금만큼이나 보편화되었습니다. 코로나19 팬데믹으로 인한 봉쇄 조치는 소비자의 디지털 결제 서비스 의존도를 더욱 빠르게 높였습니다. 기업의 디지털 결제 도입 역시 가속화되었습니다. 대중을 상대로 영업하든 하지 않든 기업에는 여전히 지급해야 할 대금과 받아야 할 대금이 있기 때문입니다.

공급망 해킹과 보안에서 하드웨어의 역할
F5 에코시스템 | 2018. 10. 08.

공급망 해킹과 보안에서 하드웨어의 역할

수석 아키텍트 Dave Schmitt와 CTO 오피스가 최근 Bloomberg의 Super Micro 관련 기사를 계기로 하드웨어 보안 전문성의 중요성을 되짚어봅니다. 또한 이 글에서는 시스템이 안전하게 보호되고 있는지 확인하기 위해 공급업체에 물어봐야 할 질문도 소개합니다.