一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于DPDK的一些常見問題

Linux愛好者 ? 來源:SDNLAB ? 2024-03-05 11:44 ? 次閱讀

交換機(jī)、路由器、防火墻等網(wǎng)絡(luò)設(shè)備通常需要實(shí)時(shí)處理大量數(shù)據(jù)包。在現(xiàn)代網(wǎng)絡(luò)中,數(shù)據(jù)包處理是一個(gè)非常重要的環(huán)節(jié)。傳統(tǒng)上,高效的數(shù)據(jù)包處理需要使用專門且昂貴的硬件,而數(shù)據(jù)平面開發(fā)套件 ( DPDK )能在低成本商用硬件上做到這一點(diǎn)。通過使用商用硬件,還可以將網(wǎng)絡(luò)功能轉(zhuǎn)移到云端,并在虛擬化環(huán)境中運(yùn)行它們。

DPDK最初是由 Intel 于2010年發(fā)起的,Intel 的 Venky Venkatesan 被稱為“ DPDK之父”。2017年4月,DPDK成為Linux基金會(huì)下的一個(gè)項(xiàng)目。目前,許多開源項(xiàng)目已經(jīng)采用了DPDK,包括 MoonGen、mTCP、Ostinato、Lagopus、Fast Data (FD.io)、Open vSwitch、OPNFV 和 OpenStack。

5dc0caf0-d9de-11ee-a297-92fbcf53809c.png

| DPDK框架 當(dāng)然,DPDK也面臨著一些挑戰(zhàn),包括無法支持某些網(wǎng)卡;對 Windows 的支持有限;調(diào)試比較困難;版本兼容性問題等。 01 DPDK如何改進(jìn)數(shù)據(jù)包處理? 傳統(tǒng)的數(shù)據(jù)包處理方式是數(shù)據(jù)包先到內(nèi)核最后再到用戶層進(jìn)行處理。這種方式會(huì)增加額外的延遲和CPU開銷,嚴(yán)重影響數(shù)據(jù)包處理的性能。 DPDK 繞過內(nèi)核,在用戶空間中實(shí)現(xiàn)快速數(shù)據(jù)包處理。它本質(zhì)上是一組網(wǎng)絡(luò)驅(qū)動(dòng)程序和庫。環(huán)境抽象層 ( EAL ) 從應(yīng)用程序中抽象出特定于硬件的操作。下圖顯示了在數(shù)據(jù)包到達(dá)應(yīng)用程序之前,POSIX調(diào)用的傳統(tǒng)處理是如何通過內(nèi)核空間的。DPDK縮短了這條路徑,并直接在NIC和用戶空間應(yīng)用程序之間移動(dòng)數(shù)據(jù)包。

5ddca05e-d9de-11ee-a297-92fbcf53809c.png

傳統(tǒng)的處理是中斷驅(qū)動(dòng)的,當(dāng)數(shù)據(jù)包到達(dá)時(shí),NIC會(huì)中斷內(nèi)核。DPDK轉(zhuǎn)而使用輪詢,避免了與中斷相關(guān)的開銷。這是由輪詢模式驅(qū)動(dòng)程序 ( PMD ) 執(zhí)行的。另一個(gè)重要的優(yōu)化是零拷貝。在傳統(tǒng)網(wǎng)絡(luò)中,數(shù)據(jù)包從內(nèi)核空間的套接字緩沖區(qū)復(fù)制到用戶空間。DPDK避免了這種情況。 DPDK的用戶空間對開發(fā)人員很有吸引力,因?yàn)椴恍枰薷膬?nèi)核。任何基于DPDK 的網(wǎng)絡(luò)堆棧都可以針對特定應(yīng)用進(jìn)行優(yōu)化。

02 DPDK采用的數(shù)據(jù)包處理模型是什么?

大致有兩種處理模型:

# Run-to-Completion

CPU內(nèi)核處理數(shù)據(jù)包的接收、處理和傳輸??梢允褂枚鄠€(gè)內(nèi)核,每個(gè)內(nèi)核與專用端口關(guān)聯(lián)。通過接收端擴(kuò)展 ( RSS ),到達(dá)單個(gè)端口的流量可以分配到多個(gè)內(nèi)核。

# Pipeline

每個(gè)內(nèi)核專用于特定的工作負(fù)載。例如,一個(gè)內(nèi)核可能處理數(shù)據(jù)包的接收/傳輸,而其他內(nèi)核則負(fù)責(zé)應(yīng)用程序處理。數(shù)據(jù)包通過memory rings在內(nèi)核之間傳遞。

5dedcc62-d9de-11ee-a297-92fbcf53809c.png

對于單核多CPU部署,一個(gè)CPU分配給操作系統(tǒng),另一個(gè)分配給基于DPDK的應(yīng)用程序。對于多核部署,無論是否使用超線程,都可以為每個(gè)端口分配多個(gè)內(nèi)核。 決定使用哪種模型取決于處理每個(gè)數(shù)據(jù)包所需的周期、跨軟件模塊的數(shù)據(jù)交換范圍、某些內(nèi)核的特定優(yōu)化、代碼可維護(hù)性等。

03 DPDK是否需要TCP / IP堆棧才能工作?

DPDK不包括TCP / IP堆棧。如果應(yīng)用程序需要用戶空間網(wǎng)絡(luò)堆棧,可以使用 F-Stack、mTCP、TLDK、Seastar 和 ANS 。它們通常提供阻塞和非阻塞套接字API,其中一些是基于 FreeBSD 實(shí)現(xiàn)的。 由于省略了網(wǎng)絡(luò)堆棧,DPDK不會(huì)出現(xiàn)通用實(shí)現(xiàn)的低效率問題。應(yīng)用程序可以包括針對其用例進(jìn)行優(yōu)化的網(wǎng)絡(luò)模塊,也可能存在一些不需要更高層(L2 以上)處理的用例。

04 在DPDK之前,廠商如何實(shí)現(xiàn)高效的數(shù)據(jù)包處理?

在DPDK之前,有專門的硬件可以進(jìn)行高效的數(shù)據(jù)包處理。此類硬件可能使用定制的 ASIC、可編程 FPGA 或網(wǎng)絡(luò)處理單元 ( NPU ),這些專用硬件以優(yōu)化的方式完成數(shù)據(jù)包分類、流量控制、TCP / IP處理、加/解密、VLAN標(biāo)記等任務(wù)。 然而,此類硬件的購買和維護(hù)成本昂貴。升級(jí)和安全補(bǔ)丁的應(yīng)用非常耗時(shí),并且需要全職的網(wǎng)絡(luò)管理員。一種解決方案是從專用硬件轉(zhuǎn)向商用現(xiàn)成 ( COTS ) 硬件。雖然這更具成本效益且更易于維護(hù),但性能卻受到了影響。數(shù)據(jù)包從網(wǎng)卡 ( NIC ) 移動(dòng)到操作系統(tǒng) ( OS ),并通過操作系統(tǒng)內(nèi)核堆棧進(jìn)行處理。即使使用快速NIC,內(nèi)核堆棧也是一個(gè)瓶頸。系統(tǒng)調(diào)用、中斷、上下文切換、包復(fù)制和逐包處理都會(huì)降低性能。 DPDK解決了COTS硬件上的性能問題,無需昂貴的定制硬件即可獲得高效的數(shù)據(jù)包處理。

05 業(yè)界誰在使用DPDK? 負(fù)載均衡、流分類、路由、訪問控制(防火墻)和流量監(jiān)管是DPDK的典型用途。DPDK不僅適用于電信行業(yè),也已在云環(huán)境和企業(yè)中使用。流量生成器 (TRex) 和存儲(chǔ)應(yīng)用(SPDK) 使用DPDK。下圖列出了DPDK支持的開源項(xiàng)目。

5dfe9b64-d9de-11ee-a297-92fbcf53809c.png

Open vSwitch ( OVS ) 移植到DPDK后表現(xiàn)出了 7 倍的性能提升。在物聯(lián)網(wǎng)應(yīng)用中,數(shù)據(jù)包很小,DPDK減少了延遲并允許每秒處理更多此類數(shù)據(jù)包。 在 5G 中,用戶平面功能 ( UPF ) 處理用戶數(shù)據(jù)包。延遲、抖動(dòng)和帶寬是需要滿足的關(guān)鍵性能指標(biāo)。一些研究人員已經(jīng)提出將DPDK用于5G UPF的實(shí)現(xiàn)。在邊緣網(wǎng)絡(luò)部署UPF時(shí), 可以使用DPDK API連接UPF應(yīng)用 ( UPF -C) 和 SmartNIC ( UPF -U)。

06 DPDK面臨哪些挑戰(zhàn)? DPDK需要一定的專業(yè)知識(shí),開發(fā)人員需要學(xué)習(xí)DPDK的編程模型。他們需要知道如何管理內(nèi)存、如何在不復(fù)制的情況下傳遞數(shù)據(jù)包,以及如何使用多核架構(gòu)。 例如,PID 命名空間可能會(huì)導(dǎo)致管理fbarray出現(xiàn)問題;使用mmap而不指定地址的進(jìn)程可能會(huì)導(dǎo)致問題;線程必須正確分配給CPU內(nèi)核,才能獲得一致的性能;此外,DPDK庫還給開發(fā)人員提供了多種實(shí)現(xiàn)選擇,選擇錯(cuò)誤會(huì)影響性能。 由于繞過了內(nèi)核,失去了Linux 內(nèi)核提供的所有保護(hù)、實(shí)用程序( ifconfig、tcpdump)和協(xié)議(ARP 、IPSec)。調(diào)試和確定網(wǎng)絡(luò)問題的根本原因也是一項(xiàng)挑戰(zhàn)。最后,由于使用輪詢而不是中斷,因此即使只處理幾個(gè)數(shù)據(jù)包,DPDK也會(huì)導(dǎo)致 100% 的CPU使用率。

07 還有哪些替代選擇?

使用 Snabbswitch、Netmap 或 StackMap 可以通過內(nèi)核旁路實(shí)現(xiàn)更快的數(shù)據(jù)包處理。與DPDK一樣,它們在用戶空間中處理數(shù)據(jù)包。數(shù)據(jù)包完全繞過內(nèi)核堆棧。Snabbswitch 是用 Lua 編寫的,而DPDK是用 C 編寫的。PacketShader 對基于GPU的硬件進(jìn)行內(nèi)核旁路。 另一種方法是修改 Linux 內(nèi)核。例如 eXpress Data Path ( XDP ) 和基于遠(yuǎn)程直接內(nèi)存訪問 ( RDMA ) 的網(wǎng)絡(luò)堆棧。其他有效的工具還包括 packet_mmap (但不會(huì)繞過內(nèi)核)和 PF_RING (帶有 ZC 驅(qū)動(dòng)程序)。 推薦閱讀點(diǎn)擊標(biāo)題可跳轉(zhuǎn)

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 防火墻
    +關(guān)注

    關(guān)注

    0

    文章

    426

    瀏覽量

    36016
  • 交換機(jī)
    +關(guān)注

    關(guān)注

    21

    文章

    2703

    瀏覽量

    101110
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3790

    瀏覽量

    115646
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1395

    瀏覽量

    80163
  • DPDK
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    1817

原文標(biāo)題:全面了解DPDK

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MSP430入門的一些常見問題

    講了MSP430入門的一些常見問題,初學(xué)者很有幫助。
    發(fā)表于 11-07 22:55

    4418開發(fā)板常見問題及解決方法

    這里有我們總結(jié)的一些關(guān)于4418開發(fā)板的一些常見問題和解決方法,供大家參考
    發(fā)表于 09-27 10:38

    設(shè)計(jì)師在使用高速放大器時(shí)遇到的一些常見問題

    在使用高速放大器進(jìn)行設(shè)計(jì)時(shí),定要熟悉其通用的規(guī)格并了解其特定概念。在本文中,高速放大器是指增益帶寬積(GBW)大于或等于50 MHz的運(yùn)算放大器(op amps),但這些概念也適用于低速器件。以下設(shè)計(jì)師在使用高速放大器時(shí)遇到的一些常見
    發(fā)表于 01-06 06:44

    MM32F103產(chǎn)品中的一些常見問題

    LQFP100、LQFP64、LQFP48、LQFP32 和 QFN32 共 5 種封裝形式。根據(jù)不同的封裝形式,器件中的外設(shè)配置不盡相同。該產(chǎn)品適合使用在電機(jī)驅(qū)動(dòng)和應(yīng)用控制,醫(yī)療和手持設(shè)備,工業(yè)應(yīng)用以及警報(bào)系統(tǒng)等。下面英尚微代理商解答關(guān)于MM32F103產(chǎn)品中的一些
    發(fā)表于 01-07 06:00

    STM32中串口的一些常見問題有哪些?

    STM32中串口的一些常見問題有哪些?
    發(fā)表于 02-18 08:00

    充電器常見問題匯編

    充電器常見問題匯編 關(guān)于充電池充電器的常見問題解答 出處:PConline 作者:李俊 ??我們這里應(yīng)廣大讀者的要求,回答一些
    發(fā)表于 11-05 17:16 ?765次閱讀

    變壓器繞制、特性等一些常見問題分析

    變壓器繞制、特性等一些常見問題分析   、變壓器的制作中,線圈的機(jī)器繞制和手工繞制各有什么優(yōu)缺點(diǎn)?
    發(fā)表于 12-11 10:00 ?1451次閱讀

    關(guān)于HPLC的常見問題及解答

    關(guān)于HPLC的常見問題及解答 、問:用HPLC進(jìn)行分析時(shí)保留時(shí)間有時(shí)發(fā)生漂移,有時(shí)發(fā)生快速變化,原因何在?如何解決?答:關(guān)于
    發(fā)表于 12-25 16:34 ?1341次閱讀

    關(guān)于等離子電視機(jī)九大常見問題的解答

    關(guān)于等離子電視機(jī)九大常見問題的解答 對于等離子電視,可能還有很多人不是特別了解,長期以來受到一些錯(cuò)誤的輿論導(dǎo)向,認(rèn)為等
    發(fā)表于 02-09 13:15 ?921次閱讀

    關(guān)于一些手機(jī)信號(hào)放大器安裝的常見問題

    隨著時(shí)代的發(fā)展,手機(jī)信號(hào)放大器也普布出現(xiàn)在的家庭中。最近收集了一些關(guān)于手機(jī)信號(hào)放大器在安裝時(shí)會(huì)遇到的一些問題,整理了四大類常見問題與處理方式,具體內(nèi)容可以看詳細(xì)介紹哦~
    發(fā)表于 09-01 14:35 ?1238次閱讀

    關(guān)于ROM和RAM有哪些常見問題

    關(guān)于ROM和RAM的常見問題分析。
    的頭像 發(fā)表于 11-19 15:51 ?3043次閱讀

    STM32中遇到的問題--關(guān)于串口的一些常見問題

    在單片機(jī)的開發(fā)過程中,最常用的外設(shè)就是串口了,是用來進(jìn)行bug糾錯(cuò)、log輸出的常用工具,也是用來與外部通訊的常見協(xié)議之。 但是在使用串口的過程中難免會(huì)遇到一些問題,下面就我在工作遇到的一些
    發(fā)表于 12-24 18:51 ?2次下載
    STM32中遇到的問題--<b class='flag-5'>關(guān)于</b>串口的<b class='flag-5'>一些</b><b class='flag-5'>常見問題</b>

    納米軟件科普:一些關(guān)于S參數(shù)常見問題的問答

    網(wǎng)絡(luò)分析儀常用被用來測試器件的S參數(shù),本篇文章納米軟件Namisoft小編將為大家整理一些關(guān)于S參數(shù)的常見問題問答,下面起來看看吧。
    的頭像 發(fā)表于 02-02 10:49 ?1430次閱讀

    DHCP服務(wù)器的工作原理及常見問題總結(jié)

    關(guān)于一些DHCP服務(wù)器的工作原理、常見問題總結(jié)和虛擬機(jī)部署DHCP服務(wù)器時(shí)出現(xiàn)的問題
    的頭像 發(fā)表于 02-11 09:26 ?2859次閱讀

    常見問題解答:低壓運(yùn)算放大器

    本應(yīng)用筆記解答了一些關(guān)于低壓運(yùn)算放大器的常見問題。
    的頭像 發(fā)表于 02-21 14:10 ?345次閱讀
    <b class='flag-5'>常見問題</b>解答:低壓運(yùn)算放大器