0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用 ebpf 能力加速ServiceMesh如何降低并消除網(wǎng)絡(luò)時(shí)延帶來的影響

openEuler ? 來源:openEuler ? 作者:openEuler ? 2021-12-21 14:42 ? 次閱讀

服務(wù)網(wǎng)格的前世今生早期的微服務(wù)架構(gòu)上存在著服務(wù)發(fā)現(xiàn)、負(fù)載均衡、授權(quán)認(rèn)證等各種各樣的難題與挑戰(zhàn)。起初微服務(wù)踐行者們大多自己實(shí)現(xiàn)這么一套分布式通信系統(tǒng)來應(yīng)對這些挑戰(zhàn),但這無疑造成了業(yè)務(wù)功能的冗余,解決此問題的方法就是將共有的分布式系統(tǒng)通信代碼提取出來設(shè)計(jì)成一套框架,以框架庫的方式供程序調(diào)用。但這個(gè)看似完美的方法卻存在著幾個(gè)致命的弱點(diǎn):

框架大部分對業(yè)務(wù)來說是侵入式修改,需要開發(fā)者學(xué)習(xí)如何使用框架

框架無法做到跨語言使用

處理復(fù)雜項(xiàng)目框架庫版本的依賴兼容問題非常棘手,框架庫的升級經(jīng)常導(dǎo)致業(yè)務(wù)的被迫升級。

隨著微服務(wù)架構(gòu)的發(fā)展,以 Linkeerd/Envoy/NginxMesh 為代表的 sidecar 代理模式應(yīng)運(yùn)而生,這就是第一代的 serviceMesh。它作為一個(gè)基礎(chǔ)設(shè)施層,與業(yè)務(wù)進(jìn)程完全解耦,和業(yè)務(wù)一起部署,接管業(yè)務(wù)件之間的通信,將網(wǎng)絡(luò)數(shù)據(jù)收發(fā)單獨(dú)抽象出一層,在這層集中處理了服務(wù)發(fā)現(xiàn)、負(fù)載均衡、授權(quán)認(rèn)證等分布式系統(tǒng)所需要的功能,實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)渲姓埱蟮目煽總鬏?,較為完美的解決了微服務(wù)框架庫中的問題。

但在軟件開發(fā)領(lǐng)域沒有萬能的銀彈。ServiceMesh 帶來了這么多便利的同時(shí),也不可避免的存在著一些問題。傳統(tǒng)方式下,客戶端到服務(wù)端的消息僅需進(jìn)出一次內(nèi)核協(xié)議棧即可完成消息傳遞,但在 sidecar 模式中,一般選擇使用內(nèi)核的 iptables 能力劫持業(yè)務(wù)流量,這就造成了業(yè)務(wù)數(shù)據(jù)需要多次進(jìn)出內(nèi)核協(xié)議棧,導(dǎo)致業(yè)務(wù)時(shí)延增大,吞吐量變低。

openEuler 21.03 版本下進(jìn)行 sidecar(envoy)模式基準(zhǔn)測試發(fā)現(xiàn),with-envoy 與 non-envoy 模式下,時(shí)延有大幅增加

利用 ebpf 能力加速 ServiceMesh有沒有什么方法可以在享受 ServiceMesh 提供便利服務(wù)的基礎(chǔ)上同時(shí)降低并消除網(wǎng)絡(luò)時(shí)延帶來的影響呢?在這里就不得不說下 ebpf 技術(shù),ebpf 是在 kernel 中的一項(xiàng)革命性技術(shù),旨在提供不修改內(nèi)核代碼或加載內(nèi)核模塊的基礎(chǔ)上更加安全有效的擴(kuò)展內(nèi)核的能力。使用 ebpf 能力短接內(nèi)核網(wǎng)絡(luò)協(xié)議棧來降低網(wǎng)絡(luò)時(shí)延,提升 ServiceMesh 的使用體驗(yàn),這是目前業(yè)界通用的做法。

為了實(shí)現(xiàn)短接內(nèi)核網(wǎng)絡(luò)協(xié)議棧的目標(biāo),我們需要使用到 ebpf 提供的兩種能力,分別是:sockops 與 socket redirection,openEuler 使用的 kernel 版本為 5.10,已經(jīng)支持了 ebpf 的這兩種能力。

sockops 提供了在 tcp socket 創(chuàng)建連接時(shí)將 socket 使用 key(一般是四元組)標(biāo)識后保存在 sockmap 數(shù)據(jù)結(jié)構(gòu)中的能力

socket redirection 在傳輸 tcp 數(shù)據(jù)時(shí)支持使用 key 去 sockmap 中引用 socket,命中后可直接將數(shù)據(jù)轉(zhuǎn)發(fā)到此 socket 中

對于未在 sockmap 中找到的 socket,正常將數(shù)據(jù)包通過內(nèi)核網(wǎng)絡(luò)協(xié)議棧發(fā)送出去

將這些能力結(jié)合在一起,就可以在不經(jīng)過內(nèi)核網(wǎng)絡(luò)協(xié)議棧的前提下直接將數(shù)據(jù)包轉(zhuǎn)發(fā)到對應(yīng)的 socket 上,完成數(shù)據(jù)的一次傳輸,降低在內(nèi)核網(wǎng)絡(luò)協(xié)議棧上的時(shí)間消耗。

在 tcp socket 建立連接的過程中,實(shí)際上有兩次連接建立的過程,我們通常稱之為正向連接與反向連接。因正反向連接在建連過程中均需要通過 iptables 信息來獲取實(shí)際的 ip 地址與端口號,openEuler 在 iptables 的工作原理上新增 helper 函數(shù),將獲取對端信息的能力下沉到內(nèi)核中,可以在 ebpf 函數(shù)中主動獲取到 iptables 轉(zhuǎn)換過的地址。這樣我們可以建立一個(gè)輔助 map 用于存放正反向連接的對應(yīng)關(guān)系并在 socket redirection 轉(zhuǎn)發(fā)時(shí)先從輔助 map 中尋找到對端的連接信息,成功找到對端的連接信息后再進(jìn)行 socket 轉(zhuǎn)發(fā)動作。原理如下圖

通過 sockops 能力的加速,我們在 openEuler21.03 上實(shí)測的結(jié)果如下:

測試環(huán)境:openEuler-21.03 / 5.10.0-4.17.0.28.oe1.x86_64

組網(wǎng):fortio-envoy-envoy80

qps 提升約為 18%,平均時(shí)延提升 15%

下一步的工作:徹底消除 ServiceMesh 性能損耗從 openEuler21.03 實(shí)際測試中可以看出,sockmap 對于 ServiceMesh 可以進(jìn)行加速,但是加速的結(jié)果與不使用 ServiceMesh 相比仍然有較大差距。仔細(xì)分析,sockmap 并沒有消耗 socket buff 之間的數(shù)據(jù)拷貝,也沒有消耗 app/envoy 之間通信時(shí)的上下文切換,那問題可能仍然出在 ServiceMesh 架構(gòu)上。有沒有一種方法,既有 ServiceMesh 易管理、易部署的能力,又能消除其帶來的性能劣化影響?目前 openEuler sig-high-performance-network 正在嘗試這方面的工作,已經(jīng)有了初步進(jìn)展。

原文標(biāo)題:openEuler結(jié)合ebpf提升ServiceMesh服務(wù)體驗(yàn)的探索

文章出處:【微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:彭菁
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7102

    瀏覽量

    89282
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4808

    瀏覽量

    68812
  • openEuler
    +關(guān)注

    關(guān)注

    2

    文章

    319

    瀏覽量

    5922

原文標(biāo)題:openEuler結(jié)合ebpf提升ServiceMesh服務(wù)體驗(yàn)的探索

文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    HarmonyOS應(yīng)用點(diǎn)擊完成時(shí)問題定位流程及原理

    在HarmonyOS應(yīng)用開發(fā)中,完成時(shí)是指用戶操作HarmonyOS移動終端時(shí),從輸入觸控指令到界面完全刷新結(jié)束達(dá)到可以閱讀的穩(wěn)定狀態(tài)所用時(shí)間,點(diǎn)擊完成時(shí)依據(jù)頁面轉(zhuǎn)場類型可以分為頁面內(nèi)跳轉(zhuǎn)
    的頭像 發(fā)表于 12-23 11:15 ?315次閱讀
    HarmonyOS應(yīng)用點(diǎn)擊完成時(shí)<b class='flag-5'>延</b>問題定位流程及原理

    SS-50離子棒,小體積高效靜電消除棒 #靜電 #防靜電 #靜電消除器 #靜電消除

    靜電消除
    深圳市榮盛源科技有限公司
    發(fā)布于 :2024年11月14日 11:08:33

    CDCE913-Q1是否同CDCE813-Q1一樣具有抖動消除能力?

    CDCE913-Q1是否同CDCE813-Q1一樣具有抖動消除能力?感謝
    發(fā)表于 11-11 09:51

    2.34納秒超低時(shí),滿足金融市場高頻交易,AMD發(fā)布新一代金融加速

    降低成本和獲得利潤的關(guān)鍵所在。 ? 近日,AMD推出Alveo UL3422 加速卡,它是由 AMD Virtex UltraScale+ FPGA 提供支持,其采用新穎的收發(fā)器架構(gòu),具備硬化且經(jīng)過優(yōu)化的網(wǎng)絡(luò)連接核,專為高速交
    的頭像 發(fā)表于 11-11 01:13 ?1582次閱讀
    2.34納秒超低時(shí)<b class='flag-5'>延</b>,滿足金融市場高頻交易,AMD發(fā)布新一代金融<b class='flag-5'>加速</b>卡

    利用關(guān)斷保護(hù)信號開關(guān)消除電源時(shí)序

    電子發(fā)燒友網(wǎng)站提供《利用關(guān)斷保護(hù)信號開關(guān)消除電源時(shí)序.pdf》資料免費(fèi)下載
    發(fā)表于 09-23 12:24 ?0次下載
    <b class='flag-5'>利用</b>關(guān)斷保護(hù)信號開關(guān)<b class='flag-5'>消除</b>電源時(shí)序

    微軟攜手Lumen Technologies擴(kuò)容強(qiáng)化AI網(wǎng)絡(luò)能力合作

    微軟在7月25日宣布了一項(xiàng)重大舉措,旨在通過深化其Copilot等生成式AI服務(wù)在企業(yè)、組織、教育及普通消費(fèi)者領(lǐng)域的布局,來滿足日益增長的對AI算力及網(wǎng)絡(luò)能力的需求。為實(shí)現(xiàn)這一目標(biāo),微軟攜手網(wǎng)絡(luò)系統(tǒng)領(lǐng)域的領(lǐng)先企業(yè)Lumen Te
    的頭像 發(fā)表于 07-25 14:39 ?636次閱讀

    Amdocs使用NVIDIA NIM加速生成式AI性能降低成本

    電信公司正在利用生成式 AI,通過自動化流程、改善客戶體驗(yàn)和優(yōu)化網(wǎng)絡(luò)運(yùn)營來提高員工生產(chǎn)力。
    的頭像 發(fā)表于 05-24 10:56 ?598次閱讀
    Amdocs使用NVIDIA NIM<b class='flag-5'>加速</b>生成式AI性能<b class='flag-5'>并</b><b class='flag-5'>降低</b>成本

    金融信創(chuàng)優(yōu)秀解決方案-超低時(shí)網(wǎng)絡(luò)解決方案

    本方案基于中科馭數(shù)自主研發(fā)的低時(shí)網(wǎng)絡(luò)DPU卡SWIFT-2200N和超低時(shí)數(shù)據(jù)處理開發(fā)平臺SWIFT-NDPP
    的頭像 發(fā)表于 04-30 14:29 ?868次閱讀
    金融信創(chuàng)優(yōu)秀解決方案-超低時(shí)<b class='flag-5'>延</b><b class='flag-5'>網(wǎng)絡(luò)</b>解決方案

    eBPF動手實(shí)踐系列三:基于原生libbpf庫的eBPF編程改進(jìn)方案簡析

    在上一篇文章《eBPF動手實(shí)踐系列二:構(gòu)建基于純C語言的eBPF項(xiàng)目》中,我們初步實(shí)現(xiàn)了脫離內(nèi)核源碼進(jìn)行純C語言eBPF項(xiàng)目的構(gòu)建。libbpf庫在早期和內(nèi)核源碼結(jié)合的比較緊密,如今的libbpf庫更加成熟,已經(jīng)完全脫離內(nèi)核源碼
    的頭像 發(fā)表于 03-19 14:19 ?879次閱讀
    <b class='flag-5'>eBPF</b>動手實(shí)踐系列三:基于原生libbpf庫的<b class='flag-5'>eBPF</b>編程改進(jìn)方案簡析

    基于原生libbpf庫的eBPF編程改進(jìn)方案

    為了簡化 eBPF程序的開發(fā)流程,降低開發(fā)者在使用 libbpf 庫時(shí)的入門難度,libbpf-bootstrap 框架應(yīng)運(yùn)而生?;趌ibbpf-bootstrap框架的編程方案是目前網(wǎng)絡(luò)上看到的最主流編程方案。
    發(fā)表于 03-19 14:19 ?695次閱讀
    基于原生libbpf庫的<b class='flag-5'>eBPF</b>編程改進(jìn)方案

    借助英特爾DLB技術(shù)優(yōu)化網(wǎng)絡(luò)性能

    英特爾? DLB技術(shù)的出現(xiàn),無疑為數(shù)據(jù)處理和網(wǎng)絡(luò)傳輸領(lǐng)域帶來了一場革命性的變革。通過其獨(dú)特的負(fù)載均衡、數(shù)據(jù)包調(diào)度優(yōu)先排序以及降低網(wǎng)絡(luò)流量時(shí)
    的頭像 發(fā)表于 03-11 09:52 ?694次閱讀

    英特爾 DLB 的硬件實(shí)施方案加速數(shù)據(jù)傳輸

    對數(shù)據(jù)包調(diào)度進(jìn)行優(yōu)先排序降低網(wǎng)絡(luò)流量時(shí),從而為高數(shù)據(jù)包速率應(yīng)用加速。? 優(yōu)化網(wǎng)絡(luò)性能和
    的頭像 發(fā)表于 03-09 16:34 ?2099次閱讀

    是德科技5G O-RAN端到端解決方案助力技術(shù)創(chuàng)新降低成本

    2018年,移動通信運(yùn)營商首次引入開放無線接入網(wǎng)絡(luò)(O-RAN),旨在利用O-RAN構(gòu)建多網(wǎng)絡(luò)設(shè)備供應(yīng)商 體系來增強(qiáng)技術(shù)創(chuàng)新降低成本。
    的頭像 發(fā)表于 03-05 14:38 ?660次閱讀
    是德科技5G O-RAN端到端解決方案助力技術(shù)創(chuàng)新<b class='flag-5'>并</b><b class='flag-5'>降低</b>成本

    英特爾攜手浪潮信息,以開放能力加速邊緣算力拓展

    在數(shù)字化創(chuàng)新業(yè)務(wù)加速落地的背景下,將數(shù)據(jù)存儲與處理能力遷移到網(wǎng)絡(luò)與設(shè)備邊緣成為行業(yè)用戶的共同選擇。
    的頭像 發(fā)表于 02-23 10:15 ?622次閱讀

    如何利用橋式電路消除溫度對電阻應(yīng)變片的影響?

    如何利用橋式電路消除溫度對電阻應(yīng)變片的影響? 橋式電路是一種常見的測量電阻應(yīng)變片的電路結(jié)構(gòu),可以通過電壓差的方式來準(zhǔn)確測量電阻應(yīng)變片的應(yīng)變量。然而,在實(shí)際應(yīng)用中,由于溫度的影響,電阻應(yīng)變片的阻值會
    的頭像 發(fā)表于 02-04 17:32 ?2233次閱讀