Linux 核心設計: 透過 eBPF 觀察作業系統行為 === :::warning 注意!這是上課筆記 ::: :::info 原始課程在這裡 - [影片](https://www.youtube.com/watch?v=UmCnh6mELwA) - [講義](https://hackmd.io/@sysprog/linux-ebpf?type=view) Original by [jserv](http://wiki.csie.ncku.edu.tw/User/jserv) ::: --- | Section | Time| Description | | -------- | -------- | -------- | | 1 | [00:00:11](https://youtu.be/UmCnh6mELwA?si=kqRqXcW6sZnqmwQ8&t=11) | 1. 如何學習 Linux kernel. (不要 舉燭,要用系統的方式學習)<br>2. 介紹 「你所不知道的C語言」<br>3. 介紹 「現代處理器設計」<br>4. 介紹 「手機裡頭的 ARM 處理器」<br>5. 介紹 「作業系統概念與文藝復興」 | | 2 | [00:24:50](https://youtu.be/UmCnh6mELwA?si=7NQCCSuwxCGBViQf&t=1490) | 1. Dynamic tracing<br>2. 活體分析。<br>3. DTrace / SystemTap / ktap(已經無維護). | | 3 | [00:41:50](https://youtu.be/UmCnh6mELwA?si=b_EiDLktwAs5qpZE&t=2510) | 1. demo<br>2. 使用 strace 執行時間會變長 | | 4 | [00:48:00](https://youtu.be/UmCnh6mELwA?si=rc2L75nzzegc0oQO&t=2880) | 1. Linux bcc / BPF Tracing Tools<br>2. Linux 效能分析:perf<br>3. 馬拉松按碼錶 和 百米賽跑按碼錶。<br>4. ptrace | | 5 | [00:59:09](https://youtu.be/UmCnh6mELwA?si=A4O12jJ2CEtNTkX_&t=3549) | 1. 早期 linux debug 經驗談。<br>2. eBPF is in-kernel virtual machine.<br>3. XDP : 偵測惡意封包<br>4. 奇怪的針灸同事。<br>5. linux elf verifier :對執行檔做簽章和驗證。 | | 6 | [01:16:00](https://youtu.be/UmCnh6mELwA?si=NiFXtl6oFSRXFMoS&t=4560) | 1. kprobes : 執行時期安插程式碼, bytecode 在安全的 sandbox 上執行。<br>2. 從封包過濾 的 背景知識開始講起。<br>3. tcpdump<br>4. demo<br>5. 解析封包:ARP / IP / expression / -d / -dd / -ddd | | 7 | [01:39:13](https://youtu.be/UmCnh6mELwA?si=gRDlWJyo9Rvj5P-z&t=5953) | 1. amacc<br>2. XDP | | 8 | [01:49:50](https://youtu.be/UmCnh6mELwA?si=gDbVIuW3bKE84doq&t=6590) | 1. BPF JIT compiler<br>2. seccomp : 特定 process 只能呼叫特定 system call。<br>3. cBPF(classical) 和 eBPF(extended) 的差別。 | | 9 | [01:58:42](https://youtu.be/UmCnh6mELwA?si=9RWlkdzlXF4vLp0S&t=7122) | 1. 強大網友的投影片講解。<br>2. kernel instrumentation : 動態改變 kernel 行為。 | | 10 | [02:06:13](https://youtu.be/UmCnh6mELwA?si=So3TM6j4wuRfQFvc&t=7573) | 1. SDN / NFV<br>2. 開發工具<br>3. IO Visor Project<br>4. BCC : BPF Compiler Collection | | 11 | [02:20:00](https://youtu.be/UmCnh6mELwA?si=axQkKE39qkHEX1Mc&t=8400) | 1. Kernel Analysis Using eBPF 的演講<br>2. SystemTap<br>3. BPF bytecode 實驗 | | 12 | [02:41:30](https://youtu.be/UmCnh6mELwA?si=f8pmfxBw12zBwh0D&t=9690) | 1. clone<br>2. 利用 eBPF 追蹤 clone 系統呼叫的行為。<br>3. 總結 |