1.背景介紹
1.1.業務背景
服務網格(Service Mesh)是微服務架構中的一種重要技術,它主要處理服務之間的通信,為服務間的信息交換提供更安全、更快速且更可靠的基礎設施層。服務網格將服務治理從業務邏輯中剝離出來,拆解為獨立的進程,實現異構系統的統一治理和增強網絡安全。
一個典型的服務網格部署示意圖如下:

其中綠色方塊為應用服務,藍色方塊為代理。應用服務之間通過代理進行通信,整個服務通信形成圖中的藍色網絡連線,圖中所有藍色部分就形成了服務網格。
服務網格的主要特點包括:
- 無侵入性:服務網格的設計理念是將通信和管理邏輯與業務邏輯解耦,使得業務邏輯無需關注通信細節,從而實現了對業務代碼的無侵入性。
- 統一治理:通過服務網格,可以實現對微服務架構中所有服務的統一治理,包括服務發現、負載均衡、安全認證、監控和跟蹤等功能。
- 可擴展性:服務網格支持多種微服務框架和服務治理能力,能夠輕松擴展以支持更多的服務和場景。
服務網格的架構通常包括控制平面和數據平面,其中控制平面用于配置、管理和監控數據平面中的Sidecar代理,提供服務發現、負載均衡、安全認證等功能。
數據平面主要由邊車Sidecar組成,它以輕量級的網絡代理形式存在,與每個微服務實例部署在同一個主機或容器中,作為服務的附屬組件運行。邊車的主要職責是攔截和處理服務之間的通信流量,并與控制平面進行交互,實現服務發現、負載均衡、安全認證、監控和跟蹤等功能。
邊車的工作流程通常包括以下幾個步驟:
- 攔截通信流量:邊車代理攔截服務之間的所有入站和出站請求和響應。
- 服務發現:邊車代理向服務注冊中心注冊服務實例,并根據需要動態地發現和管理服務實例。
- 負載均衡:邊車代理根據配置的負載均衡算法,將請求分發到多個服務實例中,以提高服務的可用性和性能。
- 安全認證:邊車代理可以實施安全認證策略,確保服務之間的通信是安全的。
- 監控和跟蹤:邊車代理收集和傳輸服務間的通信流量數據,以實現監控、日志記錄、錯誤追蹤和性能調優等功能。
綜上所述,服務網格是微服務架構中的重要組成部分,它們共同為服務間的通信提供了安全、快速且可靠的基礎設施層,并實現了對業務代碼的無侵入性服務治理。
1.2.問題與挑戰
在微服務架構中引入服務網格確實可以帶來諸多好處,如簡化服務治理、提高安全性和可觀察性等,但同時也伴隨著一系列問題和挑戰。以下是幾個主要方面:
- 邊車帶來的資源開銷:每個微服務應用都都需要運行一個邊車代理,實際部署是每個POD部署一個邊車容器。邊車容器需要額外的計算資源來處理服務間的通信,默認情況下每個邊車容器占用0.2個CPU核。假設一臺服務器運行了60個POD,那么邊車容器將額外占用12個CPU核。
- 業務轉發時延增加:應用程序的每個數據包都必須通過邊車容器,數據包在應用程序和內核之間往返多次,如下對比是單個pod進或出增加的時延。

如圖所示,右側的是引入服務網格的方案,Pod內多了邊車容器,相比左側未引入服務網格的方案,數據包增加了內核往返次數,增加了時延。
通過上述分析可以看出,在微服務架構中引入服務網格確實帶來了資源開銷和轉發時延的問題。
2.方案介紹
2.1.整體方案架構
服務網格DPU卸載解決方案將服務網格的sidecar邊車容器集中卸載到DPU卡上執行,可以顯著降低服務器CPU的算力消耗。同時,DPU卡高性能轉發引擎實現了網絡轉發功能的加速,從而能夠有效降低業務時延。該方案支持和原生Istio的無縫對接,對用戶業務無侵入,可以實現業務的平滑遷移。

如圖所示,紅色系為本方案涉及本方案涉及部分,包括DPU卡及其提供給到主機側的SRIOV vf口、主機側CNI(istio-dpu-cni)。
業務容器的流量治理功能由DPU卡上的共享服務代理dpu-proxy提供,它由原生的邊車容器從POD中抽離出來卸載到DPU卡上。它的配置由istio-dpu-cni通過對接istio獲取并轉換為集中式配置并下發下來。流量通過DPU提供的vf口到達DPU側的dpu-proxy進行流量治理。
此架構的控制面仍為原生的istio,下發xDs配置給轉發面;服務網格CNI(istio-dpu-cni)做為DPU卡在k8s集群的接口,無縫對接istio/收集集群信息,相當于DPU管理面給DPU組件下發配置及規則,使DPU卡可以實現原生的透明流量劫持以及流量治理的功能;DPU卡上的dpu-proxy做為服務網格的轉發面,接收配置并根據配置對流量進行流量治理。
集群內的主機上插入DPU卡(紅色),在主機側集群內部署安裝服務網格CNI(istio-dpu-cni組件)后,istio-dpu-cni組件可無縫對接控制平面K8s及Istio獲取服務網格及網絡配置、使能DPU卡上的共享服務代理dpu-proxy及轉發引擎dataplane、下發相關的啟動配置,主機即具有服務治理功能。之后在部署業務POD時,業務添加高速網口vf后,提供用戶接口,使業務流量通過vf到達DPU側dpu-proxy進行流量治理與轉發。
2.2.方案描述
2.2.1.主機側組件服務網格CNI實現管理平面
服務網格CNI(istio-dpu-cni組件)在主機側k8s集群部署,無縫對接控制平面K8s及Istio獲取配置等信息,轉換為共享式代理配置下發到DPU側的共享代理;基于DPU板卡的sriov功能,可給業務POD添加低時延高速網口vf及分配置IP地址;同時使能DPU側轉發引擎dataplane,給dataplane下發引流轉發配置。

如圖所示,服務網格CNI包括istio-dpu-controller、istio-dpu-adapter和istio-dpu-cni三個組件:
① istio-dpu-controller 使用daemonset方式部署在集群master上
主要是用于生成dpu級別的集中式服務網格配置,收集集群信息如pod變化、nodename等,轉換為istio的inbound和internal 配置,并下發給對應節點的istio-dpu-adapter。
② istio-dpu-adapter 使用daemonset部署在每個主機節點上
主要是用于無縫對接原生控制平面istio,可自動獲取配置,轉換集群內信息把原生配置聚合為共享式服務網格配置下發給代理dpu-proxy。
③ istio-dpu-cni 使用daemonset部署在每個主機節點上
可配置網絡模式是underlay或者overlay,針對性下發不同的網絡規則;收集集群內信息(node, ns, service, pod等),提供用戶接口可對dpu側的轉發引擎dataplane下發轉發及引流規則,使dataplane能進行透明劫持低時延業務流量到dpu-proxy做流量治理。
除自研的CNI外,引入的開源組件為multus、sriov、spiderpool(不涉及開源組件的改動),通過二進制或pod的形式部署在需要的節點上。
2.2.2.DPU側組件轉發引擎及代理實現轉發平面

如圖所示,DPU側組件包括轉發引擎dataplane和共享服務代理dpu-proxy兩個組件。在DPU卡的soc上,部署兩個容器組件實現服務網格轉發面功能,流量透明劫持及流量治理。
① 共享服務代理dpu-proxy采用容器方式部署在DPU卡的SOC上
擴展封裝原生邊車代理istio-proxy為DPU共享服務代理dpu-proxy。它解析istio-dpu-adapter下發的動態共享式服務網格配置,對進出本機的低時延業務流量進行治理與轉發。支持原生的四層TCP流量及七層HTTP流量治理;支持generic-proxy框架對其他七層流量進行流量治理。
② 轉發引擎dataplane采用容器方式部署在DPU卡的SOC上
dataplane接入協議棧(內核/用戶態),并可通過vcl共享內存方式與共享服務代理dpu-proxy交互;接收istio-dpu-cni下發的轉發及引流規則,根據規則把流量劫持到dpu-proxy;治理過的流量按轉發規則進行網絡封裝及轉發;dataplane加載vf-representer,通過NP(網絡轉發引擎)從vf-representer口收發對應pod內vf口的流量。
2.2.3.DPU共享服務代理流量轉發模型

同主機內的業務互訪如圖(紅色),client端業務流量經高速口vf到達DPU共享服務代理進行服務治理后,再經轉發引擎dataplane轉發到本主機的server端Pod。
跨主機業務互訪如圖(藍色),client端業務流量經高速口vf到達DPU共享服務代理進行服務治理。治理后流量到達轉發引擎dataplane,根據轉發規則轉到目標主機的DPU上共享服務代理做inbound入口流量治理。治理后流量再經轉發引擎dataplane轉到目標主機的server端Pod。
3.方案優勢
3.1.方案優勢
本方案創新性的將服務網格邊車代理集中卸載到DPU上,可以帶來一系列顯著的優勢,包括以下幾個方面:
①顯著降低服務器開銷:
- 資源消耗減少:傳統的邊車模式需要在每個服務容器旁邊部署一個邊車代理,這會導致大量的資源消耗(如CPU、內存)。通過將代理集中部署在DPU上,可以消除這些額外的資源消耗,使主機側的資源更加專注于業務邏輯處理。
- 優化資源利用率:DPU作為專門的硬件加速單元,能夠更高效地處理網絡流量和加密解密等任務,從而釋放主機CPU資源,提高整體系統的資源利用率。
②極致的低時延:
- 用戶態協議棧Bypass內核:通過將網絡處理移至DPU的用戶態協議棧,繞過傳統的內核態處理,可以顯著減少數據包在內核與用戶空間之間切換的開銷,從而大幅降低網絡延遲。
- 服務網格快路徑:自研的服務網格快路徑技術可以進一步優化網絡路徑,減少不必要的處理步驟,確保數據包能夠以最短的路徑和最快的速度在網絡中傳輸。
③即插即用:
- 無侵入式服務治理:集中式代理模式允許在不修改現有應用代碼的情況下實現服務治理功能,如流量管理、安全控制等。這使得新服務的部署和現有服務的升級變得更加簡單快捷。
- 靈活部署:DPU作為獨立的硬件組件,可以輕松地集成到現有的服務器架構中,實現即插即用。這種靈活性使得企業可以根據實際需求快速調整網絡架構和服務部署策略。
④增強的安全性和隔離性:
- 服務隔離:通過DPU上的集中式代理,可以減少不同服務和邊車容器之間的干擾,防止潛在的安全風險。
綜上所述,將邊車代理集中卸載到DPU上是一種高效、靈活且安全的網絡架構優化方案,能夠顯著降低開銷、提升系統的性能并增強安全性和隔離性。
3.2.未來與展望
服務網格DPU卸載解決方案,作為云原生時代的一項創新技術,其核心價值在于顯著優化了邊車代理模式所帶來的資源消耗問題,并大幅降低了業務請求在微服務間的轉發時延。
隨著云原生技術和微服務架構在各行各業的深入滲透,特別是在云計算、金融科技、物聯網、邊緣計算等領域,對于高效、可靠、可擴展的系統架構需求日益迫切。服務網格DPU卸載解決方案正是順應這一趨勢,憑借其卓越的性能提升和資源優化能力,展現出了極為廣闊的應用前景和市場空間。
更為重要的是,該方案和技術正處于快速發展和不斷完善的階段。隨著DPU技術的不斷創新和服務網格框架的持續演進,未來將有更多高級功能被集成到DPU中,如更精細的流量管理、增強的安全策略執行、智能的數據處理加速等。服務網格DPU卸載方案將吸引更多行業巨頭、初創企業以及技術開發者加入DPU生態,共同探索和實踐DPU技術的潛力,推動其標準化、生態化的發展進程。
總之,服務網格DPU卸載解決方案作為云原生和微服務架構下的技術探索,展現出了巨大的潛力,有望成為推動云原生技術普及和深化的關鍵力量,為數字化轉型注入新的活力和動力。
本方案來自于中科馭數軟件研發團隊,團隊核心由一群在云計算、數據中心架構、高性能計算領域深耕多年的業界資深架構師和技術專家組成,不僅擁有豐富的實戰經驗,還對行業趨勢具備敏銳的洞察力,該團隊致力于探索、設計、開發、推廣可落地的高性能云計算解決方案,幫助最終客戶加速數字化轉型,提升業務效能,同時降低運營成本。
-
云計算
+關注
關注
39文章
7972瀏覽量
139510 -
DPU
+關注
關注
0文章
391瀏覽量
24769 -
網格
+關注
關注
0文章
140瀏覽量
16286 -
微服務
+關注
關注
0文章
145瀏覽量
7688
發布評論請先 登錄
全面互操作FCoE卸載解決方案性能高
Qorvo分布式Wi-Fi網格解決方案
微服務網關gateway的相關資料推薦
專?數據處理器 (DPU) 技術??書
什么是DPU?
iot環境監測 多服務網關連接傳感器與云的通信

Service Mesh服務網格新生代

華為云國內首發Istio服務網格
這幾個要素將幫助DevOps團隊確定適合其特定情況的服務網格

9種主流的用以支撐微服務開發的服務網格框架及應用場景
DPU技術解決方案的挑戰和機遇
網易數帆基于NVIDIA BlueField DPU 構建完備的裸金屬服務器解決方案
在不同應用場景下DPU不同的性能要求闡述

基于DPU的Openstack裸金屬服務網絡解決方案

評論