成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文讀懂Linux網絡新基石——XDP技術

系統 Linux
伴隨著eBPF技術的成熟,Linux Kernel也迎來了自己的高性能、可編程的數據通路——XDP/AF_XDP,足以媲美DPDK的性能。

Labs 導讀

隨著1000Mbps/10Gbps/40Gbps高速率網卡的普及,Linux內核協議棧在海量數據、低時延的場景下顯得力不從心,其復雜冗余的包處理邏輯,使得性能瓶頸變的尤為突出。故而針對內核協議棧的各種優化接踵而來,但實際效果卻不明顯,于是乎kernel bypass技術應運而生,而DPDK就是其高性能網絡應用開發解決方案中的佼佼者,并逐漸成為了獨樹一幟的成熟技術體系。但是DPDK并不能與Linux Kernel的技術生態很好的結合,與現有操作系統集成的難度較大。

Part 01、  XDP概述 

XDP(eXpress Data Path,快速數據面)是近些年興起的網絡數據面技術,為Linux內核提供高性能、可編程的網絡數據包處理框架。本質上是Linux Kernel中的一個eBPF Hook(鉤子),可以動態掛載,使得ebpf程序能夠在數據報文到達網絡驅動層時提前進行針對性的高速處理。XDP可以與內核協同工作,既可以繞過繁瑣的TCP/IP協議棧,也可以復用TCP/IP協議棧以及內核基礎設施。由于其較早的收包路徑,對于快速識別丟棄報文具有很高的性能,廣泛應用于DDoS防御、防火墻、負載均衡等領域。

而AF_XDP作為一種內核的協議族可以與XDP進行交互,實現XDP收包重定向至AF_XDP指定的UMEM,使得用戶態應用可以通過AF_XDP Socket完成數據幀的讀取和寫入。

圖片

Part 02、  XDP架構設計 

XDP系統主要有五個組成部分:

1??XDP driver hook

即網卡驅動中的一個XDP程序的掛載點,運行于網絡設備驅動中,由于其駐留在內核空間,無需上下文切換,更加安全、快速,每當網卡接收到一個數據包就會執行這個XDP程序。XDP程序可以對數據包進行逐層解析、按規則進行過濾,或者對數據包進行封裝、解封裝、轉發等。根據不同的工作模式其掛載點也不同,如下圖所示,根據網卡支持情況有三處掛載點(藍色方框內):

圖片圖片

  • Native XDP(默認):即驅動模式,在這種模式中,XDP BPF 程序直接運行在網絡驅動的早期接收路徑上,需要驅動支持。
  • Offloaded XDP:在該模式下XDP BPF程序直接offload到網卡,相較于Native,具有更高的性能,需要網卡支持。
  • Generic XDP:對于還沒有實現Native或Offloaded XDP的驅動,內核提供了一個Generic XDP選項。該模式下的XDP BPF Program運行于驅動程序之后的位置,無需驅動程序的支持,但性能較差,主要面向測試程序的開發者。

2??eBPF虛擬機

XDP程序通過Clang編譯成BPF字節碼,而BPF字節碼加載到內核中是運行在eBPF虛擬機上,eBPF VM支持XDP程序的動態加載和卸載。

3??BPF maps

內核中的key/value存儲,作為圖中各系統的主要通信通道,類似于進程間通信的共享內存訪問。用戶態程序可以在BPF Maps中預定義規則,XDP程序可以匹配Maps中的規則對數據包進行過濾等;XDP程序也可以將數據包統計信息等存入Maps,用戶態程序可訪問Maps獲取數據包統計信息。

4??eBPF verifier

由于eBPF代碼直接運行在內核地址空間,此它能直接訪問(破壞)任何內存。為防止這種情況發生,Verifier(程序校驗器)需要在XDP字節碼加載到內核之前對字節碼進行安全檢查。

5??XDP Action

XDP程序對于報文的處理有如下幾種方式:

  • XDP_DROP:在驅動層丟棄報文,通常用于實現DDos或防火墻。
  • XDP_PASS:允許報文上送到內核網絡棧,同時處理該報文的CPU會分配并填充一個skb,將其傳遞到內核協議棧。
  • XDP_TX:從當前網卡發送出去。
  • XDP_REDIRECT:將包重定向到其他網絡接口(包括虛擬機的虛擬網卡),或者通過AF_XDP socket重定向到用戶空間。
  • XDP_ABORTED:表示程序產生了異常,其行為和XDP_DROP相同,但XDP_ABORTED會經過trace_xdp_exception tracepoint,因此可以通過tracing工具來監控這種非正常行為。

下圖基于XDP/AF_XDP系統數據流示例圖。實線為數據面流向,虛線的控制面流向。

網卡收到包之后,會先執行掛載的XDP eBPF程序,用戶態應用在此之前通過bpf map下放規則,XDP收到數據包之后讀取bpf map中的規則實現數據包的過濾分發,即xdp action處理,是DROP,重定向到AF_XDP,還是PASS到內核協議棧。

從圖中可以看出,不同eBPF程序之間可以通過BPF maps進行通信,并且內核態也可以通過BPF map與用戶態應用進行交互,從而實現數據共享。

圖片

Part 03、  VPP的擴展性  

XDP專為高性能而設計,相較與DPDK來說,具有以下優點:

  • 無需專門硬件,無需大頁內存,無需獨占CPU等資源,任何有Linux驅動的網卡都可以支持,無需引入第三方代碼庫。
  • 兼容內核協議棧,可選擇性復用內核已有的功能。
  • 保持了內核的安全邊界,提供與內核API一樣穩定的接口。
  • 無需對網絡配置或管理工具做任何修改。
  • 服務不中斷的前提下動態重新編程,這意味著可以按需加入或移除功能,而不會引起任何流量中斷,也能動態響應系統其他部分的的變化。
  • 主流的發行版中,Linux內核已經內置并啟用了XDP,并且支持主流的高速網絡驅動,4.8+的內核已內置,5.4+能夠完全使用。

缺點:

  • XDP不提供緩存隊列(qdisc),TX設備太慢時會直接丟包,因而不能在RX比TX快的設備上使用XDP。
  • 由于不具備緩存隊列,對與IP分片不太友好。
  • XDP程序是專用的,不具備網絡協議棧的通用性。

適用案例:

? 軟件路由(XDP routing)

Linux內核實現了一個功能完全的路由表,生態系統功能豐富,結合XDP包處理框架實現了一個完美的路由功能。其性能與常規的Linux內核網絡棧相比提升了2.5 - 3倍左右。

? ACL/DDoS防御

XDP可以直接在應用服務器上部署包過濾程序來防御此類攻擊,無須修改應用代碼。如果應用部署在虛擬機里,XDP程序還可以部署在宿主機上,保護機器上所有的虛擬機。其性能單核可以輕松處理10Gbps的最小包Dos流量。這種DDOS防御的部署更加靈活。

相比iptables相對較晚的hook點,XDP的丟包速率要比iptables高4倍左右。

? 負載均衡(load balancing)

其原理是通過對包頭進行哈希,以此選擇目標應用服務器,然后將數據包進行封裝,發送給應用服務器,應用解封,處理請求,會包給客戶端。在次過程中,XDP服務哈希,封包發送。通過bpf map進行配置,其性能比Linux內核IPVS高4倍左右。

Part 04、未來展望  

ebpf/XDP作為Linux網絡革新技術正在悄悄的改變著Linux網絡發展模式,當前,XDP技術被OVS、Cilium、Polycube等用于網絡快速路徑的新選擇,DPDK也相應的做了AF_XDP PMD。XDP程序在CPU可用來處理的最早時間點被執行,尤其適合DDoS防御、防火墻、負載均衡。基于XDP+eBPF的的ACL解決方案也有望改善目前的性能瓶頸,有望取代iptables解決方案。

XDP作為一個安全、快速、可編程、集成到操作系統內核的包處理框架。XDP性能雖然與基于kernel bypass的DPDK仍有差距,但優異的可擴展性,可編程性等提供了非常有競爭力的優勢。相比于kernel bypass這種非此即彼、完全繞開內核的方式,我們相信XDP有更廣闊的的應用前景。

責任編輯:龐桂玉 來源: 移動Labs
相關推薦

2022-07-05 06:30:54

云網絡網絡云原生

2021-12-29 18:00:19

無損網絡網絡通信網絡

2022-09-27 13:34:49

splice零拷貝原理

2020-01-03 10:40:36

網絡遙測丟包率

2018-10-30 11:10:05

Flink數據集計算

2023-11-20 14:58:30

人工智能AI Agents

2021-06-21 14:30:43

UWB超寬帶手機

2020-07-27 09:50:52

云原生圖譜

2025-04-10 00:12:00

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智領云

2021-11-02 10:53:56

Linux機制CPU

2025-05-09 09:00:00

模型融合人工智能神經網絡

2023-12-10 16:54:39

以太網交換技術

2024-03-08 09:51:12

Linux網絡性能

2023-09-17 23:09:24

Transforme深度學習

2022-10-20 08:01:23

2023-11-27 17:35:48

ComponentWeb外層

2023-05-20 17:58:31

低代碼軟件

2022-12-01 17:23:45

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91极品欧美视频 | 亚洲视频一区二区三区四区 | 看a级黄色毛片 | 最新国产在线 | 欧美二区三区 | 亚洲成人毛片 | 国产精品99久久久久久大便 | 日韩一区精品 | 成人无遮挡毛片免费看 | 日韩精品在线播放 | 欧美中文字幕在线观看 | 丁香一区二区 | 中国美女一级黄色片 | 91精品91久久久 | 在线欧美一区 | 黄色免费在线观看 | 热久久999| 久久久久久综合 | 精品国产乱码一区二区三 | 欧美激情一区二区三区 | 99小视频 | 国产成人免费视频网站高清观看视频 | 人人看人人草 | 日本精品一区二区三区在线观看视频 | 天堂网色 | 免费在线黄 | 亚洲精品68久久久一区 | 亚洲成在线观看 | 国产日韩一区二区三免费 | 久久久久久高清 | 婷婷综合激情 | 久久久精品一区二区三区 | 国产粉嫩尤物极品99综合精品 | 国产一级视频在线播放 | 久久久久久亚洲欧洲 | 一区二区三区欧美在线观看 | 国产成人免费视频 | 又黄又爽的网站 | 一区二区三区视频在线观看 | 日韩av免费在线电影 | 日本欧美在线观看视频 |