“커널을 다시 컴파일하지 않고도 커널 동작을 안전하게 관찰·변경할 수 있다.” 이게 eBPF가 지난 10년간 리눅스 인프라 분야에서 가장 큰 변화를 일으킨 이유입니다. 호스팅 서버 운영자도 이 기술을 알아두면 진단·보안·네트워킹 모든 면에서 무기가 늘어납니다.

eBPF — 커널 안에서 안전하게 관찰·실행


eBPF란

원래 BPF(Berkeley Packet Filter)는 1992년 tcpdump가 패킷 필터링하던 도구였습니다. 2014년 리눅스 커널에 확장된 형태(extended BPF)가 들어오며 단순 필터링을 넘어 커널 안에서 임의의 코드를 안전하게 실행할 수 있게 됐습니다.

핵심 특징:

  • In-kernel 실행 → 컨텍스트 스위치 없이 빠름
  • Verifier로 검증 → 잘못된 코드는 로드 자체가 거부
  • JIT 컴파일 → 거의 네이티브 속도
  • 이벤트 기반 → 시스템콜·네트워크·트레이스포인트 등 다양한 훅
  • Map 자료구조 → 커널↔유저공간 데이터 공유

왜 호스팅 운영자에게 중요한가

1) 운영 중에 바로 진단

재부팅이나 재컴파일 없이 라이브 시스템을 들여다봅니다. 다운타임 없이 문제 추적.

2) 거의 무료에 가까운 오버헤드

JIT 컴파일되어 함수 호출 한 번 추가 수준. 운영 환경에서 켜둘 수 있음.

3) 모듈러 확장

같은 인프라에서 모니터링·네트워킹·보안을 다양한 eBPF 도구로 조합.

4) 안전성 보장

Verifier가 코드를 검증해 무한 루프·잘못된 메모리 접근을 차단. 커널 패닉 위험 적음.


동작 흐름

1. 유저가 eBPF 프로그램 작성 (C 또는 BPF assembly)
2. clang으로 BPF 바이트코드 컴파일
3. bpf() 시스템콜로 커널에 로드
4. Verifier 검증 (수 ms)
5. JIT 컴파일러가 네이티브 코드로 변환
6. 지정된 hook point에서 트리거되어 실행
7. 결과는 eBPF Map에 저장
8. 유저공간 도구가 Map에서 읽어 표시

Hook Points — eBPF를 붙일 수 있는 위치

트레이싱 / 관찰

  • kprobes / kretprobes: 커널 함수 호출 시점·반환 시점
  • uprobes / uretprobes: 유저 공간 함수
  • tracepoints: 커널에 미리 정의된 안정적 훅
  • perf events: CPU 카운터·샘플링

네트워킹

  • XDP: NIC 드라이버 단 (가장 빠름, DDoS 방어에 활용)
  • TC: traffic control (egress·ingress)
  • socket filters: 소켓 레이어

보안 / 제어

  • LSM (Linux Security Module): 시스템 보안 정책
  • cgroup hooks: cgroup 단위 정책 강제
  • kfunc: 안전한 커널 함수 호출

실전 도구 1 — bpftrace (CLI 즉시 추적)

가장 진입 장벽이 낮은 도구. 한 줄로 시스템을 들여다봅니다.

# 가장 자주 실행되는 시스템콜
bpftrace -e 'tracepoint:syscalls:sys_enter_* { @[probe] = count(); }'

# 특정 프로세스가 여는 파일들
bpftrace -e 'tracepoint:syscalls:sys_enter_openat /comm == "nginx"/ { printf("%s\n", str(args->filename)); }'

# 디스크 I/O 지연 분포
bpftrace -e 'kprobe:blk_account_io_start { @start[arg0] = nsecs; }
             kprobe:blk_account_io_done /@start[arg0]/ {
               @latency = hist((nsecs - @start[arg0]) / 1000);
               delete(@start[arg0]);
             }'

마지막 명령은 디스크 I/O 지연을 마이크로초 단위 히스토그램으로 보여줍니다. 평소 운영에서는 보기 어려운 그래프입니다.


실전 도구 2 — bcc / BCC tools

bpftrace보다 더 정교한 도구 모음. 100+ 미리 작성된 진단 스크립트.

# 설치
apt install -y bpfcc-tools

# CPU 핫스팟
profile -F 99 -p $(pidof nginx)

# 느린 시스템콜
funclatency -i 5 do_sys_openat2

# TCP 재전송
tcpretrans

# 짧게 생기고 사라지는 프로세스 추적 (cron 등)
execsnoop -t

# 메모리 페이지 폴트
memleak -p $(pidof myapp)

/usr/share/bcc/tools/ 아래에 도구가 모여 있습니다. 어떤 도구가 어떤 문제에 좋은지는 Brendan Gregg의 BPF Performance Tools 책이 사실상 표준 참고서입니다.


실전 도구 3 — Cilium (네트워킹)

Kubernetes 네트워킹·보안에 eBPF를 적용한 솔루션. 다음을 eBPF 단에서 처리:

  • 서비스 로드밸런싱 (kube-proxy 대체)
  • 네트워크 정책 (Network Policy)
  • L7 (HTTP·gRPC) 정책
  • 옵저버빌리티 (Hubble)
# 클러스터의 모든 트래픽 흐름 실시간 관찰
hubble observe --follow

# 특정 파드의 정책 위반 시도 보기
hubble observe --pod nginx --verdict DROPPED

기존 iptables 기반 kube-proxy보다 5~10배 빠르고, L7 정책까지 통합되는 게 핵심 장점입니다.


실전 도구 4 — Tetragon (런타임 보안)

프로세스·파일·네트워크 행위를 실시간 추적해 위협을 탐지·차단:

# 모든 새 프로세스 + 인자 + 자격증명 추적
tetragon --tracing-policy /opt/tetragon/policies/process.yaml

전통적 EDR보다 가벼우면서 더 깊은 가시성. 호스팅 운영자가 컨테이너 환경의 권한 상승 시도·임의 코드 실행을 잡는 데 유용.


실전 도구 5 — Pixie / Parca (프로파일링)

  • Parca: continuous profiling — 운영 중 CPU 사용처를 항상 기록. on-CPU 플레임 그래프로 병목 추적.
  • Pixie: Kubernetes 옵저버빌리티 — eBPF로 HTTP·MySQL·Postgres·DNS 트래픽을 코드 수정 없이 관찰.

배포·코드 변경 없이 운영 중 시스템 깊이까지 보입니다.


XDP로 DDoS 방어

XDP(eXpress Data Path)는 NIC 드라이버 직후 단계에서 패킷을 처리합니다. 커널 네트워크 스택보다 빠릅니다.

// 단순화한 XDP DDoS 필터
SEC("xdp")
int drop_udp_floods(struct xdp_md *ctx) {
    void *data = (void *)(long)ctx->data;
    void *data_end = (void *)(long)ctx->data_end;
    struct ethhdr *eth = data;

    if (eth + 1 > data_end) return XDP_PASS;
    if (eth->h_proto != htons(ETH_P_IP)) return XDP_PASS;

    struct iphdr *ip = (void *)(eth + 1);
    if (ip + 1 > data_end) return XDP_PASS;

    if (ip->protocol == IPPROTO_UDP) {
        // UDP 플러드 감지 로직...
        return XDP_DROP;
    }
    return XDP_PASS;
}

Cloudflare는 자체 XDP 기반 시스템으로 단일 서버에서 수십 Mpps의 공격을 흡수합니다.


eBPF의 한계

만능은 아닙니다.

1) 커널 버전 의존성

훅 포인트·트레이스포인트가 커널 버전마다 다를 수 있음. 5.10+ LTS 권장.

2) Verifier 제약

복잡한 로직이 거부될 수 있음. 루프 제한·메모리 접근 검증 엄격.

3) 디버깅 어려움

잘못 동작하면 원인 찾기 어려움. printk 같은 디버깅 수단 제한적.

4) 보안 표면

잘못 작성된 eBPF가 시스템 안정성에 영향 줄 수 있음. 권한 관리 중요.

5) 학습 곡선

초기 진입 장벽 높음. bpftrace로 시작하는 게 무난.


호스팅 운영자에게 권하는 시작 순서

1주차 — bpftrace로 일상 진단

앞서 본 스크립트를 운영 서버에서 직접 실행해 봅니다. 안전한 read-only 추적부터.

2주차 — BCC tools로 깊은 분석

디스크 지연·메모리 누수·CPU 핫스팟 등 평소 보기 어려운 정보를 수집.

3주차 — Continuous Profiling 도입

Parca 또는 Pyroscope로 백그라운드 프로파일링. 향후 성능 회귀 추적의 기반.

4주차 — 네트워크 가시성

Pixie 또는 Hubble로 트래픽 가시화. 디버깅 시간을 1/10로 줄임.

추후 — Tetragon으로 보안 정책

프로세스·파일·네트워크 정책 강제. 컨테이너 환경에서 특히 강력.


마무리

eBPF는 호스팅 운영에서 “있으면 좋은 것”이 아닌 “곧 표준”이 되는 기술입니다. 기존 도구로 보이지 않던 것이 보이고, 보였지만 비용이 컸던 것을 거의 무료로 본다는 게 핵심 가치입니다.

TCP-80.NET의 전용서버는 최신 LTS 커널 기반으로 출고되어 eBPF 도구를 바로 사용할 수 있습니다. 인프라 모니터링 통합 가이드는 @tcp80net 텔레그램으로 안내합니다.