英特爾DPDK技術,有效應對資料平面IO高速轉發業務增長需求

英特爾DPDK技術,有效應對資料平面IO高速轉發業務增長需求

我國正在加速進入數字經濟時代。

中國工信出版傳媒集團副總經理劉華魯表示,截至2021年底,我國企業上雲、使用雲的比例達到80%,上雲已經成為數字化的必經之路。

以上云為主要特徵的數字時代,最典型的一個特徵是資料的高速增長。

據中國信通院資料,截止2021年底,我國在用資料中心機架規模高達520萬架,近5年年均複合增速超過30%,其中大型以上資料中心機架規模420萬架,佔比達到80%。IDC更是預測,到2025年,資料中心流量預計將增長超過180ZB,資料中心業務高吞吐的發展趨勢非常明顯。

英特爾DPDK技術,有效應對資料平面IO高速轉發業務增長需求

在資料大爆發的大背景下,資料中心網路內部交換系統也在大提速,從10GE、40GE向100GE、400GE提速,相應的,一場圍繞網路資料傳輸最佳化的攻堅戰也在上演。

雲時代的資料傳輸痛點

雲時代,網路傳輸(I/O)的變革是深刻的。

在傳統網路時代,路由器、交換機等裝置都是採用硬體的解決方案,基於專用化、定製化的處理器。這種方式的缺點很明顯,存在除錯維護難、升級迭代難等問題。而且,傳統通訊專有化裝置需要維護多個平臺硬體,控制平面、資料平面的軟硬體各不相同,維護成本高昂。

尤其是當雲時代到來時,透過網路功能虛擬化共享硬體成為行業標配,即透過標準的伺服器、標準的乙太網交換機來實現各種功能。如英特爾公司早在10多年前就提出4合1戰略,即應用、控制、資料、訊號處理都統一在IA(Intel Architecture)處理器平臺上。

英特爾DPDK技術,有效應對資料平面IO高速轉發業務增長需求

然而,雲時代資料的大爆發,為網路資料傳輸帶來極大挑戰。在業界,曾經相繼出現過C10K、C100K、C10M等難題就是這樣。所謂C10K,是單機1萬個併發連線問題,同樣,C100K是實現單機併發連線100萬,C10M是實現千萬併發連線。

在硬體上這些問題解決起來不難,堆硬體就可以實現,但是這樣做的弊端也顯而易見,既成本高昂,又不通用。2013年,Errata Security公司CEO Robert Graham用軟體的方式解決了這一難題,他認為,Linux系統的設計初衷是傳統電話網路的控制系統,而非伺服器OS,不適合處理大規模的網路資料包。

更重要的是,他得出一個結論:

OS的核心不是解決C10M問題的路徑,相反,OS核心正是導致C10M問題的瓶頸。

資料可以很直觀地解釋這個結論。以40G介面為例,如果要達到40G線速,一個2。0主頻的CPU需要平均16。8ns / 33個cycles處理一個64位元組包長的報文。而在IA平臺,基於Linux OS核心態的網絡卡驅動,單核的轉發能力只有2Mpps@64B,遠低於網絡卡的最大吞吐能力。

為什麼會這樣?在老調“芯”說最新一期影片“DPDK:讓資料包極速狂奔”中,很形象地解釋了其中的重要原因。網路資料傳輸就像是收發檔案、蓋章抄送,要完成這個工作,有兩種路徑,一種路徑是專用處理器,另一種路徑是通用處理器,而通用處理器之所以效率低,並不是自己本身原因,而是Linux系統的工作模式:因為傳統的網絡卡驅動執行在作業系統核心態,而絕大多數軟體程式碼執行在使用者態,核心態的網絡卡驅動採用中斷模式通知CPU處理資料包,而隨著網路流量激增,僅僅響應中斷就讓CPU疲於應付,而在核心態和使用者態之間的切換和資料複製等額外開銷也會浪費CPU的處理能力。

所以,這個時候,急需一套基於常用系統和標準伺服器的高效能網路傳輸開發框架,來規避傳統核心態網絡卡驅動的額外開銷,充分利用IA處理器的能力來實現高效的報文轉發和處理,更好地應對雲時代對資料IO需求的激增。

DPDK技術大揭秘

DPDK技術正是在這種大背景下應運而生。

2008年,DPDK由英特爾公司的網路通訊部門提出,主要是針對基於Intel的處理器和網絡卡開發。正如其全稱(Data Plane Development Kit,資料平面開發套件),DPDK提供豐富、完整的框架,讓CPU快速實現資料平面應用的資料包處理,高效完成網路轉發等工作。

說到這裡,有必要解釋一下資料平面的概念。在通訊框架中,資料傳輸和連線管理通常被拆分為多個獨立的操作,這些操作被稱為“平面”,平面包括管理平面、資料平面、控制平面。在傳統網路,這些平面都在路由器和交換機的韌體中實現,管理平面負責為網路堆疊各個層級和網路系統的其他部分提供管理、監控和配置服務;控制平面決定流量的傳輸路徑;資料平面又稱為使用者平面,承載使用者流量,並負責介面間的資料包轉發。

英特爾DPDK技術,有效應對資料平面IO高速轉發業務增長需求

DPDK的主要目的就是透過提供簡單、完整的框架,快速實現資料平面應用的資料包處理,其核心特徵就是繞過了Linux核心態對資料包的處理過程,直接在使用者態收發包來解決核心的瓶頸。用收發檔案來類比,傳統的方式是從網絡卡到使用者態,需要先透過核心,就像檔案不是直接送給你,而是中間要經過傳達室一樣,這樣的效率可想而知。而DPDK繞過核心,避免了從核心態向用戶態複製資料的開銷,以及核心態與使用者態切換的開銷,就像檔案直接送給你一樣,能夠實現更高的效率。

英特爾DPDK技術,有效應對資料平面IO高速轉發業務增長需求

除了使用者態驅動,DPDK用輪詢模式解決了中斷響應造成的上下文切換開銷。借用老調“芯”談影片的類比,中斷模式,就像是每送來一個檔案,就拍你一下,讓你看有檔案來了,而輪詢模式則是直接將檔案放到你的桌子上,你有空抬頭看一眼就拿過來處理。顯然,輪詢的模式效率更高。

繫結處理核的做法,則讓DPDK解決了OS對報文處理核排程的開銷問題。傳統上,多核處理器在工作時,資料包可能會跨越多個CPU核心,這容易造成CPU快取失效,DPDK具有CPU親和性,將執行緒和CPU核進行一對一繫結,減少了彼此之間的排程切換的開銷。同樣用收發檔案來類比,原來是一份檔案在運輸過程中由幾個人完成,每換一個人都需要交接,而DPDK的繫結處理核的做法則是每一份檔案都由專人負責到底,中間省去了交接的開銷。

此外,DPDK還用大頁記憶體代替普通記憶體,減少了快取失效問題;用無鎖技術解決了資源競爭問題等等。可以這樣說,DPDK的每一個技術,或者採用的每一種方法都是為了節省資料包的處理時間,讓資料加速奔跑。

英特爾DPDK技術,有效應對資料平面IO高速轉發業務增長需求

目前,DPDK已經開源,越來越多的廠商參與進來貢獻程式碼,這使得DPDK可以支援更多的CPU和網絡卡,如CPU不僅支援IA,還支援AMD、ARM等廠商的處理器,網絡卡支援的範圍也包括Intel網絡卡、Mellanox網絡卡、ARM整合網絡卡等。

據瞭解,目前DPDK廣泛應用在通訊、網際網路領域,很多的開源專案也利用DPDK作為傳輸的加速通道,比如OVS。作為優秀的使用者空間高效能資料包加速套件,DPDK現在已經作為“膠水”模組被用於多個網路資料處理方案中,用來提升效能。

英特爾DPDK技術,有效應對資料平面IO高速轉發業務增長需求

在招聘網站上,筆者也注意到DPDK相關職位也變得越來越熱門,很多雲計算廠商都在高薪招聘“DPDK網路開發工程師”等職位。

總而言之,DPDK在雲時代影響深遠,它解決了通用處理器如何快速處理資料包的問題,也一舉粉碎了“IA處理器不適用於資料平面IO高速轉發業務場景”的傳統觀點,讓通用處理器代替專用處理器,高效地支撐起數字時代的資料洪流。

頂部