aya template program types
節錄:aya-template/cargo-generate.toml at 6580d77fa4229f727363a6dca6d0f7a6e6f77aec · aya-rs/aya-template · GitHub
choices = [
"cgroup_skb", // 3
"cgroup_sockopt", // 3
"cgroup_sysctl", // 3
"classifier", // 9
"fentry", // 8
"fexit", // 8
"kprobe", // 4
"kretprobe", // 4
"lsm", // 5
"perf_event", // 10
"raw_tracepoint", // 7
"sk_msg", // 6
"sock_ops", // 6
"socket_filter", // 2
"tp_btf", // 7
"tracepoint", // 7
"uprobe", // 4
"uretprobe", // 4
"xdp", // 1
]
Types 解釋
- XDP (eXpress Data Path)
- 用途:網路封包的快速處理和過濾
- 擷取層:OSI 第 2 層(資料連結層)和第 3 層(網路層)
- 使用場景:
- DDoS 防禦與緩解
- 封包過濾和轉發
- 負載平衡 (L4)
- 流量清洗
- 高效能網路監控:效能最好,延遲最低
- 在網路封包進入系統時就進行攔截和分析
- 適合處理大量的網路流量
socket_filter
- 用途:針對特定 socket 的封包過濾。最早出現在 Kernel 的 BPF Program Type,不允許修改封包內容,僅作可觀測性用途(Observability)
- 使用場景:
- 流量過濾(readonly)
- 流量統計(observability)
TCP Socket Programming 學習筆記 | 雷德麥的藏書閣
- cgroup 相關 (
cgroup_skb, cgroup_sockopt, cgroup_sysctl)
- 用途:容器和資源群組的網路控制
- 擷取層:取決於具體程式,通常是第 3 層到第 4 層
- 使用場景:
- 全名
cgroup_skb(Cgroup Socket Buffer)
- 控制與 cgroup(控制群組)相關的封包處理,例如限制某個 cgroup 內的應用程式能否發送或接收特定封包
cgroup_sockopt(Cgroup Socket Options)
- 允許 eBPF 變更 socket 屬性,例如修改 TCP 選項、影響連線設定等
cgroup_sysctl(Cgroup Sysctl)
- 攔截並修改
sysctl 變數,影響系統調校設定,例如 net.ipv4.tcp_syncookies
- 追蹤相關 (
kprobe, kretprobe, uprobe, uretprobe)
- 用途:核心和使用者空間函式的追蹤
- 不限於網路層面,可以追蹤系統任何層級的行為
- 使用場景:
- 全名
kprobe(kernel space probes 內核探針,攔截函式執行)
kretprobe (kernel return probes 內核回傳探針,攔截函式回傳值)
uprobe (user space probes)
uretprobe (userspace return probes)
- LSM (Linux Security Module)
- 用途:安全策略執行,透過 eBPF 增強 Linux 安全機制,如 SELinux、AppArmor,攔截並控制系統安全決策
- 系統層級的安全控制
- 使用場景:
sock_ops 和 sk_msg
- 用途:TCP 協議棧操作和優化
- 擷取層:OSI 第 4 層 (傳輸層)
- 使用場景:
- Tracepoint 相關 (
tracepoint, raw_tracepoint, tp_btf)
- 用途:核心事件追蹤
- 系統層級的事件監控
- 使用場景:
- 全名
tracepoint(內核追蹤點)
- 監控 Linux 內部的 tracepoint 事件(比
kprobe 穩定),適合分析系統行為
- 內核事件的參數與觸發條件、進程啟動、檔案存取等事件
raw_tracepoint(原始追蹤點)
- 比
tracepoint 更低階,適用於監控 Linux 內部事件(如系統呼叫)
tp_btf (BPF Type Format Tracepoint)
fentry / fexit
- 用途:比傳統
kprobe 更輕量,直接附加到核心函式出入口點,用來監控函式參數、回傳值與行為
- 使用場景:
- 核心函式的參數和回傳值
- 函式執行時間與觸發頻率
- 效能監控
- 行為追蹤
classifier
- 用途:TC (Traffic Control) 分類器
- 擷取層:OSI 第 2 層到第 4 層
- 使用場景:
- 流量分類
- QoS 實作
- 網路封包標記 (aka 可以修改封包)
perf_event
- 用途:效能事件監控,監測 CPU 和系統效能事件,如函式調用次數、記憶體存取頻率等
- 使用場景:
- CPU 使用率、記憶體存取資訊
- 進程的計時資訊(profiling)
- 效能計數器監控
- 系統效能分析
- 硬體事件追蹤
參考資料
延伸閱讀