[2023년 기여형 - 이호연 개발자] Linux Kernel - BPF/XDP
BPF는 리눅스의 여러 서브시스템에서 범용적으로 활용되며, Tracing분야에서는 kprobe, tracepoints 등을 이용한 성능 측정이나 모니터링에 활용되고, Network분야에서는 XDP, TC 레벨에서의 패킷 처리 등에 활용된다.
개발자 주요 경력
2018.11 ~ Linux kernel - BPF/XDP 프로젝트 contributor 활동 중
2019.06 ~ 2020.12 공개 소프트웨어 글로벌 전담 개발자
2017.09 ~ 2018.08 디브레인 사이언스 공동 창업 (리드 클라우드 엔지니어)
BPF 성능 분석 도구 (BPF Performance Tools 번역서 저술, 프로그래밍 인사이트, 2021.07)
SAMSUNG SOSCON 2019 "Faster packet processing in Linux: XDP" 발표 (2019.10)
USENIX - Vault'19 "Performance analysis in Linux Storage Stack with BPF" 발표 (2019.02)
Kong: Becoming a King of API Gateways 공동 저자 (2018.04)
개발자 전문 분야
Linux kernel, 클라우드
활동 커뮤니티
네트워크 개발자모임
활동 프로젝트 분야
Tracing, Network(클라우드)
프로젝트 목표
기존에 커널의 동작 과정을 변경하기 위해서는 커널 코드를 직접 수정하거나, 커널 내부에 코드를 주입하기 위해 Kprobe, Systemtap와 같은 모듈을 이용했어야만 했다. 이러한 방법의 문제점은, 변경되거나 주입할 코드를 매번 다시 빌드해야 해 번거로울뿐더러, 이러한 코드가 심각한 에러나 보안적 결함을 일으킬 수 있다는 점이다. 하지만, BPF 기술을 이용하면 코드 수정 없이 안전하게 동적으로 커널의 동작 과정을 변경할 수 있다.
BPF (Berkeley Packet Filter)는 커널 안에서 동작하는 경량화된 VM(Virtual Machine)이다. 커널의 BPF infrastructure를 이용해 런타임 중 커널 내의 여러 hook point에 안전하게 BPF 바이트코드를 삽입함으로써 커널의 동작 과정을 손쉽고 안전하게 수정할 수 있다. BPF는 리눅스의 여러 서브시스템에서 범용적으로 활용되고 있으며, Tracing 분야에서는 kprobe, tracepoints 등을 이용한 성능 측정이나 모니터링에 활용되고, Network 분야에서는 XDP, TC 레벨에서의 패킷 처리 등에 활용된다.
XDP (eXpress Data Path)는 리눅스 커널 내의 고성능의 programmable한 네트워크 data-path이다. XDP는 네트워크 스택에서 SW 상으로 접근할 수 있는 가장 낮은 단계인 드라이버가 패킷을 받는 시점에 있으며, 이 hook point에서 BPF infrastructure를 이용함으로써 커널의 수정 없이 네트워크 스택의 확장이 가능하다.
프로젝트 특징
- 커널 코드 수정 없이 안전하게 동적으로 커널의 동작 과정을 변경할 수 있음
- Tracing용 BPF 프로그램을 통한 리눅스 시스템 성능 분석 및 모니터링에 활용
- 매우 적은 오버헤드로 커널 내부의 다양한 지표 수집 가능 (PMU, perf 이벤트, 커널 함수 아규먼트 등)
- 네트워크 스택에 위치한 XDP hookpoint (L2)에서 BPF 프로그램을 통한 네트워크 스택의 확장 (패킷 처리, 필터링, 포워딩 등)
번호 | 제목 | 분야 | 작성 |
---|---|---|---|
304 | [2024년 기여형 - 구민구 개발자] Pypipo | 인공지능(AI) | 2024-05-24 |
303 | [2023년 기여형 - 조형관 개발자] GlueSQL | 빅데이터 | 2024-05-24 |
302 | [2023년 기여형 - 정대연 개발자] Node.js | 기타 | 2024-05-24 |
301 | [2023년 기여형 - 장기효 개발자] Cracking Vue.js | 기타 | 2024-05-24 |
300 | [2023년 기여형 - 장기영 개발자] react-multi-email, AXFrame | 기타 | 2024-05-24 |
299 | [2023년 기여형 - 임의상 개발자] Chromium | 기타 | 2024-05-24 |
298 | [2023년 기여형 - 이호연 개발자] Linux Kernel - BPF/XDP | 클라우드 | 2024-05-24 |
297 | [2023년 기여형 - 이평화 개발자] Guider | 기타 | 2024-05-24 |
296 | [2023년 기여형 - 이창희 개발자] Yorkie | 빅데이터 | 2024-05-24 |
295 | [2023년 기여형 - 이종열 개발자] Apache Zeppelin | 빅데이터 | 2024-05-24 |