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

WP001-無(wú)線傳感器網(wǎng)絡(luò)面臨的挑戰(zhàn)和解決方案

無(wú)線傳感器網(wǎng)絡(luò)面臨的挑戰(zhàn)和解決方案

評(píng)論