DPDK簡介

云中锦书来發表於2024-07-30

DPDK簡介

DPDK(Data Plane Development Kit)資料平面開發工具包,是一個開源軟體專案。DPDK透過維護一系列能夠加速多核CPU資料包處理的庫,提供資料處理框架。DPDK透過繞過核心進行資料處理,表現出了比核心中斷處理更高的效率。

DPDK專案架構

  • EAL

    EAL(Environment Abstraction Layer),EAL層負責訪問低階資源包括硬體和記憶體空間。EAL遮蔽了核心具體細節,提供一個通用的介面訪問庫和作業系統。

  • Memory Management

    記憶體管理包括巨頁支援、記憶體池、緩衝區管理。

  • Poll Mode Drivers

    為各種網路介面提供最佳化驅動,繞過核心網路棧減少延遲增加吞吐量。

  • Ring Buffers

    利用高效的佇列機制提供高速程序間通訊。

  • API for Packet Processing

    提供一系列包操縱庫和函式的集合包括頭解析,包分類和包轉發。

  • Crypto and Security

    提供加密影像操作和安全通訊的庫和驅動

  • Eventdev and Timers

    提供事件驅動和時間管理功能

    從這幅圖我們可以看出,其實DPDK作用是截獲網路卡,此時核心就網路模組會無法發現截獲的網路卡,從而繞過核心網路處理,利用使用者協議棧進行解析,解析完畢之後直接發給應用層。

DPDK靜態庫

  • librte_eal

    提供訪問硬體資源如記憶體、定時器和日誌的基礎API。

  • librte_mempool

    提供高效包處理記憶體池管理庫。

  • librte_ring

    提供實現無鎖FIFO先進先出佇列以及DPDK元件間的高速通訊相關的庫。

  • librte_mbuf

    提供包緩衝區處理包括接收和傳輸相關的庫。

  • librte_ethdev

    提供配置和查詢乙太網裝置API包括接收和傳送包。

  • librte_net

    提供網路協議處理相關的庫。

  • librte_ip_frag

    提供IP分片和重組相關的庫,支援IIPV4、IPV6。

  • librte_kni

    提供DPDK應用和Linux核心網路棧間的通訊,主要用於已有linux網路服務互動和除錯。