DPDK學習筆記學習安排

學習安排

在開始深入DPDK的時候我準備帶着這樣的幾個問題。

DPDK是幹什麼的?

DPDK存在的優勢是什麼?缺點又是什麼?

DPDK做什麼?

接下來的工作是什麼?

 

DPDK是幹什麼的?

         通過查閱相關資料對這個問題有了一個初步的認識,DPDK(Data Plane Development Kit)通過名字就可以看出來這個是一個基於數據平面的開發套件。主要就是爲了實現高效靈活的數據包處理解決方案。其主體主要運行在用戶態,而不是我們常說的內核態(TCP/IP傳輸協議棧運行在內核態)。也可以這樣理解,DPDK就是繞過了TCP/IP協議棧將數據直接暴露在用戶空間。DPDK誕生的道理也比較簡單就是爲了證明IA處理器能夠支撐高性能數據包處理。

而目前主流的數據包處理平臺分爲三類:硬件加速器、網絡處理器、多核處理器。

n  硬件加速器:利用硬件模塊代替軟件算法充分利用硬件固有的快速特性,但是硬件加速也存在一定的問題,那就是針對不同的情況制定不同的電子電路系統,這樣很明顯的降低了該方式的靈活性和擴展性。

n  網絡處理器:設計的目的就是專門爲了處理數據包的一種可編程通用處理器。該技術採用多內核並行結構,一定程度上能提升數據包處理性能但是目前針對SDN這樣的大環境下,需要解決不同架構上的底層抽象等問題。而且成本比較高需要針對特定的領域設計,這也是限制發展的一大原因。

n  多核處理器:DPDK就是充分發揮多核處理器的性能,並加上大頁、輪詢以及CPU親和性的一系列優化不斷提升AI架構的性能,以提升數據包的轉發和處理能力,並結合着網絡負載和虛擬化的融合推動了NFV快速的發展。

         簡單的來說,DPDK就是一套開發套件,通過提供各種不同的庫來優化和提升86系統架構對數據包處理的性能。

 

DPDK的優勢和劣勢是什麼?

         上文中也提到了,DPDK是通過一系列庫提升cpu對數據包的處理。其實DPDK使用的技術也並不是特別高深,只要有三個UIO(用戶空間IO)、大頁、CPU親和性。這些特性本身都是linux系統本身提供的,雖然進行了封裝,但是使用的還是基本的技術。但是DPDK也有一定的侷限性,比如說在開發中開發週期長,代碼優化困難等問題。而且就目前所瞭解的是該技術僅支持linux操作系統(個人所瞭解),在測試的時候至少需要兩塊網卡,所以網卡只有一個的主機表示很無奈,再加一張網卡吧。

 

Dpdk能做什麼?

         其實這個問題的回答比較寬泛,DPDK僅僅提供一個數據平面的接口,用戶完全可以利用這些接口做應用層的二次開發。比如開發基於DPDK在應用層的協議棧,防火牆等等。另外在負載均衡,DNS等等很多應用層的服務都是可以基於DPDK做重新設計和開發。

 

接下來怎樣開展工作?

         光是理論的肯定不行,既然Intel公司提供了這樣一個優秀的開發套件,那麼利用該套件進行編程學習肯定是需要進行的下一步工作。但是問題來了,因爲沒有這方面開發的經驗,所以整個學習準備按照如下的方式組織:

         進一步查閱和學習DPDK中存在的相關技術。

以實驗的方式記錄該套件的部署方式和實施。

分析樣例代碼,並深入源代碼(最好是能夠進行部分的樣例編寫和測試)。

準備設計和開發自己的應用。

         

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