国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

聊一聊Linux網絡性能王者——XDP技術

系統 Linux
XDP技術對于很多Linux開發人員來說是一個很陌生的技術,如果你是一個Linux開發人員,恰好你從事的網絡相關的開發工作,如果你不懂XDP技術,這是一個非常大的損失。

大家好,今天我們通過幾張圖來聊一聊XDP技術。

XDP技術對于很多Linux開發人員來說是一個很陌生的技術,如果你是一個Linux開發人員,恰好你從事的網絡相關的開發工作,如果你不懂XDP技術,這是一個非常大的損失。

這個是我一個真實的經歷,曾經我采用XDP技術優化過一個項目,讓一個項目的網絡處理性能提高了3-4倍,可能很多小伙伴會懷疑項目原本性能就很差,所以才會有很大的提升空間。

我想說的是,按照原來的軟件架構,不管你怎么優化,性能的瓶頸是不可能突破的,唯一的方式是采用更高效的架構,從更高維度去解決問題。

后續我的項目魔法盒子也會用上XDP技術,采用XDP技術后,魔法盒子的網絡性能估計能夠提高3倍左右。

1.XDP技術簡介

1.1 XDP技術背景

隨著超高帶寬網絡技術10G,40G,100G網絡的出現,Linux內核協議棧越來越不能適應新的網絡技術的發展,Linux內核協議棧似乎成為了網絡性能的瓶頸和雞肋,為了解決這個尷尬的處境,Linux內核引入了一個新的技術內核旁路(Kernel Bypass)技術,內核旁路技術的核心思想是網絡數據包跳過內核協議棧,直接由用戶程序處理,這樣可以避免內核協議棧的開銷,大大提高網絡性能。

XDP就是屬于Linux自己的內核旁路技術,與之對應的還有一種內核旁路技術DPDK技術,DPDK擁有非常不錯的性能,但是DPDK技術并不非常適用于Linux系統。

1.2 XDP是什么?

XDP是一種Linux內核技術,通過使用eBPF機制,在內核空間中實現高性能的數據包處理和轉發。

它可以顯著提高網絡性能,并提供了靈活的編程接口,使用戶能夠實現各種自定義的網絡功能,與傳統的用戶空間數據包處理相比,XDP可以顯著降低數據包處理的延遲和CPU占用。

XDP技術工作模式:

 原生模式(性能高,需要網卡支持)驅動模式,將XDP程序運行在網卡驅動中,從網卡驅動中將網絡數據包重定向,該模式支持的網卡較多且性能也很高,如果網卡支持的話,盡量使用該模式。

卸載模式(性能最高,支持的網卡最少)將XDP程序直接卸載到網卡,該模式支持的網卡少,暫不做討論。

通用模式(性能良好,Linux內核支持最好)XDP程序運行在Linux內核協議棧入口,無需驅動支持,性能低于XDP其他的兩種模式,但是即使XDP通用模式,也會給你的系統性能帶來一定的提升。

后續會有專門的專題來講XDP技術,這里不展開討論。

2.AF_XDP工作原理

2.1 整體架構

很多同學容易將XDP和AF_XDP技術給弄混淆。

  • XDP技術是基于BPF技術的一種新的網絡技術。
  • AF_XDP是XDP技術的一種應用場景,AF_XDP是一種高性能Linux socket。

AF_XDP需要通過socket函數創建。

socket(AF_XDP, SOCK_RAW, 0);

AF_XDP技術會涉及到一些比較重要的知識點:

圖片圖片

  • AF_XDP想要XDP程序配合,才能完成網絡數據包收發。
  • XDP程序主要工作是根據以太網幀的相關信息如:MAC地址,五元組信息等,進行數據包的過濾和重定向。
  • AF_XDP處理的是以太網數據幀,所以用戶程序發送和接收的是以太網數據幀。
  • 用戶程序,AF_XDP,XDP會操作一個共享的內存區域,稱之為UMEM。
  • 網絡數據包的接收和發送需要用到4個無鎖環形隊列。

2.2 UMEM共享內存

UMEM共享內存通過setsockopt函數進行申請。

setsockopt(umem->fd, SOL_XDP, XDP_UMEM_REG, &mr, sizeof(mr));

UMEM共享內存通常以4K為一個單元,每個單元可以存儲一個數據包,UMEM共享內存通常為4096個單元。

接收和發送的數據包都是存儲在UMEM內存單元。

用戶程序和內核都可以直接操作這塊內存區域,所以發送和接收數據包時,只是簡單的內存拷貝,不需要進行系統調用。

用戶程序需要維護一個UMEM內存使用記錄,記錄每一個UMEM單元是否已被使用,每個記錄都會有一個相對地址,用于定位UMEM內存單元地址。

2.2 無鎖環形隊列

AF_XDP socket總共有4個無鎖環形隊列,分別為:

  • 填充隊列(FILL RING)
  • 已完成隊列(COMPLETION RING)
  • 發送隊列(TX RING)
  • 接收隊列(RX RING)

圖片圖片

環形隊列創建方式:

//創建FILL RINGsetsockopt(fd, SOL_XDP, XDP_UMEM_FILL_RING,&umem->config.fill_size,               sizeof(umem->config.fill_size));             //創建COMPLETION RINGsetsockopt(fd, SOL_XDP, XDP_UMEM_COMPLETION_RING,&umem->config.comp_size,               sizeof(umem->config.comp_size));//創建RX RING     setsockopt(xsk->fd, SOL_XDP, XDP_RX_RING,&xsk->config.rx_size,                   sizeof(xsk->config.rx_size));//創建TX RING                setsockopt(xsk->fd, SOL_XDP, XDP_TX_RING, &xsk->config.tx_size,                   sizeof(xsk->config.tx_size));

4個環形隊列實現方式基本相同,環形隊列是對數組進行封裝的數據結構,環形隊列由5個重要部分組成:

  • 生產者序號(producer)

    生產者序號用于指示數組當前可生產的元素位置,如果隊列已滿,將不能再生產。

  • 消費者序號(consumer)

    消費者序號用于指示當前可消費的元素位置,如果隊列已空,將不能再消費。

  • 隊列長度(len)

    隊列長度即數組長度。

  • 隊列掩碼(mask)

    mask=len-1,生產者和消費者序號不能直接使用,需要配合掩碼使用,producer,consumer和mask進行與運算,可以獲取到數組的索引值。

  • 固定長度數組

數組的每一個元素記錄了UMEM單元的相對地址,如果UMEM單元有發送和接收的數據包,還會記錄數據包的長度。

環形隊列的無鎖化通過原子變量來實現,原子變量和原子操作在高性能編程中經常會用到。

2.3 AF_XDP接收數據包

 AF_XDP接收數據包需要FILL RING,RX RING兩個環形隊列配合工作。

第一步:XDP程序獲取可用UMEM單元。

FILL RING記錄了可以用來接收數據包的UMEM單元數量,用戶程序根據UMEM使用記錄,定期的往FILL RING生產可用UMEM單元。

 第二步:XDP填充新的接收數據包

XDP程序消費FILL RING中UMEM單元用于存放網絡數據包,接收完數據包后,將UMEM單元和數據包長度重新打包,填充至RX RING隊列,生產一個待接收的數據包。

 第三步:用戶程序接收網絡數據包

用戶程序檢測到RX RING有待接的收數據包,消費RX RING中數據包,將數據包信息從UMEM單元中拷貝至用戶程序緩沖區,同時用戶程序需要再次填充FILL RING隊列推動XDP繼續接收數據。

圖片圖片

2.4 AF_XDP發送數據包

AF_XDP發送數據包需要COMP RING,TX RING兩個環形隊列配合工作。

第一步:用戶程序確保有足夠的UMEM發送單元

COMP RING記錄了已完成發送的數據包(UMEM單元)數量,用戶程序需要回收這部分UMEM單元,確保有足夠的UMEM發送單元。

第二步:用戶程序發送數據包

用戶程序申請一個可用的UMEM單元,將數據包拷貝至該UMEM單元,然后生產一個待發送數據包填充值TX RING。

第三步:XDP發送數據包

XDP程序檢測到TX RING中有待發送數據包,從TX RING消費一個數據包進行發送,發送完成后,將UMEM單元填充至COMP RING,生產一個已完成發送數據包,用戶程序將對該數據包UMEM單元進行回收。

圖片圖片

3. AF_XDP高效的秘密

AF_XDP之所以高效,主要有三大原因:

  • 內核旁路技術

內核旁路技術在處理網絡數據包的時候,可以跳過Linux內核協議棧,相當于走了捷徑,這樣可以降低鏈路開銷。

  • 內存映射

用戶程序和內核共享UMEM內存和無鎖環形隊列,采用mmap技術將內存進行映射,用戶操作UMEM內存不需要進行系統調用,減少了系統調用上下文切換成本。

  • 無鎖環形隊列

無鎖環形隊列采用原子變量實現,可以減少線程切換和上下文切換成本。

基于以上幾點,AF_XDP必然是一個高性能的網絡技術,由于目前沒有一個能夠測試XDP極限性能的測試環境,大家如果對AF_XDP技術感興趣,可以自行上網搜索相關資料。

責任編輯:武曉燕 來源: 物聯網心球
相關推薦

2019-03-20 14:29:46

Linux虛擬內存

2018-11-29 09:13:47

CPU中斷控制器

2020-06-28 09:30:37

Linux內存操作系統

2020-08-24 07:12:17

前端CRP性能優化

2019-02-13 14:15:59

Linux版本Fedora

2022-02-09 16:23:07

網絡安全零信任技術

2019-09-19 16:59:04

數據結構設計數據庫

2021-01-04 08:09:07

Linux內核Watchdog

2021-04-28 08:35:52

區塊鏈技術開發

2020-11-06 07:10:21

5G定位

2018-04-04 14:43:27

虛擬機保護技術

2018-06-07 13:17:12

契約測試單元測試API測試

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2021-01-28 22:31:33

分組密碼算法

2022-09-26 08:03:25

VMware虛擬機

2020-08-12 08:34:16

開發安全We

2022-10-08 11:33:56

邊緣計算云計算

2022-11-26 00:00:06

裝飾者模式Component

2021-01-01 09:01:05

前端組件化設計
點贊
收藏

51CTO技術棧公眾號

中文字幕精品—区二区日日骚| 色妞久久福利网| 久久99久久精品国产| 日韩综合av| 亚洲国产精品久久久久秋霞影院| 久久综合久久久| 女优一区二区三区| 日韩中文字幕在线视频| 91精选在线| 亚洲第一主播视频| www.在线观看av| 国产鲁鲁视频在线观看免费| 久久久久久久久99精品大| 综合久久一区| 日韩欧美视频一区二区三区| 欧日韩一区二区三区| 国产精品一线天粉嫩av| 这里只有精品视频在线| 欧美人与牲禽动交com| 日韩欧美一区视频| 毛片手机在线观看| 国产欧美日韩在线看| 久久综合亚洲精品| 日韩vs国产vs欧美| 国产一区喷水| 欧美91视频| 国产精品天天狠天天看| 草莓视频一区二区三区| 一区二区亚洲精品国产| 国产精品一二三产区| 欧美人成免费网站| 四虎永久在线| 亚洲成人综合在线| 在线看三级网站视频| 亚洲成在人线在线播放| 国内福利写真片视频在线| 亚洲欧洲日韩一区二区三区| 日韩福利视频在线| 日本一区二区三区国色天香| 北条麻妃69av| 久久久国产综合精品女国产盗摄| 91黄色在线看| 久久综合久久久久88| 国产性生交xxxxx免费| 国产欧美日韩精品a在线观看| 日本在线观看a| 欧美国产1区2区| 丁香婷婷激情| 精品久久久久久电影| 在线播放三级网站| 欧美午夜电影一区| 高清电影在线免费观看| 亚洲人成电影网站| 视频在线观看免费影院欧美meiju 视频一区中文字幕精品 | sese综合| www.色综合| 91成人短视频| 国产91在线播放| 中文精品久久| 欧美精品成人一区二区在线观看 | 日本成熟性欧美| 欧美少妇性xxxx| 亚洲自拍偷拍视频| 欧美综合二区| 少妇大叫太大太粗太爽了a片小说| aa级大片欧美| 另类图片激情| 91精品在线免费观看| 日韩另类视频| 欧美性受xxxx白人性爽| 韩日在线一区| 在线免费观看一区二区三区| 91在线国产福利| 中国国产一级毛片| 91麻豆精品国产91久久久使用方法| 松下纱荣子在线观看| 97人人模人人爽人人喊中文字 | 欧美一区二区成人6969| 欧美中文字幕精在线不卡| 久久久噜噜噜久久中文字免| 婷婷亚洲综合| 国产成人在线小视频| 亚洲成人一二三| 性欧美18xxxhd| 伊人精品视频| 久久青草免费| 九九精品在线视频| 青青青伊人色综合久久| 男人久久精品| 热久久免费视频精品| 亚洲国产精品久久不卡毛片| 日韩av三区| 激情五月六月婷婷| 精品久久久91| 老司机免费视频一区二区三区| 成人香蕉社区| 俄罗斯xxxx性全过程| 国内精品视频免费| 欧美精品一区二区久久婷婷| 亚洲色图一区二区| 亚洲成a人片77777在线播放 | 97香蕉超级碰碰久久免费的优势| 亚洲国产视频直播| a级日韩大片| 国产一级不卡毛片| 亚洲精品进入| 成人av一级片| 原创国产精品91| 狠狠色丁香婷婷综合久久片| 超级碰碰不卡在线视频| 国产树林野战在线播放| 日韩精品影音先锋| 午夜电影网一区| 雨宫琴音一区二区三区| 中文字幕视频一区二区在线有码| 日韩欧美黄色| 日韩免费三级| 亚洲高清一区二区三区| 欧美高清你懂的| 欧美日韩一区在线观看视频| 伊人开心综合网| 亚洲狼人在线| 手机在线观看国产精品| 欧美视频在线观看免费网址| 一级毛片精品毛片| 看一级黄色录像| 欧美三级视频在线| 精品美女在线视频| 国产精品久久久久久久久动漫| av网页在线| 国产精品第三页| 久久久久国色av免费看影院| 国产精选在线| 欧美日韩最好看的视频| 欧美日韩精品在线| 日韩精品亚洲aⅴ在线影院| 精品国产一区三区| 日韩av在线免费| 爽好久久久欧美精品| 成人性生交大片免费看午夜| 成人在线中文字幕| 亚洲主播在线观看| 要久久爱电视剧全集完整观看| jizzjizzxxxx| 深夜福利91大全| 丁香六月综合激情| 国产高清视频色在线www| 欧美精品一区二区视频 | 黄网站app在线观看下载视频大全官网 | 亚洲影院在线看| 国产精品久久久久久久岛一牛影视| 国产麻豆久久| 中文字幕中文字幕在线中心一区 | 妞干网在线观看视频| 亚洲国产精品久久精品怡红院| 一区二区日本视频| a中文在线播放| av资源一区二区| 欧美性一二三区| 国产精品vip| 欧洲视频在线免费观看| 91pron在线| 欧美性感一类影片在线播放| 在线看片一区| 丝袜综合欧美| 青春草在线视频免费观看| 亚洲开心激情网| 丁香六月综合激情| 国产免费av国片精品草莓男男| 成人在线看视频| 91精品国产色综合久久不卡98口| 亚洲男同性恋视频| 伊人久久大香线蕉精品组织观看| 日色在线视频| 九九九九九精品| 亚洲男人的天堂网站| 不卡av电影在线播放| 日韩欧美中文在线观看| 久草.com| 国产精品视频入口| 亚洲精品一区二区三区在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 中文字幕一区二区三区四区五区六区 | 在线播放三级网站| 久久66热这里只有精品| 亚洲成人精品久久| 成人av在线看| 亚洲免费福利一区| yw视频在线观看| 久久综合九九| 亚洲欧美成人网| 国产精品国产精品国产专区不蜜 | 国产一区二区三区四区福利| 久久久久九九视频| 888久久久| 黑人精品一区| av成人动漫| 亚洲开发第一视频在线播放| 久久综合久久八八| 色综合一区二区|