用 Rust 編寫 eBPF/XDP 負載均衡器

banq發表於2022-11-12

在當今的雲生態系統中,對應用程式及其網路流量的高效能和高效能可觀察性、安全性和網路功能的需求與以往一樣高。
作業系統在過去一直是動態新增功能的一個非常具有挑戰性的地方,通常需要開發和管理非常繁瑣的核心模組,近年來eBPF已成為Linux 核心中的一項新興技術,正在改變這一切。

什麼是 eBPF?
eBPF 是一種在執行時將程式動態載入到核心中的簡單有效的方法,其安全性和效能由核心本身使用即時 (JIT) 編譯器和驗證過程提供。使用 eBPF 可以建立多種不同型別的程式,但出於本示例的目的,我們將專注於建立可以讀取和修改網路資料包的XDP程式。
我們的目標是構建一個小程式,透過埠跨多個後端伺服器對入口UDP流量進行負載平衡。完成本練習後,您應該對 XDP 程式的工作方式有了更好的理解,並能夠開始您的eBPF 社群之旅。

eBPF Rust UDP LoadBalancer 演示

這是使用aya框架在Rust中建立UDP負載均衡器作為eXpress 資料路徑 (XDP)型別的eBPF程式的示例。

本示例假設您對 Linux、網路和 Rust 程式設計有相當深入的瞭解。
這個演示是在使用帶有核心版本的Arch LinuxUbuntu x86_64的機器上構建和測試的。預計它將適用於大多數現代 Linux 發行版。

在撰寫本文時,Aya 還不是一個成熟的 eBPF 開發生態系統。此演示缺少生產 XDP 程式所需的一些內容,並且 Aya 本身在從現在到它的第一個v1版本之間的時間裡會發生重大變化。這僅用於演示和學習目的,請勿在生產中使用。


需完整原始碼和進一步閱讀,請檢視https://github.com/shaneutt/ebpf-rust-udp-loadbalancer-demo

詳細步驟點選標題




 

相關文章