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