DPDK是啥


一、什么是DPDK

  對於用戶來說,它可能是一個性能出色的包數據處 理加速軟件庫;對於開發者來說,它可能是一個實踐包處理新想法的創 新工場;對於性能調優者來說,它可能又是一個絕佳的成果分享平台。 

  DPDK用軟件的方式在通用多核處理器上演繹着數據包處理的新篇 章,而對於數據包處理,多核處理器顯然不是唯一的平台。支撐包處理 的主流硬件平台大致可分為三個方向。
  ·硬件加速器
  ·網絡處理器
  ·多核處理器

  在類似 IA(Intel Architecture)多核處理器為目標的平台上,網絡數據包處理遠早於DPDK而存在。從商業版的 Windows到開源的Linux操作系統,所有跨主機通信幾乎都會涉及網絡 協議棧以及底層網卡驅動對於數據包的處理。然而,低速網絡與高速網 絡處理對系統的要求完全不一樣。 

 

二、DPDK源碼目錄結構 

  lib/ : DPDK的庫源代碼
  drivers/ : DPDK輪詢模式驅動程序源代碼
  app/ : DPDK應用程序源代碼
  examples/ : DPDK的一些應用程序例子源代碼
  config/ : DPDK關於arm和x86平台的一些編譯配置
  buildtools/ : DPDK一些編譯配置的腳本
  mk/ : DPDK的Makefile
  usertools/ : DPDK提供給用戶的一些實用工具

 

三、常用術語及縮寫

  ACL:Access Control List,訪問控制列表,是路由器和交換機接口的指令列表,用來控制端口進出的數據包;簡而言之就是用來控制數據流。
  SSL:Secure Sockets Layer,安全套接層,是為網絡通信提供安全及數據完整性的一種安全協議,在傳輸層對網絡連接進行加密。
  RSS:Receive Side Scaling,是一種能夠在多處理器系統下使接收報文在多個CPU之間高效分發的網卡驅動技術。
  NUMA:Non Uniform Memory Access Architecture,非統一內存訪問架構;
  QOS:Quality of Service,服務質量,指一個網絡能夠利用各種基礎技術,為指定的網絡通信提供更好的服務能力, 是網絡的一種安全機制, 是用來解決網絡延遲和阻塞等問題的一種技術。
  NIC:Network Interface Card,網卡,網卡是局域網中最基本的部件之一,它是連接計算機與網絡的硬件設備。
  PCI:Peripheral Component Interconnect,計算機一種標准總線,NIC就是使用的這種總線方式。
  PMD:Poll Mode Drive,輪詢模式驅動,DPDK就是采用的這種模式。
  RTE:Run Time Environment,通過PMD實現快速分組處理數據的一個框架。
  MPLS:Multi-Protocol Label Switching,多協議標簽交換,是一種用於快速數據包交換和路由的體系,它為網絡數據流量提供了目標、路由地址、轉發和交換等能力。更特殊的是,它具有管理各種不同形式通信流的機制。

 

四、DPDK框架簡介

  DPDK為IA上的高速包處理而設計。

  圖1-6所示的DPDK主要模塊分 解展示了以基礎軟件庫的形式,為上層應用的開發提供一個高性能的基 礎I/O開發包。它大量利用了有助於包處理的軟硬件特性,如大頁、緩 存行對齊、線程綁定、預取、NUMA、IA最新指令的利用、Intel DDIO、內存交叉訪問等。
  核心庫Core Libs,提供系統抽象、大頁內存、緩存池、定時器及無 鎖環等基礎組件。
  PMD庫,提供全用戶態的驅動,以便通過輪詢和線程綁定得到極高 的網絡吞吐,支持各種本地和虛擬的網卡。
  Classify庫,支持精確匹配(Exact Match)、最長匹配(LPM)和 通配符匹配(ACL),提供常用包處理的查表操作。
  QoS庫,提供網絡服務質量相關組件,如限速(Meter)和調度 (Sched)。

 

 

 五、DPDK的輪詢模式

  DPDK采用了輪詢或者輪詢混雜中斷的模式來進行收包和發包,此 前主流運行在操作系統內核態的網卡驅動程序基本都是基於異步中斷處 理模式。 

  1、異步中斷模式

  當有包進入網卡收包隊列后,網卡會產生硬件 (MSIX/MSI/INTX)中斷,進而觸發CPU中斷,進入中斷服務程序,在 中斷服務程序(包含下半部)來完成收包的處理。當然為了改善包處理 性能,也可以在中斷處理過程中加入輪詢,來避免過多的中斷響應次 數。總體而言,基於異步中斷信號模式的收包,是不斷地在做中斷處 理,上下文切換,每次處理這種開銷是固定的,累加帶來的負荷顯而易 見。在CPU比I/O速率高很多時,這個負荷可以被相對忽略,問題不 大,但如果連接的是高速網卡且I/O頻繁,大量數據進出系統,開銷累 加就被充分放大。中斷是異步方式,因此CPU無需阻塞等待,有效利用 率較高,特別是在收包吞吐率比較低或者沒有包進入收包隊列的時候, CPU可以用於其他任務處理。
當有包需要發送出去的時候,基於異步中斷信號的驅動程序會准備 好要發送的包,配置好發送隊列的各個描述符。在包被真正發送完成 時,網卡同樣會產生硬件中斷信號,進而觸發CPU中斷,進入中斷服務 程序,來完成發包后的處理,例如釋放緩存等。與收包一樣,發送過程 也會包含不斷地做中斷處理,上下文切換,每次中斷都帶來CPU開銷; 同上,CPU有效利用率高,特別是在發包吞吐率比較低或者完全沒有發 包的情況。

  2、輪詢模式

  DPDK起初的純輪詢模式是指收發包完全不使用任何中斷,集中所 有運算資源用於報文處理。但這不是意味着DPDK不可以支持任何中 斷。根據應用場景需要,中斷可以被支持,最典型的就是鏈路層狀態發 生變化的中斷觸發與處理。

 

 

摘自 朱河清 版《深入淺出DPDK》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM