eBPF
eBPF(extended Berkley Packet Filter)
カーネル空間で動作する仮想マシン
eBPF仮想マシン
BPF(Berkeley Packet Filter)
Linux Extended BPF (eBPF) Tracing Tools
できること
ソケット操作
ネットワーク制御
トンネリング
帯域制御
セキュリティ
トレーシング
フックできるカーネルイベントは下記に定義されている。
$ tcpdump -d -i lo src 127.0.0.1 and port 80
code:memo
(005) jeq #0x84 jt 8 jf 6 (007) jeq #0x11 jt 8 jf 16 (012) jeq #0x50 jt 15 jf 13 (014) jeq #0x50 jt 15 jf 16 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
確認用
Q. eBPF
Q. eBPFでできること
Q. eBPFのアーキテクチャ図
Q. BCC
eBPFでのプログラム例題
Q. eBPFを使ってPID、親PID、プログラム名、ファイル名を表示するプログラムを作ると
参考
bpfを使ったツール一覧, GitHub
特徴
イベント駆動なので無駄なく処理できる
非常に高速なネットワーク処理が可能である
自由度高く・詳細なメトリクス取得が可能である
関連
メモ