# eBPF

> For AI agents: the complete glossary index is at [llms.txt](https://glossary.cncf.io/zh-tw/llms.txt).
> Markdown versions of every glossary page are available by appending `index.md` to the page URL.

<a id="what-it-is"></a>

## 是什麼

eBPF（延伸柏克萊封包篩選器）是一種允許小型沙盒程式或腳本在 Linux 系統核心空間執行的技術，不需要修改核心原始碼載入 Linux 核心模組。

Linux 系統有兩個空間：核心空間和使用者空間。
核心空間是作業系統的核心，也是唯一可以無限制存取硬體的部分。

應用程式會停留在使用者空間，當它們需要更高權限時，就會向核心發送要求。
對於需要更彈性的應用程式，像是直接存取硬體，核心可以透過所謂的「Linux 核心模組」進行擴充。
這種方式擴充了核心的預設功能，允許應用程式更深度地存取底層元件。
不過，這種方法也會帶來安全風險，因此 eBPF 成為更有吸引力的替代方案。

<a id="problem-it-addresses"></a>

## 解決的問題

通常狀況下，應用程式在使用者空間執行，如果應用程式需要核心的某些權限（E.g. 存取某些硬體），
會透過「系統呼叫」向核心提出請求。
在大多數情況下，這種方法都能正常執行。不過，在某些情況下，開發人員需要更靈活的低階系統存取方式。
可觀察性、安全性和網路功能就是很好的範例。
為此，我們可以使用 Linux 核心模組，在不修改核心原始碼的情況下延伸核心基礎。
雖然使用 Linux 核心模組有很多好處，但也會帶來安全風險。
由於 Linux 核心模組在核心空間內執行，它們可能會導致核心崩潰，而核心一旦崩潰，整個機器也會當機。
此外，核心模組擁有更高的權限，可以直接存取系統資源。如果沒有適當的安全保護，攻擊者就會利用這些漏洞。

<a id="how-it-helps"></a>

## 如何幫助我們

eBPF 提供比 Linux 核心模組更可控的環境，以執行使用者自訂的程式。
它在核心的沙盒環境中執行，提供隔離並降低風險。
如果漏洞或缺失在 eBPF 程式中被利用，其影響通常僅限於沙盒環境。
此外，在 eBPF 程式開始在核心中執行之前，它必須通過一些驗證。
驗證器元件會檢查 eBPF 程式是否存在潛藏的安全違規行為，
像是違規存取記憶體、無窮迴圈和未經授權的核心函式。
這樣它就能確保程式不會進入無窮迴圈並導致核心崩潰。
與 Linux 核心模組相比，這些安全控制措施使 eBPF 成為在 Linux 核心中執行應用程式更安全的選擇。

---

- Canonical URL: https://glossary.cncf.io/zh-tw/ebpf/
- Status: Completed
- 最後編輯 October 22, 2023: ` [tw] Localize 'eBPF' ` ([f0ac355](https://github.com/cncf/glossary/commit/f0ac355f608feeb2d7750c5a559fc74b877fe0dc))
- Source: https://github.com/cncf/glossary/blob/main/content/zh-tw/ebpf.md
- License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)
