<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DPDK在AI驅動的高效數據包處理應用

jh18616091022 ? 來源:AIOT大數據 ? 2024-02-25 11:28 ? 次閱讀

交換機、路由器、防火墻等網絡設備通常需要實時處理大量數據包。在現代網絡中,數據包處理是一個非常重要的環節。傳統上,高效的數據包處理需要使用專門且昂貴的硬件,而數據平面開發套件 ( DPDK )能在低成本商用硬件上做到這一點。通過使用商用硬件,還可以將網絡功能轉移到云端,并在虛擬化環境中運行它們。
DPDK最初是由 Intel 于2010年發起的,Intel 的 Venky Venkatesan 被稱為“ DPDK之父”。2017年4月,DPDK成為Linux基金會下的一個項目。目前,許多開源項目已經采用了DPDK,包括 MoonGen、mTCP、Ostinato、Lagopus、Fast Data (FD.io)、Open vSwitch、OPNFV 和 OpenStack。

d083c1e4-d256-11ee-a297-92fbcf53809c.png

| DPDK框架當然,DPDK也面臨著一些挑戰,包括無法支持某些網卡;對 Windows 的支持有限;調試比較困難;版本兼容性問題等。

01.DPDK如何改進數據包處理?

傳統的數據包處理方式是數據包先到內核最后再到用戶層進行處理。這種方式會增加額外的延遲和CPU開銷,嚴重影響數據包處理的性能。DPDK 繞過內核,在用戶空間中實現快速數據包處理。它本質上是一組網絡驅動程序和庫。環境抽象層 ( EAL ) 從應用程序中抽象出特定于硬件的操作。下圖顯示了在數據包到達應用程序之前,POSIX調用的傳統處理是如何通過內核空間的。DPDK縮短了這條路徑,并直接在NIC和用戶空間應用程序之間移動數據包。

d0b3aa80-d256-11ee-a297-92fbcf53809c.png

傳統的處理是中斷驅動的,當數據包到達時,NIC會中斷內核。DPDK轉而使用輪詢,避免了與中斷相關的開銷。這是由輪詢模式驅動程序 ( PMD ) 執行的。另一個重要的優化是零拷貝。在傳統網絡中,數據包從內核空間的套接字緩沖區復制到用戶空間。DPDK避免了這種情況。DPDK的用戶空間對開發人員很有吸引力,因為不需要修改內核。任何基于DPDK 的網絡堆棧都可以針對特定應用進行優化。

02.DPDK采用的數據包處理模型是什么?

大致有兩種處理模型:
# Run-to-CompletionCPU內核處理數據包的接收、處理和傳輸??梢允褂枚鄠€內核,每個內核與專用端口關聯。通過接收端擴展 ( RSS ),到達單個端口的流量可以分配到多個內核。
# Pipeline每個內核專用于特定的工作負載。例如,一個內核可能處理數據包的接收/傳輸,而其他內核則負責應用程序處理。數據包通過memory rings在內核之間傳遞。

d0d72cb2-d256-11ee-a297-92fbcf53809c.png

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

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

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

04.在DPDK之前,廠商如何實現高效的數據包處理?

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

05.業界誰在使用DPDK?

負載均衡、流分類、路由、訪問控制(防火墻)和流量監管是DPDK的典型用途。DPDK不僅適用于電信行業,也已在云環境和企業中使用。流量生成器 (TRex) 和存儲應用(SPDK) 使用DPDK。下圖列出了DPDK支持的開源項目。

d26764de-d256-11ee-a297-92fbcf53809c.png

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

06.DPDK面臨哪些挑戰?

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

07.還有哪些替代選擇?

使用 Snabbswitch、Netmap 或 StackMap 可以通過內核旁路實現更快的數據包處理。與DPDK一樣,它們在用戶空間中處理數據包。數據包完全繞過內核堆棧。Snabbswitch 是用 Lua 編寫的,而DPDK是用 C 編寫的。PacketShader 對基于GPU的硬件進行內核旁路。另一種方法是修改 Linux 內核。例如 eXpress Data Path ( XDP ) 和基于遠程直接內存訪問 ( RDMA ) 的網絡堆棧。其他有效的工具還包括 packet_mmap (但不會繞過內核)和 PF_RING (帶有 ZC 驅動程序)。

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 交換機
    +關注

    關注

    19

    文章

    2457

    瀏覽量

    95787
  • 路由器
    +關注

    關注

    22

    文章

    3547

    瀏覽量

    111542
  • AI
    AI
    +關注

    關注

    87

    文章

    26788

    瀏覽量

    264441
  • 數據包
    +關注

    關注

    0

    文章

    231

    瀏覽量

    24133
  • DPDK
    +關注

    關注

    0

    文章

    13

    瀏覽量

    1710

原文標題:技術前沿:AI之高效數據包處理DPDK

文章出處:【微信號:AIOT大數據,微信公眾號:AIOT大數據】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何在AIROC GUI上獲取良好數據包和總數據包?

    使用 IQxel-MW LifePoint 作為發生器并發送波形BT_1DH5_00001111_Fs80M.iqvsg,但無法 AIROC 工具中接收數據包。 以下是從 IQxel 發送
    發表于 05-22 06:39

    一種高效的串口數據包接收方式

    ,尾。長度等)沒有任何限制,只要求數據包之間的時間間隔大于數據包內每個字節間的間隔(這是自然的傳輸情況)2.不像其他一些緩存式的接收方式需要緩存間的二次拷貝3.所有處理都是
    發表于 01-14 16:13

    請問,CAN發送數據出現數據包丟失的情況

    請問,CAN發送數據出現數據包丟失的情況,怎么解釋呀,CAN不是有自動重發功能嗎。大家對于數據包丟失這種情況是怎么處理
    發表于 12-12 20:51

    CC1101快速接收兩個數據包處理方式?

    CC1101快速接收兩個數據包處理方式?當接受到一個數據包之后,來一個中斷,中斷處繼續來著接受或者寄存器配置RX完會后繼續保持為接受狀
    發表于 03-10 14:04

    CC1101快速接收兩個數據包處理方式是怎么樣的?

    CC1101快速接收兩個數據包處理方式是怎么樣的?當接受到一個數據包之后,來一個中斷,中斷處繼續來著接受或者寄存器配置RX完會后繼續
    發表于 04-05 15:57

    CC1101同時接收兩個數據包的話,會怎么處理?

    CC1101 當有兩個數據包同時給一個CC1101,接受側接受一個數據包之后放在RXfifo內,未讀取,第二個數據包可以接受放在上一個數據包RXfifo之后嗎?還是將上一個
    發表于 04-18 15:04

    AXI流數據包傳輸問題

    中包含512個雙字。介于9.-512之間。數據相同(“deadbeef”)。我可以vivado仿真上正確看到這些數據包。但是當我編程FPGA時,我無法在內存中正確讀取數據包。 我正在
    發表于 04-15 13:51

    請問串口通信中數據包的幀頭和幀尾怎樣加入到數據包?

    在發送端發送時,即校驗幀頭幀尾?還是只需要在接收端校驗幀頭幀尾即可? 2,請問串口通信中,如果需要發送如3.13這樣的非整形數據,該如何實現?是由發送端進行處理,還是由接收端接收數據
    發表于 03-30 05:55

    如何發送音頻/視頻ISOC數據包?

    我想開發帶有音頻和/或視頻類的 USB 主機應用程序。是否有任何工作示例項目或代碼片段?我檢查了 STM32 HCD 驅動文件 - -ux_hcd_stam32_periodic_schedule.c,但它總是生成 EP_TYPE_INTR 數據包。如何發送音頻/視頻 I
    發表于 12-26 08:18

    DPDK 22.11.1 LTS應用程序對rte_pktmbuf_alloc的調用失敗怎么解決?

    對 rte_pktmbuf_alloc 的調用失?。?b class='flag-5'>在處理了幾千個數據包之后)并出現恐慌: “PANIC in __rte_mbuf_raw_sanity_check():” assert “m->next
    發表于 04-23 09:00

    基于Intel dpdk數據包捕獲技術研究

    對Intel dpdk數據包捕獲技術進行了深入研究,對其優缺點進行了詳細的分析。在此基礎上,利用dpdk設計并實現了一套基于Linux的數據包捕獲系統,成功地將其應用于千兆網絡安全防護
    發表于 11-24 15:17 ?4次下載
    基于Intel <b class='flag-5'>dpdk</b><b class='flag-5'>數據包</b>捕獲技術研究

    開發者如何從DPDK數據包框架中獲益

    Learn about the Data Plane Development Kit (DPDK) Packet Framework and how you can generate DPDK applications using your own recipe.
    的頭像 發表于 09-13 06:20 ?4047次閱讀

    簡述高速流量處理DPDK替代方案

    目前大多需要進行高速流量處理的場景,基本都是使用DPDK進行數據包處理加速,DPDK雖然是開源免費的,但是
    的頭像 發表于 06-22 09:30 ?2300次閱讀
    簡述高速流量<b class='flag-5'>處理</b><b class='flag-5'>DPDK</b>替代方案

    如何使用DPDK和GPUdev增強內聯數據包處理

      對于特定于 NVIDIA 的 GPU , GPUdev 庫功能通過 CUDA 驅動程序 DPDK 庫 。要為 NVIDIA GPU 啟用所有gpudev可用功能, DPDK 必須構建在具有 CUDA 庫和 GDRCopy 的
    的頭像 發表于 05-07 10:08 ?2030次閱讀
    如何使用<b class='flag-5'>DPDK</b>和GPUdev增強內聯<b class='flag-5'>數據包</b><b class='flag-5'>處理</b>

    使用 NVIDIA DOCA GPUNetIO 進行內聯 GPU 數據包處理

    越來越多的網絡應用程序需要進行 GPU 實時數據包處理,以實現高數據率解決方案:數據過濾、數據放置、網絡分析、傳感器信號
    的頭像 發表于 01-13 23:25 ?684次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>