實戰錄 | 雲端衛士之DPDK技術簡介

雲端衛士的新欄目《實戰錄》將會定期分享一些我們的工程師夥伴們在產品研發的過程中總結的實踐經驗,希望對於熱愛技術且關注安全領域的受衆有所裨益。本期分享人爲雲端衛士安全運營工程師陶濤。

技術背景隨着互聯網飛速發展,基礎網絡技術也面臨多需求和挑戰:·網絡服務運營商在業務拓展等問題上,提出NFV(網絡功能虛擬化)方案。·互聯網數據中心需求更高級的網絡處理能力,提出了SDN(軟件定義網絡)方案。

在這兩股強大需求的推動下,開源的DPDK(DATA PLANE DEVELOPMENT KIT)目前顯得比較熱門,被普遍採用作爲硬件抽象的解決方案。功能簡介傳統操作系統,一個報文的收發,都需要有內核協調。內核身兼多職,每次都找內核協調,性能不好,發揮不出網卡的實力。

DPDK是一套開發工具,提供應用程序直接處理報文的方法,跳過內核協調部分,性能大大提高。技術構成上圖看似簡單,實際涉及的技術非常多,單拉出任一點討論都可能打不住,所以這裏單說下其使用了哪些技術。用戶態驅動想跳過內核玩硬件,得跟內核打好招呼。目前內核提供了UIO驅動和VFIO驅動來支持。個人認爲,二者的區別在於,UIO把硬件設備映射給用戶態後,內核不會在參與其調度,完全交給用戶自定義使用。

VFIO則在映射後,內核仍舊會爲其提供部分規範方法的支持(如中斷,iommu等)。大頁內存利用大頁內存,提高頁表命中率。其另一個優點,則是內存資源隔離,大頁內存是不會參與系統swap等調度的。CPU親和性將某個進程/線程綁定到特定的cpu上運行。可以降低被系統調度時,上下文切換的性能損耗。

拋開性能優化,也是資源分配等優化的前提條件。CAS原子操作DPDK利用原子操作規避線程鎖,實現了多消費者,多生產者模式的環形隊列。在多進程/線程模式下,DPDK的應用程序有不俗的表現。

技術特點回頭一看,DPDK用的技術並不是獨有的,但合併在一起,構成了它獨有的技術特點。驅動可靠操作物理硬件,可不同於軟件,開發失誤很有可能造成硬件不可用,甚至損壞。DPDK是intel旗下的,適配自己的網卡,只能說是沒有比這更可靠的驅動來源了。

資源隔離DPDK提供了eal(環境抽象)層,利用上面提到的技術,將eal大部分資源(cpu、內存、計時器等),與其他程序(甚至內核)隔離。

爲基於DPDK的程序穩定性得到保障。開源,文檔全作爲開源項目非常適合研究學習,難得的是文檔和用例也非常全,學習和使用的成本進一步降低。由於篇幅有限,簡單介紹了DPDK所使用到的關鍵技術,和其作爲開發工具的技術特點。以後有機會將結合業務,逐個介紹DPDK的功能模塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章