九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
DPDK

1背景

編輯

因特網(wǎng)和其他互聯(lián)網(wǎng)必須承載的通信量在持續(xù)增長和變化。如今,實時響應(yīng)的萬維網(wǎng)的廣泛使用和音頻、圖像、視頻的使用增長,驅(qū)動了服務(wù)質(zhì)量需求的增長。為了應(yīng)對這種增長,TCP/IP體系結(jié)構(gòu)發(fā)展了QoS(服務(wù)質(zhì)量)以支持各種類型的擁有各種服務(wù)質(zhì)量需求的通信量。數(shù)據(jù)平面(Data Plane)是QoS框架的三平面之一,承擔(dān)了通信中分組的隊列管理,排隊調(diào)度,擁塞避免等直接在數(shù)據(jù)流上進(jìn)行操作的機制,對提高網(wǎng)絡(luò)通信的效率起著至關(guān)重要的作用。[1]

在此基礎(chǔ)上,人們期望用更低的成本和更短的產(chǎn)品開發(fā)周期來提供多樣的網(wǎng)絡(luò)單元與豐富的功能,如應(yīng)用處理、控制處理、包處理、信號處理等。為了適應(yīng)這一新的產(chǎn)業(yè)趨勢,基于Intel x86架構(gòu)的DPDK面世了。

2綜述

編輯

DPDK是一個linux基金會的開源項目。開發(fā)DPDK的主要目的,是在數(shù)據(jù)平面應(yīng)用中為快速的數(shù)據(jù)包處理提供一個簡單而完善的架構(gòu)。在理解此工具集之后,開發(fā)人員可以以此為基礎(chǔ)進(jìn)行新的原型設(shè)計,或簡單地為我所用。

DPDK架構(gòu)通過創(chuàng)建EAL(Environment Abstraction Layer,環(huán)境抽象層)來為不同的工作環(huán)境創(chuàng)造函數(shù)庫集,創(chuàng)建后開發(fā)者即可把自己的應(yīng)用與函數(shù)庫進(jìn)行鏈接。該架構(gòu)也包含跟蹤調(diào)試,PCIe總線接入等功能,并有相關(guān)樣例幫助開發(fā)者學(xué)習(xí)如何使用這些功能。

3工作環(huán)境

編輯

DPDK的環(huán)境抽象層向應(yīng)用與函數(shù)庫隱藏了底層環(huán)境的細(xì)節(jié),因而能擴(kuò)展到任何處理器上使用。就操作系統(tǒng)來說,它提供了對Linux和FreeBSD的支持。

4工作原理

編輯

DPDK使用了輪詢(polling)而不是中斷來處理數(shù)據(jù)包。在收到數(shù)據(jù)包時,經(jīng)DPDK重載的網(wǎng)卡驅(qū)動不會通過中斷通知CPU,而是直接將數(shù)據(jù)包存入內(nèi)存,交付應(yīng)用層軟件通過DPDK提供的接口來直接處理,這樣節(jié)省了大量的CPU中斷時間和內(nèi)存拷貝時間。

5關(guān)鍵技術(shù)

編輯

環(huán)境抽象層

DPDK的創(chuàng)造的環(huán)境抽象層(EAL, Environment Abstraction Layer)主要負(fù)責(zé)對計算機底層資源(如硬件和內(nèi)存空間)的訪問,并對提供給用戶的接口實施了實現(xiàn)細(xì)節(jié)的封裝。其初始化例程決定了如何分配這些資源(PCI設(shè)備、計時器、控制臺等)。

EAL提供的典型服務(wù)包括:

  • 加載和啟動DPDK:DPDK及其應(yīng)用程序會被鏈接為單一應(yīng)用,因此需要通過某種方式進(jìn)行加載DPDK。
  • 核關(guān)聯(lián)/分配過程:EAL提供了將執(zhí)行單元分配給特定核并創(chuàng)建執(zhí)行實例的機制。
  • 預(yù)留系統(tǒng)內(nèi)存:EAL為預(yù)留不同的內(nèi)存區(qū)域提供便利,例如用于設(shè)備交互的物理內(nèi)存區(qū)域。
  • 抽象PCI地址:EAL提供了訪問PCI地址空間的接口。
  • 跟蹤和調(diào)試功能:日志、堆棧轉(zhuǎn)儲等。
  • 實用的功能:libc中所沒有提供的自旋鎖和原子計數(shù)器。
  • CPU功能識別:在運行時確定CPU是否支持特定功能,確定當(dāng)前CPU是否支持編譯產(chǎn)生的二進(jìn)制指令集。
  • 中斷處理:向特定中斷源注冊/注銷回調(diào)的接口。
  • 時鐘功能:用于設(shè)置/刪除在特定時間運行的回調(diào)函數(shù)接口。

輪詢模式驅(qū)動

DPDK包括1Gb,10Gb,40Gb和半虛擬化抽象層的輪詢模式驅(qū)動(PMD, Poll Mode Driver)。PMD由用戶空間的特定的驅(qū)動程序提供的API組成,用于對設(shè)備和它們相應(yīng)的隊列進(jìn)行設(shè)置。拋棄了基于中斷的異步信號發(fā)送機制為該架構(gòu)帶來很大的開銷節(jié)省。避免中斷性能瓶頸是DPDK提升數(shù)據(jù)包處理速度的關(guān)鍵之一。

DPDK環(huán)境為數(shù)據(jù)包處理應(yīng)用考慮了兩種模型:運行至完成(run-to-completion)模型和管道(pipeline)模型。在運行至完成模型中,一個API向某個特定端口的接收描述符環(huán)輪詢以接收數(shù)據(jù)包。接著這個數(shù)據(jù)包在同一個核上被處理,之后被一個發(fā)送用API放到端口的傳輸描述符環(huán)上;在管道模型中,一個核心會通過API對一個或多個端口的接收描述符環(huán)進(jìn)行輪詢,數(shù)據(jù)包通過環(huán)被接收和傳遞給另一個核心,然后在這個核心上被處理,之后可能被發(fā)送用API放到端口的傳輸描述符環(huán)上。

運行至完成是一個同步模型,每個指派給DPDK的邏輯核心執(zhí)行如下所示的循環(huán):

  1. 通過PMD接收用API來提取輸出數(shù)據(jù)包
  2. 根據(jù)轉(zhuǎn)發(fā),一一處理收到的數(shù)據(jù)包
  3. 通過PMD發(fā)送用API發(fā)送輸出數(shù)據(jù)包

相反,管道模型是一個異步模型,有的邏輯核心只執(zhí)行數(shù)據(jù)包提取,而有的只執(zhí)行處理,收到的數(shù)據(jù)包在這些邏輯核心之間通過環(huán)來傳遞。提取核心執(zhí)行如下的循環(huán):

  1. 通過PMD接收用API來提取輸出數(shù)據(jù)包
  2. 通過隊列提供數(shù)據(jù)包給處理核心

處理核心執(zhí)行如下的循環(huán):

  1. 從隊列中提取數(shù)據(jù)包
  2. 根據(jù)重傳(如果被轉(zhuǎn)發(fā))處理數(shù)據(jù)包

為了避免不必要的中斷性能瓶頸,執(zhí)行環(huán)境禁止任何異步通知機制的使用。在任何需要或合適的時候,異步通信都應(yīng)盡可能采用環(huán)的方式。

在多核環(huán)境中避免鎖競爭是一個重要的問題。為了處理這個問題,PMD被設(shè)計為可以盡可能地在單核私有資源下工作。例如,PMD為每個核心每個端口提供一個單獨的隊列。同樣的,每個端口的接收隊列只會被指派給唯一一個邏輯核心并接收它的輪詢。

6函數(shù)庫接口

編輯

Malloc Library

提供分配任意大小內(nèi)存的API。

Ring Library

提供對一種特殊的鏈表隊列的管理,具有先進(jìn)先出、定長、無鎖、并發(fā)入/出隊等特性。

優(yōu)點:工作更快,實現(xiàn)簡單,適用于塊數(shù)據(jù)的入/出隊;

一個簡單的環(huán)結(jié)構(gòu)缺點:定長、環(huán)多導(dǎo)致內(nèi)存占用增加。

Mempool Library

內(nèi)存池用于分配固定大小的對象。在DPDK中內(nèi)存池用名字區(qū)分,并用環(huán)來存儲未使用的對象。

Mbuf Library

用于分配和釋放緩沖區(qū)給DPDK應(yīng)用來存儲緩存信息,使用上述的內(nèi)存池來存儲。

一個單段緩沖區(qū)

IVSHMEM Library

為在虛擬機與主機或虛擬機間的零拷貝數(shù)據(jù)共享提供便利,得名于使用了QEMU的IVSHMEM機制。

Link Bonding Poll Mode Driver Library

純軟件函數(shù)庫,允許多個PMD組合為單個邏輯PMD,類似于在linux中將多個網(wǎng)絡(luò)接口組合為一個邏輯接口。

組合PMD

Timer Library

為DPDK執(zhí)行單元提供時間服務(wù)以實現(xiàn)反饋函數(shù)的異步執(zhí)行。時鐘有單次工作的也有周期工作的,可載入一個核心上的時鐘后在另一個上執(zhí)行。時鐘提供很高的精度,也可以在編譯時禁用以提高性能。

Hash Library

創(chuàng)建散列表以提供快速查找功能。

LPM Library

為32位關(guān)鍵碼實現(xiàn)的最長前綴匹配表查找方法。用于在IP轉(zhuǎn)發(fā)應(yīng)用中找到最合適的路由匹配。

LPM6 Library

即LPM for IPv6,為128位關(guān)鍵碼實現(xiàn)的最長前綴匹配表查找方法,用于在IPv6轉(zhuǎn)發(fā)應(yīng)用中找到最合適的路由匹配。

Packet Distributor Library

用于流量的動態(tài)負(fù)載均衡問題。使用時,使用中的邏輯核心會被考慮為兩種角色:其一是一個分配器核心,負(fù)責(zé)負(fù)載均衡或數(shù)據(jù)包分配;其二是一群工人核心,負(fù)責(zé)從分配器接收數(shù)據(jù)包并對它們進(jìn)行處理。

數(shù)據(jù)包分發(fā)模式

Reorder Library

用于根據(jù)序號對緩沖區(qū)重排序。應(yīng)用于上述的數(shù)據(jù)包分發(fā)中。

IP Fragmentation&Reassembly Library

實現(xiàn)IPv4和IPv6數(shù)據(jù)包的分片和重新組裝。

Vhost Library

實現(xiàn)用戶空間的虛擬主機驅(qū)動。同時支持vhost-cuse(字符設(shè)備)和vhost-user(套接字服務(wù)器)。它也為客戶機中相應(yīng)的半虛擬化設(shè)備創(chuàng)造,管理,刪除虛擬主機設(shè)備(creates, manages and destroys vhost devices for corresponding virtio devices in the guest)。

7其他內(nèi)容

編輯

Multiprocess Support

多進(jìn)程支持。用于允許一系列DPDK進(jìn)程以透明的方式同時工作在Intel架構(gòu)上。

Kernel NIC Interface

內(nèi)核網(wǎng)卡接口。允許用戶空間應(yīng)用進(jìn)入Linux控制平面。該接口較現(xiàn)有的Linux TUN/TAP接口更快,允許用標(biāo)準(zhǔn)Linux網(wǎng)絡(luò)工具(如ethtool,ifconfig,tcpdump)對DPDK端口進(jìn)行管理,還提供了到內(nèi)核網(wǎng)絡(luò)棧的接口。

Quality of Service Framework

QoS(服務(wù)質(zhì)量)架構(gòu)。包括帶QoS支持的數(shù)據(jù)包管道、分級調(diào)度(Hierarchical Scheduler)、丟包器(dropper)、流量計量(traffic metering)。

Power Management

能源管理。允許用戶空間應(yīng)用通過調(diào)整CPU頻率或進(jìn)入不同的C-state來節(jié)省電量。

Packet Classification&Access Control

數(shù)據(jù)包分類與準(zhǔn)入控制。用以基于一系列規(guī)則對輸入的數(shù)據(jù)包進(jìn)行分類。

Packet Framework

數(shù)據(jù)包分組架構(gòu)。設(shè)計功能包括:

  1. 為建造復(fù)雜的數(shù)據(jù)包處理管道提供標(biāo)準(zhǔn)方法
  2. 為相同的管道程序塊提供在純軟件和硬件加速這兩種實現(xiàn)間切換的能力
  3. 在靈活性和性能間找到最佳的折中方案
  4. 提供邏輯上類似于Open Flow(SDN核心技術(shù))的架構(gòu)。

Port Hotplug Framework

端口熱插拔架構(gòu)。允許DPDK應(yīng)用在運行時接入和彈出端口。這需要內(nèi)核對PCI熱插拔功能的支持。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深入了解DPDK:如何優(yōu)化網(wǎng)絡(luò)包處理性能
DPDK分析
DPDK盒子使用手冊——DPDK入門
異構(gòu)系統(tǒng)架構(gòu)標(biāo)準(zhǔn)——HSA
果酸治療黃褐斑臨床觀察_王冰
硝酸甘油激發(fā)直立傾斜試驗心率預(yù)警指標(biāo)的探討_王立群
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服