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