eBPF 是一個能夠在內(nèi)核運行沙箱程序的技術,提供了一種在內(nèi)核事件和用戶程序事件發(fā)生時安全注入代碼的機制,使得非內(nèi)核開發(fā)人員也可以對內(nèi)核進行控制。隨著內(nèi)核的發(fā)展,eBPF 逐步從最初的數(shù)據(jù)包過濾擴展到了網(wǎng)絡、內(nèi)核、安全、跟蹤等,而且它的功能特性還在快速發(fā)展中,早期的 BPF 被稱為經(jīng)典 BPF,簡稱 cBPF,正是這種功能擴展,使得現(xiàn)在的 BPF 被稱為擴展 BPF,簡稱 eBPF。
如今 eBPF 被廣泛應用在云原生、可觀測、性能調(diào)優(yōu)、安全、硬件加速等領域,并且其應用場景還在快速擴展,各種場景基于 eBPF 技術的創(chuàng)新 idea 呈現(xiàn)井噴現(xiàn)象,eBPF 的時代已經(jīng)來臨。
eBPF 技術現(xiàn)狀
雖然 eBPF 技術應用呈現(xiàn)井噴現(xiàn)象,但是開發(fā)、發(fā)布、安裝等相關的基礎技術出現(xiàn)碎片化現(xiàn)象,導致技術成果無法快速平移至行業(yè)客戶生產(chǎn)環(huán)境;相似 eBPF 技術應用在重復實踐。這些問題阻礙 eBPF 技術的普及與推廣。
如下圖所示,總結(jié)目前 eBPF 的開發(fā)、發(fā)布方式基本可以劃分成 2 種技術路線:
開發(fā)態(tài)、運行態(tài)分離(典型代表 libbpf)
優(yōu)點:ELF 文件形式(或者鏈接進應用程序)發(fā)布,運行時輕量化,適合生產(chǎn)環(huán)境大規(guī)模應用。
缺點:應用技術門檻高,且不具備可移植性(比如高內(nèi)核版本的 eBPF 程序無法移植至低內(nèi)核版本中)。
開發(fā)態(tài)、運行態(tài)融合(典型代表 BCC)
優(yōu)點:源碼形式發(fā)布天然具備可移植性;封裝抽象運行時,提供高級語言 API,降低開發(fā)難度。
缺點:運行時重型化,對生產(chǎn)環(huán)境要求較高(需要安裝開發(fā)態(tài)一系列工具);高度抽象后,降低使用靈活度,不適合大型應用開發(fā)。
這兩種技術路線都存在弊端,隨著 eBPF 技術的發(fā)展,出現(xiàn) BumbleBee 、eunomia-bpf 等項目致力于綜合這兩類技術路線的優(yōu)點,但依舊缺乏對 eBPF 基礎技術的整體規(guī)劃。
eBPF 發(fā)展展望
eBPF summit 2022 《The future of eBPF in the Linux Kernel》展望了 eBPF 的發(fā)展方向,具體的演進方向包括幾個方面:
更完備的編程能力:當前 eBPF 的編程能力存在一些局限性(比如不支持變量邊界的循環(huán),指令數(shù)量受限等),演進目標提供圖靈完備的編程能力。
更強的安全性:支持類型安全,增強運行時 Verifier,演進目標是提供媲美 Rust 的安全編程能力。
更廣泛的移植能力:增強 CO-RE,加強 Helper 接口可移植能力,實現(xiàn)跨體系、平臺的移植能力。
更強的可編程能力:支持訪問/修改內(nèi)核任意參數(shù)、返回值,實現(xiàn)更強的內(nèi)核編程能力。
概括其演進目標是希望將 eBPF 打造成一款針對內(nèi)核(包括硬件)運行時的安全編程語言,通過該語言構(gòu)建 eBPF 軟件,用來承載內(nèi)核(或硬件)的能力。演進結(jié)果產(chǎn)生一個有趣現(xiàn)象:按照傳統(tǒng)軟件類型劃分方式,我們很難將 eBPF 軟件歸類成應用軟件或是系統(tǒng)軟件。所以,干脆將其定義成一種獨立軟件形態(tài):內(nèi)核態(tài)服務(eBPF as Service)。
eBPF Service 形態(tài)
建立 eBPF 行業(yè)標準的思路
eBPF 軟件有別于系統(tǒng)軟件、應用軟件,從軟件自身特點而言,其應具備符合其自身特點的開發(fā)、編譯、打包、發(fā)布、安裝、升級等工具系列。
當前 eBPF 的開發(fā)框架、發(fā)布形式發(fā)展迅速,但也存在一些問題,包括跨版本移植能力、多場景支持能力、開發(fā)易用性、服務可獲得性等問題。openEuler 可編程內(nèi)核 SIG 希望標準化 eBPF 軟件相關基礎技術(包括打包、發(fā)布、安裝、升級等),方便 eBPF 技術在各行業(yè)、場景的推廣。為此,由多家企業(yè)/高校在 openEuler 社區(qū)倡議建立行業(yè)標準,通過標準化發(fā)布將內(nèi)核定制能力、硬件卸載能力向社區(qū)用戶提供性能加速、安全加固、智能觀測等服務。
預計我們將在 12 月份組織一次線上 meetup,當前參與企業(yè)/組織包括天翼云、深信服、華為、西郵、中山大學、中科馭數(shù)、信通院、銳捷等,希望國內(nèi)對 eBPF 技術有訴求、規(guī)劃的廠商加入本次 meetup,建立 eBPF 技術相關標準,為 eBPF 技術應用、科研提供較好的基礎平臺。
具體討論范圍劃分成三個方向:
eBPF runtime:負責提供具備可移植性的軟件安裝能力,軟件熱升級能力,包管理等能力。
eBPF Development Kit:負責提供一站式開發(fā)、調(diào)試、編譯工具,提供具備跨體系、平臺移植能力的軟件包發(fā)布能力。
eBPF Service HUB:負責提供 eBPF Service 集市化管理,提供 eBPF Service 推送、分發(fā)等能力。
openEuler 可編程內(nèi)核 SIG 目標
openEuler 可編程內(nèi)核 SIG 目標之一就是推動 eBPF as Service 標準化工作,將內(nèi)核能力、硬件加速能力服務化、集市化,惠及更多的社區(qū)用戶。
與此同時,openEuler 社區(qū)會將行業(yè)標準內(nèi)的一些基礎軟件、技術標準推送至 Linux 上游社區(qū),加強 eBPF 技術生態(tài)建設,提升國內(nèi) eBPF 技術在上游社區(qū)影響力。
審核編輯:湯梓紅
-
編程
+關注
關注
88文章
3689瀏覽量
95270 -
云原生
+關注
關注
0文章
261瀏覽量
8277 -
openEuler
+關注
關注
2文章
328瀏覽量
6342
原文標題:openEuler 倡議建立 eBPF 軟件發(fā)布標準
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
openEuler 助力 RISC-V 服務器生態(tài)建設,以及對 RVA23 的支持進展
在openEuler上基于vLLM Ascend部署Qwen3

評論