eBPF
eBPF(extended Berkley Packet Filter)
Linuxカーネル内でのイベント発生時に動作する処理を、安全・手軽に組み込むための仕組み
カーネル空間で動作する仮想マシン
eBPF仮想マシン
BPF(Berkeley Packet Filter)
Linux Extended BPF (eBPF) Tracing Tools
できること
ソケット操作
ネットワーク制御
トンネリング
帯域制御
セキュリティ
トレーシング
フックできるカーネルイベントは下記に定義されている。
bcc/kernel-versions.md at master · iovisor/bcc
$ tcpdump -d -i lo src 127.0.0.1 and port 80
code:memo
(000) ldh 12
(001) jeq #0x800 jt 2 jf 16
(002) ld 26
(003) jeq #0x7f000001 jt 4 jf 16
(004) ldb 23
(005) jeq #0x84 jt 8 jf 6
(006) jeq #0x6 jt 8 jf 7
(007) jeq #0x11 jt 8 jf 16
(008) ldh 20
(009) jset #0x1fff jt 16 jf 10
(010) ldxb 4*(14&0xf)
(011) ldh x + 14
(012) jeq #0x50 jt 15 jf 13
(013) ldh x + 16
(014) jeq #0x50 jt 15 jf 16
(015) ret #262144
(016) ret #0
eXpress Data Path (XDP)
Linuxカーネル内に実装した高速パケット処理基盤
bpfcc-tools
code:memo
The following additional packages will be installed:
ieee-data python3-bpfcc python3-netaddr
Suggested packages:
ipython3 python-netaddr-docs
The following NEW packages will be installed:
bpfcc-tools ieee-data python3-bpfcc python3-netaddr
$ execsnoop-bpfcc -UTx
eBPFをDocker使えるようにする
eBPFをWSLで使えるようにする
trcdump
bcc
bpftrace
確認用
Q. eBPF
Q. eBPFでできること
Q. eBPFのアーキテクチャ図
Q. BCC
eBPFでのプログラム例題
Q. eBPFを使ってPID、親PID、プログラム名、ファイル名を表示するプログラムを作ると
参考
eBPFに3日で入門した話 - CADDi Tech Blog
The BSD Packet Filter: A New Architecture for User-level Packet Capture
(1) KubesploitさんはTwitterを使っています: 「Learn how to use eBPF and the Security Profiles Operator to automatically generate seccomp profiles, a Linux kernel security feature for Kubernetes ➜ https://t.co/WQHd4uWxkx https://t.co/pj5nbBPjsm」 / Twitter
Linux eBPF Tracing Tools
Secure your Kubernetes deployments with eBPF | Red Hat Developer
eBPFとは何か、なぜそれがオブザーバビリティに関係するのか? | New Relic
GitHub - iovisor/bcc: BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more
bpfを使ったツール一覧, GitHub
第688回 eBPFのコンパイラーに対応したツールでさまざまな挙動を可視化する | gihyo.jp
eBPF入門
特徴
イベント駆動なので無駄なく処理できる
非常に高速なネットワーク処理が可能である
自由度高く・詳細なメトリクス取得が可能である
★eBPF - 入門概要 編
eBPF - Introduction, Tutorials & Community Resources
「おいしくてつよくなる」eBPFのはじめかた/Learn eBPF - Speaker Deck
Linux eBPFトレーシング技術の概論とツール実装 - ゆううきブログ
eBPF in IETF protocols | NCS - Networking, Cybersecurity and Systems at UCLouvain
BPF and XDP Reference Guide — Cilium 1.15.0-dev documentation
関連
Kubernetes
libxdp
メモ
詳説 eBPF 概論編 - VA Linux エンジニアブログ
詳説 eBPF 実装編 - VA Linux エンジニアブログ
eBPF Deep Dive: Architecture and Safety Mechanisms
#パフォーマンス分析 #パケットフィルタリング #パフォーマンスチューニング