零聲dpdk 網(wǎng)絡(luò)協(xié)議棧
dpdk/網(wǎng)絡(luò)協(xié)議棧/vpp/OvS/DDos/SDN/NFV/虛擬化/高性能專家之路
什么是dpdk?
對于用戶來說(已報名零聲dpdk底部評),它可能是一個性能出色的包數(shù)據(jù)處 理加速軟件庫;對于開發(fā)者來說,它可能是一個實踐包處理新想法的創(chuàng) 新工場;對于性能調(diào)優(yōu)者來說,它可能又是一個絕佳的平臺
二、DPDK 原理
網(wǎng)絡(luò)設(shè)備(路由器、交換機、媒體網(wǎng)關(guān)、SBC、PS 網(wǎng)關(guān)等)需要在瞬間進行大量的報文收發(fā),因此在傳統(tǒng)的網(wǎng)絡(luò)設(shè)備上,往往能夠看到專門的 NP(Network Process)處理器,有的用 FPGA,有的用 ASIC。這些專用器件通過內(nèi)置的硬件電路(或通過編程形成的硬件電路)高效轉(zhuǎn)發(fā)報文,只有需要對報文進行深度處理的時候才需要 CPU 干涉。
但在公有云、NFV 等應(yīng)用場景下,基礎(chǔ)設(shè)施以 CPU 為運算核心,往往不具備專用的 NP 處理器,操作系統(tǒng)也以通用 Linux 為主,網(wǎng)絡(luò)數(shù)據(jù)包的收發(fā)處理路徑如下圖所示:

在虛擬化環(huán)境中,路徑則會更長:

由于包處理任務(wù)存在內(nèi)核態(tài)與用戶態(tài)的切換,以及多次的內(nèi)存拷貝,系統(tǒng)消耗變大,以 CPU 為核心的系統(tǒng)存在很大的處理瓶頸。為了提升在通用服務(wù)器(COTS)的數(shù)據(jù)包處理效能,Intel 推出了服務(wù)于 IA(Intel Architecture)系統(tǒng)的 DPDK 技術(shù)。
DPDK 是 Data Plane Development Kit 的縮寫。簡單說,DPDK 應(yīng)用程序運行在操作系統(tǒng)的 User Space,利用自身提供的數(shù)據(jù)面庫進行收發(fā)包處理,繞過了 Linux 內(nèi)核態(tài)協(xié)議棧,以提升報文處理效率。