iT邦幫忙

鐵人檔案

2022 iThome 鐵人賽
回列表
Software Development

教練我想玩eBPF 系列

eBPF在cloud native好熱門,趁著這個機會來學學eBPF是什麼以及到底怎麼開發,探索現有的eBPF相關專案,例如bcc和cilium。

鐵人鍊成 | 共 30 篇文章 | 9 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day1 - 前言

起源 今年七月底參加COSCUP的時候,在kubernetes的相關議程一直聽到eBPF這個東西,後來參加LINE x KCD Taiwan Meetup #4...

2022-09-16 ‧ 由 gamerslouis 分享
DAY 2

Day2 - eBPF的前世

要介紹eBPF勢必得先聊聊eBPF的前身 Berkeley Packet Filter (BPF),BPF最早是在1993年USENIX上發表的一個在類Unix...

2022-09-17 ‧ 由 gamerslouis 分享
DAY 3

Day3 - eBPF的應用

今天我們要正式來聊eBPF了! 在介紹BPF的時候,有提到BPF本身就是一個在kernal內的虛擬機。eBPF在kernal的許多功能內埋入了虛擬機的啟動點。例...

2022-09-18 ‧ 由 gamerslouis 分享
DAY 4

Day4 - eBPF基本知識(1) - Program type

接下來幾天會介紹一些eBPF裡面的重要概念還有eBPF的載入流程 首先要介紹的是Program type。我們可以把eBPF程式區分成不同的BPF progra...

2022-09-19 ‧ 由 gamerslouis 分享
DAY 5

Day5 - eBPF基本知識(2) - 如何撰寫

從昨天最後的範例可以看到一個eBPF程式其實一個c語言格式的程式碼 int xdp_prog_simple(struct xdp_md *ctx) {...

2022-09-20 ‧ 由 gamerslouis 分享
DAY 6

Day6 - eBPF基本知識(3) - 使用條件與載入流程

使用條件 在開始玩eBPF之前,我們要先確定一下我們的環境能夠使用eBPF。最早在kernal 3.15版加入了eBPF功能。後續在3.15到現在的5.19版間...

2022-09-21 ‧ 由 gamerslouis 分享
DAY 7

Day7 - eBPF基本知識(4) - JIT

接續昨天的內容,當eBPF程式通過verifier的驗證之後會進行JIT(Just In Time)的二次編譯。之前一直提到eBPF是一個執行在kernel內的...

2022-09-22 ‧ 由 gamerslouis 分享
DAY 8

Day8 - eBPF基本知識(5) - 生命週期

在透過bpf(BPF_PROG_LOAD, ...) system call將eBPF程式載入內核的過程(可以參考原始碼),會替該eBPF程式建立struct...

2022-09-23 ‧ 由 gamerslouis 分享
DAY 9

Day9 - eBPF基本知識(6) - Helper Funtions

之前在介紹eBPF的GPL授權的時候,有提到eBPF helper function這個東西,今天我們來比較仔細的介紹一下。 之前提到eBPF程式是在eBPF虛...

2022-09-24 ‧ 由 gamerslouis 分享
DAY 10

Day10 - eBPF基本知識(7) - debug tracing

在將eBPF程式載入kernel工作後,我們勢必需要一些手段來與eBPF程式做溝通,一方面我們需要輸出偵錯訊息,來對eBPF程式debug,一方面我們可能會希望...

2022-09-25 ‧ 由 gamerslouis 分享