본문 바로가기

[2020년 전담-이호연개발자] Linux Kernel BPF/XDP

danieltl 게시글 작성 시각 2020-07-24 23:58:32
글로벌 전문개발자 전담
Linux Kernel - BPF/XDP
이호연
BPF는 런타임 중 커널 내의 여러 hook point에 안전하게 코드를 삽입하는 기술로, 이를 이용함으로써 커널의 동작 과정을 손쉽게 수정할 수 있다.
BPF는 리눅스의 여러 서브시스템에서 범용적으로 활용되며, Tracing분야에서는 kprobe, tracepoints 등을 이용한 성능 측정이나 모니터링에 활용되고, Network분야에서는 XDP, TC 레벨에서의 패킷 처리 등에 활용된다.
2020 년
클라우드

ㆍ주요경력
2019.06 ~            공개 소프트웨어 글로벌 전담 개발자
2018.11 ~            Linux kernel - BPF/XDP 프로젝트 contributor 활동 중
2017.09 ~ 2018.08 디브레인 사이언스 공동 창업 (리드 클라우드 엔지니어)
 

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, 클라우드

 

 

ㆍ활동 커뮤니티
2019 공개SW 컨트리뷰톤 멘토, Kong / SEOUL 발표 등

 

 

ㆍ활동 프로젝트 분야
Tracing, Network(클라우드)

 

 

ㆍ프로젝트명
Linux Kernel - BPF/XDP

 

 

ㆍ프로젝트 개요
기존에 커널의 동작 과정을 변경하기 위해서는 커널 코드를 직접 수정하거나, 커널 내부에 코드를 주입하기 위해 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 프로그램을 통한 네트워크 스택의 확장 (패킷 처리, 필터링, 포워딩 등)

 

 

전문개발자 프로젝트 - 번호, 제목, 분야, 조회수, 작성
번호 제목 분야 작성
154 [2020년 파트-박경호개발자] Status/whisper 모바일 2020-07-27
153 [2020년 파트-이평화개발자] 가이더 기타 2020-07-27
152 [2020년 파트-김관영개발자] Vuls 보안 2020-07-27
151 [2020년 파트-정훈섭개발자] TAU 모바일 2020-07-27
150 [2020년 파트-안영샘개발자] 3D Big Data Visualization Tool by Unity3D Package 가상/증강현실 2020-07-27
149 [2020년 파트-배재용개발자] Chromium / Blink 기타 2020-07-27
148 [2020년 전담-강명구개발자] React Naitve Modules (dooboo-ui) 모바일 2020-07-26
147 [2020년 전담-유송이개발자] Flutter Moum 모바일 2020-07-26
146 [2020년 전담-임완섭개발자] Zkopru(Ethereum 9 3/4) 블록체인 2020-07-25
145 [2020년 전담-이호연개발자] Linux Kernel BPF/XDP 클라우드 2020-07-24
맨 위로
맨 위로