我們的活動在互聯網上每天都會產生海量的數據。我們知道這是一個“很大”的數字,但你知道到底有多大嗎?
據粗略估算,目前互聯網上每天新增的數據量超過 1.15 EB 。而預測到 2025 年,這一數字會增長到 491 EB。如果看不出來這個數字有多大,那么看下這個單位換算公式:1 EB = 1*1024*1024*1024 GB。
因為物聯網也在超快地發展,無處不在的 IoT 設備會產生更多的數據,所以互聯網數據會呈指數級增長。那么無論是云計算、大數據分析應用,還是 AI 處理,網絡傳輸能否及時“吞”下暴漲的數據,就決定了服務的能力。
但目前承載互聯網服務的主流操作系統 Linux卻存在網絡性能瓶頸,問題出在哪里呢?
1Linux 網絡的瓶頸
當 Linux 在 20世紀90 年代初設計開發 Linux 內核時,還無法預料到未來30年全球互聯網的規模,所以也不可能按現在的數據流量去做設計。而 Linux 內核的基本結構也保持到現在。
因此問題就在于 Linux 內核網絡協議棧的實現,相對于當下的數據吞吐量需求,有以下三個原因會產生網絡傳輸瓶頸:
應用程序和網絡協議棧在交換數據時,會頻繁地在用戶態與內核態之間切換,導致延時產生;
數據要在用戶空間緩存與內核空間緩存之間往來復制,耗費時間;
內核協議棧需要對數據進行封裝和解析工作,占用 CPU 時鐘。
內核協議棧方案的數據流
辦法總比困難多,《Linux高性能網絡詳解:從DPDK、RDMA到XDP》一書就針對上述問題給出了包括軟件與硬件的解決辦法。本書的作者是業內資深專家,他在書中以理論結合實踐,說明了 DPDK、RDMA、XDP 實現 Linux 高性能網絡以及保障傳輸安全的方案。
2DPDK:低成本的高性能網絡技術
DPDK(Data Plane Development Kit,數據平面開發工具包)是在用戶態運行的一組軟件庫和驅動程序。它的一大優點是可以在所有主要 CPU 體系上加速網絡數據包的處理,這樣一來,現有硬件無須升級,只要在內核加裝相應驅動就可以提升網絡性能,是一種低成本的實現方案。
DPDK 技術原理是繞過 Linux 內核協議棧直接訪問網卡硬件,從而提高網絡數據包的處理速度和吞吐量。DPDK 將網卡的數據包直接映射到用戶空間,然后使用高效的數據包處理庫進行數據包的處理和轉發,最后再將數據包發送回網卡。
在數據中心、云計算、虛擬化、網絡安全等應用場景中,DPDK可以提高網絡應用的性能和吞吐量、降低網絡延遲、提高網絡應用的響應速度和穩定性,還可以支持多種網絡協議和數據包格式,具有很好的靈活性和可擴展性。
DPDK 為處理數據包實現了一個“運行到完成”(run to completion)的模型,在執行數據平面處理邏輯之前,必須先分配所有資源,然后以邏輯核上執行單元(線程)的形式運行。該模型不支持調度器,以輪詢的方式訪問所有設備。
DPDK 的核心是一組庫,下圖是核心組件以及它們之間的依賴關系。
DPDK 核心組件
《Linux高性能網絡詳解:從DPDK、RDMA到XDP》詳細說明了 DPDK 的內存管理與優化、DPDK 的編譯與運行方法,介紹了測試和分析高性能網卡的工具與方法,是手把手式的貼心教程。這對于講述內核驅動開發來說,是相當友好的學習體驗。
接下來,我們了解一種軟硬件結合的解決方案。
3RDMA:軟硬兼施的高性能網絡技術
RDMA(Remote Direct Memory Access,遠程直接內存訪問)提供了一種消息服務,應用程序可基于該服務直接讀寫遠程計算機上的虛擬內存。
RDMA 相對于 DPDK 技術,不僅繞過了軟件協議棧,最大的優點是將數據封裝和解析工作放在了網卡里,由硬件來實現。這樣就降低了 CPU 的負載,特別適合高性能計算場景,例如分布式神經網絡計算。
它的工作原理是通過操作系統的通信機制建立通道,由應用程序在用戶態直接操作硬件,數據無須流經內核,從而實現高效的網絡傳輸性能。
下面我們從數據在兩臺主機之間的傳輸過程來了解一下 RDMA 的工作方式:
發送端網卡從本機內存用戶空間復制數據到硬件緩沖區,并添加協議頭,完成封裝工作;
發送端網卡將數據通過網線或光纖將數據發往對端;
接收端網卡收到數據后,進行協議解封裝,然后將數據從硬件緩沖區復制到本機用戶空間內存中。
RDMA 方案的數據流
由上述可知,采用 RDMA 方案可以穩定獲得網卡最大速率傳輸能力,而不會因為 CPU 負載變化造成傳輸效能波動。但在部署組網時,必須采購支持 RDMA 的特殊網卡。
《Linux高性能網絡詳解:從DPDK、RDMA到XDP》對 RDMA 組網方案與性能評估測試有詳細說明,對于提供高性能計算服務的企業極具參考價值。
4XDP:高效傳輸的保障
DPDK 在傳輸數據時采用了操作系統內核旁路方式,這固然提升了效率,但也失去了操作系統安全機制提供的防護。這樣就存在數據被截獲、盜取的風險,因此需要有對數據的保護措施,同時保證高效傳輸。
XDP(eXpress Data Path,快速數據通路)是一種 BPF 的程序/代碼,可以理解為掛載在 BPF 處理流程內的掛鉤方法。它能夠在網絡數據到達網卡時就對其處理,而不過多占用 CPU 計算資源。
BPF 提供了在內核事件與應用程序事件發生時執行一段程序的機制。這使得內核可編程,XDP 即基于 BPF 特性為數據高速傳輸提供了保障。目前,XDP 已經是 Linux 內核的一部分,與現有的內核網絡協議棧完全兼容,二者可以協同工作 。
XDP 的典型處理流程如下:
從網卡收到數據包,提取數據報頭信息;
讀取或更新一些元數據;
根據需要修改或者重寫數據包;
根據策略決定是丟包、重傳,還是重定向至內核協議棧等。
典型的 XDP 程序的執行流程
XDP 擁有諸多優點。第一,它由 Linux 內核社區維護,長期使用有保障,也無須額外安裝組件;第二,它可以與內核協同,可復用內核安全模型;第三,BPF能夠識別并拒絕執行不安全指令;第四,它不會獨占 CPU,節約計算資源。
所以,在規劃高性能網絡實施方案時,需要將 DPDK 等技術與 XDP 相結合,盡可能地在性能與穩定、安全之間取得最佳平衡。
5結語
對于企業來說,在規劃和實施網絡方案時,一定要從自身業務特點出發,切忌巨額投資之后卻是高射炮打蚊子的效果。這也需要技術團隊對 Linux 網絡技術原理有透徹理解,然后才能選擇最適合的技術方案。
例如,業務發展穩定且已部署大量 Linux 服務器的企業,為了提升網絡效能,可以選擇 DPDK、XDP 技術。對于意欲進軍 AI 業務的新興企業來說,就要考慮充分解放算力,獲得最優傳輸效能,可以選擇 RDMA 技術路線。而擁有諸多復雜服務的云計算廠商,則要混合部署多種網絡傳輸方案,同時保持穩定和速率。
《Linux高性能網絡詳解:從DPDK、RDMA到XDP》就為實現上述需求提供了很好的指引。從對 DPDK、RDMA、XDP 技術的原理說明,到深入代碼級別的剖析,再以實例展示使用方法。企業據此就可以開展網絡環境評估、技術選型參考、規劃實施等工作。
在數據還將指數級暴增的未來,互聯網企業都要未雨綢繆,及時調整網絡環境,消除網絡傳輸瓶頸,在未來贏得先機!
審核編輯:湯梓紅
-
互聯網
+關注
關注
54文章
11148瀏覽量
103238 -
Linux
+關注
關注
87文章
11293瀏覽量
209338 -
操作系統
+關注
關注
37文章
6802瀏覽量
123285 -
網絡
+關注
關注
14文章
7554瀏覽量
88732 -
性能
+關注
關注
0文章
271瀏覽量
18981
原文標題:Linux網絡性能上不去?三招打通瓶頸,從此網絡高性能
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論