2024-08-04, 15:00–15:30 (Asia/Taipei), TR513
此議程將會介紹如何整合現代程式語言到 DPDK 應用開發,在享受完善的建置系統、套件管理與簡潔語法的同時,滿足網路封包高效處理的需求,帶給工程師舒適的開發體驗。要達成高效封包處理,編譯語言只是基本要求。在 2024 年的現在,除了 C 家族以外,Rust 與 Go 都是可行的方案。此議程將回顧並比較這兩個語言下現存框架的優點與限制,並呈現導入 Rust 到 DPDK 應用開發的做法與注意事項。期許降低開發的門檻,讓未來有更多安全、穩定的開源工具供網路領域的研究者使用。
DPDK (Data Plane Development Kit) 作為封包處理的開發框架,透過網卡 offload、封包輪詢、DMA 等技術加快封包處理,在 SDN 的 data plane 中是個重要的框架。然而 DPDK 作為 library,是以 C 語言開發的,官方的範例程式也都是以 C 做教學。C 語言常見的潛在問題是記憶體安全,以現實世界中的例子來看,即使是像 chromium 這種大型專案,也有 70% 的安全性漏洞來自記憶體相關問題。以開發者體驗來看,C 語言需要自行設置編譯流程、下載與安裝各個相依套件,而且這些流程並沒有開發者們的共識,不同軟體與在不同的作業系統下都有不同的建置流程,導致開發中的溝通成本與難度上升。這些問題在一些新興的程式語言中都有更好的處理方式,因此有 Go 語言的 nff-go 與 Rust 的 dpdk-rs 等框架的出現。此外本議程還將示範如何透過 Rust bindgen 串接 DPDK 專案呼叫 C API,並使用 Rust 處理網路封包。
現為奧義智慧科技的資安研究員,專注於雲端安全與網路安全等領域。近期終於入門 Rust,歡迎同好來交流。