Linux bpftool이란? eBPF 프로그램과 BPF Map을 관리하는 공식 도구 완벽 이해

Linux에서 eBPF를 사용할 때 프로그램을 작성하는 것만큼 중요한 것이 현재 커널에 어떤 eBPF 프로그램이 로드되어 있는지 확인하고 관리하는 작업입니다.

이를 위해 Linux Kernel에서 공식적으로 제공하는 관리 도구가 바로 bpftool입니다.

bpftool은 현재 실행 중인 eBPF 프로그램, BPF Map, 링크(Link), BTF(BPF Type Format), 네트워크 연결 상태 등을 확인하고 관리할 수 있는 강력한 CLI(Command Line Interface) 도구입니다.

운영 서버에서 eBPF를 사용하는 경우 거의 필수적으로 사용하는 도구이며, Cilium, Falco, Katran, BCC, bpftrace 같은 다양한 eBPF 기반 프로젝트에서도 내부적으로 활용됩니다.

이번 글에서는 bpftool의 개념과 구조, 주요 기능, 설치 방법, 자주 사용하는 명령어, 그리고 실무 활용 사례를 자세히 알아보겠습니다.

Linux bpftool이란?

bpftool은 Linux Kernel의 eBPF 객체를 조회하고 관리하기 위한 공식 명령줄 도구입니다.

기본 구조는 다음과 같습니다.

Administrator

↓

bpftool

↓

BPF System Call

↓

Linux Kernel

↓

Program / Map / Link / BTF

사용자는 bpftool을 통해 커널 내부의 eBPF 정보를 직접 확인할 수 있습니다.

bpftool이 필요한 이유

예를 들어 운영 서버에서 다음과 같은 상황이 발생했다고 가정해 보겠습니다.

  • 어떤 eBPF 프로그램이 실행 중인지 모름
  • XDP가 제대로 적용되었는지 확인 필요
  • BPF Map 데이터 확인 필요
  • 메모리를 사용하는 BPF 객체 확인 필요

이런 경우 bpftool 하나로 대부분의 정보를 확인할 수 있습니다.

bpftool의 주요 기능

bpftool은 다음과 같은 기능을 제공합니다.

기능설명
Program 조회로드된 eBPF 프로그램 확인
Map 조회BPF Map 확인
Link 조회Hook 연결 상태 확인
BTF 조회BTF 정보 확인
Network 조회XDP, TC 연결 확인
Feature 조회Kernel 지원 기능 확인

운영 환경에서 가장 많이 사용하는 기능은 Program, Map, Net입니다.

bpftool 설치

Ubuntu

sudo apt update

sudo apt install bpftool

RHEL 계열

sudo dnf install bpftool

버전 확인

bpftool version

Program 확인

현재 Kernel에 로드된 eBPF 프로그램

sudo bpftool prog show

출력 예시

1: tracing

2: xdp

3: tc

4: socket_filter

Program ID와 타입을 확인할 수 있습니다.

특정 Program 상세 보기

Program ID가 5인 경우

sudo bpftool prog show id 5

출력 예시

name my_xdp

type xdp

loaded_at

uid

map_ids

프로그램의 상세 정보를 확인할 수 있습니다.

Map 확인

현재 생성된 Map 조회

sudo bpftool map show

예시

id 10

type hash

key 4B

value 16B

Map 종류와 크기를 확인할 수 있습니다.

Map 데이터 확인

Map 내용 출력

sudo bpftool map dump id 10

출력 예시

key:

01 00 00 00

value:

64 00 00 00

실제 저장된 데이터를 확인할 수 있습니다.

Network 정보 확인

현재 XDP와 TC 연결 확인

sudo bpftool net

출력 예시

xdp:

eth0

prog_id 12

인터페이스별 eBPF 연결 상태를 확인할 수 있습니다.

Link 확인

현재 Link 정보

sudo bpftool link show

출력 예시

id 5

prog 12

type tracing

어떤 Program이 어떤 Hook에 연결되어 있는지 확인할 수 있습니다.

BTF 확인

Kernel의 BTF 정보 확인

sudo bpftool btf show

BTF는 eBPF 프로그램이 Kernel 구조체를 안전하게 참조하기 위한 메타데이터입니다.

Kernel 기능 확인

현재 Kernel이 지원하는 eBPF 기능

sudo bpftool feature

예시

Kernel Helpers

Map Types

Program Types

지원 가능한 기능을 한 번에 확인할 수 있습니다.

Program Pin 확인

Pinned Program 확인

sudo bpftool prog show pinned /sys/fs/bpf

Pinned 객체를 사용하는 환경에서는 자주 활용됩니다.

실무에서 자주 사용하는 명령어

버전 확인

bpftool version

Program 조회

sudo bpftool prog show

Map 조회

sudo bpftool map show

Map 데이터 확인

sudo bpftool map dump id 10

Network 확인

sudo bpftool net

Link 확인

sudo bpftool link show

Kernel 기능 확인

sudo bpftool feature

BTF 확인

sudo bpftool btf show

bpftool과 bpftrace의 차이

항목bpftoolbpftrace
목적eBPF 관리eBPF 추적
Program 조회가능제한적
Map 조회가능불가능
실시간 이벤트불가능가능
운영 관리매우 적합분석 중심

bpftool은 관리 도구이고, bpftrace는 분석 도구라는 점이 가장 큰 차이입니다.

실무 사례

예를 들어 운영 서버에서 XDP 기반 DDoS 방어 프로그램을 배포했다고 가정해 보겠습니다.

다음과 같은 절차로 확인할 수 있습니다.

  1. bpftool prog show로 XDP 프로그램이 정상적으로 로드되었는지 확인
  2. bpftool net으로 네트워크 인터페이스 연결 여부 확인
  3. bpftool map show로 생성된 BPF Map 확인
  4. bpftool map dump로 차단 대상 IP 데이터 확인
  5. bpftool feature로 Kernel 기능 지원 여부 확인

이러한 과정을 통해 eBPF 프로그램이 정상적으로 동작하는지 빠르게 점검할 수 있습니다.

자주 묻는 질문

bpftool은 반드시 설치해야 하나요?

eBPF를 사용하는 환경에서는 설치를 권장합니다. 특히 운영 서버에서 프로그램과 BPF Map을 확인하거나 문제를 진단할 때 매우 유용합니다.

bpftool과 BCC는 어떤 차이가 있나요?

BCC는 eBPF 프로그램을 개발하고 실행하기 위한 프레임워크입니다. 반면 bpftool은 이미 로드된 eBPF 프로그램과 관련 객체를 조회하고 관리하는 공식 도구입니다.

bpftool은 운영 서버에서도 사용할 수 있나요?

가능합니다. 대부분의 조회 명령은 시스템에 큰 부담을 주지 않으며, 실제 운영 환경에서도 상태 확인과 문제 분석을 위해 자주 사용됩니다.

마무리

Linux bpftool은 eBPF 생태계에서 가장 중요한 관리 도구입니다. 로드된 eBPF 프로그램과 BPF Map, Link, XDP, TC, BTF 정보를 한곳에서 확인할 수 있어 운영 환경의 상태 점검과 문제 해결에 필수적입니다. bpftrace가 분석 도구라면 bpftool은 관리 도구이며, 두 가지를 함께 활용하면 eBPF 기반 시스템을 더욱 효과적으로 운영할 수 있습니다.

댓글 남기기